summaryrefslogtreecommitdiffstats
path: root/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/tenantisolation/process/CreateVnfOperationalEnvironment.java
diff options
context:
space:
mode:
Diffstat (limited to 'mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/tenantisolation/process/CreateVnfOperationalEnvironment.java')
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/tenantisolation/process/CreateVnfOperationalEnvironment.java348
1 files changed, 176 insertions, 172 deletions
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/tenantisolation/process/CreateVnfOperationalEnvironment.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/tenantisolation/process/CreateVnfOperationalEnvironment.java
index cc3e3aeb16..fe81a07212 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/tenantisolation/process/CreateVnfOperationalEnvironment.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/tenantisolation/process/CreateVnfOperationalEnvironment.java
@@ -24,9 +24,7 @@ package org.onap.so.apihandlerinfra.tenantisolation.process;
import java.util.ArrayList;
import java.util.List;
-
import javax.ws.rs.NotFoundException;
-
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
import org.onap.aai.domain.yang.OperationalEnvironment;
@@ -54,178 +52,184 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-
import com.fasterxml.jackson.databind.ObjectMapper;
@Component
public class CreateVnfOperationalEnvironment {
-
- private static Logger logger = LoggerFactory.getLogger(CreateVnfOperationalEnvironment.class);
- protected CloudOrchestrationRequest request;
-
- @Autowired
- private AAIClientObjectBuilder aaiClientObjectBuilder;
- @Autowired
- private AAIClientHelper aaiHelper;
- @Autowired
- private RequestsDBHelper requestDb;
- private GRMClient grmClient;
-
- public void execute(String requestId, CloudOrchestrationRequest request) throws ApiException{
- try {
- setRequest(request);
- ObjectMapper objectMapper = new ObjectMapper();
- AAIResultWrapper aaiResultWrapper = aaiHelper.getAaiOperationalEnvironment(getEcompManagingEnvironmentId());
- if (aaiResultWrapper.isEmpty()) {
- throw new NotFoundException(getEcompManagingEnvironmentId() + " not found in A&AI");
- }
- OperationalEnvironment aaiEnv = aaiResultWrapper.asBean(OperationalEnvironment.class).get();
-
- //Find ECOMP environments in GRM
- logger.debug(" Start of GRM findRunningServicesAsString");
- String searchKey = getSearchKey(aaiEnv);
- String tenantContext = getTenantContext().toUpperCase();
- String jsonResponse = getGrmClient().findRunningServicesAsString(searchKey, 1, tenantContext);
- ServiceEndPointList sel = objectMapper.readValue(jsonResponse, ServiceEndPointList.class);
- if(sel.getServiceEndPointList().size() == 0) {
- throw new TenantIsolationException("GRM did not find any matches for " + searchKey + " in " + tenantContext);
- }
-
- //Replicate end-point for VNF Operating environment in GRM
- List<ServiceEndPointRequest> serviceEndpointRequestList = buildEndPointRequestList(sel);
- int ctr = 0;
- int total = serviceEndpointRequestList.size();
- for (ServiceEndPointRequest requestList : serviceEndpointRequestList) {
- logger.debug("Creating endpoint " + ++ctr + " of " + total + ": " + requestList.getServiceEndPoint().getName());
- getGrmClient().addServiceEndPoint(requestList);
- }
-
- //Create VNF operating in A&AI
- aaiHelper.createOperationalEnvironment(aaiClientObjectBuilder.buildAAIOperationalEnvironment("INACTIVE", request));
- aaiHelper.createRelationship(request.getOperationalEnvironmentId(), getEcompManagingEnvironmentId());
-
- //Update request database
- requestDb.updateInfraSuccessCompletion("SUCCESSFULLY created VNF operational environment", requestId, request.getOperationalEnvironmentId());
-
- }catch(Exception e) {
- ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_GENERAL_EXCEPTION, ErrorCode.DataError).build();
-
-
- ValidateException validateException = new ValidateException.Builder(e.getMessage(),
- HttpStatus.SC_INTERNAL_SERVER_ERROR, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR).cause(e).errorInfo(errorLoggerInfo).build();
-
- throw validateException;
- }
- }
-
-
- protected String getEcompManagingEnvironmentId() throws TenantIsolationException {
- RelatedInstanceList[] relatedInstances = request.getRequestDetails().getRelatedInstanceList();
- if (relatedInstances.length > 0 && relatedInstances[0].getRelatedInstance() != null) {
- return relatedInstances[0].getRelatedInstance().getInstanceId();
- } else {
- return null;
- }
- }
-
-
- protected String getTenantContext() throws TenantIsolationException {
- if(!StringUtils.isEmpty(request.getRequestDetails().getRequestParameters().getTenantContext())) {
- return request.getRequestDetails().getRequestParameters().getTenantContext();
- }
- else {
- throw new TenantIsolationException("Tenant Context is missing from request!");
- }
- }
-
-
- private List<ServiceEndPointRequest> buildEndPointRequestList(ServiceEndPointList serviceEndPointList) throws TenantIsolationException {
- List<ServiceEndPoint> endpointList = serviceEndPointList.getServiceEndPointList();
- logger.debug("Number of service endpoints from GRM: {}", endpointList.size());
- List<ServiceEndPointRequest> serviceEndPointRequestList = new ArrayList<ServiceEndPointRequest>();
- for(ServiceEndPoint serviceEndpoint : endpointList) {
- serviceEndPointRequestList.add(buildServiceEndpoint(serviceEndpoint));
- }
- return serviceEndPointRequestList;
- }
-
-
- private ServiceEndPointRequest buildServiceEndpoint(ServiceEndPoint serviceEndpoint) throws TenantIsolationException {
-
- //@TODO: handle nulls? Put in a ServiceEndpointWrapper class which will check for nulls and flatten access to fields
- Version ver = new Version();
- ver.setMajor(serviceEndpoint.getVersion().getMajor());
- ver.setMinor(serviceEndpoint.getVersion().getMinor());
- ver.setPatch(serviceEndpoint.getVersion().getPatch());
-
- ServiceEndPoint endpoint = new ServiceEndPoint();
- endpoint.setName(buildServiceNameForVnf(serviceEndpoint.getName()));
-
- endpoint.setVersion(ver);
- endpoint.setHostAddress(serviceEndpoint.getHostAddress());
- endpoint.setListenPort(serviceEndpoint.getListenPort());
- endpoint.setLatitude(serviceEndpoint.getLatitude());
- endpoint.setLongitude(serviceEndpoint.getLongitude());
- endpoint.setContextPath(serviceEndpoint.getContextPath());
- endpoint.setRouteOffer(serviceEndpoint.getRouteOffer());
-
- OperationalInfo operInfo = new OperationalInfo();
- operInfo.setCreatedBy(serviceEndpoint.getOperationalInfo().getCreatedBy());
- operInfo.setUpdatedBy(serviceEndpoint.getOperationalInfo().getUpdatedBy());
-
- endpoint.setOperationalInfo(operInfo);
- endpoint.setProperties(serviceEndpoint.getProperties());
-
- String env = getEnvironmentName(serviceEndpoint.getProperties());
-
- ServiceEndPointRequest serviceEndPontRequest = new ServiceEndPointRequest();
- serviceEndPontRequest.setEnv(env);
- serviceEndPontRequest.setServiceEndPoint(endpoint);
-
- return serviceEndPontRequest;
- }
-
-
- protected String getEnvironmentName(List<Property> props) {
- String env = "";
- for(Property prop : props) {
- if(prop.getName().equalsIgnoreCase("Environment")) {
- env = prop.getValue();
- }
- }
- return env;
- }
-
-
- protected String buildServiceNameForVnf(String fqName) throws TenantIsolationException {
- // Service name format is: {tenantContext}.{workloadContext}.{serviceName} e.g. TEST.ECOMP_PSL.Inventory
- // We need to extract the serviceName, in the above example: "Inventory"
- String[] tokens = fqName.split("[.]");
- String serviceName;
- if(tokens.length > 0) {
- serviceName = tokens[tokens.length-1];
- }
- else {
- throw new TenantIsolationException("Fully qualified service name is null.");
- }
- String tenantContext = request.getRequestDetails().getRequestParameters().getTenantContext();
- String workloadContext = request.getRequestDetails().getRequestParameters().getWorkloadContext();
- return tenantContext + "." + workloadContext + "." + serviceName;
- }
-
- protected String getSearchKey(OperationalEnvironment aaiEnv) {
- return aaiEnv.getTenantContext() + "." + aaiEnv.getWorkloadContext() + ".*";
- }
-
- public void setRequest(CloudOrchestrationRequest request) {
- this.request = request;
- }
-
- private GRMClient getGrmClient() {
- if(grmClient == null) {
- this.grmClient = new GRMClient();
- }
-
- return grmClient;
- }
+
+ private static Logger logger = LoggerFactory.getLogger(CreateVnfOperationalEnvironment.class);
+ protected CloudOrchestrationRequest request;
+
+ @Autowired
+ private AAIClientObjectBuilder aaiClientObjectBuilder;
+ @Autowired
+ private AAIClientHelper aaiHelper;
+ @Autowired
+ private RequestsDBHelper requestDb;
+ private GRMClient grmClient;
+
+ public void execute(String requestId, CloudOrchestrationRequest request) throws ApiException {
+ try {
+ setRequest(request);
+ ObjectMapper objectMapper = new ObjectMapper();
+ AAIResultWrapper aaiResultWrapper = aaiHelper.getAaiOperationalEnvironment(getEcompManagingEnvironmentId());
+ if (aaiResultWrapper.isEmpty()) {
+ throw new NotFoundException(getEcompManagingEnvironmentId() + " not found in A&AI");
+ }
+ OperationalEnvironment aaiEnv = aaiResultWrapper.asBean(OperationalEnvironment.class).get();
+
+ // Find ECOMP environments in GRM
+ logger.debug(" Start of GRM findRunningServicesAsString");
+ String searchKey = getSearchKey(aaiEnv);
+ String tenantContext = getTenantContext().toUpperCase();
+ String jsonResponse = getGrmClient().findRunningServicesAsString(searchKey, 1, tenantContext);
+ ServiceEndPointList sel = objectMapper.readValue(jsonResponse, ServiceEndPointList.class);
+ if (sel.getServiceEndPointList().size() == 0) {
+ throw new TenantIsolationException(
+ "GRM did not find any matches for " + searchKey + " in " + tenantContext);
+ }
+
+ // Replicate end-point for VNF Operating environment in GRM
+ List<ServiceEndPointRequest> serviceEndpointRequestList = buildEndPointRequestList(sel);
+ int ctr = 0;
+ int total = serviceEndpointRequestList.size();
+ for (ServiceEndPointRequest requestList : serviceEndpointRequestList) {
+ logger.debug("Creating endpoint " + ++ctr + " of " + total + ": "
+ + requestList.getServiceEndPoint().getName());
+ getGrmClient().addServiceEndPoint(requestList);
+ }
+
+ // Create VNF operating in A&AI
+ aaiHelper.createOperationalEnvironment(
+ aaiClientObjectBuilder.buildAAIOperationalEnvironment("INACTIVE", request));
+ aaiHelper.createRelationship(request.getOperationalEnvironmentId(), getEcompManagingEnvironmentId());
+
+ // Update request database
+ requestDb.updateInfraSuccessCompletion("SUCCESSFULLY created VNF operational environment", requestId,
+ request.getOperationalEnvironmentId());
+
+ } catch (Exception e) {
+ ErrorLoggerInfo errorLoggerInfo =
+ new ErrorLoggerInfo.Builder(MessageEnum.APIH_GENERAL_EXCEPTION, ErrorCode.DataError).build();
+
+
+ ValidateException validateException =
+ new ValidateException.Builder(e.getMessage(), HttpStatus.SC_INTERNAL_SERVER_ERROR,
+ ErrorNumbers.SVC_DETAILED_SERVICE_ERROR).cause(e).errorInfo(errorLoggerInfo).build();
+
+ throw validateException;
+ }
+ }
+
+
+ protected String getEcompManagingEnvironmentId() throws TenantIsolationException {
+ RelatedInstanceList[] relatedInstances = request.getRequestDetails().getRelatedInstanceList();
+ if (relatedInstances.length > 0 && relatedInstances[0].getRelatedInstance() != null) {
+ return relatedInstances[0].getRelatedInstance().getInstanceId();
+ } else {
+ return null;
+ }
+ }
+
+
+ protected String getTenantContext() throws TenantIsolationException {
+ if (!StringUtils.isEmpty(request.getRequestDetails().getRequestParameters().getTenantContext())) {
+ return request.getRequestDetails().getRequestParameters().getTenantContext();
+ } else {
+ throw new TenantIsolationException("Tenant Context is missing from request!");
+ }
+ }
+
+
+ private List<ServiceEndPointRequest> buildEndPointRequestList(ServiceEndPointList serviceEndPointList)
+ throws TenantIsolationException {
+ List<ServiceEndPoint> endpointList = serviceEndPointList.getServiceEndPointList();
+ logger.debug("Number of service endpoints from GRM: {}", endpointList.size());
+ List<ServiceEndPointRequest> serviceEndPointRequestList = new ArrayList<ServiceEndPointRequest>();
+ for (ServiceEndPoint serviceEndpoint : endpointList) {
+ serviceEndPointRequestList.add(buildServiceEndpoint(serviceEndpoint));
+ }
+ return serviceEndPointRequestList;
+ }
+
+
+ private ServiceEndPointRequest buildServiceEndpoint(ServiceEndPoint serviceEndpoint)
+ throws TenantIsolationException {
+
+ // @TODO: handle nulls? Put in a ServiceEndpointWrapper class which will check for nulls and flatten access to
+ // fields
+ Version ver = new Version();
+ ver.setMajor(serviceEndpoint.getVersion().getMajor());
+ ver.setMinor(serviceEndpoint.getVersion().getMinor());
+ ver.setPatch(serviceEndpoint.getVersion().getPatch());
+
+ ServiceEndPoint endpoint = new ServiceEndPoint();
+ endpoint.setName(buildServiceNameForVnf(serviceEndpoint.getName()));
+
+ endpoint.setVersion(ver);
+ endpoint.setHostAddress(serviceEndpoint.getHostAddress());
+ endpoint.setListenPort(serviceEndpoint.getListenPort());
+ endpoint.setLatitude(serviceEndpoint.getLatitude());
+ endpoint.setLongitude(serviceEndpoint.getLongitude());
+ endpoint.setContextPath(serviceEndpoint.getContextPath());
+ endpoint.setRouteOffer(serviceEndpoint.getRouteOffer());
+
+ OperationalInfo operInfo = new OperationalInfo();
+ operInfo.setCreatedBy(serviceEndpoint.getOperationalInfo().getCreatedBy());
+ operInfo.setUpdatedBy(serviceEndpoint.getOperationalInfo().getUpdatedBy());
+
+ endpoint.setOperationalInfo(operInfo);
+ endpoint.setProperties(serviceEndpoint.getProperties());
+
+ String env = getEnvironmentName(serviceEndpoint.getProperties());
+
+ ServiceEndPointRequest serviceEndPontRequest = new ServiceEndPointRequest();
+ serviceEndPontRequest.setEnv(env);
+ serviceEndPontRequest.setServiceEndPoint(endpoint);
+
+ return serviceEndPontRequest;
+ }
+
+
+ protected String getEnvironmentName(List<Property> props) {
+ String env = "";
+ for (Property prop : props) {
+ if (prop.getName().equalsIgnoreCase("Environment")) {
+ env = prop.getValue();
+ }
+ }
+ return env;
+ }
+
+
+ protected String buildServiceNameForVnf(String fqName) throws TenantIsolationException {
+ // Service name format is: {tenantContext}.{workloadContext}.{serviceName} e.g. TEST.ECOMP_PSL.Inventory
+ // We need to extract the serviceName, in the above example: "Inventory"
+ String[] tokens = fqName.split("[.]");
+ String serviceName;
+ if (tokens.length > 0) {
+ serviceName = tokens[tokens.length - 1];
+ } else {
+ throw new TenantIsolationException("Fully qualified service name is null.");
+ }
+ String tenantContext = request.getRequestDetails().getRequestParameters().getTenantContext();
+ String workloadContext = request.getRequestDetails().getRequestParameters().getWorkloadContext();
+ return tenantContext + "." + workloadContext + "." + serviceName;
+ }
+
+ protected String getSearchKey(OperationalEnvironment aaiEnv) {
+ return aaiEnv.getTenantContext() + "." + aaiEnv.getWorkloadContext() + ".*";
+ }
+
+ public void setRequest(CloudOrchestrationRequest request) {
+ this.request = request;
+ }
+
+ private GRMClient getGrmClient() {
+ if (grmClient == null) {
+ this.grmClient = new GRMClient();
+ }
+
+ return grmClient;
+ }
}