diff options
author | Marcus G K Williams <marcus.williams@intel.com> | 2018-11-28 12:37:54 -0800 |
---|---|---|
committer | Marcus Williams <marcus.williams@intel.com> | 2018-11-30 02:08:50 +0000 |
commit | 17078f031da59e4a3b7a4e18cf5b23daf9ddac56 (patch) | |
tree | 6080dc352f7b2203ca141cf4abaf1ac26cb666c5 /bpmn/MSOCommonBPMN/src/main | |
parent | f8e7af7517c6a825ec252ec38475a7e08bdeb41f (diff) |
Fix alacarte homing flows
This fix adds homingInstance
bean and stores homing info
in the database. It then
retreves that info when homing
ala carte and populates
homingSiteId and oofDirectives.
SO-1254
Issue-ID: SO-1258
Change-Id: I6f8d5d3aff9ebeb669064a02926c779886dc59dd
Signed-off-by: Marcus G K Williams <marcus.williams@intel.com>
Diffstat (limited to 'bpmn/MSOCommonBPMN/src/main')
3 files changed, 134 insertions, 29 deletions
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/OofHoming.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/OofHoming.groovy index c50ef3530e..df3399f1f0 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/OofHoming.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/OofHoming.groovy @@ -33,6 +33,7 @@ import org.onap.so.bpmn.core.json.JsonUtils import org.onap.so.db.catalog.beans.AuthenticationType import org.onap.so.db.catalog.beans.CloudIdentity import org.onap.so.db.catalog.beans.CloudSite +import org.onap.so.db.catalog.beans.HomingInstance import org.onap.so.db.catalog.beans.ServerType import org.onap.so.rest.APIResponse import org.onap.so.rest.RESTClient @@ -293,8 +294,7 @@ class OofHoming extends AbstractServiceTaskProcessor { + " *****", "true") // Set cloudsite in catalog DB here - // TODO Get cloudsite and compare, set if not present - oofUtils.createCloudSiteCatalogDb(cloudSite, execution) + oofUtils.createCloudSite(cloudSite, execution) if (oofDirectives != null && oofDirectives != "") { resource.getHomingSolution().setOofDirectives(oofDirectives) @@ -303,6 +303,19 @@ class OofHoming extends AbstractServiceTaskProcessor { " *****", "true") } + // Set Homing Instance + String serviceInstanceId = decomposition.getServiceInstance().getInstanceId() + HomingInstance homingInstance = new HomingInstance() + homingInstance.setServiceInstanceId(serviceInstanceId) + homingInstance.setCloudOwner(cloudOwner) + homingInstance.setCloudRegionId(cloudRegionId) + if (oofDirectives != null && oofDirectives != "") { + homingInstance.setOofDirectives(oofDirectives)} + else { + homingInstance.setOofDirectives("{}") + } + oofUtils.createHomingInstance(homingInstance, execution) + if (inventoryType.equalsIgnoreCase("service")) { resource.getHomingSolution().setRehome(assignmentMap.get("isRehome").toBoolean()) VnfResource vnf = new VnfResource() diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/OofUtils.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/OofUtils.groovy index 19d19b8cea..f72fc47aa5 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/OofUtils.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/OofUtils.groovy @@ -33,24 +33,16 @@ import org.onap.so.bpmn.core.domain.ServiceInstance import org.onap.so.bpmn.core.domain.Subscriber import org.onap.so.bpmn.core.domain.VnfResource import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.so.db.catalog.beans.CloudIdentity import org.onap.so.db.catalog.beans.CloudSite -import org.onap.so.db.catalog.client.CatalogDbClient -import org.onap.so.rest.APIResponse -import org.onap.so.rest.RESTClient -import org.onap.so.rest.RESTConfig -import org.springframework.http.HttpEntity -import org.springframework.http.HttpHeaders -import org.springframework.web.util.UriComponentsBuilder - -import javax.ws.rs.core.MediaType +import org.onap.so.db.catalog.beans.HomingInstance import javax.ws.rs.core.UriBuilder - +import org.onap.so.bpmn.common.util.OofInfraUtils import static org.onap.so.bpmn.common.scripts.GenericUtils.* class OofUtils { ExceptionUtil exceptionUtil = new ExceptionUtil() JsonUtils jsonUtil = new JsonUtils() + OofInfraUtils oofInfraUtils = new OofInfraUtils() private AbstractServiceTaskProcessor utils @@ -491,6 +483,7 @@ class OofUtils { if (candidatesJson != "") {candidatesJson = candidatesJson.substring(0, candidatesJson.length() - 1)} return candidatesJson } + /** * This method creates a cloudsite in catalog database. * @@ -498,23 +491,19 @@ class OofUtils { * * @return void */ - Void createCloudSiteCatalogDb(CloudSite cloudSite, DelegateExecution execution) { - def isDebugEnabled = execution.getVariable("isDebugLogEnabled") - String endpoint = UrnPropertiesReader.getVariable("mso.catalog.db.spring.endpoint", execution) - String auth = UrnPropertiesReader.getVariable("mso.db.auth", execution) - CloudSite getCloudsite = null + Void createCloudSite(CloudSite cloudSite, DelegateExecution execution) { + oofInfraUtils.createCloudSite(cloudSite, execution) + } - CatalogDbClient catalogDbClient = new CatalogDbClient(endpoint, auth) - try { - getCloudsite = catalogDbClient.getCloudSite(cloudSite.getId().toString()) - } catch (Exception e) { - e = null - utils.log("DEBUG", "Could not find cloudsite : " + cloudSite.getId(), isDebugEnabled) - utils.log("DEBUG", "Creating cloudSite: " + cloudSite.toString(), isDebugEnabled) - } - if (getCloudsite?.getId() != cloudSite.getId()) { - catalogDbClient.postCloudSite(cloudSite) - } + /** + * This method creates a HomingInstance in catalog database. + * + * @param HomingInstance homingInstance + * + * @return void + */ + Void createHomingInstance(HomingInstance homingInstance, DelegateExecution execution) { + oofInfraUtils.createHomingInstance(homingInstance, execution) } String getMsbHost(DelegateExecution execution) { diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/util/OofInfraUtils.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/util/OofInfraUtils.java new file mode 100644 index 0000000000..b62d8be281 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/util/OofInfraUtils.java @@ -0,0 +1,103 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018. Intel Corp. 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.so.bpmn.common.util; + +import org.camunda.bpm.engine.delegate.DelegateExecution; +import org.onap.so.bpmn.core.UrnPropertiesReader; +import org.onap.so.db.catalog.beans.CloudSite; +import org.onap.so.db.catalog.beans.HomingInstance; +import org.onap.so.db.catalog.client.CatalogDbClient; +import org.onap.so.logger.MsoLogger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Arrays; +import java.util.Optional; + +public class OofInfraUtils { + + private static final MsoLogger LOGGER = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, OofInfraUtils.class); + + /** + * This method creates a cloudsite in catalog database. + * + * @param cloudSite + * + * @return void + */ + public void createCloudSite(CloudSite cloudSite, DelegateExecution execution) { + String endpoint = UrnPropertiesReader.getVariable("mso.catalog.db.spring.endpoint", execution); + String auth = UrnPropertiesReader.getVariable("mso.db.auth", execution); + Optional <CloudSite> optCloudsite = Optional.empty(); + + CatalogDbClient client = new CatalogDbClient(endpoint, auth); + try { + optCloudsite = Optional.ofNullable(client.getCloudSite(cloudSite.getId(), endpoint + "/cloudSite/")); + } catch (Exception e) { + LOGGER.debug("Could not find cloudsite : " + cloudSite.getId()); + LOGGER.debug("Creating cloudSite: " + cloudSite.toString()); + } + if (optCloudsite.isPresent() && (cloudSite.getId()) != optCloudsite.get().getId()) { + client.postCloudSite(cloudSite); + } + } + + /** + * This method creates a HomingInstance in catalog database. + * + * @param homingInstance + * + * @return void + */ + public void createHomingInstance(HomingInstance homingInstance, DelegateExecution execution) { + String endpoint = UrnPropertiesReader.getVariable("mso.catalog.db.spring.endpoint", execution); + String auth = UrnPropertiesReader.getVariable("mso.db.auth", execution); + + CatalogDbClient client = new CatalogDbClient(endpoint, auth); + try { + client.postHomingInstance(homingInstance); + } catch (Exception exception) { + LOGGER.debug("Could not create HomingInstance : " + homingInstance.getServiceInstanceId()); + LOGGER.debug("HomingInstance Creation Error: " + exception); + } + + } + + /** + * This method gets a HomingInstance in catalog database. + * + * @param serviceInstanceId + * + * @return HomingInstance + */ + public HomingInstance getHomingInstance(String serviceInstanceId, DelegateExecution execution) { + String endpoint = UrnPropertiesReader.getVariable("mso.catalog.db.spring.endpoint", execution); + String auth = UrnPropertiesReader.getVariable("mso.db.auth", execution); + + CatalogDbClient client = new CatalogDbClient(endpoint, auth); + try { + return client.getHomingInstance(serviceInstanceId, endpoint + "/homingInstance/"); + } catch (Exception exception) { + LOGGER.debug("Could not get HomingInstance for serviceInstanceId : " + serviceInstanceId); + LOGGER.debug("Get HomingInstance Error: " + exception); + } + return null; + } +} |