summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBlimkie, Steven (sb787e) <steven.blimkie@amdocs.com>2017-05-17 17:45:08 +0300
committerBlimkie, Steven (sb787e) <steven.blimkie@amdocs.com>2017-05-17 17:45:55 +0300
commit9d2e5833689f56f38b21b67818530d23c503fcbb (patch)
tree993cdd16e58c98b011e1a9ecd36e65a04aa21590
parent4c0349b696a1a2d8990d9ec98c4df894c45acde5 (diff)
Ensure shutdown hook is called on docker stop
Change-Id: I7f2165c6c4b8cfeb3d62c4a286b62f4e42dde449 Signed-off-by: Blimkie, Steven (sb787e) <steven.blimkie@amdocs.com>
-rw-r--r--src/main/bin/start.sh70
-rw-r--r--src/main/docker/Dockerfile2
-rw-r--r--src/main/java/org/openecomp/modelloader/entity/model/ModelArtifactHandler.java11
-rw-r--r--src/main/java/org/openecomp/modelloader/service/ModelLoaderService.java305
4 files changed, 187 insertions, 201 deletions
diff --git a/src/main/bin/start.sh b/src/main/bin/start.sh
index 07f707e..f35b1f1 100644
--- a/src/main/bin/start.sh
+++ b/src/main/bin/start.sh
@@ -1,45 +1,25 @@
-###
-# ============LICENSE_START=======================================================
-# MODEL LOADER SERVICE
-# ================================================================================
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-# ================================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ============LICENSE_END=========================================================
-###
-
-#!/bin/sh
-
-BASEDIR="/opt/app/model-loader/"
-AJSC_HOME="$BASEDIR"
-
-if [ -z "$CONFIG_HOME" ]; then
- echo "CONFIG_HOME must be set in order to start up process"
- exit 1
-fi
-
-CLASSPATH="$AJSC_HOME/lib/*"
-CLASSPATH="$CLASSPATH:$AJSC_HOME/extJars/"
-CLASSPATH="$CLASSPATH:$AJSC_HOME/etc/"
-PROPS="-DAJSC_HOME=$AJSC_HOME"
-PROPS="$PROPS -DAJSC_CONF_HOME=$BASEDIR/bundleconfig/"
-PROPS="$PROPS -Dlogback.configurationFile=$BASEDIR/bundleconfig/etc/logback.xml"
-PROPS="$PROPS -DAJSC_SHARED_CONFIG=$AJSC_CONF_HOME"
-PROPS="$PROPS -DAJSC_SERVICE_NAMESPACE=model-loader"
-PROPS="$PROPS -DAJSC_SERVICE_VERSION=v1"
-PROPS="$PROPS -Dserver.port=8080"
-PROPS="$PROPS -DCONFIG_HOME=$CONFIG_HOME"
-
-echo $CLASSPATH
-
-java -Xms1024m -Xmx4096m -XX:PermSize=2024m $PROPS -classpath $CLASSPATH com.att.ajsc.runner.Runner context=// sslport=8081
+#!/bin/sh
+
+BASEDIR="/opt/app/model-loader/"
+AJSC_HOME="$BASEDIR"
+
+if [ -z "$CONFIG_HOME" ]; then
+ echo "CONFIG_HOME must be set in order to start up process"
+ exit 1
+fi
+
+CLASSPATH="$AJSC_HOME/lib/*"
+CLASSPATH="$CLASSPATH:$AJSC_HOME/extJars/"
+CLASSPATH="$CLASSPATH:$AJSC_HOME/etc/"
+PROPS="-DAJSC_HOME=$AJSC_HOME"
+PROPS="$PROPS -DAJSC_CONF_HOME=$BASEDIR/bundleconfig/"
+PROPS="$PROPS -Dlogback.configurationFile=$BASEDIR/bundleconfig/etc/logback.xml"
+PROPS="$PROPS -DAJSC_SHARED_CONFIG=$AJSC_CONF_HOME"
+PROPS="$PROPS -DAJSC_SERVICE_NAMESPACE=model-loader"
+PROPS="$PROPS -DAJSC_SERVICE_VERSION=v1"
+PROPS="$PROPS -Dserver.port=8080"
+PROPS="$PROPS -DCONFIG_HOME=$CONFIG_HOME"
+
+echo $CLASSPATH
+
+exec java -Xms1024m -Xmx4096m -XX:PermSize=2024m $PROPS -classpath $CLASSPATH com.att.ajsc.runner.Runner context=// sslport=8081
diff --git a/src/main/docker/Dockerfile b/src/main/docker/Dockerfile
index 6f187d5..9aafdda 100644
--- a/src/main/docker/Dockerfile
+++ b/src/main/docker/Dockerfile
@@ -21,4 +21,4 @@ COPY *.sh $BIN_HOME
RUN chmod 755 $BIN_HOME/*
RUN ln -s /logs $MICRO_HOME/logs
-CMD /opt/app/model-loader/bin/start.sh
+CMD ["/opt/app/model-loader/bin/start.sh"]
diff --git a/src/main/java/org/openecomp/modelloader/entity/model/ModelArtifactHandler.java b/src/main/java/org/openecomp/modelloader/entity/model/ModelArtifactHandler.java
index 6f9f64f..19b69cf 100644
--- a/src/main/java/org/openecomp/modelloader/entity/model/ModelArtifactHandler.java
+++ b/src/main/java/org/openecomp/modelloader/entity/model/ModelArtifactHandler.java
@@ -166,11 +166,14 @@ public class ModelArtifactHandler extends ArtifactHandler {
private String getURL(ModelArtifact model) {
String baseURL = config.getAaiBaseUrl().trim();
String subURL = null;
+ String instance = null;
if (model.getType().equals(ArtifactType.MODEL)) {
subURL = config.getAaiModelUrl(model.getModelNamespaceVersion()).trim();
+ instance = model.getModelInvariantId();
}
else {
subURL = config.getAaiNamedQueryUrl(model.getModelNamespaceVersion()).trim();
+ instance = model.getNameVersionId();
}
if ( (!baseURL.endsWith("/")) && (!subURL.startsWith("/")) ) {
@@ -185,18 +188,21 @@ public class ModelArtifactHandler extends ArtifactHandler {
subURL = subURL + "/";
}
- String url = baseURL + subURL + model.getModelInvariantId();
+ String url = baseURL + subURL + instance;
return url;
}
private String getModelVerURL(ModelArtifact model) {
String baseURL = config.getAaiBaseUrl().trim();
String subURL = null;
+ String instance = null;
if (model.getType().equals(ArtifactType.MODEL)) {
subURL = config.getAaiModelUrl(model.getModelNamespaceVersion()).trim() + model.getModelInvariantId() + AAI_MODEL_VER;
+ instance = model.getModelVerId();
}
else {
subURL = config.getAaiNamedQueryUrl(model.getModelNamespaceVersion()).trim();
+ instance = model.getNameVersionId();
}
if ( (!baseURL.endsWith("/")) && (!subURL.startsWith("/")) ) {
@@ -211,8 +217,7 @@ public class ModelArtifactHandler extends ArtifactHandler {
subURL = subURL + "/";
}
- String url = baseURL + subURL + model.getModelVerId();
- System.out.println(url);
+ String url = baseURL + subURL + instance;
return url;
}
diff --git a/src/main/java/org/openecomp/modelloader/service/ModelLoaderService.java b/src/main/java/org/openecomp/modelloader/service/ModelLoaderService.java
index aeaa6f4..786f1a2 100644
--- a/src/main/java/org/openecomp/modelloader/service/ModelLoaderService.java
+++ b/src/main/java/org/openecomp/modelloader/service/ModelLoaderService.java
@@ -48,156 +48,157 @@ import javax.ws.rs.core.Response;
* capabilities between AAI and an ASDC.
*/
public class ModelLoaderService implements ModelLoaderInterface {
-
- protected static final String FILESEP = (System.getProperty("file.separator") == null) ? "/"
- : System.getProperty("file.separator");
-
- protected static final String CONFIG_DIR = System.getProperty("CONFIG_HOME") + FILESEP;
- protected static final String CONFIG_AUTH_LOCATION = CONFIG_DIR + "auth" + FILESEP;
- protected static final String CONFIG_FILE = CONFIG_DIR + "model-loader.properties";
-
- private IDistributionClient client;
- private ModelLoaderConfig config;
- private Timer timer = null;
-
- static Logger logger = LoggerFactory.getInstance().getLogger(ModelLoaderService.class.getName());
-
- /**
- * Responsible for loading configuration files and calling initialization.
- */
- public ModelLoaderService() {
- start();
- }
-
- protected void start() {
- // Load model loader system configuration
- logger.info(ModelLoaderMsgs.LOADING_CONFIGURATION);
- Properties configProperties = new Properties();
- try {
- configProperties.load(new FileInputStream(CONFIG_FILE));
- } catch (IOException e) {
- String errorMsg = "Failed to load configuration: " + e.getMessage();
- logger.error(ModelLoaderMsgs.ASDC_CONNECTION_ERROR, errorMsg);
- shutdown();
- }
-
- config = new ModelLoaderConfig(configProperties, CONFIG_AUTH_LOCATION);
- init();
- }
-
- @Override
- public void finalize() {
- preShutdownOperations();
- }
-
- /**
- * Responsible for stopping the connection to the distribution client before
- * the resource is destroyed.
- */
- protected void preShutdownOperations() {
- logger.info(ModelLoaderMsgs.STOPPING_CLIENT);
- if (client != null) {
- client.stop();
- }
- }
-
- /**
- * Responsible for loading configuration files, initializing model
- * distribution clients, and starting them.
- */
- protected void init() {
- // Initialize distribution client
- logger.debug(ModelLoaderMsgs.INITIALIZING, "Initializing distribution client...");
- client = DistributionClientFactory.createDistributionClient();
- EventCallback callback = new EventCallback(client, config);
-
- IDistributionClientResult initResult = client.init(config, callback);
-
- if (initResult.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {
- String errorMsg = "Failed to initialize distribution client: "
- + initResult.getDistributionMessageResult();
- logger.error(ModelLoaderMsgs.ASDC_CONNECTION_ERROR, errorMsg);
-
- // Kick off a timer to retry the SDC connection
- timer = new Timer();
- TimerTask task = new SdcConnectionJob(client, config, callback, timer);
- timer.schedule(task, new Date(), 60000);
- }
- else {
- // Start distribution client
- logger.debug(ModelLoaderMsgs.INITIALIZING, "Starting distribution client...");
- IDistributionClientResult startResult = client.start();
- if (startResult.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {
- String errorMsg = "Failed to start distribution client: "
- + startResult.getDistributionMessageResult();
- logger.error(ModelLoaderMsgs.ASDC_CONNECTION_ERROR, errorMsg);
-
- // Kick off a timer to retry the SDC connection
- timer = new Timer();
- TimerTask task = new SdcConnectionJob(client, config, callback, timer);
- timer.schedule(task, new Date(), 60000);
- }
- else {
- logger.info(ModelLoaderMsgs.INITIALIZING, "Connection to SDC established");
- }
- }
- }
-
- /**
- * Shut down the process.
- */
- private void shutdown() {
- preShutdownOperations();
-
- // TODO: Find a better way to shut down the model loader.
- try {
- // Give logs time to write to file
- Thread.sleep(2000);
- } catch (InterruptedException e) {
- // Nothing we can do at this point
- }
-
- Runtime.getRuntime().halt(1);
- }
-
- /** (non-Javadoc)
- * @see org.openecomp.modelloader.service.ModelLoaderInterface#loadModel(java.lang.String)
- */
- @Override
- public Response loadModel(String modelid) {
- Response response = Response.ok("{\"model_loaded\":\"" + modelid + "\"}").build();
-
- return response;
- }
-
- /** (non-Javadoc)
- * @see org.openecomp.modelloader.service.ModelLoaderInterface#saveModel(java.lang.String, java.lang.String)
- */
- @Override
- public Response saveModel(String modelid, String modelname) {
- Response response = Response.ok("{\"model_saved\":\"" + modelid + "-" + modelname + "\"}")
- .build();
-
- return response;
- }
-
- @Override
- public Response ingestModel(String modelid, HttpServletRequest req, String payload)
- throws IOException {
- Response response;
-
- if (config.getIngestSimulatorEnabled()) {
- logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT, "Received test artifact");
-
- ModelArtifactHandler handler = new ModelArtifactHandler(config);
- handler.loadModelTest(payload.getBytes());
-
- response = Response.ok().build();
- } else {
- logger.debug("Simulation interface disabled");
- response = Response.serverError().build();
- }
-
- return response;
- }
+
+ protected static final String FILESEP = (System.getProperty("file.separator") == null) ? "/"
+ : System.getProperty("file.separator");
+
+ protected static final String CONFIG_DIR = System.getProperty("CONFIG_HOME") + FILESEP;
+ protected static final String CONFIG_AUTH_LOCATION = CONFIG_DIR + "auth" + FILESEP;
+ protected static final String CONFIG_FILE = CONFIG_DIR + "model-loader.properties";
+
+ private IDistributionClient client;
+ private ModelLoaderConfig config;
+ private Timer timer = null;
+
+ static Logger logger = LoggerFactory.getInstance().getLogger(ModelLoaderService.class.getName());
+
+ /**
+ * Responsible for loading configuration files and calling initialization.
+ */
+ public ModelLoaderService() {
+ start();
+ }
+
+ protected void start() {
+ // Load model loader system configuration
+ logger.info(ModelLoaderMsgs.LOADING_CONFIGURATION);
+ Properties configProperties = new Properties();
+ try {
+ configProperties.load(new FileInputStream(CONFIG_FILE));
+ } catch (IOException e) {
+ String errorMsg = "Failed to load configuration: " + e.getMessage();
+ logger.error(ModelLoaderMsgs.ASDC_CONNECTION_ERROR, errorMsg);
+ shutdown();
+ }
+
+ config = new ModelLoaderConfig(configProperties, CONFIG_AUTH_LOCATION);
+ init();
+
+ Runtime.getRuntime().addShutdownHook(new Thread(new Runnable(){
+ public void run() {
+ preShutdownOperations();
+ }
+ }));
+ }
+
+ /**
+ * Responsible for stopping the connection to the distribution client before
+ * the resource is destroyed.
+ */
+ protected void preShutdownOperations() {
+ logger.info(ModelLoaderMsgs.STOPPING_CLIENT);
+ if (client != null) {
+ client.stop();
+ }
+ }
+
+ /**
+ * Responsible for loading configuration files, initializing model
+ * distribution clients, and starting them.
+ */
+ protected void init() {
+ // Initialize distribution client
+ logger.debug(ModelLoaderMsgs.INITIALIZING, "Initializing distribution client...");
+ client = DistributionClientFactory.createDistributionClient();
+ EventCallback callback = new EventCallback(client, config);
+
+ IDistributionClientResult initResult = client.init(config, callback);
+
+ if (initResult.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {
+ String errorMsg = "Failed to initialize distribution client: "
+ + initResult.getDistributionMessageResult();
+ logger.error(ModelLoaderMsgs.ASDC_CONNECTION_ERROR, errorMsg);
+
+ // Kick off a timer to retry the SDC connection
+ timer = new Timer();
+ TimerTask task = new SdcConnectionJob(client, config, callback, timer);
+ timer.schedule(task, new Date(), 60000);
+ }
+ else {
+ // Start distribution client
+ logger.debug(ModelLoaderMsgs.INITIALIZING, "Starting distribution client...");
+ IDistributionClientResult startResult = client.start();
+ if (startResult.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {
+ String errorMsg = "Failed to start distribution client: "
+ + startResult.getDistributionMessageResult();
+ logger.error(ModelLoaderMsgs.ASDC_CONNECTION_ERROR, errorMsg);
+
+ // Kick off a timer to retry the SDC connection
+ timer = new Timer();
+ TimerTask task = new SdcConnectionJob(client, config, callback, timer);
+ timer.schedule(task, new Date(), 60000);
+ }
+ else {
+ logger.info(ModelLoaderMsgs.INITIALIZING, "Connection to SDC established");
+ }
+ }
+ }
+
+ /**
+ * Shut down the process.
+ */
+ private void shutdown() {
+ preShutdownOperations();
+
+ // TODO: Find a better way to shut down the model loader.
+ try {
+ // Give logs time to write to file
+ Thread.sleep(2000);
+ } catch (InterruptedException e) {
+ // Nothing we can do at this point
+ }
+
+ Runtime.getRuntime().halt(1);
+ }
+
+ /** (non-Javadoc)
+ * @see org.openecomp.modelloader.service.ModelLoaderInterface#loadModel(java.lang.String)
+ */
+ @Override
+ public Response loadModel(String modelid) {
+ Response response = Response.ok("{\"model_loaded\":\"" + modelid + "\"}").build();
+
+ return response;
+ }
+
+ /** (non-Javadoc)
+ * @see org.openecomp.modelloader.service.ModelLoaderInterface#saveModel(java.lang.String, java.lang.String)
+ */
+ @Override
+ public Response saveModel(String modelid, String modelname) {
+ Response response = Response.ok("{\"model_saved\":\"" + modelid + "-" + modelname + "\"}")
+ .build();
+
+ return response;
+ }
+
+ @Override
+ public Response ingestModel(String modelid, HttpServletRequest req, String payload)
+ throws IOException {
+ Response response;
+
+ if (config.getIngestSimulatorEnabled()) {
+ logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT, "Received test artifact");
+
+ ModelArtifactHandler handler = new ModelArtifactHandler(config);
+ handler.loadModelTest(payload.getBytes());
+
+ response = Response.ok().build();
+ } else {
+ logger.debug("Simulation interface disabled");
+ response = Response.serverError().build();
+ }
+
+ return response;
+ }
}