From 09db2381ed40693ae06009e9430ede3fe17fbc40 Mon Sep 17 00:00:00 2001 From: Krysiak Adam Date: Tue, 23 Apr 2019 16:29:22 +0200 Subject: [PATCH] Clamp uses new Loop implementation by default Change-Id: I274a946af91f6b06d3aa53b8127c94010274e353 Issue-ID: CLAMP-354 Signed-off-by: Krysiak Adam --- .../spring/CldsSdcControllerConfiguration.java | 16 ++++++++++------ .../config/spring/SdcControllerConfiguration.java | 22 ++++++++++------------ .../clds/sdc/controller/installer/CsarHandler.java | 2 +- .../sdc/controller/installer/CsarInstaller.java | 1 + .../controller/installer/CsarInstallerImpl.java | 2 ++ .../org/onap/clamp/clds/service/CldsService.java | 7 ++----- ...arInstallerImpl.java => LoopCsarInstaller.java} | 15 ++++++++++----- src/main/resources/application-noaaf.properties | 2 +- src/main/resources/application.properties | 4 +++- .../controller/installer/CsarInstallerItCase.java | 6 ++++++ ...lerImplTest.java => LoopCsarInstallerTest.java} | 2 +- .../org/onap/clamp/loop/CsarInstallerItCase.java | 4 ++++ 12 files changed, 51 insertions(+), 32 deletions(-) rename src/main/java/org/onap/clamp/loop/{CsarInstallerImpl.java => LoopCsarInstaller.java} (95%) rename src/test/java/org/onap/clamp/clds/sdc/controller/installer/{CsarInstallerImplTest.java => LoopCsarInstallerTest.java} (99%) diff --git a/src/main/java/org/onap/clamp/clds/config/spring/CldsSdcControllerConfiguration.java b/src/main/java/org/onap/clamp/clds/config/spring/CldsSdcControllerConfiguration.java index 92b0272a..bee0d4c0 100644 --- a/src/main/java/org/onap/clamp/clds/config/spring/CldsSdcControllerConfiguration.java +++ b/src/main/java/org/onap/clamp/clds/config/spring/CldsSdcControllerConfiguration.java @@ -39,23 +39,27 @@ import org.onap.clamp.clds.exception.sdc.controller.SdcControllerException; import org.onap.clamp.clds.sdc.controller.SdcSingleController; import org.onap.clamp.clds.sdc.controller.SdcSingleControllerStatus; import org.onap.clamp.clds.sdc.controller.installer.CsarInstaller; -import org.onap.clamp.clds.sdc.controller.installer.CsarInstallerImpl; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.scheduling.annotation.Scheduled; @Configuration +@ComponentScan(basePackages = "org.onap.clamp.clds") @Profile("clamp-sdc-controller") public class CldsSdcControllerConfiguration { private static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsSdcControllerConfiguration.class); private List sdcControllersList = new ArrayList<>(); - @Autowired - private ClampProperties clampProp; - @Autowired - protected CsarInstaller csarInstaller; + private final ClampProperties clampProp; + private final CsarInstaller csarInstaller; + + public CldsSdcControllerConfiguration(ClampProperties clampProp, @Qualifier("oldModelInstaller") CsarInstaller csarInstaller) { + this.clampProp = clampProp; + this.csarInstaller = csarInstaller; + } /** * Loads SDC controllers configuration. diff --git a/src/main/java/org/onap/clamp/clds/config/spring/SdcControllerConfiguration.java b/src/main/java/org/onap/clamp/clds/config/spring/SdcControllerConfiguration.java index 55b90cc5..8b8ee932 100644 --- a/src/main/java/org/onap/clamp/clds/config/spring/SdcControllerConfiguration.java +++ b/src/main/java/org/onap/clamp/clds/config/spring/SdcControllerConfiguration.java @@ -25,36 +25,39 @@ package org.onap.clamp.clds.config.spring; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; - import java.util.ArrayList; import java.util.List; - import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; - import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.config.sdc.SdcControllersConfiguration; import org.onap.clamp.clds.exception.sdc.controller.SdcControllerException; import org.onap.clamp.clds.sdc.controller.SdcSingleController; import org.onap.clamp.clds.sdc.controller.SdcSingleControllerStatus; import org.onap.clamp.clds.sdc.controller.installer.CsarInstaller; -import org.onap.clamp.loop.CsarInstallerImpl; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.scheduling.annotation.Scheduled; @Configuration +@ComponentScan(basePackages = {"org.onap.clamp.loop", "org.onap.clamp.clds.config"}) @Profile("clamp-sdc-controller-new") public class SdcControllerConfiguration { private static final EELFLogger logger = EELFManager.getInstance().getLogger(SdcControllerConfiguration.class); private List sdcControllersList = new ArrayList<>(); + private final ClampProperties clampProp; + private final CsarInstaller csarInstaller; + @Autowired - private ClampProperties clampProp; - @Autowired - protected CsarInstaller csarInstaller; + public SdcControllerConfiguration(ClampProperties clampProp, @Qualifier("loopInstaller") CsarInstaller csarInstaller) { + this.clampProp = clampProp; + this.csarInstaller = csarInstaller; + } /** * Loads SDC controller configuration. @@ -101,11 +104,6 @@ public class SdcControllerConfiguration { }); } - @Bean(name = "csarInstaller") - public CsarInstaller getCsarInstaller() { - return new CsarInstallerImpl(); - } - @Bean(name = "sdcControllersConfiguration") public SdcControllersConfiguration getSdcControllersConfiguration() { return new SdcControllersConfiguration(); diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java index 5a21a1f8..7ef217b4 100644 --- a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java +++ b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java @@ -132,7 +132,7 @@ public class CsarHandler { Enumeration entries = zipFile.entries(); while (entries.hasMoreElements()) { ZipEntry entry = entries.nextElement(); - if (entry.getName().contains(BLUEPRINT_TYPE)) { + if (!entry.isDirectory() && entry.getName().contains(BLUEPRINT_TYPE)) { BlueprintArtifact blueprintArtifact = new BlueprintArtifact(); blueprintArtifact.setBlueprintArtifactName( entry.getName().substring(entry.getName().lastIndexOf('/') + 1, entry.getName().length())); diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstaller.java b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstaller.java index 12a761db..a1f8897f 100644 --- a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstaller.java +++ b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstaller.java @@ -27,6 +27,7 @@ import org.onap.clamp.clds.exception.policy.PolicyModelException; import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException; public interface CsarInstaller { + String TEMPLATE_NAME_PREFIX = "DCAE-Designer-Template-"; boolean isCsarAlreadyDeployed(CsarHandler csar) throws SdcArtifactInstallerException; diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java index 6dc41834..6c41e9c6 100644 --- a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java +++ b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java @@ -56,6 +56,7 @@ import org.onap.clamp.clds.transform.XslTransformer; import org.onap.clamp.clds.util.JsonUtils; import org.onap.clamp.clds.util.drawing.SvgFacade; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; @@ -68,6 +69,7 @@ import org.yaml.snakeyaml.Yaml; * received from SDC in DB. */ @Component +@Qualifier("oldModelInstaller") public class CsarInstallerImpl implements CsarInstaller { private static final EELFLogger logger = EELFManager.getInstance().getLogger(CsarInstallerImpl.class); diff --git a/src/main/java/org/onap/clamp/clds/service/CldsService.java b/src/main/java/org/onap/clamp/clds/service/CldsService.java index bf7c502a..e81cc15f 100644 --- a/src/main/java/org/onap/clamp/clds/service/CldsService.java +++ b/src/main/java/org/onap/clamp/clds/service/CldsService.java @@ -26,7 +26,6 @@ package org.onap.clamp.clds.service; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; - import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; @@ -35,11 +34,9 @@ import java.lang.reflect.Type; import java.util.Date; import java.util.List; import java.util.UUID; - import javax.servlet.http.HttpServletRequest; import javax.ws.rs.BadRequestException; import javax.xml.transform.TransformerException; - import org.apache.camel.Produce; import org.json.simple.parser.ParseException; import org.onap.clamp.clds.camel.CamelProxy; @@ -59,7 +56,7 @@ import org.onap.clamp.clds.model.DcaeEvent; import org.onap.clamp.clds.model.ValueItem; import org.onap.clamp.clds.model.properties.ModelProperties; import org.onap.clamp.clds.model.sdc.SdcServiceInfo; -import org.onap.clamp.clds.sdc.controller.installer.CsarInstallerImpl; +import org.onap.clamp.clds.sdc.controller.installer.CsarInstaller; import org.onap.clamp.clds.transform.XslTransformer; import org.onap.clamp.clds.util.JsonUtils; import org.onap.clamp.clds.util.LoggingUtils; @@ -295,7 +292,7 @@ public class CldsService extends SecureServiceBase { try { // Method to call dcae inventory and invoke insert event method if (cldsModel.canDcaeInventoryCall() - && !cldsModel.getTemplateName().startsWith(CsarInstallerImpl.TEMPLATE_NAME_PREFIX)) { + && !cldsModel.getTemplateName().startsWith(CsarInstaller.TEMPLATE_NAME_PREFIX)) { dcaeInventoryServices.setEventInventory(cldsModel, getUserId()); } // This is a blocking call diff --git a/src/main/java/org/onap/clamp/loop/CsarInstallerImpl.java b/src/main/java/org/onap/clamp/loop/LoopCsarInstaller.java similarity index 95% rename from src/main/java/org/onap/clamp/loop/CsarInstallerImpl.java rename to src/main/java/org/onap/clamp/loop/LoopCsarInstaller.java index f407aa94..0124aa70 100644 --- a/src/main/java/org/onap/clamp/loop/CsarInstallerImpl.java +++ b/src/main/java/org/onap/clamp/loop/LoopCsarInstaller.java @@ -51,9 +51,12 @@ import org.onap.clamp.clds.util.drawing.SvgFacade; import org.onap.clamp.policy.Policy; import org.onap.clamp.policy.microservice.MicroServicePolicy; import org.onap.clamp.policy.operational.OperationalPolicy; +import org.onap.sdc.tosca.parser.api.ISdcCsarHelper; import org.onap.sdc.tosca.parser.enums.SdcTypes; import org.onap.sdc.toscaparser.api.NodeTemplate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.yaml.snakeyaml.Yaml; @@ -63,10 +66,11 @@ import org.yaml.snakeyaml.Yaml; * There is no state kept by the bean. It's used to deploy the csar/notification * received from SDC in DB. */ -public class CsarInstallerImpl implements CsarInstaller { +@Component +@Qualifier("loopInstaller") +public class LoopCsarInstaller implements CsarInstaller { - private static final EELFLogger logger = EELFManager.getInstance().getLogger(CsarInstallerImpl.class); - public static final String TEMPLATE_NAME_PREFIX = "DCAE-Designer-Template-"; + private static final EELFLogger logger = EELFManager.getInstance().getLogger(LoopCsarInstaller.class); public static final String CONTROL_NAME_PREFIX = "ClosedLoop-"; public static final String GET_INPUT_BLUEPRINT_PARAM = "get_input"; // This will be used later as the policy scope @@ -182,13 +186,14 @@ public class CsarInstallerImpl implements CsarInstaller { private JsonObject createModelPropertiesJson(CsarHandler csar) { JsonObject modelProperties = new JsonObject(); Gson gson = new Gson(); + ISdcCsarHelper csarHelper = csar.getSdcCsarHelper(); modelProperties.add("serviceDetails", - gson.fromJson(gson.toJson(csar.getSdcCsarHelper().getServiceMetadataAllProperties()), JsonObject.class)); + gson.fromJson(gson.toJson(csarHelper.getServiceMetadataAllProperties()), JsonObject.class)); JsonObject resourcesProp = new JsonObject(); for (SdcTypes type : SdcTypes.values()) { JsonObject resourcesPropByType = new JsonObject(); - for (NodeTemplate nodeTemplate : csar.getSdcCsarHelper().getServiceNodeTemplateBySdcType(type)) { + for (NodeTemplate nodeTemplate : csarHelper.getServiceNodeTemplateBySdcType(type)) { resourcesPropByType.add(nodeTemplate.getName(), JsonUtils.GSON_JPA_MODEL .fromJson(new Gson().toJson(nodeTemplate.getMetaData().getAllProperties()), JsonObject.class)); } diff --git a/src/main/resources/application-noaaf.properties b/src/main/resources/application-noaaf.properties index 56ad7e84..89bd8a55 100644 --- a/src/main/resources/application-noaaf.properties +++ b/src/main/resources/application-noaaf.properties @@ -55,7 +55,7 @@ server.port=8080 server.servlet.context-path=/ #Modified engine-rest applicationpath -spring.profiles.active=clamp-default,clamp-default-user,clamp-sdc-controller +spring.profiles.active=clamp-default,clamp-default-user,clamp-sdc-controller-new spring.http.converters.preferred-json-mapper=gson #The max number of active threads in this pool diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 64012023..38350567 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -5,6 +5,8 @@ # Copyright (C) 2017-2019 AT&T Intellectual Property. All rights # reserved. # ================================================================================ +# Modifications copyright (c) 2019 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 @@ -72,7 +74,7 @@ server.http-to-https-redirection.port=8080 server.servlet.context-path=/ #Modified engine-rest applicationpath -spring.profiles.active=clamp-default,clamp-aaf-authentication,clamp-sdc-controller +spring.profiles.active=clamp-default,clamp-aaf-authentication,clamp-sdc-controller-new spring.http.converters.preferred-json-mapper=gson #The max number of active threads in this pool diff --git a/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java b/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java index d3a823fb..36d4eb82 100644 --- a/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java @@ -5,6 +5,8 @@ * Copyright (C) 2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ + * Modifications copyright (c) 2019 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 @@ -60,6 +62,7 @@ import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException; import org.onap.sdc.toscaparser.api.elements.Metadata; import org.skyscreamer.jsonassert.JSONAssert; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; @@ -74,8 +77,11 @@ public class CsarInstallerItCase { private static final String INVARIANT_RESOURCE2_UUID = "023a3f0d-1161-45ff-b4cf-8918a8ccf3ad"; private static final String RESOURCE_INSTANCE_NAME_RESOURCE1 = "ResourceInstanceName1"; private static final String RESOURCE_INSTANCE_NAME_RESOURCE2 = "ResourceInstanceName2"; + @Autowired + @Qualifier("oldModelInstaller") private CsarInstaller csarInstaller; + @Autowired private CldsDao cldsDao; diff --git a/src/test/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImplTest.java b/src/test/java/org/onap/clamp/clds/sdc/controller/installer/LoopCsarInstallerTest.java similarity index 99% rename from src/test/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImplTest.java rename to src/test/java/org/onap/clamp/clds/sdc/controller/installer/LoopCsarInstallerTest.java index 17e27d51..e462455f 100644 --- a/src/test/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImplTest.java +++ b/src/test/java/org/onap/clamp/clds/sdc/controller/installer/LoopCsarInstallerTest.java @@ -53,7 +53,7 @@ import org.springframework.context.ApplicationContext; import org.springframework.core.io.Resource; @RunWith(MockitoJUnitRunner.class) -public class CsarInstallerImplTest { +public class LoopCsarInstallerTest { @Mock private CsarHandler csarHandler; diff --git a/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java b/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java index 0cadef9a..883945eb 100644 --- a/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java +++ b/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java @@ -5,6 +5,8 @@ * Copyright (C) 2019 AT&T Intellectual Property. All rights * reserved. * ================================================================================ + * Modifications copyright (c) 2019 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 @@ -56,6 +58,7 @@ import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException; import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory; import org.onap.sdc.toscaparser.api.elements.Metadata; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.ActiveProfiles; @@ -77,6 +80,7 @@ public class CsarInstallerItCase { private LoopsRepository loopsRepo; @Autowired + @Qualifier("loopInstaller") private CsarInstaller csarInstaller; private BlueprintArtifact buildFakeBuildprintArtifact(String instanceName, String invariantResourceUuid, -- 2.16.6