From 00d7a8cf9bf7ff836abb0c758e1a0ec9498c779e Mon Sep 17 00:00:00 2001 From: Lathish Date: Fri, 14 Aug 2020 17:18:05 +0100 Subject: Add A1 implementation Issue-ID: CCSDK-2604 Change-Id: Iad40153e7a8a0468c4512ae284de47cf42ee31bd Signed-off-by: Lathish --- .../ccsdk/features/a1/adapter/A1AdapterClient.java | 189 +++++++++-- .../features/a1/adapter/A1AdapterProvider.java | 360 ++++++++++++++------- 2 files changed, 407 insertions(+), 142 deletions(-) (limited to 'a1-adapter/a1-adapter-api/provider/src/main') diff --git a/a1-adapter/a1-adapter-api/provider/src/main/java/org/onap/ccsdk/features/a1/adapter/A1AdapterClient.java b/a1-adapter/a1-adapter-api/provider/src/main/java/org/onap/ccsdk/features/a1/adapter/A1AdapterClient.java index fb21de4c..f1b2eaee 100644 --- a/a1-adapter/a1-adapter-api/provider/src/main/java/org/onap/ccsdk/features/a1/adapter/A1AdapterClient.java +++ b/a1-adapter/a1-adapter-api/provider/src/main/java/org/onap/ccsdk/features/a1/adapter/A1AdapterClient.java @@ -24,52 +24,175 @@ import java.util.Properties; import org.onap.ccsdk.sli.core.sli.SvcLogicException; import org.onap.ccsdk.sli.core.sli.provider.MdsalHelper; import org.onap.ccsdk.sli.core.sli.provider.SvcLogicService; +import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.DeleteA1PolicyOutputBuilder; +import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyOutputBuilder; +import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyStatusOutputBuilder; import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyTypeOutputBuilder; +import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.PutA1PolicyOutputBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class A1AdapterClient { - private static final Logger LOG = LoggerFactory.getLogger(A1AdapterClient.class); + private static final Logger LOG = LoggerFactory.getLogger(A1AdapterClient.class); - private SvcLogicService svcLogicService = null; + private SvcLogicService svcLogicService = null; - public A1AdapterClient(final SvcLogicService svcLogicService) { - this.svcLogicService = svcLogicService; - } + public A1AdapterClient(final SvcLogicService svcLogicService) { + this.svcLogicService = svcLogicService; + } + + public boolean hasGraph(String module, String rpc, String version, String mode) throws SvcLogicException { + return svcLogicService.hasGraph(module, rpc, version, mode); + } + + public Properties execute(String module, String rpc, String version, String mode, + GetA1PolicyTypeOutputBuilder serviceData, Properties parms) throws SvcLogicException { + Properties localProp; + localProp = MdsalHelper.toProperties(parms, serviceData); + if (LOG.isDebugEnabled()) { + LOG.debug("Parameters passed to SLI"); + + for (Object key : localProp.keySet()) { + String parmName = (String) key; + String parmValue = localProp.getProperty(parmName); + + LOG.debug(parmName + " = " + parmValue); + } + } + Properties respProps = svcLogicService.execute(module, rpc, version, mode, localProp); + if (LOG.isDebugEnabled()) { + LOG.debug("Parameters returned by SLI"); + for (Object key : respProps.keySet()) { + String parmName = (String) key; + String parmValue = respProps.getProperty(parmName); + LOG.debug(parmName + " = " + parmValue); + } + } + if ("failure".equalsIgnoreCase(respProps.getProperty("SvcLogic.status"))) { + return respProps; + } + MdsalHelper.toBuilder(respProps, serviceData); + return respProps; + } + + public Properties execute(String module, String rpc, String version, String mode, + GetA1PolicyStatusOutputBuilder serviceData, Properties parms) throws SvcLogicException { + Properties localProp; + localProp = MdsalHelper.toProperties(parms, serviceData); + if (LOG.isDebugEnabled()) { + LOG.debug("Parameters passed to SLI"); - public boolean hasGraph(String module, String rpc, String version, String mode) - throws SvcLogicException { - return svcLogicService.hasGraph(module, rpc, version, mode); - } + for (Object key : localProp.keySet()) { + String parmName = (String) key; + String parmValue = localProp.getProperty(parmName); - public Properties execute(String module, String rpc, String version, String mode, - GetA1PolicyTypeOutputBuilder serviceData, Properties parms) throws SvcLogicException { - Properties localProp; - localProp = MdsalHelper.toProperties(parms, serviceData); - if (LOG.isDebugEnabled()) { - LOG.debug("Parameters passed to SLI"); + LOG.debug(parmName + " = " + parmValue); + } + } + Properties respProps = svcLogicService.execute(module, rpc, version, mode, localProp); + if (LOG.isDebugEnabled()) { + LOG.debug("Parameters returned by SLI"); + for (Object key : respProps.keySet()) { + String parmName = (String) key; + String parmValue = respProps.getProperty(parmName); + LOG.debug(parmName + " = " + parmValue); + } + } + if ("failure".equalsIgnoreCase(respProps.getProperty("SvcLogic.status"))) { + return respProps; + } + MdsalHelper.toBuilder(respProps, serviceData); + return respProps; + } + + public Properties execute(String module, String rpc, String version, String mode, + GetA1PolicyOutputBuilder serviceData, Properties parms) throws SvcLogicException { + Properties localProp; + localProp = MdsalHelper.toProperties(parms, serviceData); + if (LOG.isDebugEnabled()) { + LOG.debug("Parameters passed to SLI"); - for (Object key : localProp.keySet()) { - String parmName = (String) key; - String parmValue = localProp.getProperty(parmName); + for (Object key : localProp.keySet()) { + String parmName = (String) key; + String parmValue = localProp.getProperty(parmName); - LOG.debug(parmName + " = " + parmValue); - } + LOG.debug(parmName + " = " + parmValue); + } + } + Properties respProps = svcLogicService.execute(module, rpc, version, mode, localProp); + if (LOG.isDebugEnabled()) { + LOG.debug("Parameters returned by SLI"); + for (Object key : respProps.keySet()) { + String parmName = (String) key; + String parmValue = respProps.getProperty(parmName); + LOG.debug(parmName + " = " + parmValue); + } + } + if ("failure".equalsIgnoreCase(respProps.getProperty("SvcLogic.status"))) { + return respProps; + } + MdsalHelper.toBuilder(respProps, serviceData); + return respProps; } - Properties respProps = svcLogicService.execute(module, rpc, version, mode, localProp); - if (LOG.isDebugEnabled()) { - LOG.debug("Parameters returned by SLI"); - for (Object key : respProps.keySet()) { - String parmName = (String) key; - String parmValue = respProps.getProperty(parmName); - LOG.debug(parmName + " = " + parmValue); - } + + public Properties execute(String module, String rpc, String version, String mode, + DeleteA1PolicyOutputBuilder serviceData, Properties parms) throws SvcLogicException { + Properties localProp; + localProp = MdsalHelper.toProperties(parms, serviceData); + if (LOG.isDebugEnabled()) { + LOG.debug("Parameters passed to SLI"); + + for (Object key : localProp.keySet()) { + String parmName = (String) key; + String parmValue = localProp.getProperty(parmName); + + LOG.debug(parmName + " = " + parmValue); + } + } + Properties respProps = svcLogicService.execute(module, rpc, version, mode, localProp); + if (LOG.isDebugEnabled()) { + LOG.debug("Parameters returned by SLI"); + for (Object key : respProps.keySet()) { + String parmName = (String) key; + String parmValue = respProps.getProperty(parmName); + LOG.debug(parmName + " = " + parmValue); + } + } + if ("failure".equalsIgnoreCase(respProps.getProperty("SvcLogic.status"))) { + return respProps; + } + MdsalHelper.toBuilder(respProps, serviceData); + return respProps; } - if ("failure".equalsIgnoreCase(respProps.getProperty("SvcLogic.status"))) { - return respProps; + + public Properties execute(String module, String rpc, String version, String mode, + PutA1PolicyOutputBuilder serviceData, Properties parms) throws SvcLogicException { + Properties localProp; + localProp = MdsalHelper.toProperties(parms, serviceData); + if (LOG.isDebugEnabled()) { + LOG.debug("Parameters passed to SLI"); + + for (Object key : localProp.keySet()) { + String parmName = (String) key; + String parmValue = localProp.getProperty(parmName); + + LOG.debug(parmName + " = " + parmValue); + } + } + Properties respProps = svcLogicService.execute(module, rpc, version, mode, localProp); + if (LOG.isDebugEnabled()) { + LOG.debug("Parameters returned by SLI"); + for (Object key : respProps.keySet()) { + String parmName = (String) key; + String parmValue = respProps.getProperty(parmName); + LOG.debug(parmName + " = " + parmValue); + } + } + if ("failure".equalsIgnoreCase(respProps.getProperty("SvcLogic.status"))) { + return respProps; + } + MdsalHelper.toBuilder(respProps, serviceData); + return respProps; } - MdsalHelper.toBuilder(respProps, serviceData); - return respProps; - } } diff --git a/a1-adapter/a1-adapter-api/provider/src/main/java/org/onap/ccsdk/features/a1/adapter/A1AdapterProvider.java b/a1-adapter/a1-adapter-api/provider/src/main/java/org/onap/ccsdk/features/a1/adapter/A1AdapterProvider.java index a1b9ef92..ed7bc95e 100644 --- a/a1-adapter/a1-adapter-api/provider/src/main/java/org/onap/ccsdk/features/a1/adapter/A1AdapterProvider.java +++ b/a1-adapter/a1-adapter-api/provider/src/main/java/org/onap/ccsdk/features/a1/adapter/A1AdapterProvider.java @@ -32,27 +32,34 @@ import org.opendaylight.controller.sal.binding.api.BindingAwareBroker; import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.A1ADAPTERAPIService; import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.DeleteA1PolicyInput; +import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.DeleteA1PolicyInputBuilder; import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.DeleteA1PolicyOutput; +import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.DeleteA1PolicyOutputBuilder; import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyInput; +import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyInputBuilder; import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyOutput; +import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyOutputBuilder; import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyStatusInput; +import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyStatusInputBuilder; import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyStatusOutput; +import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyStatusOutputBuilder; import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyTypeInput; import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyTypeInputBuilder; import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyTypeOutput; import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.GetA1PolicyTypeOutputBuilder; import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.PutA1PolicyInput; +import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.PutA1PolicyInputBuilder; import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.PutA1PolicyOutput; +import org.opendaylight.yang.gen.v1.org.onap.a1.adapter.rev200122.PutA1PolicyOutputBuilder; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * Defines a base implementation for your provider. This class overrides the generated interface - * from the YANG model and implements the request model for the A1 interface. This class identifies - * the Near-RT RIC throught the IP passed over the payload and calls the corresponding Near-RT RIC - * over Rest API + * Defines a base implementation for your provider. This class overrides the generated interface from the YANG model and + * implements the request model for the A1 interface. This class identifies the Near-RT RIC throught the IP passed over + * the payload and calls the corresponding Near-RT RIC over Rest API * *
  *
@@ -60,115 +67,250 @@ import org.slf4j.LoggerFactory;
 @SuppressWarnings("squid:S1874") // "@Deprecated" code should not be used
 public class A1AdapterProvider implements AutoCloseable, A1ADAPTERAPIService {
 
-  private static final Logger log = LoggerFactory.getLogger(A1AdapterProvider.class);
-
-  private static final String APPLICATION_NAME = "a1Adapter-api";
-
-  private final ExecutorService executor;
-  protected DataBroker dataBroker;
-  protected NotificationPublishService notificationService;
-  protected RpcProviderRegistry rpcRegistry;
-  protected BindingAwareBroker.RpcRegistration rpcRegistration;
-  private final A1AdapterClient a1AdapterClient;
-
-  public A1AdapterProvider(final DataBroker dataBroker,
-      final NotificationPublishService notificationPublishService,
-      final RpcProviderRegistry rpcProviderRegistry, final A1AdapterClient a1AdapterClient) {
-
-    log.info("Creating provider for {}", APPLICATION_NAME);
-    executor = Executors.newFixedThreadPool(1);
-    this.dataBroker = dataBroker;
-    this.notificationService = notificationPublishService;
-    this.rpcRegistry = rpcProviderRegistry;
-    this.a1AdapterClient = a1AdapterClient;
-    initialize();
-  }
-
-  public void initialize() {
-    log.info("Initializing provider for {}", APPLICATION_NAME);
-    rpcRegistration = rpcRegistry.addRpcImplementation(A1ADAPTERAPIService.class, this);
-    log.info("Initialization complete for {}", APPLICATION_NAME);
-  }
-
-  protected void initializeChild() {
-    // Override if you have custom initialization intelligence
-  }
-
-  @Override
-  public void close() throws Exception {
-    log.info("Closing provider for {}", APPLICATION_NAME);
-    executor.shutdown();
-    rpcRegistration.close();
-    log.info("Successfully closed provider for {}", APPLICATION_NAME);
-  }
-
-  @Override
-  public ListenableFuture> deleteA1Policy(
-      DeleteA1PolicyInput input) {
-    // TODO Auto-generated method stub
-    return null;
-  }
-
-  @Override
-  public ListenableFuture> getA1Policy(GetA1PolicyInput input) {
-    log.info("Start of getA1Policy");
-    return null;
-  }
-
-  @Override
-  public ListenableFuture> getA1PolicyStatus(
-      GetA1PolicyStatusInput input) {
-    // TODO Auto-generated method stub
-    return null;
-  }
-
-  @Override
-  public ListenableFuture> getA1PolicyType(
-      GetA1PolicyTypeInput input) {
-    log.info("Start of getA1PolicyType");
-    final String svcOperation = "getA1PolicyType";
-    Properties parms = new Properties();
-    GetA1PolicyTypeOutputBuilder policyTypeResponse = new GetA1PolicyTypeOutputBuilder();
-    // add input to parms
-    log.info("Adding INPUT data for " + svcOperation + " input: " + input);
-    GetA1PolicyTypeInputBuilder inputBuilder = new GetA1PolicyTypeInputBuilder(input);
-    MdsalHelper.toProperties(parms, inputBuilder.build());
-    log.info("Printing SLI parameters to be passed");
-    // iterate properties file to get key-value pairs
-    for (String key : parms.stringPropertyNames()) {
-      String value = parms.getProperty(key);
-      log.info("The SLI parameter in " + key + " is: " + value);
+    private static final Logger log = LoggerFactory.getLogger(A1AdapterProvider.class);
+
+    private static final String APPLICATION_NAME = "a1Adapter-api";
+
+    private final ExecutorService executor;
+    protected DataBroker dataBroker;
+    protected NotificationPublishService notificationService;
+    protected RpcProviderRegistry rpcRegistry;
+    protected BindingAwareBroker.RpcRegistration rpcRegistration;
+    private final A1AdapterClient a1AdapterClient;
+
+    public A1AdapterProvider(final DataBroker dataBroker, final NotificationPublishService notificationPublishService,
+            final RpcProviderRegistry rpcProviderRegistry, final A1AdapterClient a1AdapterClient) {
+
+        log.info("Creating provider for {}", APPLICATION_NAME);
+        executor = Executors.newFixedThreadPool(1);
+        this.dataBroker = dataBroker;
+        this.notificationService = notificationPublishService;
+        this.rpcRegistry = rpcProviderRegistry;
+        this.a1AdapterClient = a1AdapterClient;
+        initialize();
+    }
+
+    public void initialize() {
+        log.info("Initializing provider for {}", APPLICATION_NAME);
+        rpcRegistration = rpcRegistry.addRpcImplementation(A1ADAPTERAPIService.class, this);
+        log.info("Initialization complete for {}", APPLICATION_NAME);
+    }
+
+    protected void initializeChild() {
+        // Override if you have custom initialization intelligence
+    }
+
+    @Override
+    public void close() throws Exception {
+        log.info("Closing provider for {}", APPLICATION_NAME);
+        executor.shutdown();
+        rpcRegistration.close();
+        log.info("Successfully closed provider for {}", APPLICATION_NAME);
+    }
+
+    @Override
+    public ListenableFuture> deleteA1Policy(DeleteA1PolicyInput input) {
+        log.info("Start of deleteA1Policy");
+        final String svcOperation = "deleteA1Policy";
+        Properties parms = new Properties();
+        DeleteA1PolicyOutputBuilder deleteResponse = new DeleteA1PolicyOutputBuilder();
+        // add input to parms
+        log.info("Adding INPUT data for " + svcOperation + " input: " + input);
+        DeleteA1PolicyInputBuilder inputBuilder = new DeleteA1PolicyInputBuilder(input);
+        MdsalHelper.toProperties(parms, inputBuilder.build());
+        log.info("Printing SLI parameters to be passed");
+        // iterate properties file to get key-value pairs
+        for (String key : parms.stringPropertyNames()) {
+            String value = parms.getProperty(key);
+            log.info("The SLI parameter in " + key + " is: " + value);
+        }
+        // Call SLI sync method
+        try {
+            if (a1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation, null, "sync")) {
+                log.info("A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
+                try {
+                    a1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", deleteResponse, parms);
+                    deleteResponse.setHttpStatus(200);
+                } catch (Exception e) {
+                    log.error("Caught exception executing service logic for " + svcOperation, e);
+                    deleteResponse.setHttpStatus(500);
+                }
+            } else {
+                log.error("No service logic active for A1Adapter: '" + svcOperation + "'");
+                deleteResponse.setHttpStatus(503);
+            }
+        } catch (Exception e) {
+            log.error("Caught exception looking for service logic", e);
+            deleteResponse.setHttpStatus(500);
+        }
+        RpcResult rpcResult =
+                RpcResultBuilder.status(true).withResult(deleteResponse.build()).build();
+        log.info("End of getA1Policy");
+        return Futures.immediateFuture(rpcResult);
+    }
+
+    @Override
+    public ListenableFuture> getA1Policy(GetA1PolicyInput input) {
+        log.info("Start of getA1Policy");
+        final String svcOperation = "getA1Policy";
+        Properties parms = new Properties();
+        GetA1PolicyOutputBuilder policyResponse = new GetA1PolicyOutputBuilder();
+        // add input to parms
+        log.info("Adding INPUT data for " + svcOperation + " input: " + input);
+        GetA1PolicyInputBuilder inputBuilder = new GetA1PolicyInputBuilder(input);
+        MdsalHelper.toProperties(parms, inputBuilder.build());
+        log.info("Printing SLI parameters to be passed");
+        // iterate properties file to get key-value pairs
+        for (String key : parms.stringPropertyNames()) {
+            String value = parms.getProperty(key);
+            log.info("The SLI parameter in " + key + " is: " + value);
+        }
+        // Call SLI sync method
+        try {
+            if (a1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation, null, "sync")) {
+                log.info("A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
+                try {
+                    a1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", policyResponse, parms);
+                    policyResponse.setHttpStatus(200);
+                } catch (Exception e) {
+                    log.error("Caught exception executing service logic for " + svcOperation, e);
+                    policyResponse.setHttpStatus(500);
+                }
+            } else {
+                log.error("No service logic active for A1Adapter: '" + svcOperation + "'");
+                policyResponse.setHttpStatus(503);
+            }
+        } catch (Exception e) {
+            log.error("Caught exception looking for service logic", e);
+            policyResponse.setHttpStatus(500);
+        }
+        RpcResult rpcResult =
+                RpcResultBuilder.status(true).withResult(policyResponse.build()).build();
+        log.info("End of getA1Policy");
+        return Futures.immediateFuture(rpcResult);
+    }
+
+    @Override
+    public ListenableFuture> getA1PolicyStatus(GetA1PolicyStatusInput input) {
+        log.info("Start of getA1PolicyStatus");
+        final String svcOperation = "getA1PolicyStatus";
+        Properties parms = new Properties();
+        GetA1PolicyStatusOutputBuilder policyStatusResponse = new GetA1PolicyStatusOutputBuilder();
+        // add input to parms
+        log.info("Adding INPUT data for " + svcOperation + " input: " + input);
+        GetA1PolicyStatusInputBuilder inputBuilder = new GetA1PolicyStatusInputBuilder(input);
+        MdsalHelper.toProperties(parms, inputBuilder.build());
+        log.info("Printing SLI parameters to be passed");
+        // iterate properties file to get key-value pairs
+        for (String key : parms.stringPropertyNames()) {
+            String value = parms.getProperty(key);
+            log.info("The SLI parameter in " + key + " is: " + value);
+        }
+        // Call SLI sync method
+        try {
+            if (a1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation, null, "sync")) {
+                log.info("A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
+                try {
+                    a1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", policyStatusResponse, parms);
+                    policyStatusResponse.setHttpStatus(200);
+                } catch (Exception e) {
+                    log.error("Caught exception executing service logic for " + svcOperation, e);
+                    policyStatusResponse.setHttpStatus(500);
+                }
+            } else {
+                log.error("No service logic active for A1Adapter: '" + svcOperation + "'");
+                policyStatusResponse.setHttpStatus(503);
+            }
+        } catch (Exception e) {
+            log.error("Caught exception looking for service logic", e);
+            policyStatusResponse.setHttpStatus(500);
+        }
+        RpcResult rpcResult =
+                RpcResultBuilder.status(true).withResult(policyStatusResponse.build()).build();
+        log.info("End of getA1PolicyStatus");
+        return Futures.immediateFuture(rpcResult);
     }
-    // Call SLI sync method
-    try {
-      if (a1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation, null, "sync")) {
-        log.info("A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
+
+    @Override
+    public ListenableFuture> getA1PolicyType(GetA1PolicyTypeInput input) {
+        log.info("Start of getA1PolicyType");
+        final String svcOperation = "getA1PolicyType";
+        Properties parms = new Properties();
+        GetA1PolicyTypeOutputBuilder policyTypeResponse = new GetA1PolicyTypeOutputBuilder();
+        // add input to parms
+        log.info("Adding INPUT data for " + svcOperation + " input: " + input);
+        GetA1PolicyTypeInputBuilder inputBuilder = new GetA1PolicyTypeInputBuilder(input);
+        MdsalHelper.toProperties(parms, inputBuilder.build());
+        log.info("Printing SLI parameters to be passed");
+        // iterate properties file to get key-value pairs
+        for (String key : parms.stringPropertyNames()) {
+            String value = parms.getProperty(key);
+            log.info("The SLI parameter in " + key + " is: " + value);
+        }
+        // Call SLI sync method
+        try {
+            if (a1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation, null, "sync")) {
+                log.info("A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
+                try {
+                    a1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", policyTypeResponse, parms);
+                    policyTypeResponse.setHttpStatus(200);
+                } catch (Exception e) {
+                    log.error("Caught exception executing service logic for " + svcOperation, e);
+                    policyTypeResponse.setHttpStatus(500);
+                }
+            } else {
+                log.error("No service logic active for A1Adapter: '" + svcOperation + "'");
+                policyTypeResponse.setHttpStatus(503);
+            }
+        } catch (Exception e) {
+            log.error("Caught exception looking for service logic", e);
+            policyTypeResponse.setHttpStatus(500);
+        }
+        RpcResult rpcResult =
+                RpcResultBuilder.status(true).withResult(policyTypeResponse.build()).build();
+        log.info("End of getA1PolicyType");
+        return Futures.immediateFuture(rpcResult);
+    }
+
+    @Override
+    public ListenableFuture> putA1Policy(PutA1PolicyInput input) {
+        log.info("Start of putA1Policy");
+        final String svcOperation = "putA1Policy";
+        Properties parms = new Properties();
+        PutA1PolicyOutputBuilder policyResponse = new PutA1PolicyOutputBuilder();
+        // add input to parms
+        log.info("Adding INPUT data for " + svcOperation + " input: " + input);
+        PutA1PolicyInputBuilder inputBuilder = new PutA1PolicyInputBuilder(input);
+        MdsalHelper.toProperties(parms, inputBuilder.build());
+        log.info("Printing SLI parameters to be passed");
+        // iterate properties file to get key-value pairs
+        for (String key : parms.stringPropertyNames()) {
+            String value = parms.getProperty(key);
+            log.info("The SLI parameter in " + key + " is: " + value);
+        }
+        // Call SLI sync method
         try {
-          a1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", policyTypeResponse,
-              parms);
-          policyTypeResponse.setHttpStatus(200);
+            if (a1AdapterClient.hasGraph("A1-ADAPTER-API", svcOperation, null, "sync")) {
+                log.info("A1AdapterClient has a Directed Graph for '" + svcOperation + "'");
+                try {
+                    a1AdapterClient.execute("A1-ADAPTER-API", svcOperation, null, "sync", policyResponse, parms);
+                    policyResponse.setHttpStatus(200);
+                } catch (Exception e) {
+                    log.error("Caught exception executing service logic for " + svcOperation, e);
+                    policyResponse.setHttpStatus(500);
+                }
+            } else {
+                log.error("No service logic active for A1Adapter: '" + svcOperation + "'");
+                policyResponse.setHttpStatus(503);
+            }
         } catch (Exception e) {
-          log.error("Caught exception executing service logic for " + svcOperation, e);
-          policyTypeResponse.setHttpStatus(500);
+            log.error("Caught exception looking for service logic", e);
+            policyResponse.setHttpStatus(500);
         }
-      } else {
-        log.error("No service logic active for A1Adapter: '" + svcOperation + "'");
-        policyTypeResponse.setHttpStatus(503);
-      }
-    } catch (Exception e) {
-      log.error("Caught exception looking for service logic", e);
-      policyTypeResponse.setHttpStatus(500);
+        RpcResult rpcResult =
+                RpcResultBuilder.status(true).withResult(policyResponse.build()).build();
+        log.info("End of putA1Policy");
+        return Futures.immediateFuture(rpcResult);
     }
-    RpcResult rpcResult = RpcResultBuilder
-        .status(true).withResult(policyTypeResponse.build()).build();
-    log.info("End of getA1PolicyType");
-    return Futures.immediateFuture(rpcResult);
-  }
-
-  @Override
-  public ListenableFuture> putA1Policy(PutA1PolicyInput input) {
-    // TODO Auto-generated method stub
-    return null;
-  }
 
 }
-- 
cgit 1.2.3-korg