summaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'vid-app-common/src/main')
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java15
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/asdc/beans/ServiceBuilder.java72
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/category/AddCategoryOptionResponse.java26
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/category/AddCategoryOptionsRequest.java36
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/category/CategoryParameterOptionRep.java38
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/client/SyncRestClient.java16
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/client/SyncRestClientInterface.java2
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/controllers/HealthCheckController.java174
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/controllers/HealthStatus.java31
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/controllers/MaintenanceController.java142
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/controllers/VidController.java161
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/dao/ConnectionFactory.java20
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/dao/FnAppDoaImpl.java114
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/job/command/InProgressStatusCommand.java25
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/job/command/ServiceInstantiationCommand.java12
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/job/impl/JobAdapterImpl.java23
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/model/CategoryParameter.java53
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/mso/MsoBusinessLogic.java2
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/mso/MsoBusinessLogicImpl.java357
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/mso/MsoInterface.java2
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/mso/MsoProperties.java2
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/mso/rest/MsoRestClientNew.java10
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/mso/rest/RequestDetails.java59
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/mso/rest/RequestDetailsWrapper.java33
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/roles/RoleProvider.java34
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/services/AuditServiceImpl.java24
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/services/CategoryParameterServiceImpl.java23
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/services/ChangeManagementServiceImpl.java2
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/services/PombaServiceImpl.java20
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/services/VidServiceImpl.java20
-rwxr-xr-xvid-app-common/src/main/webapp/app/vid/scripts/controller/ServiceModelController.js2
-rw-r--r--vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js38
-rw-r--r--vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.html6
-rwxr-xr-xvid-app-common/src/main/webapp/app/vid/scripts/services/asdcService.js6
34 files changed, 955 insertions, 645 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java b/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java
index c1964c161..06e0f0174 100644
--- a/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java
+++ b/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java
@@ -413,9 +413,7 @@ public class AaiClient implements AaiClientInterface {
} else {
logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "getSubscribers() resp=" + resp.getStatusInfo().toString());
if (resp.getStatus() != HttpStatus.SC_OK) {
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "Invalid response from AAI");
- String rawData = resp.readEntity(String.class);
- subscriberDataResponse = new AaiResponse<>(null, rawData, resp.getStatus());
+ subscriberDataResponse = processFailureResponse(resp,responseBody);
} else {
subscriberDataResponse = processOkResponse(resp, classType, responseBody, omType, propagateExceptions);
}
@@ -423,6 +421,17 @@ public class AaiClient implements AaiClientInterface {
return subscriberDataResponse;
}
+ private AaiResponse processFailureResponse(Response resp, String responseBody) {
+ logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "Invalid response from AAI");
+ String rawData;
+ if (responseBody != null) {
+ rawData = responseBody;
+ } else {
+ rawData = resp.readEntity(String.class);
+ }
+ return new AaiResponse<>(null, rawData, resp.getStatus());
+ }
+
private AaiResponse processOkResponse(Response resp, Class classType, String responseBody, VidObjectMapperType omType, boolean propagateExceptions) {
AaiResponse subscriberDataResponse;
String finalResponse = null;
diff --git a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/ServiceBuilder.java b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/ServiceBuilder.java
new file mode 100644
index 000000000..73bef7636
--- /dev/null
+++ b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/ServiceBuilder.java
@@ -0,0 +1,72 @@
+package org.onap.vid.asdc.beans;
+
+import java.util.Collection;
+
+public class ServiceBuilder {
+ private String uuid;
+ private String invariantUUID;
+ private String name;
+ private String version;
+ private String toscaModelURL;
+ private String category;
+ private Service.LifecycleState lifecycleState;
+ private String distributionStatus;
+ private Collection<Artifact> artifacts;
+ private Collection<SubResource> resources;
+
+ public ServiceBuilder setUuid(String uuid) {
+ this.uuid = uuid;
+ return this;
+ }
+
+ public ServiceBuilder setInvariantUUID(String invariantUUID) {
+ this.invariantUUID = invariantUUID;
+ return this;
+ }
+
+ public ServiceBuilder setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public ServiceBuilder setVersion(String version) {
+ this.version = version;
+ return this;
+ }
+
+ public ServiceBuilder setToscaModelURL(String toscaModelURL) {
+ this.toscaModelURL = toscaModelURL;
+ return this;
+ }
+
+ public ServiceBuilder setCategory(String category) {
+ this.category = category;
+ return this;
+ }
+
+ public ServiceBuilder setLifecycleState(Service.LifecycleState lifecycleState) {
+ this.lifecycleState = lifecycleState;
+ return this;
+ }
+
+ public ServiceBuilder setDistributionStatus(String distributionStatus) {
+ this.distributionStatus = distributionStatus;
+ return this;
+ }
+
+ public ServiceBuilder setArtifacts(Collection<Artifact> artifacts) {
+ this.artifacts = artifacts;
+ return this;
+ }
+
+ public ServiceBuilder setResources(Collection<SubResource> resources) {
+ this.resources = resources;
+ return this;
+ }
+
+ public Service build() {
+ return new Service(uuid, invariantUUID, category, version, name, distributionStatus, toscaModelURL, lifecycleState, artifacts, resources);
+ }
+}
+
+
diff --git a/vid-app-common/src/main/java/org/onap/vid/category/AddCategoryOptionResponse.java b/vid-app-common/src/main/java/org/onap/vid/category/AddCategoryOptionResponse.java
index 89d3963ac..b19ea57e1 100644
--- a/vid-app-common/src/main/java/org/onap/vid/category/AddCategoryOptionResponse.java
+++ b/vid-app-common/src/main/java/org/onap/vid/category/AddCategoryOptionResponse.java
@@ -1,5 +1,27 @@
package org.onap.vid.category;
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright © 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Modifications Copyright 2018 Nokia
+ * ================================================================================
+ * 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=========================================================
+ */
+
import org.onap.vid.model.ListOfErrorsResponse;
import java.util.List;
@@ -9,6 +31,10 @@ public class AddCategoryOptionResponse extends ListOfErrorsResponse {
public AddCategoryOptionResponse() {
}
+ public AddCategoryOptionResponse(String error) {
+ errors.add(error);
+ }
+
public AddCategoryOptionResponse(List<String> errors) {
super(errors);
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/category/AddCategoryOptionsRequest.java b/vid-app-common/src/main/java/org/onap/vid/category/AddCategoryOptionsRequest.java
index 5db474627..8e9b14422 100644
--- a/vid-app-common/src/main/java/org/onap/vid/category/AddCategoryOptionsRequest.java
+++ b/vid-app-common/src/main/java/org/onap/vid/category/AddCategoryOptionsRequest.java
@@ -1,7 +1,30 @@
package org.onap.vid.category;
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright © 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Modifications Copyright 2018 Nokia
+ * ================================================================================
+ * 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=========================================================
+ */
+
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
public class AddCategoryOptionsRequest {
@@ -10,4 +33,17 @@ public class AddCategoryOptionsRequest {
public AddCategoryOptionsRequest() {
options = new ArrayList<>();
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || this.getClass() != o.getClass()) return false;
+ AddCategoryOptionsRequest that = (AddCategoryOptionsRequest) o;
+ return Objects.equals(this.options, that.options);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(this.options);
+ }
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/category/CategoryParameterOptionRep.java b/vid-app-common/src/main/java/org/onap/vid/category/CategoryParameterOptionRep.java
index 355e54838..dc0ecba17 100644
--- a/vid-app-common/src/main/java/org/onap/vid/category/CategoryParameterOptionRep.java
+++ b/vid-app-common/src/main/java/org/onap/vid/category/CategoryParameterOptionRep.java
@@ -1,5 +1,29 @@
package org.onap.vid.category;
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright © 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Modifications Copyright 2018 Nokia
+ * ================================================================================
+ * 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=========================================================
+ */
+
+import java.util.Objects;
+
public class CategoryParameterOptionRep {
private String id;
@@ -28,4 +52,18 @@ public class CategoryParameterOptionRep {
public void setName(String name) {
this.name = name;
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || this.getClass() != o.getClass()) return false;
+ CategoryParameterOptionRep that = (CategoryParameterOptionRep) o;
+ return Objects.equals(this.id, that.id) &&
+ Objects.equals(this.name, that.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(this.id, this.name);
+ }
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/client/SyncRestClient.java b/vid-app-common/src/main/java/org/onap/vid/client/SyncRestClient.java
index 84e83e8b2..a3ff5f923 100644
--- a/vid-app-common/src/main/java/org/onap/vid/client/SyncRestClient.java
+++ b/vid-app-common/src/main/java/org/onap/vid/client/SyncRestClient.java
@@ -23,6 +23,7 @@ package org.onap.vid.client;
import io.joshworks.restclient.http.HttpResponse;
import io.joshworks.restclient.http.JsonNode;
import io.joshworks.restclient.http.RestClient;
+import io.joshworks.restclient.http.exceptions.RestClientException;
import io.joshworks.restclient.http.mapper.ObjectMapper;
import org.apache.http.impl.client.CloseableHttpClient;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
@@ -39,7 +40,7 @@ import java.security.UnrecoverableKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.KeyManagementException;
import java.security.cert.CertificateException;
-import javax.net.ssl.SSLHandshakeException;
+import javax.net.ssl.SSLException;
import java.security.KeyStoreException;
import java.text.SimpleDateFormat;
import javax.net.ssl.SSLContext;
@@ -134,6 +135,11 @@ public class SyncRestClient implements SyncRestClientInterface {
}
@Override
+ public <T> HttpResponse<T> delete(String url, Map<String, String> headers, Object body, Class<T> responseClass) {
+ return callWithRetryOverHttp(url, url2 -> restClient.delete(url2).headers(headers).body(body).asObject(responseClass));
+ }
+
+ @Override
public <T> HttpResponse<T> delete(String url, Map<String, String> headers, Class<T> responseClass) {
return callWithRetryOverHttp(url, url2 -> restClient.delete(url2).headers(headers).asObject(responseClass));
}
@@ -150,13 +156,13 @@ public class SyncRestClient implements SyncRestClientInterface {
@SneakyThrows
private <T> HttpResponse<T> callWithRetryOverHttp(String url,
- CheckedFunction1<String, HttpResponse<T>> httpRequest) {
+ CheckedFunction1<String, HttpResponse<T>> httpRequest) {
try {
return httpRequest.apply(url);
- } catch (Exception e) {
- if (e.getCause() instanceof SSLHandshakeException) {
+ } catch (RestClientException e) {
+ if (e.getCause() instanceof SSLException) {
logger.warn(EELFLoggerDelegate.debugLogger,
- DATE_FORMAT.format(new Date()) + TRY_TO_CALL_OVER_HTTP, e);
+ DATE_FORMAT.format(new Date()) + TRY_TO_CALL_OVER_HTTP, e);
return httpRequest.apply(url.replaceFirst(HTTPS_SCHEMA, HTTP_SCHEMA));
}
throw e;
diff --git a/vid-app-common/src/main/java/org/onap/vid/client/SyncRestClientInterface.java b/vid-app-common/src/main/java/org/onap/vid/client/SyncRestClientInterface.java
index 142adde15..ae2f83862 100644
--- a/vid-app-common/src/main/java/org/onap/vid/client/SyncRestClientInterface.java
+++ b/vid-app-common/src/main/java/org/onap/vid/client/SyncRestClientInterface.java
@@ -27,6 +27,8 @@ public interface SyncRestClientInterface {
<T> HttpResponse<T> put(String url, Map<String, String> headers, Object body, Class<T> aClass);
+ <T> HttpResponse<T> delete(String url, Map<String, String> headers, Object body, Class<T> aClass);
+
<T> HttpResponse<T> delete(String url, Map<String, String> headers, Class<T> aClass);
HttpResponse<JsonNode> delete(String url, Map<String, String> headers);
diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/HealthCheckController.java b/vid-app-common/src/main/java/org/onap/vid/controllers/HealthCheckController.java
index 03dc8083e..86e832ba7 100644
--- a/vid-app-common/src/main/java/org/onap/vid/controllers/HealthCheckController.java
+++ b/vid-app-common/src/main/java/org/onap/vid/controllers/HealthCheckController.java
@@ -25,6 +25,7 @@ import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.onap.portalsdk.core.util.SystemProperties;
import org.onap.vid.dao.FnAppDoaImpl;
import org.onap.vid.model.GitRepositoryState;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -37,6 +38,9 @@ import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
+import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR;
+import static org.springframework.http.HttpStatus.OK;
+
/**
* Controller for user profile view. The view is restricted to authenticated
* users. The view name resolves to page user_profile.jsp which uses Angular.
@@ -46,158 +50,86 @@ import java.util.Properties;
@RequestMapping("/")
public class HealthCheckController extends UnRestrictedBaseController {
-
- /**
- * The logger.
- */
private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(HealthCheckController.class);
+ private static final DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss:SSSS");
+ private static final String GIT_PROPERTIES_FILENAME = "git.properties";
+ private FnAppDoaImpl fnAppDoaImpl;
- /**
- * The Constant dateFormat.
- */
- final static DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss:SSSS");
-
- private static final String HEALTH_CHECK_PATH = "/healthCheck";
-
- /**
- * Model for JSON response with health-check results.
- */
- public class HealthStatus {
- // Either 200 or 500
- public int statusCode;
-
- // Additional detail in case of error, empty in case of success.
- public String message;
-
- public String date;
-
- public HealthStatus(int code, String msg) {
- this.statusCode = code;
- this.message = msg;
- }
-
- public HealthStatus(int code, String date, String msg) {
- this.statusCode = code;
- this.message = msg;
- this.date = date;
- }
-
- public int getStatusCode() {
- return statusCode;
- }
-
- public void setStatusCode(int code) {
- this.statusCode = code;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String msg) {
- this.message = msg;
- }
-
- public String getDate() {
- return date;
- }
-
- public void setDate(String date) {
- this.date = date;
- }
-
- }
-
- @SuppressWarnings("unchecked")
- public int getProfileCount(String driver, String URL, String username, String password) {
- FnAppDoaImpl doa = new FnAppDoaImpl();
- int count = doa.getProfileCount(driver, URL, username, password);
- return count;
+ @Autowired
+ public HealthCheckController(FnAppDoaImpl fnAppDoaImpl) {
+ this.fnAppDoaImpl = fnAppDoaImpl;
}
-
/**
* Obtain the HealthCheck Status from the System.Properties file.
* Used by IDNS for redundancy
*
* @return ResponseEntity The response entity
- * @throws IOException Signals that an I/O exception has occurred.
*/
@RequestMapping(value = "/healthCheck", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
- public HealthStatus gethealthCheckStatusforIDNS() {
-
- String driver = SystemProperties.getProperty("db.driver");
- String URL = SystemProperties.getProperty("db.connectionURL");
- String username = SystemProperties.getProperty("db.userName");
- String password = SystemProperties.getProperty("db.password");
-
- LOGGER.debug(EELFLoggerDelegate.debugLogger, "driver ::" + driver);
- LOGGER.debug(EELFLoggerDelegate.debugLogger, "URL::" + URL);
- LOGGER.debug(EELFLoggerDelegate.debugLogger, "username::" + username);
- LOGGER.debug(EELFLoggerDelegate.debugLogger, "password::" + password);
-
-
- HealthStatus healthStatus = null;
- try {
- LOGGER.debug(EELFLoggerDelegate.debugLogger, "Performing health check");
- int count = getProfileCount(driver, URL, username, password);
- LOGGER.debug(EELFLoggerDelegate.debugLogger, "count:::" + count);
- healthStatus = new HealthStatus(200, "health check succeeded");
- } catch (Exception ex) {
-
- LOGGER.error(EELFLoggerDelegate.errorLogger, "Failed to perform health check", ex);
- healthStatus = new HealthStatus(500, "health check failed: " + ex.toString());
- }
- return healthStatus;
+ public HealthStatus getHealthCheckStatusForIDNS() {
+ return createCorrespondingStatus();
}
/**
* Obtain the HealthCheck Status from the System.Properties file.
*
* @return ResponseEntity The response entity
- * @throws IOException Signals that an I/O exception has occurred.
- * Project :
*/
@RequestMapping(value = "rest/healthCheck/{User-Agent}/{X-ECOMP-RequestID}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public HealthStatus getHealthCheck(
@PathVariable("User-Agent") String UserAgent,
@PathVariable("X-ECOMP-RequestID") String ECOMPRequestID) {
+ LOGGER.debug(EELFLoggerDelegate.debugLogger, "User-Agent ", UserAgent);
+ LOGGER.debug(EELFLoggerDelegate.debugLogger, "X-ECOMP-RequestID ", ECOMPRequestID);
+ return createCorrespondingStatus();
+ }
- String driver = SystemProperties.getProperty("db.driver");
- String URL = SystemProperties.getProperty("db.connectionURL");
- String username = SystemProperties.getProperty("db.userName");
- String password = SystemProperties.getProperty("db.password");
-
- LOGGER.debug(EELFLoggerDelegate.debugLogger, "driver ::" + driver);
- LOGGER.debug(EELFLoggerDelegate.debugLogger, "URL::" + URL);
- LOGGER.debug(EELFLoggerDelegate.debugLogger, "username::" + username);
- LOGGER.debug(EELFLoggerDelegate.debugLogger, "password::" + password);
-
+ @RequestMapping(value = "/commitInfo", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
+ public GitRepositoryState getCommitInfo() throws IOException {
+ Properties properties = new Properties();
+ properties.load(getClass().getClassLoader().getResourceAsStream(GIT_PROPERTIES_FILENAME));
+ return new GitRepositoryState(properties);
+ }
- HealthStatus healthStatus = null;
+ private HealthStatus createCorrespondingStatus() {
+ logData();
try {
- LOGGER.debug(EELFLoggerDelegate.debugLogger, "Performing health check");
- LOGGER.debug(EELFLoggerDelegate.debugLogger, "User-Agent" + UserAgent);
- LOGGER.debug(EELFLoggerDelegate.debugLogger, "X-ECOMP-RequestID" + ECOMPRequestID);
+ int count = fnAppDoaImpl.getProfileCount(getUrl(), getUsername(), getPassword());
+ LOGGER.debug(EELFLoggerDelegate.debugLogger, "count:::", count);
+ return okStatus();
+ } catch (Exception ex) {
+ String errorMsg = ex.getMessage();
+ LOGGER.error(EELFLoggerDelegate.errorLogger, errorMsg);
+ return errorStatus(errorMsg);
+ }
+ }
+ private void logData() {
+ LOGGER.debug(EELFLoggerDelegate.debugLogger, "Performing health check");
+ LOGGER.debug(EELFLoggerDelegate.debugLogger, "URL::", getUrl());
+ LOGGER.debug(EELFLoggerDelegate.debugLogger, "username::", getUsername());
+ }
- int count = getProfileCount(driver, URL, username, password);
+ private HealthStatus okStatus() {
+ return new HealthStatus(OK, dateFormat.format(new Date()), "health check succeeded");
+ }
- LOGGER.debug(EELFLoggerDelegate.debugLogger, "count:::" + count);
- healthStatus = new HealthStatus(200, dateFormat.format(new Date()), "health check succeeded");
- } catch (Exception ex) {
+ private HealthStatus errorStatus(String msg) {
+ return new HealthStatus(INTERNAL_SERVER_ERROR, dateFormat.format(
+ new Date()), "health check failed: " + msg);
+ }
- LOGGER.error(EELFLoggerDelegate.errorLogger, "Failed to perform health check", ex);
- healthStatus = new HealthStatus(500, dateFormat.format(new Date()), "health check failed: " + ex.toString());
- }
- return healthStatus;
+ private String getUrl() {
+ return SystemProperties.getProperty("db.connectionURL");
}
- @RequestMapping(value = "/version", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
- public GitRepositoryState getCommitInfo() throws IOException {
- Properties properties = new Properties();
- properties.load(getClass().getClassLoader().getResourceAsStream("git.properties"));
- return new GitRepositoryState(properties);
+ private String getUsername() {
+ return SystemProperties.getProperty("db.userName");
+ }
+
+ private String getPassword() {
+ return SystemProperties.getProperty("db.password");
}
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/HealthStatus.java b/vid-app-common/src/main/java/org/onap/vid/controllers/HealthStatus.java
new file mode 100644
index 000000000..6056c2898
--- /dev/null
+++ b/vid-app-common/src/main/java/org/onap/vid/controllers/HealthStatus.java
@@ -0,0 +1,31 @@
+package org.onap.vid.controllers;
+
+import org.springframework.http.HttpStatus;
+
+/**
+ * Model for JSON response with health-check results.
+ */
+public final class HealthStatus {
+
+ private final int statusCode;
+ private final String detailedMsg;
+ private final String date;
+
+ public HealthStatus(HttpStatus code, String date, String detailedMsg) {
+ this.statusCode = code.value();
+ this.detailedMsg = detailedMsg;
+ this.date = date;
+ }
+
+ public int getStatusCode() {
+ return statusCode;
+ }
+
+ public String getDetailedMsg() {
+ return detailedMsg;
+ }
+
+ public String getDate() {
+ return date;
+ }
+}
diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/MaintenanceController.java b/vid-app-common/src/main/java/org/onap/vid/controllers/MaintenanceController.java
index 0976f4039..1a3eb42fa 100644
--- a/vid-app-common/src/main/java/org/onap/vid/controllers/MaintenanceController.java
+++ b/vid-app-common/src/main/java/org/onap/vid/controllers/MaintenanceController.java
@@ -1,6 +1,30 @@
package org.onap.vid.controllers;
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright © 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Modifications Copyright 2018 Nokia
+ * ================================================================================
+ * 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=========================================================
+ */
+
+import static org.onap.vid.utils.Logging.getMethodCallerName;
+import javax.ws.rs.ForbiddenException;
import org.onap.portalsdk.core.controller.UnRestrictedBaseController;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.onap.vid.category.AddCategoryOptionResponse;
@@ -14,124 +38,114 @@ import org.onap.vid.services.CategoryParameterServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.ForbiddenException;
-import java.util.Arrays;
-import java.util.Collections;
-
-import static org.onap.vid.utils.Logging.getMethodCallerName;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
/**
* Controler for APIs that are used only by vid operators
*/
@RestController
-@RequestMapping(MaintenanceController.MAINTENANCE)
+@RequestMapping("maintenance")
public class MaintenanceController extends UnRestrictedBaseController {
- public static final String MAINTENANCE = "maintenance";
+ private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(MaintenanceController.class);
+ private CategoryParameterService categoryParameterService;
@Autowired
- protected CategoryParameterService categoryParameterService;
- private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(MaintenanceController.class);
+ public MaintenanceController(CategoryParameterService categoryParameterService) {
+ this.categoryParameterService = categoryParameterService;
+ }
/**
* Add list of options to one category parameter
- * @param request the request
- * @return the new option
- * @throws Exception the exception
*/
@RequestMapping(value = "/category_parameter/{categoryName}", method = RequestMethod.POST)
- public ResponseEntity addCategoryOptions (
- HttpServletRequest request, @PathVariable String categoryName, @RequestBody AddCategoryOptionsRequest option) {
+ public ResponseEntity addCategoryOptions(@PathVariable String categoryName,
+ @RequestBody AddCategoryOptionsRequest option) {
debugStartLog();
try {
- AddCategoryOptionResponse response = categoryParameterService.createCategoryParameterOptions(categoryName, option);
- HttpStatus httpStatus = response.getErrors().size()>0 ? HttpStatus.MULTI_STATUS : HttpStatus.OK;
+ AddCategoryOptionResponse response = categoryParameterService
+ .createCategoryParameterOptions(categoryName, option);
+ HttpStatus httpStatus = response.getErrors().isEmpty() ? HttpStatus.OK : HttpStatus.MULTI_STATUS;
debugEndLog(response);
- return new ResponseEntity<>(response, httpStatus);
- }
- catch (CategoryParameterServiceImpl.UnfoundedCategoryException exception) {
- return new ResponseEntity<>(new AddCategoryOptionResponse(Collections.singletonList(exception.getMessage())), HttpStatus.NOT_FOUND);
- }
- catch (Exception exception) {
+ return createResponseWithBody(httpStatus, response);
+ } catch (CategoryParameterServiceImpl.UnfoundedCategoryException exception) {
+ return createResponseWithBody(HttpStatus.NOT_FOUND, new AddCategoryOptionResponse(exception.getMessage()));
+ } catch (RuntimeException exception) {
LOGGER.error("failed to add option to parameter category " + categoryName, exception);
- return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+ return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}
@RequestMapping(value = "/category_parameter/{categoryName}", method = RequestMethod.PUT)
- public ResponseEntity updateNameForOption (
- HttpServletRequest request, @PathVariable String categoryName, @RequestBody CategoryParameterOptionRep option) {
+ public ResponseEntity updateNameForOption(@PathVariable String categoryName,
+ @RequestBody CategoryParameterOptionRep option) {
debugStartLog();
try {
- AddCategoryOptionResponse response = categoryParameterService.updateCategoryParameterOption(categoryName, option);
- HttpStatus httpStatus = response.getErrors().size()>0 ? HttpStatus.MULTI_STATUS : HttpStatus.OK;
+ AddCategoryOptionResponse response = categoryParameterService
+ .updateCategoryParameterOption(categoryName, option);
+ HttpStatus httpStatus = response.getErrors().isEmpty() ? HttpStatus.OK : HttpStatus.MULTI_STATUS;
debugEndLog(response);
- return new ResponseEntity<>(response, httpStatus);
- }
- catch (ForbiddenException exception) {
- return new ResponseEntity<>(new AddCategoryOptionResponse(Collections.singletonList(exception.getMessage())), HttpStatus.FORBIDDEN);
- }
- catch (CategoryParameterServiceImpl.UnfoundedCategoryException|CategoryParameterServiceImpl.UnfoundedCategoryOptionException exception) {
- return new ResponseEntity<>(new AddCategoryOptionResponse(Collections.singletonList(exception.getMessage())), HttpStatus.NOT_FOUND);
- }
- catch (CategoryParameterServiceImpl.AlreadyExistOptionNameException exception) {
- return new ResponseEntity<>(new AddCategoryOptionResponse(Collections.singletonList(exception.getMessage())), HttpStatus.CONFLICT);
- }
- catch (Exception exception) {
+ return createResponseWithBody(httpStatus, response);
+ } catch (ForbiddenException exception) {
+ return createResponseWithBody(HttpStatus.FORBIDDEN, new AddCategoryOptionResponse(exception.getMessage()));
+ } catch (CategoryParameterServiceImpl.UnfoundedCategoryException | CategoryParameterServiceImpl.UnfoundedCategoryOptionException exception) {
+ return createResponseWithBody(HttpStatus.NOT_FOUND, new AddCategoryOptionResponse(exception.getMessage()));
+
+ } catch (CategoryParameterServiceImpl.AlreadyExistOptionNameException exception) {
+ return createResponseWithBody(HttpStatus.CONFLICT, new AddCategoryOptionResponse(exception.getMessage()));
+
+ } catch (RuntimeException exception) {
LOGGER.error("failed to update option to parameter category " + categoryName, exception);
- return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+ return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}
/**
* Gets the owning entity properties.
- * @param request the request
- * @return the property
- * @throws Exception the exception
*/
@RequestMapping(value = "/category_parameter", method = RequestMethod.GET)
- public ResponseEntity getCategoryParameter(HttpServletRequest request, @RequestParam(value="familyName", required = true) Family familyName) {
+ public ResponseEntity getCategoryParameter(@RequestParam(value = "familyName", required = true) Family familyName) {
debugStartLog();
try {
CategoryParametersResponse response = categoryParameterService.getCategoryParameters(familyName);
debugEndLog(response);
- return new ResponseEntity<>(response, HttpStatus.OK);
- }
- catch (Exception exception) {
+ return ResponseEntity.ok().body(response);
+ } catch (RuntimeException exception) {
LOGGER.error("failed to retrieve category parameter list from DB.", exception);
- return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+ return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}
-
/**
* Delete option of the category.
- * @param request the request
- * @throws Exception the exception
*/
- @RequestMapping(value = "/delete_category_parameter/{categoryName}", method = RequestMethod.POST)
- public ResponseEntity deleteCategoryOption (
- HttpServletRequest request, @PathVariable String categoryName, @RequestBody CategoryParameterOption option) {
+ @RequestMapping(value = "/delete_category_parameter/{categoryName}", method = RequestMethod.DELETE)
+ public ResponseEntity deleteCategoryOption(@PathVariable String categoryName,
+ @RequestBody CategoryParameterOption option) {
debugStartLog();
try {
categoryParameterService.deleteCategoryOption(categoryName, option);
debugEndLog(HttpStatus.OK);
- return new ResponseEntity<>(HttpStatus.OK);
- }
- catch (CategoryParameterServiceImpl.UnfoundedCategoryException exception) {
- return new ResponseEntity<>(new AddCategoryOptionResponse(Arrays.asList(exception.getMessage())), HttpStatus.NOT_FOUND);
- }
- catch (Exception exception) {
+ return ResponseEntity.status(HttpStatus.OK).build();
+ } catch (CategoryParameterServiceImpl.UnfoundedCategoryException exception) {
+ return createResponseWithBody(HttpStatus.NOT_FOUND, new AddCategoryOptionResponse(exception.getMessage()));
+ } catch (RuntimeException exception) {
LOGGER.error("failed to add/update owning entity option", exception);
- return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+ return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}
+ private ResponseEntity createResponseWithBody(HttpStatus status, AddCategoryOptionResponse response) {
+ return ResponseEntity.status(status).body(response);
+ }
+
private void debugStartLog() {
LOGGER.debug(EELFLoggerDelegate.debugLogger, "start {}({})", getMethodCallerName());
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/VidController.java b/vid-app-common/src/main/java/org/onap/vid/controllers/VidController.java
index 6d6ffb31b..b9d67b6df 100644
--- a/vid-app-common/src/main/java/org/onap/vid/controllers/VidController.java
+++ b/vid-app-common/src/main/java/org/onap/vid/controllers/VidController.java
@@ -4,12 +4,14 @@
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
* ================================================================================
+ * Modifications Copyright 2018 Nokia
+ * ================================================================================
* 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.
@@ -40,122 +42,73 @@ import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
-//import org.onap.vid.model.Service;
-
@RestController
public class VidController extends RestrictedBaseController {
- private static final EELFLoggerDelegate LOG = EELFLoggerDelegate.getLogger(VidController.class);
-
- private final VidService service;
+ private static final EELFLoggerDelegate LOG = EELFLoggerDelegate.getLogger(VidController.class);
- @Autowired
- public VidController(VidService vidService) {
- service = vidService;
- }
-
- @Autowired
- private AaiService aaiService;
-
- @Autowired
- RoleProvider roleProvider;
+ private final VidService vidService;
+ private final AaiService aaiService;
+ private final RoleProvider roleProvider;
+ private final PombaService pombaService;
@Autowired
- private PombaService pombaService;
-
-// /**
-// * Gets the services.
-// *
-// * @param request the request
-// * @return the services
-// * @throws VidServiceUnavailableException the vid service unavailable exception
-// */
-// @RequestMapping(value={"/rest/models/services"}, method = RequestMethod.GET)
-// public SecureServices getServices(HttpServletRequest request) throws VidServiceUnavailableException {
-// try {
-// AaiService aaiService = new AaiServiceImpl();
-// LOG.info("Start API for browse ASDC was called");
-// SecureServices secureServices = new SecureServices();
-// Map<String, String[]> requestParams = request.getParameterMap();
-// List<Role> roles = roleProvider.getUserRoles(request);
-// secureServices.setServices(aaiService.getServicesByDistributionStatus());
-// secureServices.setServices(service.getServices(requestParams));
-// secureServices.setReadOnly(roleProvider.userPermissionIsReadOnly(roles));
-// return secureServices;
-// } catch (AsdcCatalogException e) {
-// LOG.error("Failed to retrieve service definitions from SDC", e);
-// throw new VidServiceUnavailableException("Failed to retrieve service definitions from SDC", e);
-// } catch (Throwable t) {
-// LOG.debug("Unexpected error while retrieving service definitions from SDC: " + t.getMessage() + ":", t);
-// t.printStackTrace();
-// throw new VidServiceUnavailableException("Unexpected error while retrieving service definitions from SDC: " + t.getMessage(), t);
-// }
-// }
-
- /**
- * Gets the services.
- *
- * @param request the request
- * @return the services
- * @throws VidServiceUnavailableException the vid service unavailable exception
- */
- @RequestMapping(value={"/rest/models/services"}, method = RequestMethod.GET)
- public SecureServices getServices(HttpServletRequest request) throws VidServiceUnavailableException {
- try {
- LOG.info("Start API for browse ASDC was called");
- SecureServices secureServices = new SecureServices();
- List<Role> roles = roleProvider.getUserRoles(request);
- secureServices.setServices(aaiService.getServicesByDistributionStatus());
- //Disable roles until AAF integration finishes
- //secureServices.setReadOnly(roleProvider.userPermissionIsReadOnly(roles));
- secureServices.setReadOnly(false);
- return secureServices;
- }
- catch (Exception t) {
- LOG.debug("Unexpected error while retrieving service definitions from A&AI: " + t.getMessage() + ":", t);
- throw new VidServiceUnavailableException("Unexpected error while retrieving service definitions from A&AI: " + t.getMessage(), t);
- }
- }
+ public VidController(VidService vidService, AaiService aaiService, RoleProvider roleProvider,
+ PombaService pombaService) {
+ this.vidService = vidService;
+ this.aaiService = aaiService;
+ this.roleProvider = roleProvider;
+ this.pombaService = pombaService;
+ }
+ /**
+ * @param request the request
+ * @return the services
+ */
+ @RequestMapping(value = {"/rest/models/services"}, method = RequestMethod.GET)
+ public SecureServices getServices(HttpServletRequest request) {
+ LOG.info("Start API for browse ASDC was called");
+ SecureServices secureServices = new SecureServices();
+ List<Role> roles = roleProvider.getUserRoles(request);
+ secureServices.setServices(aaiService.getServicesByDistributionStatus());
+ secureServices.setReadOnly(roleProvider.userPermissionIsReadOnly(roles));
+ return secureServices;
+ }
- /**
- * Gets the services.
- *
- * @param uuid the uuid
- * @return the services
- * @throws VidServiceUnavailableException the vid service unavailable exception
- */
- @RequestMapping(value={"/rest/models/services/{uuid}"}, method = RequestMethod.GET)
- public ServiceModel getServices(@PathVariable("uuid") String uuid, HttpServletRequest request) throws VidServiceUnavailableException {
- try {
- return service.getService(uuid);
- } catch (AsdcCatalogException e) {
- LOG.error("Failed to retrieve service definitions from SDC. Error: "+e.getMessage() , e);
- throw new VidServiceUnavailableException("Failed to retrieve service definitions from SDC", e);
- }
- }
+ /**
+ * @param uuid the uuid
+ * @return the services
+ * @throws VidServiceUnavailableException the vid service unavailable exception
+ */
+ @RequestMapping(value = {"/rest/models/services/{uuid}"}, method = RequestMethod.GET)
+ public ServiceModel getService(@PathVariable("uuid") String uuid) throws VidServiceUnavailableException {
+ try {
+ return vidService.getService(uuid);
+ } catch (AsdcCatalogException e) {
+ LOG.error("Failed to retrieve service definitions from SDC. Error: " + e.getMessage(), e);
+ throw new VidServiceUnavailableException("Failed to retrieve service definitions from SDC", e);
+ }
+ }
- @RequestMapping(value = "/rest/models/reset", method = RequestMethod.POST)
- @ResponseStatus(HttpStatus.ACCEPTED)
- public void invalidateServiceModelCache(HttpServletRequest request) {
- service.invalidateServiceCache();
- }
+ @RequestMapping(value = "/rest/models/reset", method = RequestMethod.POST)
+ @ResponseStatus(HttpStatus.ACCEPTED)
+ public void invalidateServiceModelCache() {
+ vidService.invalidateServiceCache();
+ }
- /**
- * Gets the services view.
- *
- * @param request the request
- * @return the services view
- * @throws VidServiceUnavailableException the vid service unavailable exception
- */
- @RequestMapping(value={"/serviceModels"}, method=RequestMethod.GET)
- public ModelAndView getServicesView(HttpServletRequest request) {
+ /**
+ * @return the services view
+ * @throws VidServiceUnavailableException the vid service unavailable exception
+ */
+ // FIX ME: Circular view path [serviceModels]: would dispatch back to the current handler URL [/serviceModels] again.
+ @RequestMapping(value = {"/serviceModels"}, method = RequestMethod.GET)
+ public ModelAndView getServicesView() {
return new ModelAndView("serviceModels");
}
@RequestMapping(value = {"/rest/models/services/verifyService"}, method = RequestMethod.POST)
- public void verifyServiceInstance(HttpServletRequest request, @RequestBody PombaRequest pombaRequest) {
- pombaService.verify(pombaRequest);
+ public void verifyServiceInstance(@RequestBody PombaRequest pombaRequest) {
+ pombaService.verify(pombaRequest);
}
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/dao/ConnectionFactory.java b/vid-app-common/src/main/java/org/onap/vid/dao/ConnectionFactory.java
new file mode 100644
index 000000000..bd7a67b5a
--- /dev/null
+++ b/vid-app-common/src/main/java/org/onap/vid/dao/ConnectionFactory.java
@@ -0,0 +1,20 @@
+package org.onap.vid.dao;
+
+import org.springframework.stereotype.Component;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+@Component
+public class ConnectionFactory {
+
+ public Connection getConnection(String url, String username, String password) throws SQLException {
+ checkNotNull(url);
+ checkNotNull(username);
+ checkNotNull(password);
+ return DriverManager.getConnection(url, username, password);
+ }
+}
diff --git a/vid-app-common/src/main/java/org/onap/vid/dao/FnAppDoaImpl.java b/vid-app-common/src/main/java/org/onap/vid/dao/FnAppDoaImpl.java
index 65fc5217f..e3fdc95f2 100644
--- a/vid-app-common/src/main/java/org/onap/vid/dao/FnAppDoaImpl.java
+++ b/vid-app-common/src/main/java/org/onap/vid/dao/FnAppDoaImpl.java
@@ -7,9 +7,9 @@
* 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.
@@ -21,94 +21,38 @@
package org.onap.vid.dao;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
import java.sql.*;
-
+@Repository
public class FnAppDoaImpl {
- /** The logger. */
- static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FnAppDoaImpl.class);
-
- public int getProfileCount(String driver, String URL, String username, String password) {
- Connection dbc = null;
- PreparedStatement pst = null;
- ResultSet rs = null;
- String q = null;
- int count = 0;
- try {
- dbc = getConnection(URL,username,password);
- logger.debug(EELFLoggerDelegate.debugLogger, "getConnection:::"+ dbc);
- q = "select count(*) from fn_app";
- pst = dbc.prepareStatement(q);
- rs = pst.executeQuery();
-
- if (rs.next())
- count = rs.getInt(1);
- } catch(Exception ex) {
- logger.error(EELFLoggerDelegate.errorLogger, "Failed to perform health check", ex);
- } finally {
- cleanup(rs,pst,dbc);
- }
- logger.debug(EELFLoggerDelegate.debugLogger, "count:::"+ count);
- return count;
- }
-
- public static Connection getConnection(String url, String username, String password) throws SQLException {
- java.sql.Connection con=null;
-
- if( url!=null && username!=null && password!=null ){
- con = DriverManager.getConnection(url, username, password);
- }
-
- logger.info("Connection Successful");
-
- return con;
-
- }
-
- public static void cleanup(ResultSet rs, PreparedStatement st, Connection c) {
- if (rs != null) {
- closeResultSet(rs);
- }
- if (st != null) {
- closePreparedStatement(st);
- }
- if (c != null) {
- rollbackAndCloseConnection(c);
- }
- }
-
- private static void rollbackAndCloseConnection(Connection c) {
- try {
- c.rollback();
- } catch (Exception e) {
- if (logger != null)
- logger.error("Error when trying to rollback connection", e);
+ static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FnAppDoaImpl.class);
+
+ private ConnectionFactory connectionFactory;
+
+ @Autowired
+ public FnAppDoaImpl(ConnectionFactory connectionFactory) {
+ this.connectionFactory = connectionFactory;
+ }
+
+ public int getProfileCount(String URL, String username, String password) throws SQLException {
+ String q = "select count(*) from fn_app";
+ int count = 0;
+ try (Connection dbc = connectionFactory.getConnection(URL, username, password);
+ PreparedStatement pst = dbc.prepareStatement(q); ResultSet rs = pst.executeQuery()) {
+ logger.debug(EELFLoggerDelegate.debugLogger, "getConnection:::", dbc);
+ if (rs.next()) {
+ count = rs.getInt(1);
+ }
+ } catch (SQLException ex) {
+ logger.error(EELFLoggerDelegate.errorLogger, "Failed to perform health check", ex);
+ throw ex;
}
- try {
- c.close();
- } catch (Exception e) {
- if (logger != null)
- logger.error("Error when trying to close connection", e);
- }
- }
-
- private static void closePreparedStatement(PreparedStatement st) {
- try {
- st.close();
- } catch (Exception e) {
- if (logger != null)
- logger.error("Error when trying to close statement", e);
- }
- }
- private static void closeResultSet(ResultSet rs) {
- try {
- rs.close();
- } catch (Exception e) {
- if (logger != null)
- logger.error("Error when trying to close result set", e);
- }
- }
+ logger.debug(EELFLoggerDelegate.debugLogger, "count:::", count);
+ return count;
+ }
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/job/command/InProgressStatusCommand.java b/vid-app-common/src/main/java/org/onap/vid/job/command/InProgressStatusCommand.java
index cee5af697..6685a63d6 100644
--- a/vid-app-common/src/main/java/org/onap/vid/job/command/InProgressStatusCommand.java
+++ b/vid-app-common/src/main/java/org/onap/vid/job/command/InProgressStatusCommand.java
@@ -23,6 +23,7 @@ package org.onap.vid.job.command;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.ImmutableMap;
import io.joshworks.restclient.http.HttpResponse;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.onap.vid.job.Job.JobStatus;
import org.onap.vid.job.JobCommand;
import org.onap.vid.job.NextCommand;
@@ -30,13 +31,13 @@ import org.onap.vid.mso.MsoInterface;
import org.onap.vid.mso.rest.AsyncRequestStatus;
import org.onap.vid.services.AsyncInstantiationBusinessLogic;
import org.onap.vid.services.AuditService;
-import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import javax.inject.Inject;
import java.util.Map;
+import java.util.Objects;
import java.util.UUID;
@@ -68,33 +69,38 @@ public class InProgressStatusCommand implements JobCommand {
init(jobUuid, requestId);
}
+ InProgressStatusCommand(AsyncInstantiationBusinessLogic asyncInstantiationBusinessLogic, MsoInterface msoInterface, AuditService auditService, UUID jobUuid, String requestId) {
+ this(jobUuid, requestId);
+ this.asyncInstantiationBL = asyncInstantiationBusinessLogic;
+ this.restMso = msoInterface;
+ this.auditService = auditService;
+ }
+
@Override
public NextCommand call() {
try {
- String path = asyncInstantiationBL.getOrchestrationRequestsPath()+"/"+requestId;
+ String path = asyncInstantiationBL.getOrchestrationRequestsPath() + "/" + requestId;
HttpResponse<AsyncRequestStatus> msoResponse = restMso.get(path, AsyncRequestStatus.class);
JobStatus jobStatus;
if (msoResponse.getStatus() >= 400 || msoResponse.getBody() == null) {
- auditService.setFailedAuditStatusFromMso(jobUuid, requestId, msoResponse.getStatus(), msoResponse.getBody().toString());
+ auditService.setFailedAuditStatusFromMso(jobUuid, requestId, msoResponse.getStatus(), Objects.toString(msoResponse.getBody()));
LOGGER.error(EELFLoggerDelegate.errorLogger,
"Failed to get orchestration status for {}. Status code: {}, Body: {}",
- requestId, msoResponse.getStatus(), msoResponse.getRawBody().toString());
+ requestId, msoResponse.getStatus(), Objects.toString(msoResponse.getRawBody()));
return new NextCommand(JobStatus.IN_PROGRESS, this);
- }
- else {
+ } else {
jobStatus = asyncInstantiationBL.calcStatus(msoResponse.getBody());
}
- asyncInstantiationBL.auditMsoStatus(jobUuid,msoResponse.getBody().request);
+ asyncInstantiationBL.auditMsoStatus(jobUuid, msoResponse.getBody().request);
if (jobStatus == JobStatus.FAILED) {
asyncInstantiationBL.handleFailedInstantiation(jobUuid);
- }
- else {
+ } else {
asyncInstantiationBL.updateServiceInfoAndAuditStatus(jobUuid, jobStatus);
}
//in case of JobStatus.PAUSE we leave the job itself as IN_PROGRESS, for keep tracking job progress
@@ -128,5 +134,4 @@ public class InProgressStatusCommand implements JobCommand {
return ImmutableMap.of("requestId", requestId);
}
-
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/job/command/ServiceInstantiationCommand.java b/vid-app-common/src/main/java/org/onap/vid/job/command/ServiceInstantiationCommand.java
index 9d22b8bfa..958fc115e 100644
--- a/vid-app-common/src/main/java/org/onap/vid/job/command/ServiceInstantiationCommand.java
+++ b/vid-app-common/src/main/java/org/onap/vid/job/command/ServiceInstantiationCommand.java
@@ -42,6 +42,7 @@ import org.springframework.stereotype.Component;
import javax.inject.Inject;
import java.util.Map;
+import java.util.Objects;
import java.util.UUID;
@@ -73,6 +74,14 @@ public class ServiceInstantiationCommand implements JobCommand {
init(uuid, serviceInstantiationRequest, userId);
}
+ ServiceInstantiationCommand(AsyncInstantiationBusinessLogic asyncInstantiationBL, AuditService auditService, MsoInterface msoInterface,
+ UUID uuid, ServiceInstantiation serviceInstantiation, String userId) {
+ this(uuid, serviceInstantiation, userId);
+ this.asyncInstantiationBL = asyncInstantiationBL;
+ this.auditService = auditService;
+ this.restMso = msoInterface;
+ }
+
@Override
public NextCommand call() {
RequestDetailsWrapper<ServiceInstantiationRequestDetails> requestDetailsWrapper ;
@@ -81,7 +90,6 @@ public class ServiceInstantiationCommand implements JobCommand {
uuid, serviceInstantiationRequest, userId
);
}
-
//Aai return bad response while checking names uniqueness
catch (InvalidAAIResponseException exception) {
LOGGER.error("Failed to check name uniqueness in AAI. VID will try again later", exception);
@@ -116,7 +124,7 @@ public class ServiceInstantiationCommand implements JobCommand {
return new NextCommand(jobStatus, new InProgressStatusCommand(uuid, requestId));
} else {
auditService.setFailedAuditStatusFromMso(uuid,null, msoResponse.getStatus(),
- msoResponse.getBody().toString());
+ Objects.toString(msoResponse.getBody()));
return handleCommandFailed();
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/job/impl/JobAdapterImpl.java b/vid-app-common/src/main/java/org/onap/vid/job/impl/JobAdapterImpl.java
index 77e1dd2cf..59f12f4c5 100644
--- a/vid-app-common/src/main/java/org/onap/vid/job/impl/JobAdapterImpl.java
+++ b/vid-app-common/src/main/java/org/onap/vid/job/impl/JobAdapterImpl.java
@@ -33,14 +33,10 @@ public class JobAdapterImpl implements JobAdapter {
}
@Override
- public Job createJob(JobType jobType, AsyncJobRequest request, UUID templateId, String userId, Integer indexInBulk){
- JobDaoImpl job = new JobDaoImpl();
- job.setStatus(Job.JobStatus.PENDING);
- job.setTypeAndData(jobType, ImmutableMap.of(
+ public Job createJob(JobType jobType, AsyncJobRequest request, UUID templateId, String userId, Integer indexInBulk) {
+ JobDaoImpl job = createJob(jobType, templateId, indexInBulk, ImmutableMap.of(
"request", request,
"userId", userId));
- job.setTemplateId(templateId);
- job.setIndexInBulk(indexInBulk);
job.setUserId(userId);
return job;
}
@@ -59,14 +55,17 @@ public class JobAdapterImpl implements JobAdapter {
List<Job> jobList = new ArrayList<>(count + 1);
UUID templateId = UUID.randomUUID();
for (int i = 0; i < count; i++) {
- Job child = new JobDaoImpl();
- child.setTypeAndData(jobType, bulkRequest);
- child.setStatus(Job.JobStatus.PENDING);
- child.setTemplateId(templateId);
- child.setIndexInBulk(i);
- jobList.add(child);
+ jobList.add(createJob(jobType, templateId, i, bulkRequest));
}
return jobList;
}
+ private JobDaoImpl createJob(JobType jobType, UUID templateId, Integer indexInBulk, Map<String, Object> data) {
+ JobDaoImpl job = new JobDaoImpl();
+ job.setStatus(Job.JobStatus.PENDING);
+ job.setTypeAndData(jobType, data);
+ job.setTemplateId(templateId);
+ job.setIndexInBulk(indexInBulk);
+ return job;
+ }
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/model/CategoryParameter.java b/vid-app-common/src/main/java/org/onap/vid/model/CategoryParameter.java
index 99824e72b..91617ff42 100644
--- a/vid-app-common/src/main/java/org/onap/vid/model/CategoryParameter.java
+++ b/vid-app-common/src/main/java/org/onap/vid/model/CategoryParameter.java
@@ -1,12 +1,41 @@
package org.onap.vid.model;
-//import org.hibernate.annotations.Table;
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright © 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Modifications Copyright 2018 Nokia
+ * ================================================================================
+ * 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=========================================================
+ */
-import javax.persistence.*;
import java.util.HashSet;
+import java.util.Objects;
import java.util.Set;
-
-//import javax.persistence.*;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.UniqueConstraint;
@Entity
@Table(name = "vid_category_parameter", uniqueConstraints = @UniqueConstraint(columnNames = "name"))
@@ -72,4 +101,20 @@ public class CategoryParameter extends VidBaseEntity {
public void setIdSupported(boolean idSupported) {
this.idSupported = idSupported;
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || this.getClass() != o.getClass()) return false;
+ CategoryParameter that = (CategoryParameter) o;
+ return this.idSupported == that.idSupported &&
+ Objects.equals(this.name, that.name) &&
+ Objects.equals(this.family, that.family) &&
+ Objects.equals(this.options, that.options);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(this.name, this.idSupported, this.family, this.options);
+ }
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/MsoBusinessLogic.java b/vid-app-common/src/main/java/org/onap/vid/mso/MsoBusinessLogic.java
index 79befe176..0ecb9257e 100644
--- a/vid-app-common/src/main/java/org/onap/vid/mso/MsoBusinessLogic.java
+++ b/vid-app-common/src/main/java/org/onap/vid/mso/MsoBusinessLogic.java
@@ -28,6 +28,8 @@ public interface MsoBusinessLogic {
MsoResponseWrapper createVfModuleInstance(RequestDetails requestDetails, String serviceInstanceId, String vnfInstanceId);
+ MsoResponseWrapper scaleOutVfModuleInstance(org.onap.vid.changeManagement.RequestDetails requestDetails, String serviceInstanceId, String vnfInstanceId);
+
MsoResponseWrapper createConfigurationInstance(org.onap.vid.mso.rest.RequestDetailsWrapper requestDetailsWrapper, String serviceInstanceId);
MsoResponseWrapper deleteSvcInstance(RequestDetails requestDetails, String serviceInstanceId, String serviceStatus);
diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/MsoBusinessLogicImpl.java b/vid-app-common/src/main/java/org/onap/vid/mso/MsoBusinessLogicImpl.java
index 00db464ab..a6226e00e 100644
--- a/vid-app-common/src/main/java/org/onap/vid/mso/MsoBusinessLogicImpl.java
+++ b/vid-app-common/src/main/java/org/onap/vid/mso/MsoBusinessLogicImpl.java
@@ -46,7 +46,11 @@ import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import static java.util.stream.Collectors.collectingAndThen;
+import static java.util.stream.Collectors.toList;
import static org.apache.commons.lang.StringUtils.upperCase;
import static org.onap.vid.changeManagement.ChangeManagementRequest.MsoChangeManagementRequest;
import static org.onap.vid.controllers.MsoController.*;
@@ -56,10 +60,14 @@ import static org.onap.vid.utils.Logging.debugRequestDetails;
public class MsoBusinessLogicImpl implements MsoBusinessLogic {
- public static final String START = " start";
- public static final String RESOURCE_TYPE = "resourceType";
- FeatureManager featureManager;
-
+ static final List<String> DASHBOARD_ALLOWED_TYPES = Stream.of(RequestType.REPLACE_INSTANCE,
+ RequestType.UPDATE_INSTANCE,
+ RequestType.APPLY_UPDATED_CONFIG,
+ RequestType.IN_PLACE_SOFTWARE_UPDATE,
+ RequestType.SCALE_OUT)
+ .map(requestType -> requestType.toString().toUpperCase())
+ .collect(collectingAndThen(toList(), Collections::unmodifiableList));
+ private static final String RESOURCE_TYPE = "resourceType";
/**
* The Constant dateFormat.
*/
@@ -74,16 +82,16 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
private static final String SOURCE_OPERATIONAL_ENVIRONMENT = "VID";
private static final ObjectMapper objectMapper = new ObjectMapper();
/**
+ * The logger.
+ */
+ private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MsoBusinessLogicImpl.class);
+ /**
* The Mso REST client
* This should be replaced with mso client factory.
*/
private final MsoInterface msoClientInterface;
+ FeatureManager featureManager;
- /**
- * The logger.
- */
- private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MsoBusinessLogicImpl.class);
-
@Autowired
public MsoBusinessLogicImpl(MsoInterface msoClientInterface, FeatureManager featureManager) {
this.msoClientInterface = msoClientInterface;
@@ -101,34 +109,26 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
// this function should get params from tosca and send them to instance at mso, then return success response.
@Override
public MsoResponseWrapper createSvcInstance(RequestDetails msoRequest) {
- String methodName = "createSvcInstance ";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug("createSvcInstance");
- String endpoint;
- endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_SVC_INSTANCE);
+ String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_SVC_INSTANCE);
return msoClientInterface.createSvcInstance(msoRequest, endpoint);
}
@Override
- public MsoResponseWrapper createE2eSvcInstance(Object msoRequest){
- String methodName = "createE2eSvcInstance ";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
-
- String endpoint;
- endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_E2E_SVC_INSTANCE);
-
+ public MsoResponseWrapper createE2eSvcInstance(Object msoRequest) {
+ logInvocationInDebug("createE2eSvcInstance");
+ String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_E2E_SVC_INSTANCE);
return msoClientInterface.createE2eSvcInstance(msoRequest, endpoint);
- }
+ }
@Override
public MsoResponseWrapper createVnf(RequestDetails requestDetails, String serviceInstanceId) {
- String methodName = "createVnf";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug("createVnf");
- String endpoint;
- endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_INSTANCE);
+ String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_INSTANCE);
String vnf_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
return msoClientInterface.createVnf(requestDetails, vnf_endpoint);
@@ -136,11 +136,9 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
@Override
public MsoResponseWrapper createNwInstance(RequestDetails requestDetails, String serviceInstanceId) {
- String methodName = "createNwInstance";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug("createNwInstance");
- String endpoint;
- endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_NETWORK_INSTANCE);
+ String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_NETWORK_INSTANCE);
String nw_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
return msoClientInterface.createNwInstance(requestDetails, nw_endpoint);
@@ -148,11 +146,9 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
@Override
public MsoResponseWrapper createVolumeGroupInstance(RequestDetails requestDetails, String serviceInstanceId, String vnfInstanceId) {
- String methodName = "createVolumeGroupInstance";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug("createVolumeGroupInstance");
- String endpoint;
- endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VOLUME_GROUP_INSTANCE);
+ String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VOLUME_GROUP_INSTANCE);
String vnf_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
vnf_endpoint = vnf_endpoint.replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
@@ -162,11 +158,9 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
@Override
public MsoResponseWrapper createVfModuleInstance(RequestDetails requestDetails, String serviceInstanceId, String vnfInstanceId) {
- String methodName = "createVfModuleInstance";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug("createVfModuleInstance");
- String endpoint;
- endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VF_MODULE_INSTANCE);
+ String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VF_MODULE_INSTANCE);
String partial_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
String vf_module_endpoint = partial_endpoint.replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
@@ -175,9 +169,24 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
}
@Override
+ public MsoResponseWrapper scaleOutVfModuleInstance(org.onap.vid.changeManagement.RequestDetails requestDetails, String serviceInstanceId, String vnfInstanceId) {
+ logInvocationInDebug("scaleOutVfModuleInstance");
+
+ String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VF_MODULE_SCALE_OUT);
+
+ String partial_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
+ String vf_module_endpoint = partial_endpoint.replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
+ RequestDetailsWrapper wrapper = new RequestDetailsWrapper();
+ requestDetails.setVnfName(null);
+ requestDetails.setVnfInstanceId(null);
+ wrapper.requestDetails = requestDetails;
+
+ return msoClientInterface.scaleOutVFModuleInstance(wrapper, vf_module_endpoint);
+ }
+
+ @Override
public MsoResponseWrapper createConfigurationInstance(org.onap.vid.mso.rest.RequestDetailsWrapper requestDetailsWrapper, String serviceInstanceId) {
- String methodName = "createConfigurationInstance";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug("createConfigurationInstance");
String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_CONFIGURATIONS);
endpoint = endpoint.replace(SVC_INSTANCE_ID, serviceInstanceId);
@@ -187,24 +196,21 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
@Override
public MsoResponseWrapper deleteE2eSvcInstance(Object requestDetails, String serviceInstanceId) {
- String methodName = "deleteE2eSvcInstance";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug("deleteE2eSvcInstance");
- String endpoint;
- endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_E2E_SVC_INSTANCE) + "/" + serviceInstanceId;
+ String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_E2E_SVC_INSTANCE) + "/" + serviceInstanceId;
return msoClientInterface.deleteE2eSvcInstance(requestDetails, endpoint);
}
@Override
public MsoResponseWrapper deleteSvcInstance(RequestDetails requestDetails, String serviceInstanceId, String serviceStatus) {
- String methodName = "deleteSvcInstance";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug("deleteSvcInstance");
String endpoint;
- if (featureManager.isActive(FLAG_UNASSIGN_SERVICE)){
+ if (featureManager.isActive(FLAG_UNASSIGN_SERVICE)) {
endpoint = validateEndpointPath(MsoProperties.MSO_DELETE_OR_UNASSIGN_REST_API_SVC_INSTANCE);
- if (shouldUnassignService(serviceStatus)){
+ if (shouldUnassignService(serviceStatus)) {
logger.debug(EELFLoggerDelegate.debugLogger, "unassign service");
String svc_endpoint = endpoint + "/" + serviceInstanceId + "/unassign";
return msoClientInterface.unassignSvcInstance(requestDetails, svc_endpoint);
@@ -218,16 +224,14 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
}
private boolean shouldUnassignService(String serviceStatus) {
- return ImmutableList.of("created","pendingdelete","pending-delete", "assigned").contains(serviceStatus.toLowerCase());
+ return ImmutableList.of("created", "pendingdelete", "pending-delete", "assigned").contains(serviceStatus.toLowerCase());
}
@Override
public MsoResponseWrapper deleteVnf(RequestDetails requestDetails, String serviceInstanceId, String vnfInstanceId) {
- String methodName = "deleteVnf";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug("deleteVnf");
- String endpoint;
- endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_INSTANCE);
+ String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_INSTANCE);
String vnf_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
vnf_endpoint = vnf_endpoint + '/' + vnfInstanceId;
@@ -236,14 +240,10 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
@Override
public MsoResponseWrapper deleteVfModule(RequestDetails requestDetails, String serviceInstanceId, String vnfInstanceId, String vfModuleId) {
- String methodName = "deleteVfModule";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
-
- String endpoint;
- endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VF_MODULE_INSTANCE);
+ logInvocationInDebug("deleteVfModule");
+ String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VF_MODULE_INSTANCE);
String vf__modules_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId).replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
-
String delete_vf_endpoint = vf__modules_endpoint + '/' + vfModuleId;
return msoClientInterface.deleteVfModule(requestDetails, delete_vf_endpoint);
@@ -251,12 +251,9 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
@Override
public MsoResponseWrapper deleteVolumeGroupInstance(RequestDetails requestDetails, String serviceInstanceId, String vnfInstanceId, String volumeGroupId) {
- String methodName = "deleteVolumeGroupInstance";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
-
- String endpoint;
- endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VOLUME_GROUP_INSTANCE);
+ logInvocationInDebug("deleteVolumeGroupInstance");
+ String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VOLUME_GROUP_INSTANCE);
String svc_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
String vnf_endpoint = svc_endpoint.replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
String delete_volume_group_endpoint = vnf_endpoint + "/" + volumeGroupId;
@@ -266,12 +263,9 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
@Override
public MsoResponseWrapper deleteNwInstance(RequestDetails requestDetails, String serviceInstanceId, String networkInstanceId) {
- String methodName = "deleteNwInstance";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
-
- String endpoint;
- endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_NETWORK_INSTANCE);
+ logInvocationInDebug("deleteNwInstance");
+ String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_NETWORK_INSTANCE);
String svc_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
String delete_nw_endpoint = svc_endpoint + "/" + networkInstanceId;
@@ -281,7 +275,7 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
@Override
public MsoResponseWrapper getOrchestrationRequest(String requestId) {
String methodName = "getOrchestrationRequest";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug(methodName);
try {
String p = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQ);
String path = p + "/" + requestId;
@@ -289,8 +283,7 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
return msoClientInterface.getOrchestrationRequest(path);
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+ logException(methodName, e);
throw e;
}
}
@@ -298,7 +291,7 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
@Override
public MsoResponseWrapper getOrchestrationRequests(String filterString) {
String methodName = "getOrchestrationRequest";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug(methodName);
try {
String p = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQS);
String path = p + filterString;
@@ -306,8 +299,7 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
return msoClientInterface.getOrchestrationRequest(path);
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+ logException(methodName, e);
throw e;
}
}
@@ -315,48 +307,51 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
@Override
public List<Request> getOrchestrationRequestsForDashboard() {
String methodName = "getOrchestrationRequestsForDashboard";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
- List<Request> filteredOrchestrationRequests = new ArrayList<>();
- try {
- String path = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQS);
- path += "filter=modelType:EQUALS:vnf";
- RestObject<String> restObjStr = new RestObject<>();
- String str = new String();
- restObjStr.set(str);
+ logInvocationInDebug(methodName);
- MsoResponseWrapper msoResponseWrapper = msoClientInterface.getOrchestrationRequestsForDashboard(str, "", path, restObjStr);
- List<RequestWrapper> allOrchestrationRequests = deserializeOrchestrationRequestsJson(msoResponseWrapper.getEntity());
-
- final ImmutableList<String> suppoertedRequestTypes = ImmutableList.of(
- RequestType.REPLACE_INSTANCE.toString().toUpperCase(),
- RequestType.UPDATE_INSTANCE.toString().toUpperCase(),
- RequestType.APPLY_UPDATED_CONFIG.toString().toUpperCase(),
- RequestType.IN_PLACE_SOFTWARE_UPDATE.toString().toUpperCase()
- );
-
- for (RequestWrapper currentRequest : allOrchestrationRequests) {
- if (currentRequest.getRequest() != null
- && "vnf".equalsIgnoreCase(currentRequest.getRequest().getRequestScope())
- && suppoertedRequestTypes.contains(upperCase(currentRequest.getRequest().getRequestType()))
- ) {
- filteredOrchestrationRequests.add(currentRequest.getRequest());
- }
- }
+ List<Request> dashboardOrchestrationReqs = new ArrayList<>();
+ try {
+ List<RequestWrapper> vnfOrchestrationReqsWrappers = getOrchestrationRequestsByFilter("modelType", "vnf");
+ dashboardOrchestrationReqs = vnfOrchestrationReqsWrappers.stream()
+ .filter(reqWrapper -> Objects.nonNull(reqWrapper.getRequest())
+ && DASHBOARD_ALLOWED_TYPES.contains(upperCase(reqWrapper.getRequest().getRequestType())))
+ .map(RequestWrapper::getRequest)
+ .collect(Collectors.toList());
+
+ List<RequestWrapper> scaleOutOrchestrationReqWrappers = getOrchestrationRequestsByFilter("action", "scaleOut");
+ List<Request> scaleoutRequests = scaleOutOrchestrationReqWrappers.stream()
+ .filter(reqWrapper -> Objects.nonNull(reqWrapper.getRequest()))
+ .map(RequestWrapper::getRequest)
+ .collect(Collectors.toList());
+
+ dashboardOrchestrationReqs.addAll(scaleoutRequests);
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+ logException(methodName, e);
}
- return filteredOrchestrationRequests;
+ return dashboardOrchestrationReqs;
+ }
+
+ private String constructOrchestrationRequestFilter(String filterName, String filterValue) {
+ return String.format("%sfilter=%s:EQUALS:%s",
+ SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQS), filterName, filterValue);
+ }
+
+ private List<RequestWrapper> getOrchestrationRequestsByFilter(String filterName, String filterValue) {
+ String orchestrationReqPath = constructOrchestrationRequestFilter(filterName, filterValue);
+ RestObject<String> restObjStr = new RestObject<>();
+ String str = new String();
+ restObjStr.set(str);
+ MsoResponseWrapper msoResponseWrapper = msoClientInterface.getOrchestrationRequestsForDashboard(str, "", orchestrationReqPath, restObjStr);
+ return deserializeOrchestrationRequestsJson(msoResponseWrapper.getEntity());
}
private List<RequestWrapper> deserializeOrchestrationRequestsJson(String orchestrationRequestsJson) {
- String methodName = "deserializeOrchestrationRequestsJson";
- logger.debug(dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug("deserializeOrchestrationRequestsJson");
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.configure(DeserializationFeature.READ_ENUMS_USING_TO_STRING, true);
- RequestList requestList = null;
+ RequestList requestList;
try {
requestList = mapper.readValue(orchestrationRequestsJson, RequestList.class);
} catch (IOException e) {
@@ -369,7 +364,7 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
@Override
public List<Task> getManualTasksByRequestId(String originalRequestId) {
String methodName = "getManualTasksByRequestId";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug(methodName);
try {
String p = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_MAN_TASKS);
@@ -383,15 +378,13 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
return deserializeManualTasksJson(msoResponseWrapper.getEntity());
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+ logException(methodName, e);
throw e;
}
}
private List<Task> deserializeManualTasksJson(String manualTasksJson) {
- String methodName = "deserializeManualTasksJson";
- logger.debug(dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug("deserializeManualTasksJson");
ObjectMapper mapper = new ObjectMapper();
try {
@@ -406,7 +399,7 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
@Override
public MsoResponseWrapper completeManualTask(RequestDetails requestDetails, String taskId) {
String methodName = "completeManualTask";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug(methodName);
try {
String p = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_MAN_TASKS);
String path = p + "/" + taskId + "/complete";
@@ -420,8 +413,7 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
return MsoUtil.wrapResponse(restObjStr);
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+ logException(methodName, e);
throw e;
}
}
@@ -429,7 +421,7 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
@Override
public MsoResponseWrapper activateServiceInstance(RequestDetails requestDetails, String serviceInstanceId) {
String methodName = "activateServiceInstance";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug(methodName);
try {
String serviceEndpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_SVC_INSTANCE);
String activateServicePath = serviceEndpoint + "/" + serviceInstanceId + ACTIVATE;
@@ -443,8 +435,7 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
return MsoUtil.wrapResponse(restObjStr);
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+ logException(methodName, e);
throw e;
}
}
@@ -452,8 +443,7 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
@Override
public MsoResponseWrapperInterface updateVnf(org.onap.vid.changeManagement.RequestDetails requestDetails, String serviceInstanceId, String vnfInstanceId) {
- String methodName = "updateVnf";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug("updateVnf");
String endpoint;
endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_INSTANCE);
@@ -464,11 +454,9 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
@Override
public MsoResponseWrapperInterface replaceVnf(org.onap.vid.changeManagement.RequestDetails requestDetails, String serviceInstanceId, String vnfInstanceId) {
- String methodName = "replaceVnf";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug("replaceVnf");
- String endpoint;
- endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_CHANGE_MANAGEMENT_INSTANCE);
+ String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_CHANGE_MANAGEMENT_INSTANCE);
String vnf_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
vnf_endpoint = vnf_endpoint.replace(VNF_INSTANCE_ID, vnfInstanceId);
vnf_endpoint = vnf_endpoint.replace(REQUEST_TYPE, MsoChangeManagementRequest.REPLACE);
@@ -489,22 +477,17 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
@Override
public RequestDetailsWrapper generateConfigMsoRequest(org.onap.vid.changeManagement.RequestDetails requestDetails) {
validateUpdateVnfConfig(requestDetails);
- RequestDetails ConfigUpdateRequest = new RequestDetails();
- ConfigUpdateRequest.setRequestParameters(requestDetails.getRequestParameters());
- ConfigUpdateRequest.setRequestInfo(requestDetails.getRequestInfo());
+ RequestDetails configUpdateRequest = new RequestDetails();
+ configUpdateRequest.setRequestParameters(requestDetails.getRequestParameters());
+ configUpdateRequest.setRequestInfo(requestDetails.getRequestInfo());
RequestDetailsWrapper requestDetailsWrapper = new RequestDetailsWrapper();
- requestDetailsWrapper.requestDetails = ConfigUpdateRequest;
+ requestDetailsWrapper.requestDetails = configUpdateRequest;
return requestDetailsWrapper;
}
-
-
-
-
@Override
public MsoResponseWrapperInterface updateVnfSoftware(org.onap.vid.changeManagement.RequestDetails requestDetails, String serviceInstanceId, String vnfInstanceId) {
- String methodName = "updateVnfSoftware";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug("updateVnfSoftware");
String vnf_endpoint = getChangeManagementEndpoint(serviceInstanceId, vnfInstanceId, MsoChangeManagementRequest.SOFTWARE_UPDATE); //workflow name in mso is different than workflow name in vid UI
RequestDetailsWrapper finalRequestDetails = generateInPlaceMsoRequest(requestDetails);
return msoClientInterface.changeManagementUpdate(finalRequestDetails, vnf_endpoint);
@@ -512,30 +495,28 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
@Override
public MsoResponseWrapperInterface updateVnfConfig(org.onap.vid.changeManagement.RequestDetails requestDetails, String serviceInstanceId, String vnfInstanceId) {
- String methodName = "updateVnfConfig";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug("updateVnfConfig");
RequestDetailsWrapper finalRequestDetails = generateConfigMsoRequest(requestDetails);
String vnf_endpoint = getChangeManagementEndpoint(serviceInstanceId, vnfInstanceId, MsoChangeManagementRequest.CONFIG_UPDATE);
return msoClientInterface.changeManagementUpdate(finalRequestDetails, vnf_endpoint);
}
private String getChangeManagementEndpoint(String serviceInstanceId, String vnfInstanceId, String vnfRequestType) {
- String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_CHANGE_MANAGEMENT_INSTANCE);
+ String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_CHANGE_MANAGEMENT_INSTANCE);
String vnf_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
vnf_endpoint = vnf_endpoint.replace(VNF_INSTANCE_ID, vnfInstanceId);
vnf_endpoint = vnf_endpoint.replace(REQUEST_TYPE, vnfRequestType);
return vnf_endpoint;
}
- private Map getChangeManagementPayload(RequestDetails requestDetails, String message){
- if(requestDetails.getRequestParameters()==null||requestDetails.getRequestParameters().getAdditionalProperties()==null){
+ private Map getChangeManagementPayload(RequestDetails requestDetails, String message) {
+ if (requestDetails.getRequestParameters() == null || requestDetails.getRequestParameters().getAdditionalProperties() == null) {
throw new BadRequestException(message);
}
- Object payloadRaw=requestDetails.getRequestParameters().getAdditionalProperties().get("payload");
- try{
- return objectMapper.readValue((String)payloadRaw,Map.class);
- }
- catch(Exception exception){
+ Object payloadRaw = requestDetails.getRequestParameters().getAdditionalProperties().get("payload");
+ try {
+ return objectMapper.readValue((String) payloadRaw, Map.class);
+ } catch (Exception exception) {
throw new BadRequestException(message);
}
}
@@ -564,30 +545,12 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
}
}
- private void validateUpdateVnfConfig(RequestDetails requestDetails) {
- final String noValidPayloadMsg = "No valid payload in " + ChangeManagementRequest.CONFIG_UPDATE + " request";
-
- Map payload = getChangeManagementPayload(requestDetails, noValidPayloadMsg);
- validateConfigUpdateVnfPayloadProperty(payload, noValidPayloadMsg, "request-parameters");
- validateConfigUpdateVnfPayloadProperty(payload, noValidPayloadMsg, "configuration-parameters");
- }
-
- private void validateConfigUpdateVnfPayloadProperty(Map payload, String noValidPayloadMsg, String propertyName) {
- final String noValidPayloadPropertyMsg = noValidPayloadMsg+ ", "+ propertyName + " property is not valid";
- if(!payload.containsKey(propertyName)) {
- throw new BadRequestException( noValidPayloadPropertyMsg);
- }
- }
-
@Override
- public MsoResponseWrapper deleteConfiguration(
- org.onap.vid.mso.rest.RequestDetailsWrapper requestDetailsWrapper,
- String serviceInstanceId,
- String configurationId) {
-
- String methodName = "deleteConfiguration";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ public MsoResponseWrapper deleteConfiguration(org.onap.vid.mso.rest.RequestDetailsWrapper requestDetailsWrapper,
+ String serviceInstanceId,
+ String configurationId) {
+ logInvocationInDebug("deleteConfiguration");
String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_CONFIGURATION_INSTANCE);
endpoint = endpoint.replace(SVC_INSTANCE_ID, serviceInstanceId);
endpoint = endpoint.replace(CONFIGURATION_ID, configurationId);
@@ -602,8 +565,7 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
String configurationId,
boolean isActivate) {
- String methodName = "setConfigurationActiveStatus";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug("setConfigurationActiveStatus");
String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_CONFIGURATION_INSTANCE);
endpoint = endpoint.replace(SVC_INSTANCE_ID, serviceInstanceId);
@@ -616,9 +578,9 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
}
@Override
- public MsoResponseWrapper setServiceInstanceStatus(RequestDetails requestDetails , String serviceInstanceId, boolean isActivate) {
+ public MsoResponseWrapper setServiceInstanceStatus(RequestDetails requestDetails, String serviceInstanceId, boolean isActivate) {
+ logInvocationInDebug("setServiceInstanceStatus");
String methodName = "setServiceInstanceStatus";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
try {
String serviceEndpoint = validateEndpointPath(MsoProperties.MSO_REST_API_SVC_INSTANCE);
String endpoint = serviceEndpoint + "/" + serviceInstanceId;
@@ -631,7 +593,7 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
String str = "";
restObjStr.set(str);
- msoClientInterface.setServiceInstanceStatus(requestDetails , str, "", endpoint, restObjStr);
+ msoClientInterface.setServiceInstanceStatus(requestDetails, str, "", endpoint, restObjStr);
return MsoUtil.wrapResponse(restObjStr);
@@ -648,8 +610,7 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
String serviceInstanceId,
String configurationId,
boolean isEnable) {
- String methodName = "setPortOnConfigurationStatus";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug("setPortOnConfigurationStatus");
String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_CONFIGURATION_INSTANCE);
endpoint = endpoint.replace(SVC_INSTANCE_ID, serviceInstanceId);
@@ -663,7 +624,7 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
@Override
- public RequestDetailsWrapper<RequestDetails> createOperationalEnvironmentActivationRequestDetails(OperationalEnvironmentActivateInfo details) {
+ public RequestDetailsWrapper<RequestDetails> createOperationalEnvironmentActivationRequestDetails(OperationalEnvironmentActivateInfo details) {
RequestDetails requestDetails = new RequestDetails();
RequestInfo requestInfo = new RequestInfo();
requestInfo.setAdditionalProperty(RESOURCE_TYPE, RESOURCE_TYPE_OPERATIONAL_ENVIRONMENT);
@@ -737,7 +698,6 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
}
-
@Override
public RequestDetailsWrapper<OperationEnvironmentRequestDetails> convertParametersToRequestDetails(OperationalEnvironmentController.OperationalEnvironmentCreateBody input, String userId) {
OperationEnvironmentRequestDetails.RequestInfo requestInfo = new OperationEnvironmentRequestDetails.RequestInfo(
@@ -766,8 +726,7 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
@Override
public MsoResponseWrapper removeRelationshipFromServiceInstance(RequestDetails requestDetails, String serviceInstanceId) {
- String methodName = "removeRelationshipFromServiceInstance";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug("removeRelationshipFromServiceInstance");
String serviceEndpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_SVC_INSTANCE);
String removeRelationshipsPath = serviceEndpoint + "/" + serviceInstanceId + "/removeRelationships";
@@ -777,8 +736,7 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
@Override
public MsoResponseWrapper addRelationshipToServiceInstance(RequestDetails requestDetails, String serviceInstanceId) {
- String methodName = "addRelationshipToServiceInstance";
- logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ logInvocationInDebug("addRelationshipToServiceInstance");
String serviceEndpoint = SystemProperties.getProperty(MsoProperties.MSO_REST_API_SVC_INSTANCE);
String addRelationshipsPath = serviceEndpoint + "/" + serviceInstanceId + "/addRelationships";
@@ -786,8 +744,31 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
return msoClientInterface.addRelationshipToServiceInstance(requestDetails, addRelationshipsPath);
}
+ private void validateUpdateVnfConfig(RequestDetails requestDetails) {
+ final String noValidPayloadMsg = "No valid payload in " + ChangeManagementRequest.CONFIG_UPDATE + " request";
- public enum RequestType {
+ Map payload = getChangeManagementPayload(requestDetails, noValidPayloadMsg);
+ validateConfigUpdateVnfPayloadProperty(payload, noValidPayloadMsg, "request-parameters");
+ validateConfigUpdateVnfPayloadProperty(payload, noValidPayloadMsg, "configuration-parameters");
+ }
+
+ private void validateConfigUpdateVnfPayloadProperty(Map payload, String noValidPayloadMsg, String propertyName) {
+ final String noValidPayloadPropertyMsg = noValidPayloadMsg + ", " + propertyName + " property is not valid";
+ if (!payload.containsKey(propertyName)) {
+ throw new BadRequestException(noValidPayloadPropertyMsg);
+ }
+ }
+
+ private void logInvocationInDebug(String methodName) {
+ logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+ }
+
+ private void logException(String methodName, Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+ logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+ }
+
+ enum RequestType {
CREATE_INSTANCE("createInstance"),
DELETE_INSTANCE("deleteInstance"),
@@ -797,27 +778,23 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
DEACTIVATE_INSTANCE("deactivateInstance"),
APPLY_UPDATED_CONFIG("applyUpdatedConfig"),
IN_PLACE_SOFTWARE_UPDATE("inPlaceSoftwareUpdate"),
+ SCALE_OUT("scaleOut"),
UNKNOWN("unknown"),
NOT_PROVIDED("not provided");
- private final String value;
private static final Map<String, RequestType> CONSTANTS = new HashMap<>();
static {
- for (RequestType c: values()) {
+ for (RequestType c : values()) {
CONSTANTS.put(c.value, c);
}
}
+ private final String value;
+
RequestType(String value) {
this.value = value;
}
- @JsonValue
- @Override
- public String toString() {
- return this.value;
- }
-
@JsonCreator
public static RequestType fromValue(String value) {
RequestType constant = CONSTANTS.get(value);
@@ -827,5 +804,11 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
return constant;
}
}
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return this.value;
+ }
}
} \ No newline at end of file
diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/MsoInterface.java b/vid-app-common/src/main/java/org/onap/vid/mso/MsoInterface.java
index 3cba12f67..834f80885 100644
--- a/vid-app-common/src/main/java/org/onap/vid/mso/MsoInterface.java
+++ b/vid-app-common/src/main/java/org/onap/vid/mso/MsoInterface.java
@@ -74,6 +74,8 @@ public interface MsoInterface {
MsoResponseWrapper createConfigurationInstance(org.onap.vid.mso.rest.RequestDetailsWrapper requestDetailsWrapper, String endpoint);
+ MsoResponseWrapper scaleOutVFModuleInstance(RequestDetailsWrapper requestDetailsWrapper, String endpoint);
+
MsoResponseWrapper deleteSvcInstance(RequestDetails requestDetails, String endpoint);
MsoResponseWrapper unassignSvcInstance(RequestDetails requestDetails, String endpoint);
diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/MsoProperties.java b/vid-app-common/src/main/java/org/onap/vid/mso/MsoProperties.java
index 773b8a83a..1d71e9c75 100644
--- a/vid-app-common/src/main/java/org/onap/vid/mso/MsoProperties.java
+++ b/vid-app-common/src/main/java/org/onap/vid/mso/MsoProperties.java
@@ -99,6 +99,8 @@ public class MsoProperties extends SystemProperties {
/** The Constant MSO_REST_API_VF_MODULE_INSTANCE. */
public static final String MSO_REST_API_VF_MODULE_INSTANCE = "mso.restapi.vf.module.instance";
+ public static final String MSO_REST_API_VF_MODULE_SCALE_OUT = "mso.restapi.vf.module.scaleout";
+
/** The Constant MSO_REST_API_VOLUME_GROUP_INSTANCE. */
public static final String MSO_REST_API_VOLUME_GROUP_INSTANCE = "mso.restapi.volume.group.instance"; //serviceInstances/v2/{serviceInstanceId}/volumeGroups
diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/rest/MsoRestClientNew.java b/vid-app-common/src/main/java/org/onap/vid/mso/rest/MsoRestClientNew.java
index 9cac3e4e2..37600f7b9 100644
--- a/vid-app-common/src/main/java/org/onap/vid/mso/rest/MsoRestClientNew.java
+++ b/vid-app-common/src/main/java/org/onap/vid/mso/rest/MsoRestClientNew.java
@@ -124,6 +124,14 @@ public class MsoRestClientNew implements MsoInterface {
}
@Override
+ public MsoResponseWrapper scaleOutVFModuleInstance(RequestDetailsWrapper requestDetailsWrapper, String endpoint) {
+ String methodName = "scaleOutVFModuleInstance";
+ logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+ String path = baseUrl + endpoint;
+ return createInstance(requestDetailsWrapper, path);
+ }
+
+ @Override
public MsoResponseWrapper createConfigurationInstance(org.onap.vid.mso.rest.RequestDetailsWrapper requestDetailsWrapper, String endpoint) {
String methodName = "createConfigurationInstance";
logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
@@ -478,7 +486,7 @@ public class MsoRestClientNew implements MsoInterface {
try {
logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling Delete, path =[" + path + "]");
- HttpResponse<String> response = client.delete(path, commonHeaders, String.class);
+ HttpResponse<String> response = client.delete(path, commonHeaders, request, String.class);
MsoResponseWrapper w = MsoUtil.wrapResponse(response);
logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w=" + w.getResponse());
diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/rest/RequestDetails.java b/vid-app-common/src/main/java/org/onap/vid/mso/rest/RequestDetails.java
index df6914843..2b159f812 100644
--- a/vid-app-common/src/main/java/org/onap/vid/mso/rest/RequestDetails.java
+++ b/vid-app-common/src/main/java/org/onap/vid/mso/rest/RequestDetails.java
@@ -20,11 +20,20 @@
package org.onap.vid.mso.rest;
-import com.fasterxml.jackson.annotation.*;
-import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.commons.lang.builder.HashCodeBuilder;
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.onap.vid.domain.mso.*;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.onap.vid.domain.mso.CloudConfiguration;
+import org.onap.vid.domain.mso.ModelInfo;
+import org.onap.vid.domain.mso.RequestInfo;
+import org.onap.vid.domain.mso.RequestParameters;
+import org.onap.vid.domain.mso.SubscriberInfo;
import java.util.HashMap;
import java.util.List;
@@ -41,7 +50,8 @@ import java.util.Map;
"relatedModelList",
"requestInfo",
"subscriberInfo",
- "requestParameters"
+ "requestParameters",
+ "configurationParameters"
})
public class RequestDetails{
@@ -71,6 +81,9 @@ public class RequestDetails{
@JsonProperty("requestParameters")
private RequestParameters requestParameters;
+ @JsonProperty("configurationParameters")
+ protected List<Map<String, String>> configurationParameters;
+
/** The additional properties. */
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
@@ -198,12 +211,31 @@ public class RequestDetails{
this.additionalProperties.put(name, value);
}
+ @JsonProperty("configurationParameters")
+ public List<Map<String, String>> getConfigurationParameters() {
+ return configurationParameters;
+ }
+
+ @JsonProperty("configurationParameters")
+ public void setConfigurationParameters(List<Map<String, String>> configurationParameters) {
+ this.configurationParameters = configurationParameters;
+ }
+
/* (non-Javadoc)
* @see org.onap.vid.domain.mso.RequestDetails#hashCode()
*/
@Override
public int hashCode() {
- return new HashCodeBuilder().append(cloudConfiguration).append(modelInfo).append(relatedInstanceList).append(requestInfo).append(getRequestParameters()).append(subscriberInfo).append(additionalProperties).toHashCode();
+ return new HashCodeBuilder()
+ .append(cloudConfiguration)
+ .append(modelInfo)
+ .append(relatedInstanceList)
+ .append(requestInfo)
+ .append(getRequestParameters())
+ .append(subscriberInfo)
+ .append(additionalProperties)
+ .append(configurationParameters)
+ .toHashCode();
}
/* (non-Javadoc)
@@ -214,11 +246,20 @@ public class RequestDetails{
if (other == this) {
return true;
}
- if ((other instanceof RequestDetails) == false) {
+ if (!(other instanceof RequestDetails)) {
return false;
}
RequestDetails rhs = ((RequestDetails) other);
- return new EqualsBuilder().append(cloudConfiguration, rhs.cloudConfiguration).append(modelInfo, rhs.modelInfo).append(relatedInstanceList, rhs.relatedInstanceList).append(requestInfo, rhs.requestInfo).append(getRequestParameters(), rhs.getRequestParameters()).append(subscriberInfo, rhs.subscriberInfo).append(additionalProperties, rhs.additionalProperties).isEquals();
+ return new EqualsBuilder()
+ .append(cloudConfiguration, rhs.cloudConfiguration)
+ .append(modelInfo, rhs.modelInfo)
+ .append(relatedInstanceList, rhs.relatedInstanceList)
+ .append(requestInfo, rhs.requestInfo)
+ .append(getRequestParameters(), rhs.getRequestParameters())
+ .append(subscriberInfo, rhs.subscriberInfo)
+ .append(additionalProperties, rhs.additionalProperties)
+ .append(configurationParameters, rhs.configurationParameters)
+ .isEquals();
}
public RequestParameters getRequestParameters() {
diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/rest/RequestDetailsWrapper.java b/vid-app-common/src/main/java/org/onap/vid/mso/rest/RequestDetailsWrapper.java
index 0e320a35f..20c84422e 100644
--- a/vid-app-common/src/main/java/org/onap/vid/mso/rest/RequestDetailsWrapper.java
+++ b/vid-app-common/src/main/java/org/onap/vid/mso/rest/RequestDetailsWrapper.java
@@ -1,5 +1,34 @@
+/*
+ * ============LICENSE_START==========================================
+ * ===================================================================
+ * Modifications Copyright (C) 2018 Nokia. 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============================================
+ *
+ *
+ */
package org.onap.vid.mso.rest;
-public class RequestDetailsWrapper {
- public RequestDetails requestDetails;
+public final class RequestDetailsWrapper {
+
+ private final RequestDetails requestDetails;
+
+ public RequestDetailsWrapper(RequestDetails requestDetails) {
+ this.requestDetails = requestDetails;
+ }
+
+ public RequestDetails getRequestDetails() {
+ return requestDetails;
+ }
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/roles/RoleProvider.java b/vid-app-common/src/main/java/org/onap/vid/roles/RoleProvider.java
index 45835d459..5c1ee9e89 100644
--- a/vid-app-common/src/main/java/org/onap/vid/roles/RoleProvider.java
+++ b/vid-app-common/src/main/java/org/onap/vid/roles/RoleProvider.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Modifications Copyright 2018 Nokia
+ * ================================================================================
+ * 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=========================================================
+ */
+
package org.onap.vid.roles;
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -16,8 +36,6 @@ import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
-//import org.codehaus.jackson.map.ObjectMapper;
-
/**
* Created by Oren on 7/1/17.
*/
@@ -45,16 +63,16 @@ public class RoleProvider {
LOG.debug(EELFLoggerDelegate.debugLogger, "Role provider => init method finished");
}
- public List<Role> getUserRoles(HttpServletRequest request) throws JsonProcessingException {
+ public List<Role> getUserRoles(HttpServletRequest request) {
String logPrefix = "Role Provider (" + UserUtils.getUserId(request) + ") ==>";
LOG.debug(EELFLoggerDelegate.debugLogger, logPrefix + "Entering to get user role for user " + UserUtils.getUserId(request));
List<Role> roleList = new ArrayList<>();
- //Disable roles until AAF integration finishes
- /*HashMap roles = UserUtils.getRoles(request);
+
+ Map roles = UserUtils.getRoles(request);
for (Object role : roles.keySet()) {
- org.openecomp.portalsdk.core.domain.Role sdkRol = (org.openecomp.portalsdk.core.domain.Role) roles.get(role);
+ org.onap.portalsdk.core.domain.Role sdkRol = (org.onap.portalsdk.core.domain.Role) roles.get(role);
LOG.debug(EELFLoggerDelegate.debugLogger, logPrefix + "Role " + sdkRol.getName() + " is being proccessed");
try {
@@ -67,11 +85,11 @@ public class RoleProvider {
roleList.add(createRoleFromStringArr(roleParts, logPrefix));
String msg = String.format(logPrefix + " User %s got permissions %s", UserUtils.getUserId(request), Arrays.toString(roleParts));
LOG.debug(EELFLoggerDelegate.debugLogger, msg);
- } catch (RoleParsingException e) {
+ } catch (Exception e) {
LOG.error(logPrefix + " Failed to parse permission");
}
- }*/
+ }
return roleList;
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/services/AuditServiceImpl.java b/vid-app-common/src/main/java/org/onap/vid/services/AuditServiceImpl.java
index 13db1ae98..b4806f1ce 100644
--- a/vid-app-common/src/main/java/org/onap/vid/services/AuditServiceImpl.java
+++ b/vid-app-common/src/main/java/org/onap/vid/services/AuditServiceImpl.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. 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=========================================================
+ */
package org.onap.vid.services;
import com.fasterxml.jackson.core.JsonParseException;
@@ -16,12 +36,12 @@ public class AuditServiceImpl implements AuditService{
@Inject
private AsyncInstantiationBusinessLogic asyncInstantiationBL;
+ public static final String FAILED_MSO_REQUEST_STATUS = "FAILED";
@Override
public void setFailedAuditStatusFromMso(UUID jobUuid, String requestId, int statusCode, String msoResponse){
- final String failedMsoRequestStatus = "FAILED";
String additionalInfo = formatExceptionAdditionalInfo(statusCode, msoResponse);
- asyncInstantiationBL.auditMsoStatus(jobUuid, failedMsoRequestStatus, requestId, additionalInfo);
+ asyncInstantiationBL.auditMsoStatus(jobUuid, FAILED_MSO_REQUEST_STATUS, requestId, additionalInfo);
}
private String formatExceptionAdditionalInfo(int statusCode, String msoResponse) {
diff --git a/vid-app-common/src/main/java/org/onap/vid/services/CategoryParameterServiceImpl.java b/vid-app-common/src/main/java/org/onap/vid/services/CategoryParameterServiceImpl.java
index fa531ffc1..b3d20a622 100644
--- a/vid-app-common/src/main/java/org/onap/vid/services/CategoryParameterServiceImpl.java
+++ b/vid-app-common/src/main/java/org/onap/vid/services/CategoryParameterServiceImpl.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. 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=========================================================
+ */
package org.onap.vid.services;
import org.onap.vid.category.AddCategoryOptionResponse;
@@ -20,6 +40,7 @@ import java.util.stream.Collectors;
@Service
public class CategoryParameterServiceImpl implements CategoryParameterService {
+ public static final String OPTION_ALREADY_EXIST_FOR_CATEGORY = "Option %s already exist for category %s";
@Autowired
private DataAccessService dataAccessService;
@@ -68,7 +89,7 @@ public class CategoryParameterServiceImpl implements CategoryParameterService {
Set<String> categoryOptions = categoryParameter.getOptions().stream().map(CategoryParameterOption::getName).collect(Collectors.toSet());
for (String optionName : optionsRequest.options) {
if (categoryOptions.contains(optionName)) {
- response.getErrors().add(String.format("Option %s already exist for category %s", optionName, categoryName));
+ response.getErrors().add(String.format(OPTION_ALREADY_EXIST_FOR_CATEGORY, optionName, categoryName));
continue;
}
String appId = categoryParameter.isIdSupported() ? UUID.randomUUID().toString() : optionName;
diff --git a/vid-app-common/src/main/java/org/onap/vid/services/ChangeManagementServiceImpl.java b/vid-app-common/src/main/java/org/onap/vid/services/ChangeManagementServiceImpl.java
index 90d1c33e3..e4a6b3990 100644
--- a/vid-app-common/src/main/java/org/onap/vid/services/ChangeManagementServiceImpl.java
+++ b/vid-app-common/src/main/java/org/onap/vid/services/ChangeManagementServiceImpl.java
@@ -102,7 +102,7 @@ public class ChangeManagementServiceImpl implements ChangeManagementService {
break;
}
case ChangeManagementRequest.SCALE_OUT:{
- msoResponseWrapperObject = msoBusinessLogic.createVfModuleInstance(currentRequestDetails, serviceInstanceId, vnfInstanceId);
+ msoResponseWrapperObject = msoBusinessLogic.scaleOutVfModuleInstance(currentRequestDetails, serviceInstanceId, vnfInstanceId);
break;
}
default:
diff --git a/vid-app-common/src/main/java/org/onap/vid/services/PombaServiceImpl.java b/vid-app-common/src/main/java/org/onap/vid/services/PombaServiceImpl.java
index 21b1ec1c3..231b35222 100644
--- a/vid-app-common/src/main/java/org/onap/vid/services/PombaServiceImpl.java
+++ b/vid-app-common/src/main/java/org/onap/vid/services/PombaServiceImpl.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. 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=========================================================
+ */
package org.onap.vid.services;
import org.onap.vid.aai.PombaClientInterface;
diff --git a/vid-app-common/src/main/java/org/onap/vid/services/VidServiceImpl.java b/vid-app-common/src/main/java/org/onap/vid/services/VidServiceImpl.java
index dc2541b3f..1890a5b37 100644
--- a/vid-app-common/src/main/java/org/onap/vid/services/VidServiceImpl.java
+++ b/vid-app-common/src/main/java/org/onap/vid/services/VidServiceImpl.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. 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=========================================================
+ */
package org.onap.vid.services;
import com.google.common.cache.CacheBuilder;
diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/controller/ServiceModelController.js b/vid-app-common/src/main/webapp/app/vid/scripts/controller/ServiceModelController.js
index 89660fb18..aee4c05fe 100755
--- a/vid-app-common/src/main/webapp/app/vid/scripts/controller/ServiceModelController.js
+++ b/vid-app-common/src/main/webapp/app/vid/scripts/controller/ServiceModelController.js
@@ -190,7 +190,7 @@
DataService.setPnf(!angular.equals(serviceModel.pnfs, {}));
$scope.createType = COMPONENT.A_LA_CARTE;
var broadcastType = COMPONENT.CREATE_COMPONENT;
- if (AsdcService.isMacro(serviceModel)) {
+ if (AsdcService.isMacro(serviceModel) || DataService.getE2EService()) {
DataService.setALaCarte(false);
if(AsdcService.shouldExcludeMacroFromAsyncInstatiationFlow(serviceModel)){
DataService.setShouldExcludeMacroFromAsyncInstatiationFlow(true);
diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js b/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js
index c55092e4c..3a5a1c7e0 100644
--- a/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js
+++ b/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js
@@ -10,7 +10,7 @@
vm.hasScheduler = !!VIDCONFIGURATION.SCHEDULER_PORTAL_URL;
vm.configUpdatePatternError = "Invalid file type. Please select a file with a CSV extension.";
vm.configUpdateContentError = "Invalid file structure.";
-
+
vm.wizardStep = 1;
vm.nextStep = function(){
vm.wizardStep++;
@@ -94,14 +94,14 @@
_.forEach(newVNFName.vfModules, function (mdl, key) {
mdl.scale = false; //defaults to not scale unless user changes it
- if(mdl.properties && mdl.properties.max_vf_module_instances) {
+ if(mdl.properties && mdl.properties.maxCountInstances) {
//how many vf modules of the same customizationId belong to that vnf instance
mdl.currentCount = _.filter(vm.vfModules, function(item){
return modulesAaiIds.indexOf(item.id) > -1 && item.properties["model-customization-id"] === mdl.customizationUuid;
}).length;
- mdl.scalable = mdl.properties.max_vf_module_instances.value - mdl.currentCount > 0;
+ mdl.scalable = mdl.properties.maxCountInstances.value - mdl.currentCount > 0;
}else{
mdl.scalable = false;
}
@@ -193,9 +193,10 @@
var result = {};
result.requestType = changeManagement.workflow;
var workflowType = changeManagement.workflow;
+ var configurationParameters = changeManagement.configurationParameters;
result.requestDetails = [];
_.forEach(changeManagement.vnfNames, function (vnf) {
-
+
try{
var requestInfoData ={};
var requestParametersData ={};
@@ -203,13 +204,13 @@
return !item.scale;
});
if (vnf.availableVersions && vnf.availableVersions.length!=0){
-
+
requestInfoData ={
source: vnf.availableVersions[0].requestInfo.source,
suppressRollback: vnf.availableVersions[0].requestInfo.suppressRollback,
requestorId: vnf.availableVersions[0].requestInfo.requestorId
}
-
+
if(workflowType=='Update'){
requestParametersData = {
usePreload: vnf.availableVersions[0].requestParameters.usePreload
@@ -268,17 +269,22 @@
var data;
if(workflowType=="VNF Scale Out") {
data = {
+ vnfName: vnf.name,
+ vnfInstanceId: vnf.id,
modelInfo: {
modelType: 'vfModule',
modelInvariantId: moduleToScale.invariantUuid,
modelName: moduleToScale.modelCustomizationName,
modelVersion: moduleToScale.version,
+ modelCustomizationName: moduleToScale.modelCustomizationName,
+ modelCustomizationId: moduleToScale.customizationUuid,
modelVersionId: moduleToScale.uuid
},
cloudConfiguration: vnf.cloudConfiguration,
requestInfo: requestInfoData,
relatedInstanceList: [],
- requestParameters:requestParametersData
+ requestParameters:requestParametersData,
+ configurationParameters: JSON.parse(configurationParameters)
};
requestInfoData.instanceName = vnf.name + "_" + (moduleToScale.currentCount + 1);
}else{
@@ -333,6 +339,7 @@
var relatedInstance = {
instanceId: vnf.id,
modelInfo: {
+ modelCustomizationId: vnf.availableVersions[0].modelInfo.modelCustomizationId,
modelCustomizationName: vnf.availableVersions[0].modelInfo.modelCustomizationName,
modelInvariantId: vnf.availableVersions[0].modelInfo.modelInvariantId,
modelName: vnf.availableVersions[0].modelInfo.modelName,
@@ -352,7 +359,6 @@
});
return JSON.stringify(result);
}
-
vm.openModal = function () {
if(vm.hasScheduler) { //scheduling supported
$scope.widgetParameter = ""; // needed by the scheduler?
@@ -370,22 +376,14 @@
widgetData: vm.changeManagement,
widgetParameter: $scope.widgetParameter
};
-
+
window.parent.postMessage(data, VIDCONFIGURATION.SCHEDULER_PORTAL_URL);
} else {
//no scheduling support
var dataToSo = extractChangeManagementCallbackDataStr(vm.changeManagement);
if(dataToSo) {
-
- if(vm.changeManagement.workflow==="VNF Scale Out") {
- dataToSo = JSON.parse(dataToSo);
- dataToSo = {requestDetails: dataToSo.requestDetails[0]};
- changeManagementService.postChangeManagementScaleOutNow(dataToSo, vm.changeManagement.vnfNames[0]["service-instance-node"][0].properties["service-instance-id"], vm.changeManagement.vnfNames[0].id);
- }else{
- //TODO: foreach
- var vnfName = vm.changeManagement.vnfNames[0].name;
- changeManagementService.postChangeManagementNow(dataToSo, vnfName);
- }
+ var vnfName = vm.changeManagement.vnfNames[0].name;
+ changeManagementService.postChangeManagementNow(dataToSo, vnfName);
}
}
};
@@ -649,7 +647,7 @@
vm.isConfigUpdate = function () {
return vm.changeManagement.workflow === COMPONENT.WORKFLOWS.vnfConfigUpdate;
}
-
+
vm.isScaleOut = function () {
return vm.changeManagement.workflow === COMPONENT.WORKFLOWS.vnfScaleOut;
}
diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.html b/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.html
index ec1d4cde6..21f9c5d3f 100644
--- a/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.html
+++ b/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.html
@@ -58,6 +58,10 @@
<option value="" disabled>Select workflow</option>
</select>
</div>
+ <div class="form-group" ng-if="vm.isScaleOut()">
+ <label class="control-label">Configuration Parameters</label>
+ <input type="text" name="configurationParameters" ng-model="vm.changeManagement.configurationParameters" id="configuration-parameters" required>
+ </div>
<div class="form-group" ng-if="vm.isConfigUpdate()">
<label class="control-label">Attach configuration file</label>
<div class="file-wrapper">
@@ -143,4 +147,4 @@
<button ng-if="vm.isScaleOut() && vm.wizardStep === 1" ng-click="vm.nextStep();" type="button" id="next" name="next" class="btn btn-primary" data-ng-disabled="newChangeManagement.$invalid">Next</button>
</div>
</div>
-</form>
+</form> \ No newline at end of file
diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/services/asdcService.js b/vid-app-common/src/main/webapp/app/vid/scripts/services/asdcService.js
index 753f9fd19..6bdc0ae9c 100755
--- a/vid-app-common/src/main/webapp/app/vid/scripts/services/asdcService.js
+++ b/vid-app-common/src/main/webapp/app/vid/scripts/services/asdcService.js
@@ -20,7 +20,7 @@
"use strict";
-var AsdcService = function ($http, $log, PropertyService, UtilityService, VIDCONFIGURATION, COMPONENT, featureFlags) {
+var AsdcService = function ($http, $log, PropertyService, UtilityService, VIDCONFIGURATION, COMPONENT, DataService, featureFlags) {
return {
getModel: function (modelId, successCallbackFunction) {
$log.debug("AsdcService:getModel: modelId: " + modelId);
@@ -37,6 +37,8 @@ var AsdcService = function ($http, $log, PropertyService, UtilityService, VIDCON
shouldExcludeMacroFromAsyncInstatiationFlow: function(serviceModel){
if (!featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_ASYNC_INSTANTIATION))
return true;
+ if (DataService.getE2EService())
+ return true;
if (!_.isEmpty(serviceModel.pnfs))
return true;
if (!_.isEmpty(serviceModel.collectionResource))
@@ -72,4 +74,4 @@ var AsdcService = function ($http, $log, PropertyService, UtilityService, VIDCON
}
appDS2.factory("AsdcService", ["$http", "$log", "PropertyService",
- "UtilityService", "VIDCONFIGURATION","COMPONENT", "featureFlags", AsdcService]);
+ "UtilityService", "VIDCONFIGURATION","COMPONENT", "DataService", "featureFlags", AsdcService]);