Fixing ASDCRestInterface for CSIT to simulate SDC req
Change-Id: I6331d08441b9bf1f621f56ec1b7d911851010e62
Issue-ID: SO-1948
Signed-off-by: waqas.ikram <waqas.ikram@est.tech>
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/ASDCControllerSingleton.java b/asdc-controller/src/main/java/org/onap/so/asdc/ASDCControllerSingleton.java
index a5e3340..e00bb1e 100644
--- a/asdc-controller/src/main/java/org/onap/so/asdc/ASDCControllerSingleton.java
+++ b/asdc-controller/src/main/java/org/onap/so/asdc/ASDCControllerSingleton.java
@@ -38,21 +38,26 @@
@Profile("!test")
public class ASDCControllerSingleton {
+ private static final Logger logger = LoggerFactory.getLogger(ASDCControllerSingleton.class);
+ private final ASDCController asdcController;
@Autowired
- private ASDCController asdcController;
- private static Logger logger = LoggerFactory.getLogger(ASDCControllerSingleton.class);
-
-
+ public ASDCControllerSingleton(final ASDCController asdcController) {
+ this.asdcController = asdcController;
+ }
@Scheduled(fixedRate = 50000)
public void periodicControllerTask() {
try {
- int randomNumber = new SecureRandom().nextInt(Integer.MAX_VALUE);
+ final int randomNumber = new SecureRandom().nextInt(Integer.MAX_VALUE);
asdcController.setControllerName("mso-controller" + randomNumber);
- asdcController.initASDC();
- } catch (ASDCControllerException e) {
- logger.error("Exception occurred", e);
+ if (asdcController.isStopped()) {
+ logger.info("{} not running will try to initialize it, currrent status: {}",
+ asdcController.getClass().getName(), asdcController.getControllerStatus());
+ asdcController.initASDC();
+ }
+ } catch (final ASDCControllerException controllerException) {
+ logger.error("Exception occurred", controllerException);
}
}
@@ -60,8 +65,8 @@
private void terminate() {
try {
asdcController.closeASDC();
- } catch (ASDCControllerException e) {
- logger.error("Exception occurred", e);
+ } catch (final ASDCControllerException controllerException) {
+ logger.error("Exception occurred", controllerException);
}
}
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/Application.java b/asdc-controller/src/main/java/org/onap/so/asdc/Application.java
index eb2957c..2c83472 100644
--- a/asdc-controller/src/main/java/org/onap/so/asdc/Application.java
+++ b/asdc-controller/src/main/java/org/onap/so/asdc/Application.java
@@ -35,7 +35,6 @@
@EnableJpaRepositories("org.onap.so.db.catalog.data.repository")
public class Application {
private static final Logger logger = LoggerFactory.getLogger(Application.class);
- private static final String MSO_CONFIG_PATH = "mso.config.path";
private static final String LOGS_DIR = "logs_dir";
@Autowired
@@ -47,11 +46,6 @@
}
}
- private static void setConfigPath() {
- if (System.getProperty(MSO_CONFIG_PATH) == null)
- System.getProperties().setProperty(MSO_CONFIG_PATH, ".");
- }
-
@PostConstruct
private void deployActivities() {
try {
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/JerseyConfiguration.java b/asdc-controller/src/main/java/org/onap/so/asdc/JerseyConfiguration.java
index 9025069..22265a0 100644
--- a/asdc-controller/src/main/java/org/onap/so/asdc/JerseyConfiguration.java
+++ b/asdc-controller/src/main/java/org/onap/so/asdc/JerseyConfiguration.java
@@ -24,7 +24,9 @@
import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.server.ResourceConfig;
import org.onap.so.asdc.client.test.rest.ASDCRestInterface;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
import io.swagger.jaxrs.config.BeanConfig;
import io.swagger.jaxrs.listing.ApiListingResource;
import io.swagger.jaxrs.listing.SwaggerSerializers;
@@ -33,6 +35,12 @@
@ApplicationPath("/test")
public class JerseyConfiguration extends ResourceConfig {
+ private Environment environment;
+
+ @Autowired
+ public JerseyConfiguration(final Environment environment) {
+ this.environment = environment;
+ }
@PostConstruct
public void setUp() {
@@ -40,10 +48,10 @@
register(ApiListingResource.class);
register(SwaggerSerializers.class);
- BeanConfig beanConfig = new BeanConfig();
+ final BeanConfig beanConfig = new BeanConfig();
beanConfig.setVersion("1.0.2");
beanConfig.setSchemes(new String[] {"http"});
- beanConfig.setHost("localhost:8080");
+ beanConfig.setHost("localhost:" + environment.getProperty("server.port"));
beanConfig.setBasePath("/mso");
beanConfig.setResourcePackage("org.onap.so.apihandlerinfra");
beanConfig.setPrettyPrint(true);
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/client/ASDCController.java b/asdc-controller/src/main/java/org/onap/so/asdc/client/ASDCController.java
index 563291c..3b9406a 100644
--- a/asdc-controller/src/main/java/org/onap/so/asdc/client/ASDCController.java
+++ b/asdc-controller/src/main/java/org/onap/so/asdc/client/ASDCController.java
@@ -196,11 +196,9 @@
* @throws IOException In case of issues when trying to load the key file
*/
public void initASDC() throws ASDCControllerException {
- String event = "Initialize the ASDC Controller";
- logger.debug(event);
- if (this.getControllerStatus() != ASDCControllerStatus.STOPPED) {
- String endEvent = "The controller is already initialized, call the closeASDC method first";
- throw new ASDCControllerException(endEvent);
+ logger.debug("Initialize the ASDC Controller");
+ if (!isStopped()) {
+ throw new ASDCControllerException("The controller is already initialized, call the closeASDC method first");
}
if (asdcConfig != null) {
@@ -238,6 +236,13 @@
}
/**
+ * @return true if controller is stopped
+ */
+ public boolean isStopped() {
+ return this.getControllerStatus() == ASDCControllerStatus.STOPPED;
+ }
+
+ /**
* This method closes the ASDC Controller and the ASDC Client.
*
* @throws ASDCControllerException It throws an exception if the ASDC Client cannot be closed because it's currently
@@ -245,7 +250,7 @@
*/
public void closeASDC() throws ASDCControllerException {
- if (this.getControllerStatus() == ASDCControllerStatus.BUSY) {
+ if (isBusy()) {
throw new ASDCControllerException("Cannot close the ASDC controller as it's currently in BUSY state");
}
if (this.distributionClient != null) {
@@ -261,6 +266,13 @@
this.changeControllerStatus(ASDCControllerStatus.STOPPED);
}
+ /**
+ * @return true if controller is currently processing notification
+ */
+ public boolean isBusy() {
+ return this.getControllerStatus() == ASDCControllerStatus.BUSY;
+ }
+
protected boolean checkResourceAlreadyDeployed(ResourceStructure resource, boolean serviceDeployed)
throws ArtifactInstallerException {
@@ -713,12 +725,6 @@
try {
this.processCsarServiceArtifacts(iNotif, toscaResourceStructure);
- IArtifactInfo iArtifact = toscaResourceStructure.getToscaArtifact();
- String filePath =
- msoConfigPath + "/ASDC/" + iArtifact.getArtifactVersion() + "/" + iArtifact.getArtifactName();
- File csarFile = new File(filePath);
-
-
if (isCsarAlreadyDeployed(iNotif, toscaResourceStructure)) {
return;
}
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/client/test/rest/ASDCRestInterface.java b/asdc-controller/src/main/java/org/onap/so/asdc/client/test/rest/ASDCRestInterface.java
index 56690a8..24e1887 100644
--- a/asdc-controller/src/main/java/org/onap/so/asdc/client/test/rest/ASDCRestInterface.java
+++ b/asdc-controller/src/main/java/org/onap/so/asdc/client/test/rest/ASDCRestInterface.java
@@ -23,7 +23,6 @@
package org.onap.so.asdc.client.test.rest;
-import java.io.IOException;
import javax.transaction.Transactional;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.POST;
@@ -31,15 +30,14 @@
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
-import org.onap.so.logger.LoggingAnchor;
+import javax.ws.rs.core.Response.Status;
import org.onap.so.asdc.client.ASDCController;
-import org.onap.so.asdc.client.exceptions.ASDCControllerException;
-import org.onap.so.asdc.client.exceptions.ASDCParametersException;
import org.onap.so.asdc.client.test.emulators.DistributionClientEmulator;
-import org.onap.so.asdc.client.test.emulators.NotificationDataImpl;
import org.onap.so.asdc.client.test.emulators.JsonStatusData;
+import org.onap.so.asdc.client.test.emulators.NotificationDataImpl;
import org.onap.so.asdc.installer.heat.ToscaResourceInstaller;
import org.onap.so.logger.ErrorCode;
+import org.onap.so.logger.LoggingAnchor;
import org.onap.so.logger.MessageEnum;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -48,13 +46,15 @@
import org.springframework.stereotype.Component;
/**
- * This is a TEST only rest interface. It is not used in production, it is used to aid in testing the ASDC service on
- * jboss without the need to be connected to the ASDC service broker. It starts the test at the treatNotification step
- * and simulates both the notification step as well as the artifact download step.
+ * This is a TEST only rest interface. It is not used in production, it is used to aid in testing the ASDC service
+ * without the need to be connected to the ASDC service broker. It starts the test at the treatNotification step and
+ * simulates both the notification step as well as the artifact download step.
* <p>
- * i.e. http://localhost:8080/asdc/treatNotification/v1
+ * i.e. http://localhost:8085/test/treatNotification/v1
* <p>
- * i.e. http://localhost:8080/asdc/statusData/v1
+ * i.e. http://localhost:8085/test/statusData/v1
+ *
+ * This interface is also used in CSIT to simulate a distribution of a service, without using SDC
*
* @author jm5423
*/
@@ -66,48 +66,75 @@
private static final Logger logger = LoggerFactory.getLogger(ASDCRestInterface.class);
- @Autowired
- private ASDCController asdcController;
+ private final ASDCController asdcController;
+
+ private final ToscaResourceInstaller toscaInstaller;
@Autowired
- private ToscaResourceInstaller toscaInstaller;
+ public ASDCRestInterface(final ASDCController asdcController, final ToscaResourceInstaller toscaInstaller) {
+ this.asdcController = asdcController;
+ this.toscaInstaller = toscaInstaller;
+ }
@POST
@Path("/treatNotification/v1")
@Produces(MediaType.APPLICATION_JSON)
@Transactional
- public Response invokeASDCService(NotificationDataImpl request,
- @HeaderParam("resource-location") String resourceLocation)
- throws ASDCControllerException, ASDCParametersException, IOException {
- DistributionClientEmulator distributionClientEmulator = new DistributionClientEmulator(resourceLocation);
+ public Response invokeASDCService(final NotificationDataImpl request,
+ @HeaderParam("resource-location") final String resourceLocation) {
- asdcController.setControllerName("asdc-controller1");
- asdcController.setDistributionClient(distributionClientEmulator);
- asdcController.initASDC();
- asdcController.treatNotification(request);
- asdcController.closeASDC();
- return Response.status(200).build();
+ try {
+ logger.info("Received message : {}", request);
+ logger.info("resource-location : {}", resourceLocation);
+ final DistributionClientEmulator distributionClientEmulator =
+ getDistributionClientEmulator(resourceLocation);
+
+ asdcController.setControllerName("asdc-controller1");
+ asdcController.setDistributionClient(distributionClientEmulator);
+
+ if (asdcController.isStopped()) {
+ logger.info("{} not running will try to initialize it, currrent status: {}",
+ asdcController.getClass().getName(), asdcController.getControllerStatus());
+ asdcController.initASDC();
+ }
+
+ asdcController.treatNotification(request);
+
+ if (!asdcController.isBusy()) {
+ asdcController.closeASDC();
+ }
+
+ return Response.status(Status.OK).build();
+ } catch (final Exception exception) {
+ logger.error("Unable to process notification request", exception);
+ return Response.status(Status.INTERNAL_SERVER_ERROR).build();
+ }
+
+ }
+
+ private DistributionClientEmulator getDistributionClientEmulator(final String resourceLocation) {
+ return new DistributionClientEmulator(resourceLocation);
}
@POST
@Path("/statusData/v1")
@Produces(MediaType.APPLICATION_JSON)
@Transactional
- public Response invokeASDCStatusData(String request) {
+ public Response invokeASDCStatusData(final String request) {
try {
- DistributionClientEmulator distributionClientEmulator =
- new DistributionClientEmulator("resource-examples/");
- JsonStatusData statusData = JsonStatusData.instantiateNotifFromJsonFile("resource-examples/");
+ final DistributionClientEmulator distributionClientEmulator =
+ getDistributionClientEmulator("resource-examples/");
+ final JsonStatusData statusData = JsonStatusData.instantiateNotifFromJsonFile("resource-examples/");
- ASDCController controller = new ASDCController("asdc-controller1", distributionClientEmulator);
- controller.initASDC();
+ asdcController.setDistributionClient(distributionClientEmulator);
+ asdcController.initASDC();
toscaInstaller.installTheComponentStatus(statusData);
- controller.closeASDC();
+ asdcController.closeASDC();
logger.info(LoggingAnchor.FOUR, MessageEnum.ASDC_ARTIFACT_DEPLOY_SUC.toString(),
statusData.getDistributionID(), "ASDC", "ASDC Updates Are Complete");
- } catch (Exception e) {
+ } catch (final Exception e) {
logger.info("Error caught " + e.getMessage());
logger.error(LoggingAnchor.SIX, MessageEnum.ASDC_GENERAL_EXCEPTION.toString(),
"Exception caught during ASDCRestInterface", "ASDC", "invokeASDCService",