Inclusion of A1 adapter in SDNR meta karaf feature
[ccsdk/features.git] / sdnr / northbound / a1Adapter / provider / src / main / java / org / onap / ccsdk / features / sdnr / northbound / a1Adapter / A1AdapterProvider.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * openECOMP : SDN-C
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights
6  *                      reserved.
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
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
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=========================================================
20  */
21
22 package org.onap.ccsdk.features.sdnr.northbound.a1Adapter;
23
24 import java.util.Properties;
25 import java.util.concurrent.ExecutorService;
26 import java.util.concurrent.Executors;
27
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.*;
36
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;
42
43 import com.google.common.base.Preconditions;
44 import com.google.common.util.concurrent.Futures;
45 import com.google.common.util.concurrent.ListenableFuture;
46
47 /**
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.
51  *
52  */
53 public class A1AdapterProvider implements AutoCloseable, A1ADAPTERAPIService {
54
55     private static final Logger LOG = LoggerFactory.getLogger(A1AdapterProvider.class);
56
57     private static final String APPLICATION_NAME = "a1Adapter-api";
58
59     private final ExecutorService executor;
60
61     protected DataBroker dataBroker;
62     protected NotificationPublishService notificationService;
63     protected RpcProviderRegistry rpcRegistry;
64     protected BindingAwareBroker.RpcRegistration<A1ADAPTERAPIService> rpcRegistration;
65     private final A1AdapterClient A1AdapterClient;
66
67
68     public A1AdapterProvider(final DataBroker dataBroker,
69                                                           final NotificationPublishService notificationPublishService,
70                                                           final RpcProviderRegistry rpcProviderRegistry,
71                                                           final A1AdapterClient A1AdapterClient) {
72
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;
79                 initialize();
80     }
81
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);
86     }
87
88     protected void initializeChild() {
89         //Override if you have custom initialization intelligence
90     }
91
92     @Override
93     public void close() throws Exception {
94         LOG.info( "Closing provider for {}", APPLICATION_NAME);
95             executor.shutdown();
96             rpcRegistration.close();
97         LOG.info( "Successfully closed provider for {}", APPLICATION_NAME);
98     }
99
100 // RPC getNearRT-RICs
101
102 @Override
103 public ListenableFuture<RpcResult<GetNearRTRICsOutput>> getNearRTRICs(
104     GetNearRTRICsInput input) {
105   final String svcOperation = "getNearRT-RICs";
106
107   Properties parms = new Properties();
108   GetNearRTRICsOutputBuilder serviceDataBuilder = new GetNearRTRICsOutputBuilder();
109
110   LOG.info( "Reached RPC getNearRT-RICs");
111
112   LOG.info( svcOperation +" called." );
113
114   if(input == null ) {
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);
120   }
121
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());
126
127   LOG.info("Printing SLI parameters to be passed");
128
129   // iterate properties file to get key-value pairs
130     for (String key : parms.stringPropertyNames()) {
131       String value = parms.getProperty(key);
132       LOG.info("The SLI parameter in " + key + " is: " + value);
133     }
134
135   // Call SLI sync method
136   try
137   {
138     if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
139     {
140       LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
141       try
142       {
143         A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
144       }
145       catch (Exception e)
146       {
147         LOG.error("Caught exception executing service logic for "+ svcOperation, e);
148         serviceDataBuilder.setResponseCode("500");
149       }
150     } else {
151       LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
152       serviceDataBuilder.setResponseCode("503");
153     }
154   }
155   catch (Exception e)
156   {
157     LOG.error("Caught exception looking for service logic", e);
158     serviceDataBuilder.setResponseCode("500");
159   }
160
161   String errorCode = serviceDataBuilder.getResponseCode();
162
163   if (!("0".equals(errorCode) || "200".equals(errorCode))) {
164     LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
165   } else {
166     LOG.info("Returned SUCCESS for "+svcOperation+" ");
167     serviceDataBuilder.setResponseCode("A1 Adapter Executed for GetNearRTRICs " );
168   }
169
170   RpcResult<GetNearRTRICsOutput> rpcResult =
171       RpcResultBuilder.<GetNearRTRICsOutput> status(true).withResult(serviceDataBuilder.build()).build();
172
173   LOG.info("Successful exit from getNearRT-RICs ");
174
175   return Futures.immediateFuture(rpcResult);
176 }
177
178 // RPC getHealthCheck
179
180         @Override
181         public ListenableFuture<RpcResult<GetHealthCheckOutput>> getHealthCheck(
182                         GetHealthCheckInput input) {
183                 final String svcOperation = "getHealthCheck";
184
185                 Properties parms = new Properties();
186                 GetHealthCheckOutputBuilder serviceDataBuilder = new GetHealthCheckOutputBuilder();
187
188     LOG.info( "Reached RPC getHealthCheck");
189
190                 LOG.info( svcOperation +" called." );
191
192                 if(input == null ) {
193                         LOG.debug("exiting " +svcOperation+ " because of invalid input");
194                         serviceDataBuilder.setResponseCode("Input is null");
195                         RpcResult<GetHealthCheckOutput> rpcResult =
196                                 RpcResultBuilder.<GetHealthCheckOutput> status(true).withResult(serviceDataBuilder.build()).build();
197                         return Futures.immediateFuture(rpcResult);
198                 }
199
200                 // add input to parms
201                 LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
202                 GetHealthCheckInputBuilder inputBuilder = new GetHealthCheckInputBuilder(input);
203                 MdsalHelper.toProperties(parms, inputBuilder.build());
204
205     LOG.info("Printing SLI parameters to be passed");
206
207     // iterate properties file to get key-value pairs
208                         for (String key : parms.stringPropertyNames()) {
209                                 String value = parms.getProperty(key);
210                                 LOG.info("The SLI parameter in " + key + " is: " + value);
211                         }
212
213                 // Call SLI sync method
214                 try
215                 {
216                         if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
217                         {
218         LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
219                                 try
220                                 {
221           A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
222                                 }
223                                 catch (Exception e)
224                                 {
225                                         LOG.error("Caught exception executing service logic for "+ svcOperation, e);
226                                         serviceDataBuilder.setResponseCode("500");
227                                 }
228                         } else {
229                                 LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
230                                 serviceDataBuilder.setResponseCode("503");
231                         }
232                 }
233                 catch (Exception e)
234                 {
235                         LOG.error("Caught exception looking for service logic", e);
236                         serviceDataBuilder.setResponseCode("500");
237                 }
238
239                 String errorCode = serviceDataBuilder.getResponseCode();
240
241                 if (!("0".equals(errorCode) || "200".equals(errorCode))) {
242                         LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
243                 } else {
244                         LOG.info("Returned SUCCESS for "+svcOperation+" ");
245       serviceDataBuilder.setResponseCode("A1 Adapter Executed for GetHealthCheck. " );
246                 }
247
248                 RpcResult<GetHealthCheckOutput> rpcResult =
249                                 RpcResultBuilder.<GetHealthCheckOutput> status(true).withResult(serviceDataBuilder.build()).build();
250
251     LOG.info("Successful exit from getHealthCheck ");
252
253                 return Futures.immediateFuture(rpcResult);
254         }
255
256 // RPC getPolicyTypes
257
258 @Override
259 public ListenableFuture<RpcResult<GetPolicyTypesOutput>> getPolicyTypes(
260     GetPolicyTypesInput input) {
261   final String svcOperation = "getPolicyTypes";
262
263   Properties parms = new Properties();
264   GetPolicyTypesOutputBuilder serviceDataBuilder = new GetPolicyTypesOutputBuilder();
265
266   LOG.info( "Reached RPC getPolicyTypes");
267
268   LOG.info( svcOperation +" called." );
269
270   if(input == null ) {
271     LOG.debug("exiting " +svcOperation+ " because of invalid input");
272     serviceDataBuilder.setResponseCode("Input is null");
273     RpcResult<GetPolicyTypesOutput> rpcResult =
274       RpcResultBuilder.<GetPolicyTypesOutput> status(true).withResult(serviceDataBuilder.build()).build();
275     return Futures.immediateFuture(rpcResult);
276   }
277
278   // add input to parms
279   LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
280   GetPolicyTypesInputBuilder inputBuilder = new GetPolicyTypesInputBuilder(input);
281   MdsalHelper.toProperties(parms, inputBuilder.build());
282
283   LOG.info("Printing SLI parameters to be passed");
284
285   // iterate properties file to get key-value pairs
286     for (String key : parms.stringPropertyNames()) {
287       String value = parms.getProperty(key);
288       LOG.info("The SLI parameter in " + key + " is: " + value);
289     }
290
291   // Call SLI sync method
292   try
293   {
294     if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
295     {
296       LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
297       try
298       {
299         A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
300       }
301       catch (Exception e)
302       {
303         LOG.error("Caught exception executing service logic for "+ svcOperation, e);
304         serviceDataBuilder.setResponseCode("500");
305       }
306     } else {
307       LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
308       serviceDataBuilder.setResponseCode("503");
309     }
310   }
311   catch (Exception e)
312   {
313     LOG.error("Caught exception looking for service logic", e);
314     serviceDataBuilder.setResponseCode("500");
315   }
316
317   String errorCode = serviceDataBuilder.getResponseCode();
318
319   if (!("0".equals(errorCode) || "200".equals(errorCode))) {
320     LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
321   } else {
322     LOG.info("Returned SUCCESS for "+svcOperation+" ");
323     serviceDataBuilder.setResponseCode("A1 Adapter Executed for GetPolicyTypes ");
324   }
325
326   RpcResult<GetPolicyTypesOutput> rpcResult =
327       RpcResultBuilder.<GetPolicyTypesOutput> status(true).withResult(serviceDataBuilder.build()).build();
328
329   LOG.info("Successful exit from getPolicyTypes ");
330
331   return Futures.immediateFuture(rpcResult);
332 }
333
334 // RPC createPolicyType
335
336 @Override
337 public ListenableFuture<RpcResult<CreatePolicyTypeOutput>> createPolicyType(
338     CreatePolicyTypeInput input) {
339   final String svcOperation = "createPolicyType";
340
341   Properties parms = new Properties();
342   CreatePolicyTypeOutputBuilder serviceDataBuilder = new CreatePolicyTypeOutputBuilder();
343
344   LOG.info( "Reached RPC createPolicyType");
345
346   LOG.info( svcOperation +" called." );
347
348   if(input == null ) {
349     LOG.debug("exiting " +svcOperation+ " because of invalid input");
350     serviceDataBuilder.setResponseCode("Input is null");
351     RpcResult<CreatePolicyTypeOutput> rpcResult =
352       RpcResultBuilder.<CreatePolicyTypeOutput> status(true).withResult(serviceDataBuilder.build()).build();
353     return Futures.immediateFuture(rpcResult);
354   }
355
356   // add input to parms
357   LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
358   CreatePolicyTypeInputBuilder inputBuilder = new CreatePolicyTypeInputBuilder(input);
359   MdsalHelper.toProperties(parms, inputBuilder.build());
360
361   LOG.info("Printing SLI parameters to be passed");
362
363   // iterate properties file to get key-value pairs
364     for (String key : parms.stringPropertyNames()) {
365       String value = parms.getProperty(key);
366       LOG.info("The SLI parameter in " + key + " is: " + value);
367     }
368
369   // Call SLI sync method
370   try
371   {
372     if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
373     {
374       LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
375       try
376       {
377         A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
378       }
379       catch (Exception e)
380       {
381         LOG.error("Caught exception executing service logic for "+ svcOperation, e);
382         serviceDataBuilder.setResponseCode("500");
383       }
384     } else {
385       LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
386       serviceDataBuilder.setResponseCode("503");
387     }
388   }
389   catch (Exception e)
390   {
391     LOG.error("Caught exception looking for service logic", e);
392     serviceDataBuilder.setResponseCode("500");
393   }
394
395   String errorCode = serviceDataBuilder.getResponseCode();
396
397   if (!("0".equals(errorCode) || "200".equals(errorCode))) {
398     LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
399   } else {
400     LOG.info("Returned SUCCESS for "+svcOperation+" ");
401     serviceDataBuilder.setResponseCode("A1 Adapter Executed for CreatePolicyType" );
402   }
403
404   RpcResult<CreatePolicyTypeOutput> rpcResult =
405       RpcResultBuilder.<CreatePolicyTypeOutput> status(true).withResult(serviceDataBuilder.build()).build();
406
407   LOG.info("Successful exit from createPolicyType ");
408
409   return Futures.immediateFuture(rpcResult);
410 }
411
412 // RPC getPolicyType
413
414 @Override
415 public ListenableFuture<RpcResult<GetPolicyTypeOutput>> getPolicyType(
416     GetPolicyTypeInput input) {
417   final String svcOperation = "getPolicyType";
418
419   Properties parms = new Properties();
420   GetPolicyTypeOutputBuilder serviceDataBuilder = new GetPolicyTypeOutputBuilder();
421
422   LOG.info( "Reached RPC getPolicyType");
423
424   LOG.info( svcOperation +" called." );
425
426   if(input == null ) {
427     LOG.debug("exiting " +svcOperation+ " because of invalid input");
428     serviceDataBuilder.setResponseCode("Input is null");
429     RpcResult<GetPolicyTypeOutput> rpcResult =
430       RpcResultBuilder.<GetPolicyTypeOutput> status(true).withResult(serviceDataBuilder.build()).build();
431     return Futures.immediateFuture(rpcResult);
432   }
433
434   // add input to parms
435   LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
436   GetPolicyTypeInputBuilder inputBuilder = new GetPolicyTypeInputBuilder(input);
437   MdsalHelper.toProperties(parms, inputBuilder.build());
438
439   LOG.info("Printing SLI parameters to be passed");
440
441   // iterate properties file to get key-value pairs
442     for (String key : parms.stringPropertyNames()) {
443       String value = parms.getProperty(key);
444       LOG.info("The SLI parameter in " + key + " is: " + value);
445     }
446
447   // Call SLI sync method
448   try
449   {
450     if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
451     {
452       LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
453       try
454       {
455         A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
456       }
457       catch (Exception e)
458       {
459         LOG.error("Caught exception executing service logic for "+ svcOperation, e);
460         serviceDataBuilder.setResponseCode("500");
461       }
462     } else {
463       LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
464       serviceDataBuilder.setResponseCode("503");
465     }
466   }
467   catch (Exception e)
468   {
469     LOG.error("Caught exception looking for service logic", e);
470     serviceDataBuilder.setResponseCode("500");
471   }
472
473   String errorCode = serviceDataBuilder.getResponseCode();
474
475   if (!("0".equals(errorCode) || "200".equals(errorCode))) {
476     LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
477   } else {
478     LOG.info("Returned SUCCESS for "+svcOperation+" ");
479     serviceDataBuilder.setResponseCode("A1 Adapter Executed for GetPolicyType. " );
480   }
481
482   RpcResult<GetPolicyTypeOutput> rpcResult =
483       RpcResultBuilder.<GetPolicyTypeOutput> status(true).withResult(serviceDataBuilder.build()).build();
484
485   LOG.info("Successful exit from getPolicyType ");
486
487   return Futures.immediateFuture(rpcResult);
488 }
489
490 // RPC deletePolicyType
491
492 @Override
493 public ListenableFuture<RpcResult<DeletePolicyTypeOutput>> deletePolicyType(
494     DeletePolicyTypeInput input) {
495   final String svcOperation = "deletePolicyType";
496
497   Properties parms = new Properties();
498   DeletePolicyTypeOutputBuilder serviceDataBuilder = new DeletePolicyTypeOutputBuilder();
499
500   LOG.info( "Reached RPC deletePolicyType");
501
502   LOG.info( svcOperation +" called." );
503
504   if(input == null ) {
505     LOG.debug("exiting " +svcOperation+ " because of invalid input");
506     serviceDataBuilder.setResponseCode("Input is null");
507     RpcResult<DeletePolicyTypeOutput> rpcResult =
508       RpcResultBuilder.<DeletePolicyTypeOutput> status(true).withResult(serviceDataBuilder.build()).build();
509     return Futures.immediateFuture(rpcResult);
510   }
511
512   // add input to parms
513   LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
514   DeletePolicyTypeInputBuilder inputBuilder = new DeletePolicyTypeInputBuilder(input);
515   MdsalHelper.toProperties(parms, inputBuilder.build());
516
517   LOG.info("Printing SLI parameters to be passed");
518
519   // iterate properties file to get key-value pairs
520     for (String key : parms.stringPropertyNames()) {
521       String value = parms.getProperty(key);
522       LOG.info("The SLI parameter in " + key + " is: " + value);
523     }
524
525   // Call SLI sync method
526   try
527   {
528     if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
529     {
530       LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
531       try
532       {
533         A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
534       }
535       catch (Exception e)
536       {
537         LOG.error("Caught exception executing service logic for "+ svcOperation, e);
538         serviceDataBuilder.setResponseCode("500");
539       }
540     } else {
541       LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
542       serviceDataBuilder.setResponseCode("503");
543     }
544   }
545   catch (Exception e)
546   {
547     LOG.error("Caught exception looking for service logic", e);
548     serviceDataBuilder.setResponseCode("500");
549   }
550
551   String errorCode = serviceDataBuilder.getResponseCode();
552
553   if (!("0".equals(errorCode) || "200".equals(errorCode))) {
554     LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
555   } else {
556     LOG.info("Returned SUCCESS for "+svcOperation+" ");
557     serviceDataBuilder.setResponseCode("A1 Adapter Executed for DeletePolicyType ");
558   }
559
560   RpcResult<DeletePolicyTypeOutput> rpcResult =
561       RpcResultBuilder.<DeletePolicyTypeOutput> status(true).withResult(serviceDataBuilder.build()).build();
562
563   LOG.info("Successful exit from deletePolicyType ");
564
565   return Futures.immediateFuture(rpcResult);
566 }
567
568 // RPC getPolicyInstances
569
570 @Override
571 public ListenableFuture<RpcResult<GetPolicyInstancesOutput>> getPolicyInstances(
572     GetPolicyInstancesInput input) {
573   final String svcOperation = "getPolicyInstances";
574
575   Properties parms = new Properties();
576   GetPolicyInstancesOutputBuilder serviceDataBuilder = new GetPolicyInstancesOutputBuilder();
577
578   LOG.info( "Reached RPC getPolicyInstances");
579
580   LOG.info( svcOperation +" called." );
581
582   if(input == null ) {
583     LOG.debug("exiting " +svcOperation+ " because of invalid input");
584     serviceDataBuilder.setResponseCode("Input is null");
585     RpcResult<GetPolicyInstancesOutput> rpcResult =
586       RpcResultBuilder.<GetPolicyInstancesOutput> status(true).withResult(serviceDataBuilder.build()).build();
587     return Futures.immediateFuture(rpcResult);
588   }
589
590   // add input to parms
591   LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
592   GetPolicyInstancesInputBuilder inputBuilder = new GetPolicyInstancesInputBuilder(input);
593   MdsalHelper.toProperties(parms, inputBuilder.build());
594
595   LOG.info("Printing SLI parameters to be passed");
596
597   // iterate properties file to get key-value pairs
598     for (String key : parms.stringPropertyNames()) {
599       String value = parms.getProperty(key);
600       LOG.info("The SLI parameter in " + key + " is: " + value);
601     }
602
603   // Call SLI sync method
604   try
605   {
606     if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
607     {
608       LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
609       try
610       {
611         A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
612       }
613       catch (Exception e)
614       {
615         LOG.error("Caught exception executing service logic for "+ svcOperation, e);
616         serviceDataBuilder.setResponseCode("500");
617       }
618     } else {
619       LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
620       serviceDataBuilder.setResponseCode("503");
621     }
622   }
623   catch (Exception e)
624   {
625     LOG.error("Caught exception looking for service logic", e);
626     serviceDataBuilder.setResponseCode("500");
627   }
628
629   String errorCode = serviceDataBuilder.getResponseCode();
630
631   if (!("0".equals(errorCode) || "200".equals(errorCode))) {
632     LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
633   } else {
634     LOG.info("Returned SUCCESS for "+svcOperation+" ");
635     serviceDataBuilder.setResponseCode("A1 Adapter Executed for GetPolicyInstances " );
636   }
637
638   RpcResult<GetPolicyInstancesOutput> rpcResult =
639       RpcResultBuilder.<GetPolicyInstancesOutput> status(true).withResult(serviceDataBuilder.build()).build();
640
641   LOG.info("Successful exit from getPolicyInstances ");
642
643   return Futures.immediateFuture(rpcResult);
644 }
645
646
647 // RPC createPolicyInstance
648
649 @Override
650 public ListenableFuture<RpcResult<CreatePolicyInstanceOutput>> createPolicyInstance(
651     CreatePolicyInstanceInput input) {
652   final String svcOperation = "createPolicyInstance";
653
654   Properties parms = new Properties();
655   CreatePolicyInstanceOutputBuilder serviceDataBuilder = new CreatePolicyInstanceOutputBuilder();
656
657   LOG.info( "Reached RPC createPolicyInstance");
658
659   LOG.info( svcOperation +" called." );
660
661   if(input == null ) {
662     LOG.debug("exiting " +svcOperation+ " because of invalid input");
663     serviceDataBuilder.setResponseCode("Input is null");
664     RpcResult<CreatePolicyInstanceOutput> rpcResult =
665       RpcResultBuilder.<CreatePolicyInstanceOutput> status(true).withResult(serviceDataBuilder.build()).build();
666     return Futures.immediateFuture(rpcResult);
667   }
668
669   // add input to parms
670   LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
671   CreatePolicyInstanceInputBuilder inputBuilder = new CreatePolicyInstanceInputBuilder(input);
672   MdsalHelper.toProperties(parms, inputBuilder.build());
673
674   LOG.info("Printing SLI parameters to be passed");
675
676   // iterate properties file to get key-value pairs
677     for (String key : parms.stringPropertyNames()) {
678       String value = parms.getProperty(key);
679       LOG.info("The SLI parameter in " + key + " is: " + value);
680     }
681
682   // Call SLI sync method
683   try
684   {
685     if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
686     {
687       LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
688       try
689       {
690         A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
691       }
692       catch (Exception e)
693       {
694         LOG.error("Caught exception executing service logic for "+ svcOperation, e);
695         serviceDataBuilder.setResponseCode("500");
696       }
697     } else {
698       LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
699       serviceDataBuilder.setResponseCode("503");
700     }
701   }
702   catch (Exception e)
703   {
704     LOG.error("Caught exception looking for service logic", e);
705     serviceDataBuilder.setResponseCode("500");
706   }
707
708   String errorCode = serviceDataBuilder.getResponseCode();
709
710   if (!("0".equals(errorCode) || "200".equals(errorCode))) {
711     LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
712   } else {
713     LOG.info("Returned SUCCESS for "+svcOperation+" ");
714     serviceDataBuilder.setResponseCode("A1 Adapter Executed for CreatePolicyInstance. " );
715   }
716
717   RpcResult<CreatePolicyInstanceOutput> rpcResult =
718       RpcResultBuilder.<CreatePolicyInstanceOutput> status(true).withResult(serviceDataBuilder.build()).build();
719
720   LOG.info("Successful exit from createPolicyInstance ");
721
722   return Futures.immediateFuture(rpcResult);
723 }
724
725
726
727 // RPC getPolicyInstance
728
729 @Override
730 public ListenableFuture<RpcResult<GetPolicyInstanceOutput>> getPolicyInstance(
731     GetPolicyInstanceInput input) {
732   final String svcOperation = "getPolicyInstance";
733
734   Properties parms = new Properties();
735   GetPolicyInstanceOutputBuilder serviceDataBuilder = new GetPolicyInstanceOutputBuilder();
736
737   LOG.info( "Reached RPC getPolicyInstance");
738
739   LOG.info( svcOperation +" called." );
740
741   if(input == null ) {
742     LOG.debug("exiting " +svcOperation+ " because of invalid input");
743     serviceDataBuilder.setResponseCode("Input is null");
744     RpcResult<GetPolicyInstanceOutput> rpcResult =
745       RpcResultBuilder.<GetPolicyInstanceOutput> status(true).withResult(serviceDataBuilder.build()).build();
746     return Futures.immediateFuture(rpcResult);
747   }
748
749   // add input to parms
750   LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
751   GetPolicyInstanceInputBuilder inputBuilder = new GetPolicyInstanceInputBuilder(input);
752   MdsalHelper.toProperties(parms, inputBuilder.build());
753
754   LOG.info("Printing SLI parameters to be passed");
755
756   // iterate properties file to get key-value pairs
757     for (String key : parms.stringPropertyNames()) {
758       String value = parms.getProperty(key);
759       LOG.info("The SLI parameter in " + key + " is: " + value);
760     }
761
762   // Call SLI sync method
763   try
764   {
765     if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
766     {
767       LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
768       try
769       {
770         A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
771       }
772       catch (Exception e)
773       {
774         LOG.error("Caught exception executing service logic for "+ svcOperation, e);
775         serviceDataBuilder.setResponseCode("500");
776       }
777     } else {
778       LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
779       serviceDataBuilder.setResponseCode("503");
780     }
781   }
782   catch (Exception e)
783   {
784     LOG.error("Caught exception looking for service logic", e);
785     serviceDataBuilder.setResponseCode("500");
786   }
787
788   String errorCode = serviceDataBuilder.getResponseCode();
789
790   if (!("0".equals(errorCode) || "200".equals(errorCode))) {
791     LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
792   } else {
793     LOG.info("Returned SUCCESS for "+svcOperation+" ");
794     serviceDataBuilder.setResponseCode("A1 Adapter Executed for GetPolicyInstance. " );
795   }
796
797   RpcResult<GetPolicyInstanceOutput> rpcResult =
798       RpcResultBuilder.<GetPolicyInstanceOutput> status(true).withResult(serviceDataBuilder.build()).build();
799
800   LOG.info("Successful exit from getPolicyInstance ");
801
802   return Futures.immediateFuture(rpcResult);
803 }
804
805
806
807 // RPC deletePolicyInstance
808
809 @Override
810 public ListenableFuture<RpcResult<DeletePolicyInstanceOutput>> deletePolicyInstance(
811     DeletePolicyInstanceInput input) {
812   final String svcOperation = "deletePolicyInstance";
813
814   Properties parms = new Properties();
815   DeletePolicyInstanceOutputBuilder serviceDataBuilder = new DeletePolicyInstanceOutputBuilder();
816
817   LOG.info( "Reached RPC deletePolicyInstance");
818
819   LOG.info( svcOperation +" called." );
820
821   if(input == null ) {
822     LOG.debug("exiting " +svcOperation+ " because of invalid input");
823     serviceDataBuilder.setResponseCode("Input is null");
824     RpcResult<DeletePolicyInstanceOutput> rpcResult =
825       RpcResultBuilder.<DeletePolicyInstanceOutput> status(true).withResult(serviceDataBuilder.build()).build();
826     return Futures.immediateFuture(rpcResult);
827   }
828
829   // add input to parms
830   LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
831   DeletePolicyInstanceInputBuilder inputBuilder = new DeletePolicyInstanceInputBuilder(input);
832   MdsalHelper.toProperties(parms, inputBuilder.build());
833
834   LOG.info("Printing SLI parameters to be passed");
835
836   // iterate properties file to get key-value pairs
837     for (String key : parms.stringPropertyNames()) {
838       String value = parms.getProperty(key);
839       LOG.info("The SLI parameter in " + key + " is: " + value);
840     }
841
842   // Call SLI sync method
843   try
844   {
845     if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
846     {
847       LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
848       try
849       {
850         A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
851       }
852       catch (Exception e)
853       {
854         LOG.error("Caught exception executing service logic for "+ svcOperation, e);
855         serviceDataBuilder.setResponseCode("500");
856       }
857     } else {
858       LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
859       serviceDataBuilder.setResponseCode("503");
860     }
861   }
862   catch (Exception e)
863   {
864     LOG.error("Caught exception looking for service logic", e);
865     serviceDataBuilder.setResponseCode("500");
866   }
867
868   String errorCode = serviceDataBuilder.getResponseCode();
869
870   if (!("0".equals(errorCode) || "200".equals(errorCode))) {
871     LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
872   } else {
873     LOG.info("Returned SUCCESS for "+svcOperation+" ");
874     serviceDataBuilder.setResponseCode("A1 Adapter Executed for DeletePolicyInstance. ");
875   }
876
877   RpcResult<DeletePolicyInstanceOutput> rpcResult =
878       RpcResultBuilder.<DeletePolicyInstanceOutput> status(true).withResult(serviceDataBuilder.build()).build();
879
880   LOG.info("Successful exit from deletePolicyInstance ");
881
882   return Futures.immediateFuture(rpcResult);
883 }
884
885
886
887 // RPC getStatus
888
889 @Override
890 public ListenableFuture<RpcResult<GetStatusOutput>> getStatus(
891     GetStatusInput input) {
892   final String svcOperation = "getStatus";
893
894   Properties parms = new Properties();
895   GetStatusOutputBuilder serviceDataBuilder = new GetStatusOutputBuilder();
896
897   LOG.info( "Reached RPC getStatus");
898
899   LOG.info( svcOperation +" called." );
900
901   if(input == null ) {
902     LOG.debug("exiting " +svcOperation+ " because of invalid input");
903     serviceDataBuilder.setResponseCode("Input is null");
904     RpcResult<GetStatusOutput> rpcResult =
905       RpcResultBuilder.<GetStatusOutput> status(true).withResult(serviceDataBuilder.build()).build();
906     return Futures.immediateFuture(rpcResult);
907   }
908
909   // add input to parms
910   LOG.info("Adding INPUT data for "+svcOperation+" input: " + input);
911   GetStatusInputBuilder inputBuilder = new GetStatusInputBuilder(input);
912   MdsalHelper.toProperties(parms, inputBuilder.build());
913
914   LOG.info("Printing SLI parameters to be passed");
915
916   // iterate properties file to get key-value pairs
917     for (String key : parms.stringPropertyNames()) {
918       String value = parms.getProperty(key);
919       LOG.info("The SLI parameter in " + key + " is: " + value);
920     }
921
922   // Call SLI sync method
923   try
924   {
925     if (A1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation , null, "sync"))
926     {
927       LOG.info( "A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
928       try
929       {
930         A1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", serviceDataBuilder, parms);
931       }
932       catch (Exception e)
933       {
934         LOG.error("Caught exception executing service logic for "+ svcOperation, e);
935         serviceDataBuilder.setResponseCode("500");
936       }
937     } else {
938       LOG.error("No service logic active for A1Adapter: '" + svcOperation + "'");
939       serviceDataBuilder.setResponseCode("503");
940     }
941   }
942   catch (Exception e)
943   {
944     LOG.error("Caught exception looking for service logic", e);
945     serviceDataBuilder.setResponseCode("500");
946   }
947
948   String errorCode = serviceDataBuilder.getResponseCode();
949
950   if (!("0".equals(errorCode) || "200".equals(errorCode))) {
951     LOG.error("Returned FAILED for "+svcOperation+" error code: '" + errorCode + "'");
952   } else {
953     LOG.info("Returned SUCCESS for "+svcOperation+" ");
954     serviceDataBuilder.setResponseCode("A1 Adapter Executed for GetStatus. " );
955   }
956
957   RpcResult<GetStatusOutput> rpcResult =
958       RpcResultBuilder.<GetStatusOutput> status(true).withResult(serviceDataBuilder.build()).build();
959
960   LOG.info("Successful exit from getStatus ");
961
962   return Futures.immediateFuture(rpcResult);
963 }
964
965
966
967
968 }