2 * Copyright © 2024 Orange, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.transportpce.servicehandler.impl;
10 import com.google.common.util.concurrent.ListenableFuture;
11 import org.opendaylight.transportpce.common.OperationResult;
12 import org.opendaylight.transportpce.common.ResponseCodes;
13 import org.opendaylight.transportpce.servicehandler.CatalogInput;
14 import org.opendaylight.transportpce.servicehandler.ModelMappingUtils;
15 import org.opendaylight.transportpce.servicehandler.catalog.CatalogDataStoreOperations;
16 import org.opendaylight.transportpce.servicehandler.catalog.CatalogMapper;
17 import org.opendaylight.transportpce.servicehandler.impl.ServicehandlerImpl.LogMessages;
18 import org.opendaylight.transportpce.servicehandler.validation.CatalogValidation;
19 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.RpcActions;
20 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev230526.operational.mode.catalog.OpenroadmOperationalModes;
21 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.AddOpenroadmOperationalModesToCatalog;
22 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.AddOpenroadmOperationalModesToCatalogInput;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.AddOpenroadmOperationalModesToCatalogOutput;
24 import org.opendaylight.yangtools.yang.common.RpcResult;
25 import org.slf4j.Logger;
26 import org.slf4j.LoggerFactory;
29 public class AddOpenroadmOperationalModesToCatalogImpl implements AddOpenroadmOperationalModesToCatalog {
30 private static final Logger LOG = LoggerFactory.getLogger(AddOpenroadmOperationalModesToCatalogImpl.class);
31 private static final String ADD_OR_TO_CATALOG_MSG = "addORToCatalog: {}";
33 private CatalogDataStoreOperations catalogDataStoreOperations;
35 public AddOpenroadmOperationalModesToCatalogImpl(CatalogDataStoreOperations catalogDataStoreOperations) {
36 this.catalogDataStoreOperations = catalogDataStoreOperations;
40 * Implementation of the RPC to set OR operational modes in the catalog of the controller.
41 * Semantics of the RPC is such that the information in the input replaces the full content
42 * of the OR operational modes catalog in the config data store. Incremental changes to the
43 * catalog, if required, must be done via individual PUT/POST/DELETE RESTconf APIs.
45 * @param input AddOpenroadmOperationalModesToCatalogInput to be added to Catalog
46 * @return Result of the request
49 public ListenableFuture<RpcResult<AddOpenroadmOperationalModesToCatalogOutput>> invoke(
50 AddOpenroadmOperationalModesToCatalogInput input) {
51 LOG.info("RPC addOpenroadmOperationalModesToCatalog in progress");
52 LOG.debug(" Input openRoadm {}", input);
54 OperationResult validationResult = CatalogValidation.validateORCatalogRequest(
55 new CatalogInput(input), RpcActions.FillCatalogWithOrOperationalModes);
56 if (! validationResult.isSuccess()) {
57 LOG.warn(ADD_OR_TO_CATALOG_MSG, LogMessages.ABORT_OR_TO_CATALOG_FAILED);
58 return ModelMappingUtils.addOpenroadmServiceReply(
59 input, ResponseCodes.FINAL_ACK_YES,
60 validationResult.getResultMessage(), ResponseCodes.RESPONSE_FAILED);
62 LOG.info(" Request System Id {} " ,input.getSdncRequestHeader().getRequestSystemId());
63 LOG.info(" Rpc Action {} " ,input.getSdncRequestHeader().getRpcAction());
65 OpenroadmOperationalModes objToSave = CatalogMapper.createORModesToSave(input);
66 catalogDataStoreOperations.addOpenroadmOperationalModesToCatalog(objToSave);
67 LOG.info("RPC addOpenroadmOperationalModesToCatalog Completed");
68 return ModelMappingUtils.addOpenroadmServiceReply(input, ResponseCodes.FINAL_ACK_YES,
69 validationResult.getResultMessage(), ResponseCodes.RESPONSE_OK);