X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Fclamp%2Fpolicy%2Fmicroservice%2FMicroServicePolicy.java;h=77627a31aeb268488e114a63fef6cf1eabe7b12d;hb=f01d3e8377fa4e5a9c1b129fe446575d132f91c2;hp=445c1d5ddcea97c564f6b002eb7881d1bc36e837;hpb=cef5b582ed8f2f9a64203e737234e29434314b36;p=clamp.git diff --git a/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java b/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java index 445c1d5d..77627a31 100644 --- a/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java +++ b/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java @@ -23,58 +23,42 @@ package org.onap.clamp.policy.microservice; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.annotations.Expose; - import java.io.Serializable; import java.util.HashSet; -import java.util.Map; import java.util.Set; - import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.Id; import javax.persistence.ManyToMany; import javax.persistence.Table; -import javax.persistence.Transient; - +import org.apache.commons.lang3.RandomStringUtils; import org.hibernate.annotations.TypeDef; import org.hibernate.annotations.TypeDefs; -import org.json.JSONObject; -import org.onap.clamp.clds.tosca.ToscaYamlToJsonConvertor; -import org.onap.clamp.clds.util.JsonUtils; +import org.onap.clamp.clds.tosca.update.ToscaConverterWithDictionarySupport; import org.onap.clamp.dao.model.jsontype.StringJsonUserType; import org.onap.clamp.loop.Loop; +import org.onap.clamp.loop.service.Service; +import org.onap.clamp.loop.template.LoopElementModel; +import org.onap.clamp.loop.template.PolicyModel; import org.onap.clamp.policy.Policy; -import org.yaml.snakeyaml.Yaml; @Entity @Table(name = "micro_service_policies") -@TypeDefs({ @TypeDef(name = "json", typeClass = StringJsonUserType.class) }) +@TypeDefs({@TypeDef(name = "json", typeClass = StringJsonUserType.class)}) public class MicroServicePolicy extends Policy implements Serializable { /** * The serial version ID. */ private static final long serialVersionUID = 6271238288583332616L; - @Transient - private static final EELFLogger logger = EELFManager.getInstance().getLogger(MicroServicePolicy.class); - @Expose @Id @Column(nullable = false, name = "name", unique = true) private String name; - @Expose - @Column(nullable = false, name = "policy_model_type") - private String modelType; - @Expose @Column(name = "context") private String context; @@ -87,9 +71,6 @@ public class MicroServicePolicy extends Policy implements Serializable { @Column(name = "shared", nullable = false) private Boolean shared; - @Column(columnDefinition = "MEDIUMTEXT", name = "policy_tosca", nullable = false) - private String policyTosca; - @ManyToMany(mappedBy = "microServicePolicies", fetch = FetchType.EAGER) private Set usedByLoops = new HashSet<>(); @@ -101,35 +82,14 @@ public class MicroServicePolicy extends Policy implements Serializable { @Column(name = "dcae_deployment_status_url") private String dcaeDeploymentStatusUrl; - public MicroServicePolicy() { - // serialization - } + @Expose + @Column(name = "dcae_blueprint_id") + private String dcaeBlueprintId; /** - * The constructor that create the json representation from the policyTosca - * using the ToscaYamlToJsonConvertor. - * - * @param name The name of the MicroService - * @param modelType The model type of the MicroService - * @param policyTosca The policy Tosca of the MicroService - * @param shared The flag indicate whether the MicroService is shared - * @param usedByLoops The list of loops that uses this MicroService + * Constructor for serialization. */ - public MicroServicePolicy(String name, String modelType, String policyTosca, Boolean shared, - Set usedByLoops) { - this.name = name; - this.modelType = modelType; - this.policyTosca = policyTosca; - this.shared = shared; - this.setJsonRepresentation(JsonUtils.GSON_JPA_MODEL - .fromJson(new ToscaYamlToJsonConvertor().parseToscaYaml(policyTosca, modelType), JsonObject.class)); - this.usedByLoops = usedByLoops; - } - - private JsonObject createJsonFromPolicyTosca() { - Map map = new Yaml().load(this.getPolicyTosca()); - JSONObject jsonObject = new JSONObject(map); - return new Gson().fromJson(jsonObject.toString(), JsonObject.class); + public MicroServicePolicy() { } /** @@ -137,21 +97,42 @@ public class MicroServicePolicy extends Policy implements Serializable { * the jsonRepresentation instead. * * @param name The name of the MicroService - * @param modelType The model type of the MicroService - * @param policyTosca The policy Tosca of the MicroService + * @param policyModel The policy model type of the MicroService * @param shared The flag indicate whether the MicroService is * shared * @param jsonRepresentation The UI representation in json format - * @param usedByLoops The list of loops that uses this MicroService + * @param loopElementModel The loop element model from which this instance should be created + * @param pdpGroup The Pdp Group info + * @param pdpSubgroup The Pdp Subgroup info */ - public MicroServicePolicy(String name, String modelType, String policyTosca, Boolean shared, - JsonObject jsonRepresentation, Set usedByLoops) { + public MicroServicePolicy(String name, PolicyModel policyModel, Boolean shared, + JsonObject jsonRepresentation, LoopElementModel loopElementModel, String pdpGroup, + String pdpSubgroup) { this.name = name; - this.modelType = modelType; - this.policyTosca = policyTosca; + this.setPolicyModel(policyModel); this.shared = shared; - this.usedByLoops = usedByLoops; this.setJsonRepresentation(jsonRepresentation); + this.setLoopElementModel(loopElementModel); + this.setPdpGroup(pdpGroup); + this.setPdpSubgroup(pdpSubgroup); + } + + /** + * Constructor with tosca converter. + * + * @param loop The loop instance + * @param service The service model object + * @param loopElementModel The loop element model from which this microservice instance is created + * @param toscaConverter The tosca converter that will used to convert the tosca policy model + */ + public MicroServicePolicy(Loop loop, Service service, LoopElementModel loopElementModel, + ToscaConverterWithDictionarySupport toscaConverter) { + this(Policy.generatePolicyName("MICROSERVICE", service.getName(), service.getVersion(), + loopElementModel.getPolicyModels().first().getPolicyAcronym() + '_' + + loopElementModel.getPolicyModels().first().getVersion(), + RandomStringUtils.randomAlphanumeric(3)), + loopElementModel.getPolicyModels().first(), false, new JsonObject(), loopElementModel, null, null); + this.updateJsonRepresentation(toscaConverter, service); } @Override @@ -161,7 +142,7 @@ public class MicroServicePolicy extends Policy implements Serializable { /** * name setter. - * + * * @param name the name to set */ @Override @@ -169,12 +150,11 @@ public class MicroServicePolicy extends Policy implements Serializable { this.name = name; } - public String getModelType() { - return modelType; - } - - void setModelType(String modelType) { - this.modelType = modelType; + @Override + public void updateJsonRepresentation(ToscaConverterWithDictionarySupport toscaConverter, Service serviceModel) { + this.setJsonRepresentation( + toscaConverter.convertToscaToJsonSchemaObject(this.getPolicyModel().getPolicyModelTosca(), + this.getPolicyModel().getPolicyModelType(), serviceModel)); } public Boolean getShared() { @@ -185,14 +165,6 @@ public class MicroServicePolicy extends Policy implements Serializable { this.shared = shared; } - public String getPolicyTosca() { - return policyTosca; - } - - void setPolicyTosca(String policyTosca) { - this.policyTosca = policyTosca; - } - public Set getUsedByLoops() { return usedByLoops; } @@ -219,7 +191,7 @@ public class MicroServicePolicy extends Policy implements Serializable { /** * dcaeDeploymentId getter. - * + * * @return the dcaeDeploymentId */ public String getDcaeDeploymentId() { @@ -228,7 +200,7 @@ public class MicroServicePolicy extends Policy implements Serializable { /** * dcaeDeploymentId setter. - * + * * @param dcaeDeploymentId the dcaeDeploymentId to set */ public void setDcaeDeploymentId(String dcaeDeploymentId) { @@ -237,7 +209,7 @@ public class MicroServicePolicy extends Policy implements Serializable { /** * dcaeDeploymentStatusUrl getter. - * + * * @return the dcaeDeploymentStatusUrl */ public String getDcaeDeploymentStatusUrl() { @@ -246,13 +218,31 @@ public class MicroServicePolicy extends Policy implements Serializable { /** * dcaeDeploymentStatusUrl setter. - * + * * @param dcaeDeploymentStatusUrl the dcaeDeploymentStatusUrl to set */ public void setDcaeDeploymentStatusUrl(String dcaeDeploymentStatusUrl) { this.dcaeDeploymentStatusUrl = dcaeDeploymentStatusUrl; } + /** + * dcaeBlueprintId getter. + * + * @return the dcaeBlueprintId + */ + public String getDcaeBlueprintId() { + return dcaeBlueprintId; + } + + /** + * dcaeBlueprintId setter. + * + * @param dcaeBlueprintId the dcaeBlueprintId to set + */ + void setDcaeBlueprintId(String dcaeBlueprintId) { + this.dcaeBlueprintId = dcaeBlueprintId; + } + @Override public int hashCode() { final int prime = 31; @@ -277,49 +267,10 @@ public class MicroServicePolicy extends Policy implements Serializable { if (other.name != null) { return false; } - } else if (!name.equals(other.name)) { + } + else if (!name.equals(other.name)) { return false; } return true; } - - private String getMicroServicePropertyNameFromTosca(JsonObject object) { - return object.getAsJsonObject("policy_types").getAsJsonObject(this.modelType).getAsJsonObject("properties") - .keySet().toArray(new String[1])[0]; - } - - @Override - public String createPolicyPayload() { - JsonObject toscaJson = createJsonFromPolicyTosca(); - - JsonObject policyPayloadResult = new JsonObject(); - - policyPayloadResult.add("tosca_definitions_version", toscaJson.get("tosca_definitions_version")); - - JsonObject topologyTemplateNode = new JsonObject(); - policyPayloadResult.add("topology_template", topologyTemplateNode); - - JsonArray policiesArray = new JsonArray(); - topologyTemplateNode.add("policies", policiesArray); - - JsonObject thisPolicy = new JsonObject(); - policiesArray.add(thisPolicy); - - JsonObject policyDetails = new JsonObject(); - thisPolicy.add(this.getName(), policyDetails); - policyDetails.addProperty("type", this.getModelType()); - policyDetails.addProperty("version", "1.0.0"); - - JsonObject policyMetadata = new JsonObject(); - policyDetails.add("metadata", policyMetadata); - policyMetadata.addProperty("policy-id", this.getName()); - - JsonObject policyProperties = new JsonObject(); - policyDetails.add("properties", policyProperties); - policyProperties.add(this.getMicroServicePropertyNameFromTosca(toscaJson), this.getConfigurationsJson()); - String policyPayload = new GsonBuilder().setPrettyPrinting().create().toJson(policyPayloadResult); - logger.info("Micro service policy payload: " + policyPayload); - return policyPayload; - } - }