2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.onap.ccsdk.features.sdnr.northbound.a1Adapter;
24 import java.util.Properties;
25 import java.util.concurrent.ExecutorService;
26 import java.util.concurrent.Executors;
28 import org.onap.ccsdk.sli.core.sli.provider.MdsalHelper;
29 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
30 import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
31 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
32 import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
33 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
34 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.RpcRegistration;
35 import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev191212.*;
37 import com.google.common.base.Preconditions;
38 import org.opendaylight.yangtools.yang.common.RpcResult;
39 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
40 import org.slf4j.Logger;
41 import org.slf4j.LoggerFactory;
43 import com.google.common.base.Preconditions;
44 import com.google.common.util.concurrent.Futures;
45 import com.google.common.util.concurrent.ListenableFuture;
48 * Defines a base implementation for your provider. This class extends from a helper class
49 * which provides storage for the most commonly used components of the MD-SAL. Additionally the
50 * base class provides some basic logging and initialization / clean up methods.
53 public class A1AdapterProvider implements AutoCloseable, A1ADAPTERAPIService {
55 private static final Logger LOG = LoggerFactory.getLogger(A1AdapterProvider.class);
57 private static final String APPLICATION_NAME = "a1Adapter-api";
59 private final ExecutorService executor;
61 protected DataBroker dataBroker;
62 protected NotificationPublishService notificationService;
63 protected RpcProviderRegistry rpcRegistry;
64 protected BindingAwareBroker.RpcRegistration<A1ADAPTERAPIService> rpcRegistration;
65 private final A1AdapterClient A1AdapterClient;
68 public A1AdapterProvider(final DataBroker dataBroker,
69 final NotificationPublishService notificationPublishService,
70 final RpcProviderRegistry rpcProviderRegistry,
71 final A1AdapterClient A1AdapterClient) {
73 this.LOG.info( "Creating provider for {}", APPLICATION_NAME);
74 executor = Executors.newFixedThreadPool(1);
75 this.dataBroker = dataBroker;
76 this.notificationService = notificationPublishService;
77 this.rpcRegistry = rpcProviderRegistry;
78 this.A1AdapterClient = A1AdapterClient;
82 public void initialize(){
83 LOG.info( "Initializing provider for {}", APPLICATION_NAME);
84 rpcRegistration = rpcRegistry.addRpcImplementation(A1ADAPTERAPIService.class, this);
85 LOG.info( "Initialization complete for {}", APPLICATION_NAME);
88 protected void initializeChild() {
89 //Override if you have custom initialization intelligence
93 public void close() throws Exception {
94 LOG.info( "Closing provider for {}", APPLICATION_NAME);
96 rpcRegistration.close();
97 LOG.info( "Successfully closed provider for {}", APPLICATION_NAME);
100 // RPC getNearRT-RICs
103 public ListenableFuture<RpcResult<GetNearRTRICsOutput>> getNearRTRICs(
104 GetNearRTRICsInput input) {
105 final String svcOperation = "getNearRT-RICs";
107 Properties parms = new Properties();
108 GetNearRTRICsOutputBuilder serviceDataBuilder = new GetNearRTRICsOutputBuilder();
110 LOG.info( "Reached RPC getNearRT-RICs");
112 LOG.info( svcOperation +" called." );
115 LOG.debug("exiting " +svcOperation+ " because of invalid input");
116 serviceDataBuilder.setResponseCode("Input is null");
117 RpcResult<GetNearRTRICsOutput> rpcResult =
118 RpcResultBuilder.<GetNearRTRICsOutput> status(true).withResult(serviceDataBuilder.build()).build();
119 return Futures.immediateFuture(rpcResult);
122 // add input to parms
123 LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
124 GetNearRTRICsInputBuilder inputBuilder = new GetNearRTRICsInputBuilder(input);
125 MdsalHelper.toProperties(parms, inputBuilder.build());
127 // Call SLI sync method
130 if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
132 LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
135 A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
139 LOG.error("Caught exception executing service logic for "+ svcOperation, e);
140 serviceDataBuilder.setResponseCode("500");
143 LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
144 serviceDataBuilder.setResponseCode("503");
149 LOG.error("Caught exception looking for service logic", e);
150 serviceDataBuilder.setResponseCode("500");
153 String errorCode = serviceDataBuilder.getResponseCode();
155 if (!("0".equals(errorCode) || "200".equals(errorCode))) {
156 LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
158 LOG.info("Returned SUCCESS for "+svcOperation+" ");
159 serviceDataBuilder.setResponseCode("A1 Adapter Executed for GetNearRTRICs " );
162 RpcResult<GetNearRTRICsOutput> rpcResult =
163 RpcResultBuilder.<GetNearRTRICsOutput> status(true).withResult(serviceDataBuilder.build()).build();
165 LOG.info("Successful exit from getNearRT-RICs ");
167 return Futures.immediateFuture(rpcResult);
170 // RPC getHealthCheck
173 public ListenableFuture<RpcResult<GetHealthCheckOutput>> getHealthCheck(
174 GetHealthCheckInput input) {
175 final String svcOperation = "getHealthCheck";
177 Properties parms = new Properties();
178 GetHealthCheckOutputBuilder serviceDataBuilder = new GetHealthCheckOutputBuilder();
180 LOG.info( "Reached RPC getHealthCheck");
182 LOG.info( svcOperation +" called." );
185 LOG.debug("exiting " +svcOperation+ " because of invalid input");
186 serviceDataBuilder.setResponseCode("Input is null");
187 RpcResult<GetHealthCheckOutput> rpcResult =
188 RpcResultBuilder.<GetHealthCheckOutput> status(true).withResult(serviceDataBuilder.build()).build();
189 return Futures.immediateFuture(rpcResult);
192 // add input to parms
193 LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
194 GetHealthCheckInputBuilder inputBuilder = new GetHealthCheckInputBuilder(input);
195 MdsalHelper.toProperties(parms, inputBuilder.build());
197 // Call SLI sync method
200 if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
202 LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
205 A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
209 LOG.error("Caught exception executing service logic for "+ svcOperation, e);
210 serviceDataBuilder.setResponseCode("500");
213 LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
214 serviceDataBuilder.setResponseCode("503");
219 LOG.error("Caught exception looking for service logic", e);
220 serviceDataBuilder.setResponseCode("500");
223 String errorCode = serviceDataBuilder.getResponseCode();
225 if (!("0".equals(errorCode) || "200".equals(errorCode))) {
226 LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
228 LOG.info("Returned SUCCESS for "+svcOperation+" ");
229 serviceDataBuilder.setResponseCode("A1 Adapter Executed for GetHealthCheck. " );
232 RpcResult<GetHealthCheckOutput> rpcResult =
233 RpcResultBuilder.<GetHealthCheckOutput> status(true).withResult(serviceDataBuilder.build()).build();
235 LOG.info("Successful exit from getHealthCheck ");
237 return Futures.immediateFuture(rpcResult);
240 // RPC getPolicyTypes
243 public ListenableFuture<RpcResult<GetPolicyTypesOutput>> getPolicyTypes(
244 GetPolicyTypesInput input) {
245 final String svcOperation = "getPolicyTypes";
247 Properties parms = new Properties();
248 GetPolicyTypesOutputBuilder serviceDataBuilder = new GetPolicyTypesOutputBuilder();
250 LOG.info( "Reached RPC getPolicyTypes");
252 LOG.info( svcOperation +" called." );
255 LOG.debug("exiting " +svcOperation+ " because of invalid input");
256 serviceDataBuilder.setResponseCode("Input is null");
257 RpcResult<GetPolicyTypesOutput> rpcResult =
258 RpcResultBuilder.<GetPolicyTypesOutput> status(true).withResult(serviceDataBuilder.build()).build();
259 return Futures.immediateFuture(rpcResult);
262 // add input to parms
263 LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
264 GetPolicyTypesInputBuilder inputBuilder = new GetPolicyTypesInputBuilder(input);
265 MdsalHelper.toProperties(parms, inputBuilder.build());
267 // Call SLI sync method
270 if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
272 LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
275 A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
279 LOG.error("Caught exception executing service logic for "+ svcOperation, e);
280 serviceDataBuilder.setResponseCode("500");
283 LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
284 serviceDataBuilder.setResponseCode("503");
289 LOG.error("Caught exception looking for service logic", e);
290 serviceDataBuilder.setResponseCode("500");
293 String errorCode = serviceDataBuilder.getResponseCode();
295 if (!("0".equals(errorCode) || "200".equals(errorCode))) {
296 LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
298 LOG.info("Returned SUCCESS for "+svcOperation+" ");
299 serviceDataBuilder.setResponseCode("A1 Adapter Executed for GetPolicyTypes ");
302 RpcResult<GetPolicyTypesOutput> rpcResult =
303 RpcResultBuilder.<GetPolicyTypesOutput> status(true).withResult(serviceDataBuilder.build()).build();
305 LOG.info("Successful exit from getPolicyTypes ");
307 return Futures.immediateFuture(rpcResult);
310 // RPC createPolicyType
313 public ListenableFuture<RpcResult<CreatePolicyTypeOutput>> createPolicyType(
314 CreatePolicyTypeInput input) {
315 final String svcOperation = "createPolicyType";
317 Properties parms = new Properties();
318 CreatePolicyTypeOutputBuilder serviceDataBuilder = new CreatePolicyTypeOutputBuilder();
320 LOG.info( "Reached RPC createPolicyType");
322 LOG.info( svcOperation +" called." );
325 LOG.debug("exiting " +svcOperation+ " because of invalid input");
326 serviceDataBuilder.setResponseCode("Input is null");
327 RpcResult<CreatePolicyTypeOutput> rpcResult =
328 RpcResultBuilder.<CreatePolicyTypeOutput> status(true).withResult(serviceDataBuilder.build()).build();
329 return Futures.immediateFuture(rpcResult);
332 // add input to parms
333 LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
334 CreatePolicyTypeInputBuilder inputBuilder = new CreatePolicyTypeInputBuilder(input);
335 MdsalHelper.toProperties(parms, inputBuilder.build());
337 // Call SLI sync method
340 if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
342 LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
345 A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
349 LOG.error("Caught exception executing service logic for "+ svcOperation, e);
350 serviceDataBuilder.setResponseCode("500");
353 LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
354 serviceDataBuilder.setResponseCode("503");
359 LOG.error("Caught exception looking for service logic", e);
360 serviceDataBuilder.setResponseCode("500");
363 String errorCode = serviceDataBuilder.getResponseCode();
365 if (!("0".equals(errorCode) || "200".equals(errorCode))) {
366 LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
368 LOG.info("Returned SUCCESS for "+svcOperation+" ");
369 serviceDataBuilder.setResponseCode("A1 Adapter Executed for CreatePolicyType" );
372 RpcResult<CreatePolicyTypeOutput> rpcResult =
373 RpcResultBuilder.<CreatePolicyTypeOutput> status(true).withResult(serviceDataBuilder.build()).build();
375 LOG.info("Successful exit from createPolicyType ");
377 return Futures.immediateFuture(rpcResult);
383 public ListenableFuture<RpcResult<GetPolicyTypeOutput>> getPolicyType(
384 GetPolicyTypeInput input) {
385 final String svcOperation = "getPolicyType";
387 Properties parms = new Properties();
388 GetPolicyTypeOutputBuilder serviceDataBuilder = new GetPolicyTypeOutputBuilder();
390 LOG.info( "Reached RPC getPolicyType");
392 LOG.info( svcOperation +" called." );
395 LOG.debug("exiting " +svcOperation+ " because of invalid input");
396 serviceDataBuilder.setResponseCode("Input is null");
397 RpcResult<GetPolicyTypeOutput> rpcResult =
398 RpcResultBuilder.<GetPolicyTypeOutput> status(true).withResult(serviceDataBuilder.build()).build();
399 return Futures.immediateFuture(rpcResult);
402 // add input to parms
403 LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
404 GetPolicyTypeInputBuilder inputBuilder = new GetPolicyTypeInputBuilder(input);
405 MdsalHelper.toProperties(parms, inputBuilder.build());
407 // Call SLI sync method
410 if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
412 LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
415 A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
419 LOG.error("Caught exception executing service logic for "+ svcOperation, e);
420 serviceDataBuilder.setResponseCode("500");
423 LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
424 serviceDataBuilder.setResponseCode("503");
429 LOG.error("Caught exception looking for service logic", e);
430 serviceDataBuilder.setResponseCode("500");
433 String errorCode = serviceDataBuilder.getResponseCode();
435 if (!("0".equals(errorCode) || "200".equals(errorCode))) {
436 LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
438 LOG.info("Returned SUCCESS for "+svcOperation+" ");
439 serviceDataBuilder.setResponseCode("A1 Adapter Executed for GetPolicyType. " );
442 RpcResult<GetPolicyTypeOutput> rpcResult =
443 RpcResultBuilder.<GetPolicyTypeOutput> status(true).withResult(serviceDataBuilder.build()).build();
445 LOG.info("Successful exit from getPolicyType ");
447 return Futures.immediateFuture(rpcResult);
450 // RPC deletePolicyType
453 public ListenableFuture<RpcResult<DeletePolicyTypeOutput>> deletePolicyType(
454 DeletePolicyTypeInput input) {
455 final String svcOperation = "deletePolicyType";
457 Properties parms = new Properties();
458 DeletePolicyTypeOutputBuilder serviceDataBuilder = new DeletePolicyTypeOutputBuilder();
460 LOG.info( "Reached RPC deletePolicyType");
462 LOG.info( svcOperation +" called." );
465 LOG.debug("exiting " +svcOperation+ " because of invalid input");
466 serviceDataBuilder.setResponseCode("Input is null");
467 RpcResult<DeletePolicyTypeOutput> rpcResult =
468 RpcResultBuilder.<DeletePolicyTypeOutput> status(true).withResult(serviceDataBuilder.build()).build();
469 return Futures.immediateFuture(rpcResult);
472 // add input to parms
473 LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
474 DeletePolicyTypeInputBuilder inputBuilder = new DeletePolicyTypeInputBuilder(input);
475 MdsalHelper.toProperties(parms, inputBuilder.build());
477 // Call SLI sync method
480 if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
482 LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
485 A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
489 LOG.error("Caught exception executing service logic for "+ svcOperation, e);
490 serviceDataBuilder.setResponseCode("500");
493 LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
494 serviceDataBuilder.setResponseCode("503");
499 LOG.error("Caught exception looking for service logic", e);
500 serviceDataBuilder.setResponseCode("500");
503 String errorCode = serviceDataBuilder.getResponseCode();
505 if (!("0".equals(errorCode) || "200".equals(errorCode))) {
506 LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
508 LOG.info("Returned SUCCESS for "+svcOperation+" ");
509 serviceDataBuilder.setResponseCode("A1 Adapter Executed for DeletePolicyType ");
512 RpcResult<DeletePolicyTypeOutput> rpcResult =
513 RpcResultBuilder.<DeletePolicyTypeOutput> status(true).withResult(serviceDataBuilder.build()).build();
515 LOG.info("Successful exit from deletePolicyType ");
517 return Futures.immediateFuture(rpcResult);
520 // RPC getPolicyInstances
523 public ListenableFuture<RpcResult<GetPolicyInstancesOutput>> getPolicyInstances(
524 GetPolicyInstancesInput input) {
525 final String svcOperation = "getPolicyInstances";
527 Properties parms = new Properties();
528 GetPolicyInstancesOutputBuilder serviceDataBuilder = new GetPolicyInstancesOutputBuilder();
530 LOG.info( "Reached RPC getPolicyInstances");
532 LOG.info( svcOperation +" called." );
535 LOG.debug("exiting " +svcOperation+ " because of invalid input");
536 serviceDataBuilder.setResponseCode("Input is null");
537 RpcResult<GetPolicyInstancesOutput> rpcResult =
538 RpcResultBuilder.<GetPolicyInstancesOutput> status(true).withResult(serviceDataBuilder.build()).build();
539 return Futures.immediateFuture(rpcResult);
542 // add input to parms
543 LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
544 GetPolicyInstancesInputBuilder inputBuilder = new GetPolicyInstancesInputBuilder(input);
545 MdsalHelper.toProperties(parms, inputBuilder.build());
547 // Call SLI sync method
550 if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
552 LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
555 A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
559 LOG.error("Caught exception executing service logic for "+ svcOperation, e);
560 serviceDataBuilder.setResponseCode("500");
563 LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
564 serviceDataBuilder.setResponseCode("503");
569 LOG.error("Caught exception looking for service logic", e);
570 serviceDataBuilder.setResponseCode("500");
573 String errorCode = serviceDataBuilder.getResponseCode();
575 if (!("0".equals(errorCode) || "200".equals(errorCode))) {
576 LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
578 LOG.info("Returned SUCCESS for "+svcOperation+" ");
579 serviceDataBuilder.setResponseCode("A1 Adapter Executed for GetPolicyInstances " );
582 RpcResult<GetPolicyInstancesOutput> rpcResult =
583 RpcResultBuilder.<GetPolicyInstancesOutput> status(true).withResult(serviceDataBuilder.build()).build();
585 LOG.info("Successful exit from getPolicyInstances ");
587 return Futures.immediateFuture(rpcResult);
591 // RPC createPolicyInstance
594 public ListenableFuture<RpcResult<CreatePolicyInstanceOutput>> createPolicyInstance(
595 CreatePolicyInstanceInput input) {
596 final String svcOperation = "createPolicyInstance";
598 Properties parms = new Properties();
599 CreatePolicyInstanceOutputBuilder serviceDataBuilder = new CreatePolicyInstanceOutputBuilder();
601 LOG.info( "Reached RPC createPolicyInstance");
603 LOG.info( svcOperation +" called." );
606 LOG.debug("exiting " +svcOperation+ " because of invalid input");
607 serviceDataBuilder.setResponseCode("Input is null");
608 RpcResult<CreatePolicyInstanceOutput> rpcResult =
609 RpcResultBuilder.<CreatePolicyInstanceOutput> status(true).withResult(serviceDataBuilder.build()).build();
610 return Futures.immediateFuture(rpcResult);
613 // add input to parms
614 LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
615 CreatePolicyInstanceInputBuilder inputBuilder = new CreatePolicyInstanceInputBuilder(input);
616 MdsalHelper.toProperties(parms, inputBuilder.build());
618 // Call SLI sync method
621 if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
623 LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
626 A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
630 LOG.error("Caught exception executing service logic for "+ svcOperation, e);
631 serviceDataBuilder.setResponseCode("500");
634 LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
635 serviceDataBuilder.setResponseCode("503");
640 LOG.error("Caught exception looking for service logic", e);
641 serviceDataBuilder.setResponseCode("500");
644 String errorCode = serviceDataBuilder.getResponseCode();
646 if (!("0".equals(errorCode) || "200".equals(errorCode))) {
647 LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
649 LOG.info("Returned SUCCESS for "+svcOperation+" ");
650 serviceDataBuilder.setResponseCode("A1 Adapter Executed for CreatePolicyInstance. " );
653 RpcResult<CreatePolicyInstanceOutput> rpcResult =
654 RpcResultBuilder.<CreatePolicyInstanceOutput> status(true).withResult(serviceDataBuilder.build()).build();
656 LOG.info("Successful exit from createPolicyInstance ");
658 return Futures.immediateFuture(rpcResult);
663 // RPC getPolicyInstance
666 public ListenableFuture<RpcResult<GetPolicyInstanceOutput>> getPolicyInstance(
667 GetPolicyInstanceInput input) {
668 final String svcOperation = "getPolicyInstance";
670 Properties parms = new Properties();
671 GetPolicyInstanceOutputBuilder serviceDataBuilder = new GetPolicyInstanceOutputBuilder();
673 LOG.info( "Reached RPC getPolicyInstance");
675 LOG.info( svcOperation +" called." );
678 LOG.debug("exiting " +svcOperation+ " because of invalid input");
679 serviceDataBuilder.setResponseCode("Input is null");
680 RpcResult<GetPolicyInstanceOutput> rpcResult =
681 RpcResultBuilder.<GetPolicyInstanceOutput> status(true).withResult(serviceDataBuilder.build()).build();
682 return Futures.immediateFuture(rpcResult);
685 // add input to parms
686 LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
687 GetPolicyInstanceInputBuilder inputBuilder = new GetPolicyInstanceInputBuilder(input);
688 MdsalHelper.toProperties(parms, inputBuilder.build());
690 // Call SLI sync method
693 if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
695 LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
698 A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
702 LOG.error("Caught exception executing service logic for "+ svcOperation, e);
703 serviceDataBuilder.setResponseCode("500");
706 LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
707 serviceDataBuilder.setResponseCode("503");
712 LOG.error("Caught exception looking for service logic", e);
713 serviceDataBuilder.setResponseCode("500");
716 String errorCode = serviceDataBuilder.getResponseCode();
718 if (!("0".equals(errorCode) || "200".equals(errorCode))) {
719 LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
721 LOG.info("Returned SUCCESS for "+svcOperation+" ");
722 serviceDataBuilder.setResponseCode("A1 Adapter Executed for GetPolicyInstance. " );
725 RpcResult<GetPolicyInstanceOutput> rpcResult =
726 RpcResultBuilder.<GetPolicyInstanceOutput> status(true).withResult(serviceDataBuilder.build()).build();
728 LOG.info("Successful exit from getPolicyInstance ");
730 return Futures.immediateFuture(rpcResult);
735 // RPC deletePolicyInstance
738 public ListenableFuture<RpcResult<DeletePolicyInstanceOutput>> deletePolicyInstance(
739 DeletePolicyInstanceInput input) {
740 final String svcOperation = "deletePolicyInstance";
742 Properties parms = new Properties();
743 DeletePolicyInstanceOutputBuilder serviceDataBuilder = new DeletePolicyInstanceOutputBuilder();
745 LOG.info( "Reached RPC deletePolicyInstance");
747 LOG.info( svcOperation +" called." );
750 LOG.debug("exiting " +svcOperation+ " because of invalid input");
751 serviceDataBuilder.setResponseCode("Input is null");
752 RpcResult<DeletePolicyInstanceOutput> rpcResult =
753 RpcResultBuilder.<DeletePolicyInstanceOutput> status(true).withResult(serviceDataBuilder.build()).build();
754 return Futures.immediateFuture(rpcResult);
757 // add input to parms
758 LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
759 DeletePolicyInstanceInputBuilder inputBuilder = new DeletePolicyInstanceInputBuilder(input);
760 MdsalHelper.toProperties(parms, inputBuilder.build());
762 // Call SLI sync method
765 if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
767 LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
770 A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
774 LOG.error("Caught exception executing service logic for "+ svcOperation, e);
775 serviceDataBuilder.setResponseCode("500");
778 LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
779 serviceDataBuilder.setResponseCode("503");
784 LOG.error("Caught exception looking for service logic", e);
785 serviceDataBuilder.setResponseCode("500");
788 String errorCode = serviceDataBuilder.getResponseCode();
790 if (!("0".equals(errorCode) || "200".equals(errorCode))) {
791 LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
793 LOG.info("Returned SUCCESS for "+svcOperation+" ");
794 serviceDataBuilder.setResponseCode("A1 Adapter Executed for DeletePolicyInstance. ");
797 RpcResult<DeletePolicyInstanceOutput> rpcResult =
798 RpcResultBuilder.<DeletePolicyInstanceOutput> status(true).withResult(serviceDataBuilder.build()).build();
800 LOG.info("Successful exit from deletePolicyInstance ");
802 return Futures.immediateFuture(rpcResult);
810 public ListenableFuture<RpcResult<GetStatusOutput>> getStatus(
811 GetStatusInput input) {
812 final String svcOperation = "getStatus";
814 Properties parms = new Properties();
815 GetStatusOutputBuilder serviceDataBuilder = new GetStatusOutputBuilder();
817 LOG.info( "Reached RPC getStatus");
819 LOG.info( svcOperation +" called." );
822 LOG.debug("exiting " +svcOperation+ " because of invalid input");
823 serviceDataBuilder.setResponseCode("Input is null");
824 RpcResult<GetStatusOutput> rpcResult =
825 RpcResultBuilder.<GetStatusOutput> status(true).withResult(serviceDataBuilder.build()).build();
826 return Futures.immediateFuture(rpcResult);
829 // add input to parms
830 LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
831 GetStatusInputBuilder inputBuilder = new GetStatusInputBuilder(input);
832 MdsalHelper.toProperties(parms, inputBuilder.build());
834 // Call SLI sync method
837 if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
839 LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
842 A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
846 LOG.error("Caught exception executing service logic for "+ svcOperation, e);
847 serviceDataBuilder.setResponseCode("500");
850 LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
851 serviceDataBuilder.setResponseCode("503");
856 LOG.error("Caught exception looking for service logic", e);
857 serviceDataBuilder.setResponseCode("500");
860 String errorCode = serviceDataBuilder.getResponseCode();
862 if (!("0".equals(errorCode) || "200".equals(errorCode))) {
863 LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
865 LOG.info("Returned SUCCESS for "+svcOperation+" ");
866 serviceDataBuilder.setResponseCode("A1 Adapter Executed for GetStatus. " );
869 RpcResult<GetStatusOutput> rpcResult =
870 RpcResultBuilder.<GetStatusOutput> status(true).withResult(serviceDataBuilder.build()).build();
872 LOG.info("Successful exit from getStatus ");
874 return Futures.immediateFuture(rpcResult);