diff options
59 files changed, 3057 insertions, 1250 deletions
diff --git a/extra/sql/bulkload/clds-create-db-objects.sql b/extra/sql/bulkload/clds-create-db-objects.sql index 78a1f7a6c..38cc466f5 100644 --- a/extra/sql/bulkload/clds-create-db-objects.sql +++ b/extra/sql/bulkload/clds-create-db-objects.sql @@ -114,6 +114,53 @@ CREATE TABLE clds_service_cache ( PRIMARY KEY (invariant_service_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; +CREATE TABLE IF NOT EXISTS tosca_model ( + tosca_model_id VARCHAR(36) NOT NULL, + tosca_model_name VARCHAR(80) NOT NULL, + policy_type VARCHAR(80) NULL, + user_id VARCHAR(80), + timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (tosca_model_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +CREATE TABLE IF NOT EXISTS tosca_model_revision ( + tosca_model_revision_id VARCHAR(36) NOT NULL, + tosca_model_id VARCHAR(36) NOT NULL, + version DOUBLE NOT NULL DEFAULT 1, + tosca_model_yaml MEDIUMTEXT NULL, + tosca_model_json MEDIUMTEXT NULL, + user_id VARCHAR(80), + createdTimestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + lastUpdatedTimestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (tosca_model_revision_id), + CONSTRAINT tosca_model_revision_ukey UNIQUE KEY (tosca_model_id, version), + CONSTRAINT tosca_model_revision_fkey01 FOREIGN KEY (tosca_model_id) REFERENCES tosca_model (tosca_model_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +CREATE TABLE IF NOT EXISTS dictionary ( + dictionary_id VARCHAR(36) NOT NULL, + dictionary_name VARCHAR(80) NOT NULL, + created_by VARCHAR(80), + modified_by VARCHAR(80), + timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (dictionary_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +CREATE TABLE IF NOT EXISTS dictionary_elements ( + dict_element_id VARCHAR(36) NOT NULL, + dictionary_id VARCHAR(36) NOT NULL, + dict_element_name VARCHAR(250) NOT NULL, + dict_element_short_name VARCHAR(80) NOT NULL, + dict_element_description VARCHAR(250), + dict_element_type VARCHAR(80) NOT NULL, + created_by VARCHAR(80), + modified_by VARCHAR(80), + timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (dict_element_id), + CONSTRAINT dictionary_elements_ukey UNIQUE KEY (dict_element_name, dict_element_short_name), + CONSTRAINT dictionary_elements_ukey_fkey01 FOREIGN KEY (dictionary_id) REFERENCES dictionary (dictionary_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + ALTER TABLE template ADD CONSTRAINT template_bpmn_id_fkey01 FOREIGN KEY (template_bpmn_id) diff --git a/extra/sql/bulkload/clds-stored-procedures.sql b/extra/sql/bulkload/clds-stored-procedures.sql index d09d3fc81..107717451 100644 --- a/extra/sql/bulkload/clds-stored-procedures.sql +++ b/extra/sql/bulkload/clds-stored-procedures.sql @@ -15,6 +15,10 @@ DROP PROCEDURE IF EXISTS get_model_template; DROP PROCEDURE IF EXISTS set_template; DROP PROCEDURE IF EXISTS get_template; DROP PROCEDURE IF EXISTS del_model; +DROP PROCEDURE IF EXISTS set_new_tosca_model_version; +DROP PROCEDURE IF EXISTS set_tosca_model; +DROP PROCEDURE IF EXISTS set_dictionary; +DROP PROCEDURE IF EXISTS set_dictionary_elements; DELIMITER // CREATE PROCEDURE get_template (IN v_template_name VARCHAR(80), @@ -456,5 +460,65 @@ BEGIN DELETE from model_properties where model_id = v_model_id; DELETE from model where model_id = v_model_id; END + +CREATE PROCEDURE set_new_tosca_model_version + (IN v_tosca_model_id VARCHAR(36), + IN v_version DOUBLE, + IN v_tosca_model_yaml MEDIUMTEXT, + IN v_tosca_model_json MEDIUMTEXT, + IN v_user_id VARCHAR(80), + OUT v_revision_id VARCHAR(36)) +BEGIN + SET v_revision_id = UUID(); + INSERT INTO tosca_model_revision + (tosca_model_revision_id, tosca_model_id, version, tosca_model_yaml, tosca_model_json, user_id) + VALUES (v_revision_id, v_tosca_model_id, v_version, v_tosca_model_yaml, v_tosca_model_json, v_user_id); +END; + +CREATE PROCEDURE set_tosca_model + (IN v_tosca_model_name VARCHAR(80), + IN v_policy_type VARCHAR(80), + IN v_user_id VARCHAR(80), + IN v_tosca_model_yaml MEDIUMTEXT, + IN v_tosca_model_json MEDIUMTEXT, + IN v_version DOUBLE, + OUT v_tosca_model_id VARCHAR(36), + OUT v_revision_id VARCHAR(36)) +BEGIN + SET v_tosca_model_id = UUID(); + INSERT INTO tosca_model + (tosca_model_id, tosca_model_name, policy_type, user_id) + VALUES (v_tosca_model_id, v_tosca_model_name, v_policy_type, v_user_id); + SET v_revision_id = UUID(); + INSERT INTO tosca_model_revision + (tosca_model_revision_id, tosca_model_id, version, tosca_model_yaml, tosca_model_json, user_id) + VALUES (v_revision_id, v_tosca_model_id, v_version, v_tosca_model_yaml, v_tosca_model_json, v_user_id); +END; + +CREATE PROCEDURE set_dictionary + (IN v_dictionary_name VARCHAR(80), + IN v_user_id VARCHAR(80), + OUT v_dictionary_id VARCHAR(36)) +BEGIN + SET v_dictionary_id = UUID(); + INSERT INTO dictionary + (dictionary_id, dictionary_name, created_by, modified_by) + VALUES (v_dictionary_id, v_dictionary_name, v_user_id, v_user_id); +END; + +CREATE PROCEDURE set_dictionary_elements + (IN v_dictionary_id VARCHAR(36), + IN v_dict_element_name VARCHAR(250), + IN v_dict_element_short_name VARCHAR(80), + IN v_dict_element_description VARCHAR(250), + IN v_dict_element_type VARCHAR(80), + IN v_user_id VARCHAR(80), + OUT v_dict_element_id VARCHAR(36)) +BEGIN + SET v_dict_element_id = UUID(); + INSERT INTO dictionary_elements + (dict_element_id, dictionary_id, dict_element_name, dict_element_short_name, dict_element_description, dict_element_type, created_by, modified_by) + VALUES (v_dict_element_id, v_dictionary_id, v_dict_element_name, v_dict_element_short_name, v_dict_element_description, v_dict_element_type, v_user_id, v_user_id); +END; // DELIMITER ; diff --git a/extra/sql/drop/clds-drop-db-objects.sql b/extra/sql/drop/clds-drop-db-objects.sql index 478eaf0e0..1c173a414 100644 --- a/extra/sql/drop/clds-drop-db-objects.sql +++ b/extra/sql/drop/clds-drop-db-objects.sql @@ -31,3 +31,9 @@ DROP TABLE template_doc; DROP TABLE template_image; DROP TABLE template_bpmn; DROP TABLE template; + +DROP TABLE dictionary_elements; +DROP TABLE dictionary; +DROP TABLE tosca_model_revision; +DROP TABLE tosca_model; + @@ -20,9 +20,7 @@ ============LICENSE_END============================================ =================================================================== --> - -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.onap.clamp</groupId> <artifactId>clds</artifactId> @@ -32,7 +30,7 @@ <parent> <groupId>org.onap.oparent</groupId> <artifactId>oparent</artifactId> - <version>1.1.0</version> + <version>1.2.0</version> </parent> <description> @@ -85,7 +83,7 @@ <docker.skip.push>true</docker.skip.push> <docker.skip.tag>true</docker.skip.tag> <skip.staging.artifacts>false</skip.staging.artifacts> - <python.http.proxy.param></python.http.proxy.param> + <python.http.proxy.param/> <tomcat.version>8.5.32</tomcat.version> </properties> @@ -393,7 +391,7 @@ <dependency> <groupId>org.onap.policy.engine</groupId> <artifactId>PolicyEngineAPI</artifactId> - <version>1.2.0</version> + <version>1.2.3</version> <exclusions> <exclusion> <groupId>com.google.guava</groupId> @@ -448,7 +446,7 @@ <dependency> <groupId>org.onap.policy.common</groupId> <artifactId>ONAP-Logging</artifactId> - <version>1.1.3</version> + <version>1.2.3</version> <exclusions> <exclusion> <artifactId>log4j</artifactId> @@ -465,9 +463,9 @@ </exclusions> </dependency> <dependency> - <groupId>org.onap.policy.drools-applications</groupId> + <groupId>org.onap.policy.drools-applications.controlloop.common</groupId> <artifactId>policy-yaml</artifactId> - <version>1.1.3</version> + <version>1.2.3</version> <exclusions> <exclusion> <artifactId>log4j</artifactId> @@ -484,9 +482,9 @@ </exclusions> </dependency> <dependency> - <groupId>org.onap.policy.drools-applications</groupId> + <groupId>org.onap.policy.drools-applications.controlloop.common.model-impl</groupId> <artifactId>sdc</artifactId> - <version>1.1.3</version> + <version>1.2.3</version> <exclusions> <exclusion> <artifactId>log4j</artifactId> @@ -503,9 +501,9 @@ </exclusions> </dependency> <dependency> - <groupId>org.onap.policy.drools-applications</groupId> + <groupId>org.onap.policy.drools-applications.controlloop.common.model-impl</groupId> <artifactId>aai</artifactId> - <version>1.1.3</version> + <version>1.2.3</version> <exclusions> <exclusion> <artifactId>log4j</artifactId> @@ -545,7 +543,7 @@ <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> - <version>25.1-jre</version> + </dependency> <!-- Remove the MYSQL connector and replace it by Mariadb --> <dependency> @@ -711,10 +709,10 @@ <doctype>book</doctype> <toc>left</toc> <toclevels>3</toclevels> - <numbered></numbered> - <hardbreaks></hardbreaks> - <sectlinks></sectlinks> - <sectanchors></sectanchors> + <numbered/> + <hardbreaks/> + <sectlinks/> + <sectanchors/> <generated>${project.build.directory}/asciidoc/generated</generated> </attributes> </configuration> diff --git a/src/main/java/org/onap/clamp/clds/ClampServlet.java b/src/main/java/org/onap/clamp/clds/ClampServlet.java index 549b12f9f..516325cbe 100644 --- a/src/main/java/org/onap/clamp/clds/ClampServlet.java +++ b/src/main/java/org/onap/clamp/clds/ClampServlet.java @@ -36,9 +36,10 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.camel.component.servlet.CamelHttpTransportServlet; +import org.onap.aaf.cadi.principal.X509Principal; import org.onap.clamp.clds.service.SecureServicePermission; -import org.onap.clamp.clds.util.ClampTimer; import org.springframework.context.ApplicationContext; +import org.springframework.http.HttpStatus; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.GrantedAuthority; @@ -49,62 +50,79 @@ import org.springframework.web.context.support.WebApplicationContextUtils; public class ClampServlet extends CamelHttpTransportServlet { + /** + * + */ + private static final long serialVersionUID = -4198841134910211542L; + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(ClampServlet.class); public static final String PERM_INSTANCE = "clamp.config.security.permission.instance"; public static final String PERM_CL = "clamp.config.security.permission.type.cl"; public static final String PERM_TEMPLATE = "clamp.config.security.permission.type.template"; public static final String PERM_VF = "clamp.config.security.permission.type.filter.vf"; public static final String PERM_MANAGE = "clamp.config.security.permission.type.cl.manage"; + public static final String PERM_TOSCA = "clamp.config.security.permission.type.tosca"; + private static List<SecureServicePermission> permissionList; - @Override - protected void doService(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); - List<SecureServicePermission> permissionList = new ArrayList<>(); - - // Get Principal info and translate it into Spring Authentication If - // authenticataion is null: a) the authentication info was set manually - // in the previous thread b) handled by Spring automatically for the 2 - // cases above, no need for the translation, just skip the following - // step - if (null == authentication) { - logger.debug("Populate Spring Authenticataion info manually."); + private synchronized List<SecureServicePermission> getPermissionList() { + if (permissionList == null) { + permissionList=new ArrayList<>(); ApplicationContext applicationContext = WebApplicationContextUtils - .getWebApplicationContext(this.getServletContext()); - // Start a timer to clear the authentication after 5 mins, so that - // the authentication will be reinitialized with AAF DB - new ClampTimer(300); - String cldsPersmissionTypeCl = applicationContext.getEnvironment().getProperty(PERM_CL); - String cldsPermissionTypeTemplate = applicationContext.getEnvironment().getProperty(PERM_TEMPLATE); + .getWebApplicationContext(getServletContext()); String cldsPermissionInstance = applicationContext.getEnvironment().getProperty(PERM_INSTANCE); - String cldsPermissionTypeFilterVf = applicationContext.getEnvironment().getProperty(PERM_VF); - String cldsPermissionTypeClManage = applicationContext.getEnvironment().getProperty(PERM_MANAGE); - - // set the stragety to Mode_Global, so that all thread is able to - // see the authentication - SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_GLOBAL); - Principal p = request.getUserPrincipal(); + permissionList.add(SecureServicePermission.create(applicationContext.getEnvironment().getProperty(PERM_CL), + cldsPermissionInstance, "read")); + permissionList.add(SecureServicePermission.create(applicationContext.getEnvironment().getProperty(PERM_CL), + cldsPermissionInstance, "update")); + permissionList.add(SecureServicePermission.create( + applicationContext.getEnvironment().getProperty(PERM_TEMPLATE), cldsPermissionInstance, "read")); + permissionList.add(SecureServicePermission.create( + applicationContext.getEnvironment().getProperty(PERM_TEMPLATE), cldsPermissionInstance, "update")); + permissionList.add(SecureServicePermission.create(applicationContext.getEnvironment().getProperty(PERM_VF), + cldsPermissionInstance, "*")); + permissionList.add(SecureServicePermission + .create(applicationContext.getEnvironment().getProperty(PERM_MANAGE), cldsPermissionInstance, "*")); + permissionList.add(SecureServicePermission + .create(applicationContext.getEnvironment().getProperty(PERM_TOSCA), cldsPermissionInstance, "read")); + permissionList.add(SecureServicePermission + .create(applicationContext.getEnvironment().getProperty(PERM_TOSCA), cldsPermissionInstance, "update")); + } + return permissionList; + } - permissionList.add(SecureServicePermission.create(cldsPersmissionTypeCl, cldsPermissionInstance, "read")); - permissionList.add(SecureServicePermission.create(cldsPersmissionTypeCl, cldsPermissionInstance, "update")); - permissionList - .add(SecureServicePermission.create(cldsPermissionTypeTemplate, cldsPermissionInstance, "read")); - permissionList - .add(SecureServicePermission.create(cldsPermissionTypeTemplate, cldsPermissionInstance, "update")); - permissionList.add(SecureServicePermission.create(cldsPermissionTypeFilterVf, cldsPermissionInstance, "*")); - permissionList.add(SecureServicePermission.create(cldsPermissionTypeClManage, cldsPermissionInstance, "*")); + /** + * When AAF is enabled, request object will contain a cadi Wrapper, so queries + * to isUserInRole will invoke a http call to AAF server. + */ + @Override + protected void doService(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + Principal p = request.getUserPrincipal(); + if (p instanceof X509Principal) { + // When AAF is enabled, there is a need to provision the permissions to Spring + // system List<GrantedAuthority> grantedAuths = new ArrayList<>(); - for (SecureServicePermission perm : permissionList) { + for (SecureServicePermission perm : getPermissionList()) { String permString = perm.toString(); if (request.isUserInRole(permString)) { grantedAuths.add(new SimpleGrantedAuthority(permString)); } } Authentication auth = new UsernamePasswordAuthenticationToken(new User(p.getName(), "", grantedAuths), "", - grantedAuths); + grantedAuths); SecurityContextHolder.getContext().setAuthentication(auth); } - super.doService(request, response); + try { + super.doService(request, response); + } catch (ServletException | IOException ioe) { + logger.error("Exception caught when executing doService in servlet", ioe); + try { + response.sendError(HttpStatus.INTERNAL_SERVER_ERROR.value()); + } catch (IOException e) { + logger.error("Exception caught when executing HTTP sendError in servlet", e); + } + } + } }
\ No newline at end of file diff --git a/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java b/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java index e324b2d99..39377d4a2 100644 --- a/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java @@ -17,8 +17,9 @@ * See the License for the specific language governing permissions and * limitations under the License. * ============LICENSE_END============================================ + * Modifications copyright (c) 2018 Nokia * =================================================================== - * + * */ package org.onap.clamp.clds.client; @@ -31,7 +32,7 @@ import java.util.Map; import org.apache.camel.Exchange; import org.apache.camel.Handler; -import org.onap.clamp.clds.client.req.policy.OperationalPolicyReq; +import org.onap.clamp.clds.client.req.policy.OperationalPolicyAttributesConstructor; import org.onap.clamp.clds.client.req.policy.PolicyClient; import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.model.properties.ModelProperties; @@ -52,16 +53,14 @@ public class OperationalPolicyDelegate { protected static final EELFLogger logger = EELFManager.getInstance().getLogger(OperationalPolicyDelegate.class); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - /** - * Automatically injected by Spring, define in CldsConfiguration as a bean. - */ - @Autowired - private PolicyClient policyClient; - /** - * Automatically injected by Spring, define in CldsConfiguration as a bean. - */ + private final PolicyClient policyClient; + private final ClampProperties refProp; + @Autowired - private ClampProperties refProp; + public OperationalPolicyDelegate(PolicyClient policyClient, ClampProperties refProp) { + this.policyClient = policyClient; + this.refProp = refProp; + } /** * Perform activity. Send Operational Policy info to policy api. @@ -69,7 +68,7 @@ public class OperationalPolicyDelegate { * @param camelExchange * The Camel Exchange object containing the properties * @throws BuilderException - * In case of issues with OperationalPolicyReq + * In case of issues with OperationalPolicyRequestAttributesConstructor * @throws UnsupportedEncodingException * In case of issues with the Charset encoding */ @@ -80,8 +79,8 @@ public class OperationalPolicyDelegate { Policy policy = prop.getType(Policy.class); if (policy.isFound()) { for (PolicyChain policyChain : prop.getType(Policy.class).getPolicyChains()) { - Map<AttributeType, Map<String, String>> attributes = OperationalPolicyReq.formatAttributes(refProp, - prop, prop.getType(Policy.class).getId(), policyChain); + Map<AttributeType, Map<String, String>> attributes = OperationalPolicyAttributesConstructor.formatAttributes(refProp, + prop, prop.getType(Policy.class).getId(), policyChain); responseMessage = policyClient.sendBrmsPolicy(attributes, prop, LoggingUtils.getRequestId()); } if (responseMessage != null) { diff --git a/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDeleteDelegate.java b/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDeleteDelegate.java index 08cfba141..872999356 100644 --- a/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDeleteDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDeleteDelegate.java @@ -18,7 +18,7 @@ * limitations under the License. * ============LICENSE_END============================================ * =================================================================== - * + * */ package org.onap.clamp.clds.client; @@ -43,7 +43,7 @@ import org.springframework.stereotype.Component; public class OperationalPolicyDeleteDelegate { protected static final EELFLogger logger = EELFManager.getInstance() - .getLogger(OperationalPolicyDeleteDelegate.class); + .getLogger(OperationalPolicyDeleteDelegate.class); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); @Autowired private PolicyClient policyClient; diff --git a/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyAttributesConstructor.java b/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyAttributesConstructor.java new file mode 100644 index 000000000..c28f700b2 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyAttributesConstructor.java @@ -0,0 +1,153 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017-2018 AT&T Intellectual Property. 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============================================ + * Modifications copyright (c) 2018 Nokia + * =================================================================== + * + */ + +package org.onap.clamp.clds.client.req.policy; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.google.common.base.Strings; +import com.google.common.collect.ImmutableMap; + +import java.io.UnsupportedEncodingException; +import java.util.HashMap; +import java.util.Map; + +import org.onap.clamp.clds.config.ClampProperties; +import org.onap.clamp.clds.model.properties.ModelProperties; +import org.onap.clamp.clds.model.properties.PolicyChain; +import org.onap.clamp.clds.model.properties.PolicyItem; +import org.onap.policy.api.AttributeType; +import org.onap.policy.controlloop.policy.builder.BuilderException; + +public class OperationalPolicyAttributesConstructor { + + private static final EELFLogger logger = EELFManager.getInstance() + .getLogger(OperationalPolicyAttributesConstructor.class); + public static final String TEMPLATE_NAME = "templateName"; + public static final String CLOSED_LOOP_CONTROL_NAME = "closedLoopControlName"; + public static final String NOTIFICATION_TOPIC = "notificationTopic"; + public static final String OPERATION_TOPIC = "operationTopic"; + public static final String CONTROL_LOOP_YAML = "controlLoopYaml"; + public static final String CONTROLLER = "controller"; + public static final String RECIPE = "Recipe"; + public static final String MAX_RETRIES = "MaxRetries"; + public static final String RETRY_TIME_LIMIT = "RetryTimeLimit"; + public static final String RESOURCE_ID = "ResourceId"; + public static final String RECIPE_TOPIC = "RecipeTopic"; + + private OperationalPolicyAttributesConstructor() { + } + + public static Map<AttributeType, Map<String, String>> formatAttributes(ClampProperties refProp, + ModelProperties modelProperties, + String modelElementId, PolicyChain policyChain) + throws BuilderException, UnsupportedEncodingException { + modelProperties.setCurrentModelElementId(modelElementId); + modelProperties.setPolicyUniqueId(policyChain.getPolicyId()); + + String globalService = modelProperties.getGlobal().getService(); + + Map<String, String> ruleAttributes = prepareRuleAttributes(refProp, modelProperties, modelElementId, + policyChain, globalService); + Map<String, String> matchingAttributes = prepareMatchingAttributes(refProp, globalService); + + return createAttributesMap(matchingAttributes, ruleAttributes); + } + + private static Map<String, String> prepareRuleAttributes(ClampProperties clampProperties, ModelProperties modelProperties, + String modelElementId, PolicyChain policyChain, String globalService) + throws BuilderException, UnsupportedEncodingException { + logger.info("Preparing rule attributes..."); + String templateName = clampProperties.getStringValue("op.templateName", globalService); + String operationTopic = clampProperties.getStringValue("op.operationTopic", globalService); + String notificationTopic = clampProperties.getStringValue("op.notificationTopic", globalService); + + Map<String, String> ruleAttributes = new HashMap<>(); + ruleAttributes.put(TEMPLATE_NAME, templateName); + ruleAttributes.put(CLOSED_LOOP_CONTROL_NAME, modelProperties.getControlNameAndPolicyUniqueId()); + ruleAttributes.put(NOTIFICATION_TOPIC, notificationTopic); + + ImmutableMap<String, String> attributes = createRuleAttributesFromPolicy(clampProperties, modelProperties, + modelElementId, policyChain, globalService, operationTopic); + ruleAttributes.putAll(attributes); + logger.info("Prepared: " + ruleAttributes); + return ruleAttributes; + } + + private static Map<String, String> prepareMatchingAttributes(ClampProperties refProp, String globalService) { + logger.info("Preparing matching attributes..."); + String controller = refProp.getStringValue("op.controller", globalService); + Map<String, String> matchingAttributes = new HashMap<>(); + matchingAttributes.put(CONTROLLER, controller); + logger.info("Prepared: " + matchingAttributes); + return matchingAttributes; + } + + private static Map<AttributeType, Map<String, String>> createAttributesMap(Map<String, String> matchingAttributes, + Map<String, String> ruleAttributes) { + Map<AttributeType, Map<String, String>> attributes = new HashMap<>(); + attributes.put(AttributeType.RULE, ruleAttributes); + attributes.put(AttributeType.MATCHING, matchingAttributes); + return attributes; + } + + private static ImmutableMap<String, String> createRuleAttributesFromPolicy(ClampProperties refProp, ModelProperties modelProperties, + String modelElementId, PolicyChain policyChain, + String globalService, String operationTopic) + throws BuilderException, UnsupportedEncodingException { + if (Strings.isNullOrEmpty(operationTopic)) { + // if no operationTopic, then don't format yaml - use first policy + String recipeTopic = refProp.getStringValue("op.recipeTopic", globalService); + return createRuleAttributesFromPolicyItem( + policyChain.getPolicyItems().get(0), recipeTopic); + } else { + return createRuleAttributesFromPolicyChain(policyChain, modelProperties, + modelElementId, operationTopic); + } + } + + private static ImmutableMap<String, String> createRuleAttributesFromPolicyItem(PolicyItem policyItem, String recipeTopic) { + logger.info("recipeTopic=" + recipeTopic); + return ImmutableMap.<String, String>builder() + .put(RECIPE_TOPIC, recipeTopic) + .put(RECIPE, policyItem.getRecipe()) + .put(MAX_RETRIES, String.valueOf(policyItem.getMaxRetries())) + .put(RETRY_TIME_LIMIT, String.valueOf(policyItem.getRetryTimeLimit())) + .put(RESOURCE_ID, String.valueOf(policyItem.getTargetResourceId())) + .build(); + } + + private static ImmutableMap<String, String> createRuleAttributesFromPolicyChain(PolicyChain policyChain, + ModelProperties modelProperties, + String modelElementId, + String operationTopic) + throws BuilderException, UnsupportedEncodingException { + logger.info("operationTopic=" + operationTopic); + String yaml = OperationalPolicyYamlFormatter.formatYaml(modelProperties, modelElementId, policyChain); + return ImmutableMap.<String, String>builder() + .put(OPERATION_TOPIC, operationTopic) + .put(CONTROL_LOOP_YAML, yaml) + .build(); + } +}
\ No newline at end of file diff --git a/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyReq.java b/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyYamlFormatter.java index f062dfca6..1fc360820 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyReq.java +++ b/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyYamlFormatter.java @@ -21,7 +21,6 @@ * =================================================================== * */ - package org.onap.clamp.clds.client.req.policy; import com.att.eelf.configuration.EELFLogger; @@ -37,12 +36,10 @@ import java.util.Map; import javax.ws.rs.BadRequestException; -import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.model.properties.Global; import org.onap.clamp.clds.model.properties.ModelProperties; import org.onap.clamp.clds.model.properties.PolicyChain; import org.onap.clamp.clds.model.properties.PolicyItem; -import org.onap.policy.api.AttributeType; import org.onap.policy.controlloop.policy.Policy; import org.onap.policy.controlloop.policy.PolicyResult; import org.onap.policy.controlloop.policy.Target; @@ -55,83 +52,14 @@ import org.onap.policy.sdc.Resource; import org.onap.policy.sdc.ResourceType; import org.onap.policy.sdc.Service; -/** - * Construct an Operational Policy request given CLDS objects. - */ -public class OperationalPolicyReq { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(OperationalPolicyReq.class); +public class OperationalPolicyYamlFormatter { + private static final EELFLogger logger = EELFManager.getInstance().getLogger(OperationalPolicyYamlFormatter.class); - protected OperationalPolicyReq() { + protected OperationalPolicyYamlFormatter() { } - - /** - * Format Operational Policy attributes. - * - * @param refProp - * @param prop - * @param modelElementId - * @param policyChain - * @return - * @throws BuilderException - * @throws UnsupportedEncodingException - */ - public static Map<AttributeType, Map<String, String>> formatAttributes(ClampProperties refProp, - ModelProperties prop, String modelElementId, PolicyChain policyChain) - throws BuilderException, UnsupportedEncodingException { - Global global = prop.getGlobal(); - prop.setCurrentModelElementId(modelElementId); - prop.setPolicyUniqueId(policyChain.getPolicyId()); - String templateName = refProp.getStringValue("op.templateName", global.getService()); - String operationTopic = refProp.getStringValue("op.operationTopic", global.getService()); - String notificationTopic = refProp.getStringValue("op.notificationTopic", global.getService()); - String controller = refProp.getStringValue("op.controller", global.getService()); - String recipeTopic = refProp.getStringValue("op.recipeTopic", global.getService()); - // ruleAttributes - logger.info("templateName=" + templateName); - logger.info("notificationTopic=" + notificationTopic); - Map<String, String> ruleAttributes = new HashMap<>(); - ruleAttributes.put("templateName", templateName); - ruleAttributes.put("closedLoopControlName", prop.getControlNameAndPolicyUniqueId()); - ruleAttributes.put("notificationTopic", notificationTopic); - if (operationTopic == null || operationTopic.isEmpty()) { - logger.info("recipeTopic=" + recipeTopic); - // if no operationTopic, then don't format yaml - use first policy - // from list - PolicyItem policyItem = policyChain.getPolicyItems().get(0); - ruleAttributes.put("RecipeTopic", recipeTopic); - String recipe = policyItem.getRecipe(); - String maxRetries = String.valueOf(policyItem.getMaxRetries()); - String retryTimeLimit = String.valueOf(policyItem.getRetryTimeLimit()); - String targetResourceId = String.valueOf(policyItem.getTargetResourceId()); - logger.info("recipe=" + recipe); - logger.info("maxRetries=" + maxRetries); - logger.info("retryTimeLimit=" + retryTimeLimit); - logger.info("targetResourceId=" + targetResourceId); - ruleAttributes.put("Recipe", recipe); - ruleAttributes.put("MaxRetries", maxRetries); - ruleAttributes.put("RetryTimeLimit", retryTimeLimit); - ruleAttributes.put("ResourceId", targetResourceId); - } else { - logger.info("operationTopic=" + operationTopic); - // format yaml - String yaml = formatYaml(refProp, prop, modelElementId, policyChain); - ruleAttributes.put("operationTopic", operationTopic); - ruleAttributes.put("controlLoopYaml", yaml); - } - // matchingAttributes - Map<String, String> matchingAttributes = new HashMap<>(); - matchingAttributes.put("controller", controller); - Map<AttributeType, Map<String, String>> attributes = new HashMap<>(); - attributes.put(AttributeType.RULE, ruleAttributes); - attributes.put(AttributeType.MATCHING, matchingAttributes); - return attributes; - } - /** * Format Operational OpenLoop Policy yaml. * - * @param refProp * @param prop * @param modelElementId * @param policyChain @@ -139,7 +67,7 @@ public class OperationalPolicyReq { * @throws BuilderException * @throws UnsupportedEncodingException */ - protected static String formatOpenLoopYaml(ClampProperties refProp, ModelProperties prop, String modelElementId, + public static String formatOpenLoopYaml(ModelProperties prop, String modelElementId, PolicyChain policyChain) throws BuilderException, UnsupportedEncodingException { // get property objects Global global = prop.getGlobal(); @@ -147,7 +75,7 @@ public class OperationalPolicyReq { prop.setPolicyUniqueId(policyChain.getPolicyId()); // convert values to SDC objects Service service = new Service(global.getService()); - Resource[] vfResources = convertToResource(global.getResourceVf(), ResourceType.VF); + Resource[] vfResources = convertToResources(global.getResourceVf(), ResourceType.VF); // create builder ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(prop.getControlName(), policyChain.getTimeout(), service, vfResources); @@ -158,18 +86,7 @@ public class OperationalPolicyReq { return URLEncoder.encode(results.getSpecification(), "UTF-8"); } - /** - * Format Operational Policy yaml. - * - * @param refProp - * @param prop - * @param modelElementId - * @param policyChain - * @return - * @throws BuilderException - * @throws UnsupportedEncodingException - */ - protected static String formatYaml(ClampProperties refProp, ModelProperties prop, String modelElementId, + public static String formatYaml(ModelProperties prop, String modelElementId, PolicyChain policyChain) throws BuilderException, UnsupportedEncodingException { // get property objects Global global = prop.getGlobal(); @@ -177,8 +94,8 @@ public class OperationalPolicyReq { prop.setPolicyUniqueId(policyChain.getPolicyId()); // convert values to SDC objects Service service = new Service(global.getService()); - Resource[] vfResources = convertToResource(global.getResourceVf(), ResourceType.VF); - Resource[] vfcResources = convertToResource(global.getResourceVfc(), ResourceType.VFC); + Resource[] vfResources = convertToResources(global.getResourceVf(), ResourceType.VF); + Resource[] vfcResources = convertToResources(global.getResourceVfc(), ResourceType.VFC); // create builder ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(prop.getControlName(), policyChain.getTimeout(), service, vfResources); @@ -209,7 +126,7 @@ public class OperationalPolicyReq { + parentPolicyObj.getName() + " - created by CLDS"; policyObj = builder.setPolicyForPolicyResult(policyName, policyDescription, actor, target, policyItem.getRecipe(), payloadMap, policyItem.getMaxRetries(), policyItem.getRetryTimeLimit(), - parentPolicyObj.getId(), convertToPolicyResult(policyItem.getParentPolicyConditions())); + parentPolicyObj.getId(), convertToPolicyResults(policyItem.getParentPolicyConditions())); logger.info("policyObj.id=" + policyObj.getId() + "; parentPolicyObj.id=" + parentPolicyObj.getId()); } policyObjMap.put(policyItem.getId(), policyObj); @@ -220,29 +137,7 @@ public class OperationalPolicyReq { return URLEncoder.encode(results.getSpecification(), "UTF-8"); } - protected static void validate(Results results) { - if (results.isValid()) { - logger.info("results.getSpecification()=" + results.getSpecification()); - } else { - // throw exception with error info - StringBuilder sb = new StringBuilder(); - sb.append("Operation Policy validation problem: ControlLoopPolicyBuilder failed with following messages: "); - for (Message message : results.getMessages()) { - sb.append(message.getMessage()); - sb.append("; "); - } - throw new BadRequestException(sb.toString()); - } - } - - /** - * Order list of PolicyItems so that parents come before any of their - * children - * - * @param inOrigList - * @return - */ - private static List<PolicyItem> orderParentFirst(List<PolicyItem> inOrigList) { + protected static List<PolicyItem> orderParentFirst(List<PolicyItem> inOrigList) { List<PolicyItem> inList = new ArrayList<>(); inList.addAll(inOrigList); List<PolicyItem> outList = new ArrayList<>(); @@ -286,31 +181,34 @@ public class OperationalPolicyReq { return outList; } - /** - * Convert a List of resource strings to an array of Resource objects. - * - * @param stringList - * @param resourceType - * @return - */ - protected static Resource[] convertToResource(List<String> stringList, ResourceType resourceType) { + protected static void validate(Results results) { + if (results.isValid()) { + logger.info("results.getSpecification()=" + results.getSpecification()); + } else { + // throw exception with error info + StringBuilder sb = new StringBuilder(); + sb.append("Operation Policy validation problem: ControlLoopPolicyBuilder failed with following messages: "); + for (Message message : results.getMessages()) { + sb.append(message.getMessage()); + sb.append("; "); + } + throw new BadRequestException(sb.toString()); + } + } + + + protected static Resource[] convertToResources(List<String> stringList, ResourceType resourceType) { if (stringList == null || stringList.isEmpty()) { return new Resource[0]; } return stringList.stream().map(stringElem -> new Resource(stringElem, resourceType)).toArray(Resource[]::new); } - /** - * Convert a List of policy result strings to an array of PolicyResult - * objects. - * - * @param prList - * @return - */ - protected static PolicyResult[] convertToPolicyResult(List<String> prList) { + protected static PolicyResult[] convertToPolicyResults(List<String> prList) { if (prList == null || prList.isEmpty()) { return new PolicyResult[0]; } return prList.stream().map(PolicyResult::toResult).toArray(PolicyResult[]::new); } + }
\ No newline at end of file diff --git a/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java b/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java index cc97a7ce0..cd387b3c3 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java +++ b/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java @@ -18,7 +18,7 @@ * limitations under the License. * ============LICENSE_END============================================ * =================================================================== - * + * */ package org.onap.clamp.clds.client.req.policy; @@ -26,11 +26,8 @@ package org.onap.clamp.clds.client.req.policy; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; -import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.Date; -import java.util.List; import java.util.Map; import java.util.UUID; @@ -46,7 +43,6 @@ import org.onap.policy.api.ConfigRequestParameters; import org.onap.policy.api.DeletePolicyCondition; import org.onap.policy.api.DeletePolicyParameters; import org.onap.policy.api.PolicyChangeResponse; -import org.onap.policy.api.PolicyConfig; import org.onap.policy.api.PolicyConfigException; import org.onap.policy.api.PolicyConfigType; import org.onap.policy.api.PolicyEngine; @@ -95,7 +91,7 @@ public class PolicyClient { * @return The response message of policy */ public String sendBrmsPolicy(Map<AttributeType, Map<String, String>> attributes, ModelProperties prop, - String policyRequestUuid) { + String policyRequestUuid) { PolicyParameters policyParameters = new PolicyParameters(); // Set Policy Type(Mandatory) policyParameters.setPolicyConfigType(PolicyConfigType.BRMS_PARAM); @@ -160,7 +156,7 @@ public class PolicyClient { * @return The answer from policy call */ public String sendBasePolicyInOther(String configBody, String configPolicyName, ModelProperties prop, - String policyRequestUuid) { + String policyRequestUuid) { PolicyParameters policyParameters = new PolicyParameters(); // Set Policy Type policyParameters.setPolicyConfigType(PolicyConfigType.Base); @@ -181,7 +177,7 @@ public class PolicyClient { /** * Perform send of Microservice policy in OTHER type. - * + * * @param configBody * The config policy string body * @param prop @@ -224,8 +220,7 @@ public class PolicyClient { String responseMessage = ""; Date startTime = new Date(); try { - List<Integer> versions = getVersions(policyNamePrefix, prop); - if (versions.isEmpty()) { + if (!checkPolicyExists(policyNamePrefix, prop)) { LoggingUtils.setTargetContext("Policy", "createPolicy"); logger.info("Attempting to create policy for action=" + prop.getActionCd()); response = getPolicyEngine().createPolicy(policyParameters); @@ -313,8 +308,8 @@ public class PolicyClient { } /** - * Use Get Config Policy API to retrieve the versions for a policy. Return - * versions in sorted order. Return empty list if none found. + * Use list Policy API to retrieve the policy. Return true if policy exists + * otherwise return false. * * @param policyNamePrefix * The Policy Name Prefix @@ -324,8 +319,8 @@ public class PolicyClient { * @throws PolicyConfigException * In case of issues with policy engine */ - protected List<Integer> getVersions(String policyNamePrefix, ModelProperties prop) throws PolicyConfigException { - ArrayList<Integer> versions = new ArrayList<>(); + protected boolean checkPolicyExists(String policyNamePrefix, ModelProperties prop) throws PolicyConfigException { + boolean policyexists = false; ConfigRequestParameters configRequestParameters = new ConfigRequestParameters(); String policyName = ""; if (prop.getPolicyUniqueId() != null && !prop.getPolicyUniqueId().isEmpty()) { @@ -336,27 +331,20 @@ public class PolicyClient { logger.info("Search in Policy Engine for policyName=" + policyName); configRequestParameters.setPolicyName(policyName); try { - Collection<PolicyConfig> response = getPolicyEngine().getConfig(configRequestParameters); - for (PolicyConfig policyConfig : response) { - if (policyConfig.getPolicyVersion() != null) { - Integer version = Integer.valueOf(policyConfig.getPolicyVersion()); - versions.add(version); - } else { - logger.warn("Policy version was null, unable to convert it to Integer"); - } + Collection<String> response = getPolicyEngine().listConfig(configRequestParameters); + if (response != null && !response.isEmpty()) { + policyexists = true; } - Collections.sort(versions); - logger.info("Policy versions.size()=" + versions.size()); } catch (PolicyConfigException e) { // just print warning - if no policy version found logger.warn("policy not found...policy name - " + policyName, e); } - return versions; + return policyexists; } /** * This method create a new policy engine. - * + * * @return A new policy engine */ private synchronized PolicyEngine getPolicyEngine() { @@ -381,8 +369,7 @@ public class PolicyClient { String deletePolicyResponse = ""; try { String policyNamePrefix = refProp.getStringValue(POLICY_MS_NAME_PREFIX_PROPERTY_NAME); - List<Integer> versions = getVersions(policyNamePrefix, prop); - if (!versions.isEmpty()) { + if (checkPolicyExists(policyNamePrefix, prop)) { String policyType = refProp.getStringValue(POLICY_MSTYPE_PROPERTY_NAME); deletePolicyResponse = deletePolicy(prop, policyType); } @@ -415,8 +402,7 @@ public class PolicyClient { String deletePolicyResponse = ""; try { String policyNamePrefix = refProp.getStringValue(POLICY_OP_NAME_PREFIX_PROPERTY_NAME); - List<Integer> versions = getVersions(policyNamePrefix, prop); - if (!versions.isEmpty()) { + if (checkPolicyExists(policyNamePrefix, prop)) { String policyType = refProp.getStringValue(POLICY_OP_TYPE_PROPERTY_NAME); deletePolicyResponse = deletePolicy(prop, policyType); } diff --git a/src/main/java/org/onap/clamp/clds/config/AAFConfiguration.java b/src/main/java/org/onap/clamp/clds/config/AAFConfiguration.java index 13dccdacb..8bc6f69dc 100644 --- a/src/main/java/org/onap/clamp/clds/config/AAFConfiguration.java +++ b/src/main/java/org/onap/clamp/clds/config/AAFConfiguration.java @@ -29,7 +29,6 @@ import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; -import org.springframework.stereotype.Component; @Configuration @Profile("clamp-aaf-authentication") @@ -54,7 +53,11 @@ public class AAFConfiguration { public FilterRegistrationBean cadiFilterRegistration() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(cadiFilter()); - registration.addUrlPatterns("/restservices/*"); + registration.addUrlPatterns("/restservices/clds/v1/clds/*"); + registration.addUrlPatterns("/restservices/clds/v1/cldsTempate/*"); + registration.addUrlPatterns("/restservices/clds/v1/tosca/*"); + registration.addUrlPatterns("/restservices/clds/v1/dictionary/*"); + registration.addUrlPatterns("/restservices/clds/v1/user/*"); //registration.addUrlPatterns("*"); registration.setName("cadiFilter"); registration.setOrder(0); diff --git a/src/main/java/org/onap/clamp/clds/dao/CldsDao.java b/src/main/java/org/onap/clamp/clds/dao/CldsDao.java index a3771aa54..54a5196c1 100644 --- a/src/main/java/org/onap/clamp/clds/dao/CldsDao.java +++ b/src/main/java/org/onap/clamp/clds/dao/CldsDao.java @@ -18,7 +18,7 @@ * limitations under the License. * ============LICENSE_END============================================ * =================================================================== - * + * */ package org.onap.clamp.clds.dao; @@ -29,13 +29,19 @@ import com.att.eelf.configuration.EELFManager; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; import javax.sql.DataSource; import org.onap.clamp.clds.model.CldsDbServiceCache; +import org.onap.clamp.clds.model.CldsDictionary; +import org.onap.clamp.clds.model.CldsDictionaryItem; import org.onap.clamp.clds.model.CldsEvent; import org.onap.clamp.clds.model.CldsModel; import org.onap.clamp.clds.model.CldsModelInstance; @@ -43,6 +49,7 @@ import org.onap.clamp.clds.model.CldsModelProp; import org.onap.clamp.clds.model.CldsMonitoringDetails; import org.onap.clamp.clds.model.CldsServiceData; import org.onap.clamp.clds.model.CldsTemplate; +import org.onap.clamp.clds.model.CldsToscaModel; import org.onap.clamp.clds.model.ValueItem; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; @@ -72,7 +79,13 @@ public class CldsDao { private static final String HEALTHCHECK = "Select 1"; private static final String V_CONTROL_NAME_PREFIX = "v_control_name_prefix"; private static final String V_CONTROL_NAME_UUID = "v_control_name_uuid"; - + + private SimpleJdbcCall procInsertToscaModel; + private SimpleJdbcCall procInsertNewToscaModelVersion; + private SimpleJdbcCall procInsertDictionary; + private SimpleJdbcCall procInsertDictionaryElement; + + private static final String DATE_FORMAT = "MM-dd-yyyy HH:mm:ss"; /** * Log message when instantiating */ @@ -95,6 +108,11 @@ public class CldsDao { this.procInsModelInstance = new SimpleJdbcCall(dataSource).withProcedureName("ins_model_instance"); this.procDelAllModelInstances = new SimpleJdbcCall(dataSource).withProcedureName("del_all_model_instances"); this.procDeleteModel = new SimpleJdbcCall(dataSource).withProcedureName("del_model"); + this.procInsertToscaModel = new SimpleJdbcCall(dataSource).withProcedureName("set_tosca_model"); + this.procInsertNewToscaModelVersion = new SimpleJdbcCall(dataSource) + .withProcedureName("set_new_tosca_model_version"); + this.procInsertDictionary = new SimpleJdbcCall(dataSource).withProcedureName("set_dictionary"); + this.procInsertDictionaryElement = new SimpleJdbcCall(dataSource).withProcedureName("set_dictionary_elements"); } /** @@ -116,15 +134,14 @@ public class CldsDao { CldsModel model = new CldsModel(); model.setName(modelName); SqlParameterSource in = new MapSqlParameterSource().addValue("v_model_name", modelName) - .addValue(V_CONTROL_NAME_UUID, controlNameUuid); + .addValue(V_CONTROL_NAME_UUID, controlNameUuid); Map<String, Object> out = logSqlExecution(procGetModel, in); populateModelProperties(model, out); return model; } /** - * Get a model and template information from the database given the model - * name. + * Get a model and template information from the database given the model name. * * @param modelName * @return model @@ -134,14 +151,12 @@ public class CldsDao { model.setName(modelName); SqlParameterSource in = new MapSqlParameterSource().addValue("v_model_name", modelName); Map<String, Object> out = logSqlExecution(procGetModelTemplate, in); - // todo : rationalize populateModelProperties(model, out); Map<String, Object> modelResults = logSqlExecution(procGetModel, in); Object modelResultObject = modelResults.get("#result-set-1"); - if (modelResultObject != null && modelResultObject instanceof ArrayList) { - List<Object> modelInstanceRs = (List<Object>) modelResultObject; - for (Object currModelInstance : modelInstanceRs) { - if (currModelInstance != null && currModelInstance instanceof HashMap) { + if (modelResultObject instanceof ArrayList) { + for (Object currModelInstance : (List<Object>) modelResultObject) { + if (currModelInstance instanceof HashMap) { HashMap<String, String> modelInstanceMap = (HashMap<String, String>) currModelInstance; CldsModelInstance modelInstance = new CldsModelInstance(); modelInstance.setModelInstanceId(modelInstanceMap.get("model_instance_id")); @@ -156,8 +171,8 @@ public class CldsDao { } /** - * Update model in the database using parameter values and return updated - * model object. + * Update model in the database using parameter values and return updated model + * object. * * @param model * @param userid @@ -165,12 +180,12 @@ public class CldsDao { */ public CldsModel setModel(CldsModel model, String userid) { SqlParameterSource in = new MapSqlParameterSource().addValue("v_model_name", model.getName()) - .addValue("v_template_id", model.getTemplateId()).addValue("v_user_id", userid) - .addValue("v_model_prop_text", model.getPropText()) - .addValue("v_model_blueprint_text", model.getBlueprintText()) - .addValue("v_service_type_id", model.getTypeId()).addValue("v_deployment_id", model.getDeploymentId()) - .addValue("v_control_name_prefix", model.getControlNamePrefix()) - .addValue(V_CONTROL_NAME_UUID, model.getControlNameUuid()); + .addValue("v_template_id", model.getTemplateId()).addValue("v_user_id", userid) + .addValue("v_model_prop_text", model.getPropText()) + .addValue("v_model_blueprint_text", model.getBlueprintText()) + .addValue("v_service_type_id", model.getTypeId()).addValue("v_deployment_id", model.getDeploymentId()) + .addValue("v_control_name_prefix", model.getControlNamePrefix()) + .addValue(V_CONTROL_NAME_UUID, model.getControlNameUuid()); Map<String, Object> out = logSqlExecution(procSetModel, in); model.setControlNamePrefix((String) out.get(V_CONTROL_NAME_PREFIX)); model.setControlNameUuid((String) out.get(V_CONTROL_NAME_UUID)); @@ -184,8 +199,8 @@ public class CldsDao { } /** - * Inserts new modelInstance in the database using parameter values and - * return updated model object. + * Inserts new modelInstance in the database using parameter values and return + * updated model object. * * @param model * @param modelInstancesList @@ -203,9 +218,9 @@ public class CldsDao { logger.debug("v_vm_name={}", currModelInstance.getVmName()); logger.debug("v_location={}", currModelInstance.getLocation()); SqlParameterSource in = new MapSqlParameterSource() - .addValue(V_CONTROL_NAME_UUID, model.getControlNameUuid()) - .addValue("v_vm_name", currModelInstance.getVmName()) - .addValue("v_location", currModelInstance.getLocation()); + .addValue(V_CONTROL_NAME_UUID, model.getControlNameUuid()) + .addValue("v_vm_name", currModelInstance.getVmName()) + .addValue("v_location", currModelInstance.getLocation()); Map<String, Object> out = logSqlExecution(procInsModelInstance, in); model.setId((String) (out.get("v_model_id"))); CldsModelInstance modelInstance = new CldsModelInstance(); @@ -230,10 +245,10 @@ public class CldsDao { public CldsEvent insEvent(String modelName, String controlNamePrefix, String controlNameUuid, CldsEvent cldsEvent) { CldsEvent event = new CldsEvent(); SqlParameterSource in = new MapSqlParameterSource().addValue("v_model_name", modelName) - .addValue(V_CONTROL_NAME_PREFIX, controlNamePrefix).addValue(V_CONTROL_NAME_UUID, controlNameUuid) - .addValue("v_user_id", cldsEvent.getUserid()).addValue("v_action_cd", cldsEvent.getActionCd()) - .addValue("v_action_state_cd", cldsEvent.getActionStateCd()) - .addValue("v_process_instance_id", cldsEvent.getProcessInstanceId()); + .addValue(V_CONTROL_NAME_PREFIX, controlNamePrefix).addValue(V_CONTROL_NAME_UUID, controlNameUuid) + .addValue("v_user_id", cldsEvent.getUserid()).addValue("v_action_cd", cldsEvent.getActionCd()) + .addValue("v_action_state_cd", cldsEvent.getActionStateCd()) + .addValue("v_process_instance_id", cldsEvent.getProcessInstanceId()); Map<String, Object> out = logSqlExecution(procInsEvent, in); event.setId((String) (out.get("v_event_id"))); return event; @@ -253,7 +268,7 @@ public class CldsDao { */ public void updEvent(String eventId, String processInstanceId) { SqlParameterSource in = new MapSqlParameterSource().addValue("v_event_id", eventId) - .addValue("v_process_instance_id", processInstanceId); + .addValue("v_process_instance_id", processInstanceId); logSqlExecution(procUpdEvent, in); } @@ -276,9 +291,9 @@ public class CldsDao { */ public void setTemplate(CldsTemplate template, String userid) { SqlParameterSource in = new MapSqlParameterSource().addValue("v_template_name", template.getName()) - .addValue("v_user_id", userid).addValue("v_template_bpmn_text", template.getBpmnText()) - .addValue("v_template_image_text", template.getImageText()) - .addValue("v_template_doc_text", template.getPropText()); + .addValue("v_user_id", userid).addValue("v_template_bpmn_text", template.getBpmnText()) + .addValue("v_template_image_text", template.getImageText()) + .addValue("v_template_doc_text", template.getPropText()); Map<String, Object> out = logSqlExecution(procSetTemplate, in); template.setId((String) (out.get("v_template_id"))); template.setBpmnUserid((String) (out.get("v_template_bpmn_user_id"))); @@ -333,10 +348,10 @@ public class CldsDao { try { String getCldsServiceSQL = "SELECT * , TIMESTAMPDIFF(SECOND, timestamp, CURRENT_TIMESTAMP()) FROM clds_service_cache where invariant_service_id = ? "; cldsServiceData = jdbcTemplateObject.queryForObject(getCldsServiceSQL, new Object[] { invariantUUID }, - new CldsServiceDataMapper()); + new CldsServiceDataMapper()); if (cldsServiceData != null) { logger.info("CldsServiceData found in cache for Service Invariant ID:" - + cldsServiceData.getServiceInvariantUUID()); + + cldsServiceData.getServiceInvariantUUID()); return cldsServiceData; } else { logger.warn("CldsServiceData not found in cache for Service Invariant ID:" + invariantUUID); @@ -351,13 +366,13 @@ public class CldsDao { public void setCldsServiceCache(CldsDbServiceCache cldsDBServiceCache) { if (cldsDBServiceCache != null && cldsDBServiceCache.getInvariantId() != null - && cldsDBServiceCache.getServiceId() != null) { + && cldsDBServiceCache.getServiceId() != null) { String invariantUuid = cldsDBServiceCache.getInvariantId(); String serviceUuid = cldsDBServiceCache.getServiceId(); InputStream is = cldsDBServiceCache.getCldsDataInstream(); String insertCldsServiceCacheSql = "INSERT INTO clds_service_cache" - + "(invariant_service_id,service_id,timestamp,object_data) VALUES" - + "(?,?,CURRENT_TIMESTAMP,?) ON DUPLICATE KEY UPDATE invariant_service_id = VALUES(invariant_service_id) , timestamp = CURRENT_TIMESTAMP , object_data = VALUES(object_data) "; + + "(invariant_service_id,service_id,timestamp,object_data) VALUES" + + "(?,?,CURRENT_TIMESTAMP,?) ON DUPLICATE KEY UPDATE invariant_service_id = VALUES(invariant_service_id) , timestamp = CURRENT_TIMESTAMP , object_data = VALUES(object_data) "; jdbcTemplateObject.update(insertCldsServiceCacheSql, invariantUuid, serviceUuid, is); } } @@ -377,13 +392,13 @@ public class CldsDao { /** * Method to get deployed/active models with model properties. - * + * * @return list of CldsModelProp */ public List<CldsModelProp> getDeployedModelProperties() { List<CldsModelProp> cldsModelPropList = new ArrayList<>(); String modelsSql = "select m.model_id, m.model_name, mp.model_prop_id, mp.model_prop_text FROM model m, model_properties mp, event e " - + "WHERE m.model_prop_id = mp.model_prop_id and m.event_id = e.event_id and e.action_cd = 'DEPLOY'"; + + "WHERE m.model_prop_id = mp.model_prop_id and m.event_id = e.event_id and e.action_cd = 'DEPLOY'"; List<Map<String, Object>> rows = jdbcTemplateObject.queryForList(modelsSql); CldsModelProp cldsModelProp = null; for (Map<String, Object> row : rows) { @@ -399,23 +414,22 @@ public class CldsDao { /** * Method to get deployed/active models with model properties. - * + * * @return list of CLDS-Monitoring-Details: CLOSELOOP_NAME | Close loop name - * used in the CLDS application (prefix: ClosedLoop- + unique - * ClosedLoop ID) MODEL_NAME | Model Name in CLDS application - * SERVICE_TYPE_ID | TypeId returned from the DCAE application when - * the ClosedLoop is submitted (DCAEServiceTypeRequest generated in - * DCAE application). DEPLOYMENT_ID | Id generated when the - * ClosedLoop is deployed in DCAE. TEMPLATE_NAME | Template used to - * generate the ClosedLoop model. ACTION_CD | Current state of the - * ClosedLoop in CLDS application. + * used in the CLDS application (prefix: ClosedLoop- + unique ClosedLoop + * ID) MODEL_NAME | Model Name in CLDS application SERVICE_TYPE_ID | + * TypeId returned from the DCAE application when the ClosedLoop is + * submitted (DCAEServiceTypeRequest generated in DCAE application). + * DEPLOYMENT_ID | Id generated when the ClosedLoop is deployed in DCAE. + * TEMPLATE_NAME | Template used to generate the ClosedLoop model. + * ACTION_CD | Current state of the ClosedLoop in CLDS application. */ public List<CldsMonitoringDetails> getCLDSMonitoringDetails() { - SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss"); - List<CldsMonitoringDetails> cldsMonitoringDetailsList = new ArrayList<CldsMonitoringDetails>(); + SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); + List<CldsMonitoringDetails> cldsMonitoringDetailsList = new ArrayList<>(); String modelsSql = "SELECT CONCAT(M.CONTROL_NAME_PREFIX, M.CONTROL_NAME_UUID) AS CLOSELOOP_NAME , M.MODEL_NAME, M.SERVICE_TYPE_ID, M.DEPLOYMENT_ID, T.TEMPLATE_NAME, E.ACTION_CD, E.USER_ID, E.TIMESTAMP " - + "FROM MODEL M, TEMPLATE T, EVENT E " - + "WHERE M.TEMPLATE_ID = T.TEMPLATE_ID AND M.EVENT_ID = E.EVENT_ID " + "ORDER BY ACTION_CD"; + + "FROM MODEL M, TEMPLATE T, EVENT E " + "WHERE M.TEMPLATE_ID = T.TEMPLATE_ID AND M.EVENT_ID = E.EVENT_ID " + + "ORDER BY ACTION_CD"; List<Map<String, Object>> rows = jdbcTemplateObject.queryForList(modelsSql); CldsMonitoringDetails cldsMonitoringDetails = null; for (Map<String, Object> row : rows) { @@ -435,16 +449,15 @@ public class CldsDao { /** * Method to delete model from database. - * + * * @param modelName */ public void deleteModel(String modelName) { SqlParameterSource in = new MapSqlParameterSource().addValue("v_model_name", modelName); logSqlExecution(procDeleteModel, in); } - + private void populateModelProperties(CldsModel model, Map out) { - // todo : rationalize model.setControlNamePrefix((String) out.get(V_CONTROL_NAME_PREFIX)); model.setControlNameUuid((String) out.get(V_CONTROL_NAME_UUID)); model.setId((String) (out.get("v_model_id"))); @@ -461,6 +474,252 @@ public class CldsDao { model.getEvent().setProcessInstanceId((String) out.get("v_event_process_instance_id")); model.getEvent().setUserid((String) out.get("v_event_user_id")); model.setTypeId((String) out.get("v_service_type_id")); - model.setDeploymentId((String) out.get("v_deployment_id")); - } + model.setDeploymentId((String) out.get("v_deployment_id")); + } + + /** + * Method to retrieve a tosca models by Policy Type from database. + * + * @param policyType + * @return List of CldsToscaModel + */ + public List<CldsToscaModel> getAllToscaModels() { + return getToscaModel(null, null); + } + + /** + * Method to retrieve a tosca models by Policy Type from database. + * + * @param policyType + * @return List of CldsToscaModel + */ + public List<CldsToscaModel> getToscaModelByPolicyType(String policyType) { + return getToscaModel(null, policyType); + } + + /** + * Method to retrieve a tosca models by toscaModelName, version from database. + * + * @param policyType + * @return List of CldsToscaModel + */ + public List<CldsToscaModel> getToscaModelByName(String toscaModelName) { + return getToscaModel(toscaModelName, null); + } + + // Retrieve the latest tosca model for a policy type or by tosca model name + + private List<CldsToscaModel> getToscaModel(String toscaModelName, String policyType) { + SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); + List<CldsToscaModel> cldsToscaModels = new ArrayList<>(); + MapSqlParameterSource params = new MapSqlParameterSource(); + + String toscaModelSql = "SELECT tm.tosca_model_name, tm.tosca_model_id, tm.policy_type, tmr.tosca_model_revision_id, tmr.version, tmr.user_id, tmr.createdTimestamp, tmr.lastUpdatedTimestamp, tmr.tosca_model_yaml FROM tosca_model tm, tosca_model_revision tmr WHERE tm.tosca_model_id = tmr.tosca_model_id "; + if (toscaModelName != null) { + toscaModelSql += " AND tm.tosca_model_name = :toscaModelName"; + params.addValue("toscaModelName", toscaModelName); + } + if (policyType != null) { + toscaModelSql += " AND tm.policy_type = :policyType"; + params.addValue("policyType", policyType); + } + toscaModelSql += " AND tmr.version = (select max(version) from tosca_model_revision st where tmr.tosca_model_id=st.tosca_model_id)"; + + Optional.ofNullable(jdbcTemplateObject.queryForList(toscaModelSql, params)).orElse(Collections.emptyList()).forEach(row -> { + CldsToscaModel cldsToscaModel = new CldsToscaModel(); + cldsToscaModel.setId((String) row.get("tosca_model_id")); + cldsToscaModel.setPolicyType((String) row.get("policy_type")); + cldsToscaModel.setToscaModelName((String) row.get("tosca_model_name")); + cldsToscaModel.setUserId((String) row.get("user_id")); + cldsToscaModel.setRevisionId((String) row.get("tosca_model_revision_id")); + cldsToscaModel.setVersion(((Double) row.get("version"))); + cldsToscaModel.setCreatedDate(sdf.format(row.get("createdTimestamp"))); + cldsToscaModel.setToscaModelYaml((String) row.get("tosca_model_yaml")); + cldsToscaModels.add(cldsToscaModel); + }); + return cldsToscaModels; + } + + /** + * Method to upload a new version of Tosca Model Yaml in Database + * + * @param cldsToscaModel + * @param userId + * @return CldsToscaModel + * + */ + public CldsToscaModel updateToscaModelWithNewVersion(CldsToscaModel cldsToscaModel, String userId) { + SqlParameterSource in = new MapSqlParameterSource().addValue("v_tosca_model_id", cldsToscaModel.getId()) + .addValue("v_version", cldsToscaModel.getVersion()) + .addValue("v_tosca_model_yaml", cldsToscaModel.getToscaModelYaml()) + .addValue("v_tosca_model_json", cldsToscaModel.getToscaModelJson()).addValue("v_user_id", userId); + Map<String, Object> out = logSqlExecution(procInsertNewToscaModelVersion, in); + cldsToscaModel.setRevisionId((String) (out.get("v_revision_id"))); + return cldsToscaModel; + } + + /** + * Method to upload a new Tosca model Yaml in DB. Default version is 1.0 + * + * @param cldsToscaModel + * @param userId + * @return CldsToscaModel + */ + public CldsToscaModel insToscaModel(CldsToscaModel cldsToscaModel, String userId) { + SqlParameterSource in = new MapSqlParameterSource() + .addValue("v_tosca_model_name", cldsToscaModel.getToscaModelName()) + .addValue("v_policy_type", cldsToscaModel.getPolicyType()) + .addValue("v_tosca_model_yaml", cldsToscaModel.getToscaModelYaml()) + .addValue("v_tosca_model_json", cldsToscaModel.getToscaModelJson()) + .addValue("v_version", cldsToscaModel.getVersion()).addValue("v_user_id", userId); + Map<String, Object> out = logSqlExecution(procInsertToscaModel, in); + cldsToscaModel.setId((String) (out.get("v_tosca_model_id"))); + cldsToscaModel.setRevisionId((String) (out.get("v_revision_id"))); + cldsToscaModel.setUserId((String) out.get("v_user_id")); + return cldsToscaModel; + } + + /** + * Method to insert a new Dictionary in Database + * + * @param cldsDictionary + */ + public void insDictionary(CldsDictionary cldsDictionary) { + SqlParameterSource in = new MapSqlParameterSource() + .addValue("v_dictionary_name", cldsDictionary.getDictionaryName()) + .addValue("v_user_id", cldsDictionary.getCreatedBy()); + Map<String, Object> out = logSqlExecution(procInsertDictionary, in); + cldsDictionary.setDictionaryId((String) (out.get("v_dictionary_id"))); + } + + /** + * Method to update Dictionary with new info in Database + * + * @param dictionaryId + * @param cldsDictionary + * @param userId + */ + public void updateDictionary(String dictionaryId, CldsDictionary cldsDictionary, String userId) { + String dictionarySql = "UPDATE dictionary SET dictionary_name = :dictionary_name, modified_by = :modified_by WHERE dictionary_id = :dictionary_id"; + SqlParameterSource namedParameters = new MapSqlParameterSource() + .addValue("dictionary_name", cldsDictionary.getDictionaryName()).addValue("modified_by", userId) + .addValue("dictionary_id", dictionaryId); + jdbcTemplateObject.update(dictionarySql, namedParameters); + cldsDictionary.setUpdatedBy(userId); + } + + /** + * Method to get list of Dictionaries from the Database + * + * @param dictionaryId + * @param dictionaryName + * @return + */ + public List<CldsDictionary> getDictionary(String dictionaryId, String dictionaryName) { + SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); + List<CldsDictionary> dictionaries = new ArrayList<>(); + String dictionarySql = "SELECT dictionary_id, dictionary_name, created_by, modified_by, timestamp FROM dictionary WHERE "; + MapSqlParameterSource namedParameters = new MapSqlParameterSource(); + Optional.ofNullable(dictionaryName).ifPresent(dn -> namedParameters.addValue("dictionary_name", dn)); + Optional.ofNullable(dictionaryId).ifPresent(dn -> namedParameters.addValue("dictionary_id", dn)); + dictionarySql += Optional.ofNullable(namedParameters.getParameterNames()).filter(a -> a.length > 0) + .map(Arrays::stream).map(s -> s.map(param -> param + " = :" + param).collect(Collectors.joining(" AND "))) + .orElse("1"); + + Optional.ofNullable(jdbcTemplateObject.queryForList(dictionarySql, namedParameters)).orElse(Collections.emptyList()).forEach(row -> { + CldsDictionary cldsDictionary = new CldsDictionary(); + cldsDictionary.setDictionaryId((String) row.get("dictionary_id")); + cldsDictionary.setDictionaryName((String) row.get("dictionary_name")); + cldsDictionary.setCreatedBy((String) row.get("created_by")); + cldsDictionary.setUpdatedBy((String) row.get("modified_by")); + cldsDictionary.setLastUpdatedDate(sdf.format(row.get("timestamp"))); + dictionaries.add(cldsDictionary); + }); + return dictionaries; + } + + /** + * Method to insert a new Dictionary Element for given dictionary in Database + * + * @param cldsDictionaryItem + * @param userId + */ + public void insDictionarElements(CldsDictionaryItem cldsDictionaryItem, String userId) { + SqlParameterSource in = new MapSqlParameterSource() + .addValue("v_dictionary_id", cldsDictionaryItem.getDictionaryId()) + .addValue("v_dict_element_name", cldsDictionaryItem.getDictElementName()) + .addValue("v_dict_element_short_name", cldsDictionaryItem.getDictElementShortName()) + .addValue("v_dict_element_description", cldsDictionaryItem.getDictElementDesc()) + .addValue("v_dict_element_type", cldsDictionaryItem.getDictElementType()).addValue("v_user_id", userId); + Map<String, Object> out = logSqlExecution(procInsertDictionaryElement, in); + cldsDictionaryItem.setDictElementId((String) (out.get("v_dict_element_id"))); + } + + /** + * Method to update Dictionary Elements with new info for a given dictionary in + * Database + * + * @param dictionaryElementId + * @param cldsDictionaryItem + * @param userId + */ + public void updateDictionaryElements(String dictionaryElementId, CldsDictionaryItem cldsDictionaryItem, + String userId) { + + String dictionarySql = "UPDATE dictionary_elements SET dict_element_name = :dict_element_name, dict_element_short_name = :dict_element_short_name, dict_element_description = :dict_element_description,dict_element_type=:dict_element_type, modified_by = :modified_by WHERE dict_element_id = :dict_element_id"; + SqlParameterSource namedParameters = new MapSqlParameterSource() + .addValue("dict_element_name", cldsDictionaryItem.getDictElementName()) + .addValue("dict_element_short_name", cldsDictionaryItem.getDictElementShortName()) + .addValue("dict_element_description", cldsDictionaryItem.getDictElementDesc()) + .addValue("dict_element_type", cldsDictionaryItem.getDictElementType()) + .addValue("modified_by", userId) + .addValue("dict_element_id", dictionaryElementId); + jdbcTemplateObject.update(dictionarySql, namedParameters); + cldsDictionaryItem.setUpdatedBy(userId); + } + + /** + * Method to get list of all dictionary elements for a given dictionary in the + * Database + * + * @param dictionaryName + * @param dictionaryId + * @param dictElementShortName + * @return + */ + public List<CldsDictionaryItem> getDictionaryElements(String dictionaryName, String dictionaryId, + String dictElementShortName) { + SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); + List<CldsDictionaryItem> dictionaryItems = new ArrayList<>(); + MapSqlParameterSource namedParameters = new MapSqlParameterSource(); + String dictionarySql = "SELECT de.dict_element_id, de.dictionary_id, de.dict_element_name, de.dict_element_short_name, de.dict_element_description, de.dict_element_type, de.created_by, de.modified_by, de.timestamp " + + "FROM dictionary_elements de, dictionary d WHERE de.dictionary_id = d.dictionary_id "; + if (dictionaryId != null) { + dictionarySql+=" AND d.dictionary_id = :dictionaryId"; + namedParameters.addValue("dictionaryId", dictionaryId); + } + if (dictElementShortName!=null) { + dictionarySql+=" AND de.dict_element_short_name = :dictElementShortName"; + namedParameters.addValue("dictElementShortName", dictElementShortName); + } + if (dictionaryName!=null) { + dictionarySql+=" AND dictionary_name = :dictionaryName"; + namedParameters.addValue("dictionaryName", dictionaryName); + } + + Optional.ofNullable(jdbcTemplateObject.queryForList(dictionarySql,namedParameters)).orElse(Collections.emptyList()).forEach(row -> { + CldsDictionaryItem dictionaryItem = new CldsDictionaryItem(); + dictionaryItem.setDictElementId((String) row.get("dict_element_id")); + dictionaryItem.setDictionaryId((String) row.get("dictionary_id")); + dictionaryItem.setDictElementName((String) row.get("dict_element_name")); + dictionaryItem.setDictElementShortName((String) row.get("dict_element_short_name")); + dictionaryItem.setDictElementDesc((String) row.get("dict_element_description")); + dictionaryItem.setDictElementType((String) row.get("dict_element_type")); + dictionaryItem.setCreatedBy((String) row.get("created_by")); + dictionaryItem.setUpdatedBy((String) row.get("modified_by")); + dictionaryItem.setLastUpdatedDate(sdf.format(row.get("timestamp"))); + dictionaryItems.add(dictionaryItem); + }); + return dictionaryItems; + } } diff --git a/src/main/java/org/onap/clamp/clds/model/CldsDictionary.java b/src/main/java/org/onap/clamp/clds/model/CldsDictionary.java new file mode 100644 index 000000000..a9b003d4d --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/model/CldsDictionary.java @@ -0,0 +1,164 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2018 AT&T Intellectual Property. 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.clamp.clds.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; + +import java.util.ArrayList; +import java.util.List; + +import org.onap.clamp.clds.dao.CldsDao; + +/** + * Represents a CLDS Dictionary. + */ +@JsonInclude(Include.NON_NULL) +public class CldsDictionary { + + private String dictionaryId; + private String dictionaryName; + private String createdBy; + private String updatedBy; + private String lastUpdatedDate; + private List<CldsDictionaryItem> cldsDictionaryItems = new ArrayList<>(); + + /** + * Creates or updates dictionary item for a dictionary in DB + * + * @param dictionaryName + * @param cldsDao + * @param userId + */ + public void save(String dictionaryName, CldsDao cldsDao, String userId) { + List<CldsDictionary> list = cldsDao.getDictionary(this.getDictionaryId(), dictionaryName); + if (list != null && !list.isEmpty()) { + CldsDictionary cldsDictionary = list.stream().findFirst().get(); + if (!cldsDictionary.getDictionaryName().equalsIgnoreCase(this.getDictionaryName())) { + cldsDao.updateDictionary(cldsDictionary.getDictionaryId(), this, userId); + this.setCreatedBy(cldsDictionary.getCreatedBy()); + } else { + this.setDictionaryId(cldsDictionary.getDictionaryId()); + this.setCreatedBy(cldsDictionary.getCreatedBy()); + this.setUpdatedBy(cldsDictionary.getUpdatedBy()); + this.setLastUpdatedDate(cldsDictionary.getLastUpdatedDate()); + } + } else { + this.setCreatedBy(userId); + this.setUpdatedBy(userId); + cldsDao.insDictionary(this); + } + } + + /** + * @return the dictionaryId + */ + public String getDictionaryId() { + return dictionaryId; + } + + /** + * @param dictionaryId + * the dictionaryId to set + */ + public void setDictionaryId(String dictionaryId) { + this.dictionaryId = dictionaryId; + } + + /** + * @return the dictionaryName + */ + public String getDictionaryName() { + return dictionaryName; + } + + /** + * @param dictionaryName + * the dictionaryName to set + */ + public void setDictionaryName(String dictionaryName) { + this.dictionaryName = dictionaryName; + } + + /** + * @return the createdBy + */ + public String getCreatedBy() { + return createdBy; + } + + /** + * @param createdBy + * the createdBy to set + */ + public void setCreatedBy(String createdBy) { + this.createdBy = createdBy; + } + + /** + * @return the updatedBy + */ + public String getUpdatedBy() { + return updatedBy; + } + + /** + * @param updatedby + * the updatedBy to set + */ + public void setUpdatedBy(String updatedby) { + updatedBy = updatedby; + } + + /** + * @return the lastUpdatedDate + */ + public String getLastUpdatedDate() { + return lastUpdatedDate; + } + + /** + * @param lastUpdatedDate + * the lastUpdatedDate to set + */ + public void setLastUpdatedDate(String lastUpdatedDate) { + this.lastUpdatedDate = lastUpdatedDate; + } + + /** + * @return the cldsDictionaryItems + */ + public List<CldsDictionaryItem> getCldsDictionaryItems() { + return cldsDictionaryItems; + } + + /** + * @param cldsDictionaryItems + * the cldsDictionaryItems to set + */ + public void setCldsDictionaryItems(List<CldsDictionaryItem> cldsDictionaryItems) { + this.cldsDictionaryItems = cldsDictionaryItems; + } + +} diff --git a/src/main/java/org/onap/clamp/clds/model/CldsDictionaryItem.java b/src/main/java/org/onap/clamp/clds/model/CldsDictionaryItem.java new file mode 100644 index 000000000..87ba9fe84 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/model/CldsDictionaryItem.java @@ -0,0 +1,205 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2018 AT&T Intellectual Property. 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.clamp.clds.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; + +import java.util.List; + +import org.onap.clamp.clds.dao.CldsDao; + +/** + * Represents a CLDS Dictionary Item. + */ +@JsonInclude(Include.NON_NULL) +public class CldsDictionaryItem { + + private String dictElementId; + private String dictionaryId; + private String dictElementName; + private String dictElementShortName; + private String dictElementDesc; + private String dictElementType; + private String createdBy; + private String updatedBy; + private String lastUpdatedDate; + + public void save(String dictionaryName, CldsDao cldsDao, String userId) { + // Check if dictionary exists. + List<CldsDictionary> list = cldsDao.getDictionary(this.getDictionaryId(), dictionaryName); + if (list != null && !list.isEmpty()) { + // Dictionary found. We can add or update the dictionary element + CldsDictionary cldsDictionary = list.stream().findFirst().get(); + List<CldsDictionaryItem> dictionaryItems = cldsDao.getDictionaryElements(dictionaryName, + cldsDictionary.getDictionaryId(), this.getDictElementShortName()); + if (dictionaryItems != null && !dictionaryItems.isEmpty()) { + CldsDictionaryItem item = dictionaryItems.stream().findFirst().get(); + cldsDao.updateDictionaryElements(item.getDictElementId(), this, userId); + this.setCreatedBy(item.getCreatedBy()); + + } else { + this.setCreatedBy(userId); + this.setUpdatedBy(userId); + cldsDao.insDictionarElements(this, userId); + } + } + } + + /** + * @return the dictElementId + */ + public String getDictElementId() { + return dictElementId; + } + + /** + * @param dictElementId + * the dictElementId to set + */ + public void setDictElementId(String dictElementId) { + this.dictElementId = dictElementId; + } + + /** + * @return the dictionaryId + */ + public String getDictionaryId() { + return dictionaryId; + } + + /** + * @param dictionaryId + * the dictionaryId to set + */ + public void setDictionaryId(String dictionaryId) { + this.dictionaryId = dictionaryId; + } + + /** + * @return the dictElementName + */ + public String getDictElementName() { + return dictElementName; + } + + /** + * @param dictElementName + * the dictElementName to set + */ + public void setDictElementName(String dictElementName) { + this.dictElementName = dictElementName; + } + + /** + * @return the dictElementShortName + */ + public String getDictElementShortName() { + return dictElementShortName; + } + + /** + * @param dictElementShortName + * the dictElementShortName to set + */ + public void setDictElementShortName(String dictElementShortName) { + this.dictElementShortName = dictElementShortName; + } + + /** + * @return the dictElementDesc + */ + public String getDictElementDesc() { + return dictElementDesc; + } + + /** + * @param dictElementDesc + * the dictElementDesc to set + */ + public void setDictElementDesc(String dictElementDesc) { + this.dictElementDesc = dictElementDesc; + } + + /** + * @return the dictElementType + */ + public String getDictElementType() { + return dictElementType; + } + + /** + * @param dictElementType + * the dictElementType to set + */ + public void setDictElementType(String dictElementType) { + this.dictElementType = dictElementType; + } + + /** + * @return the createdBy + */ + public String getCreatedBy() { + return createdBy; + } + + /** + * @param createdBy + * the createdBy to set + */ + public void setCreatedBy(String createdBy) { + this.createdBy = createdBy; + } + + /** + * @return the updatedBy + */ + public String getUpdatedBy() { + return updatedBy; + } + + /** + * @param updatedby + * the updatedBy to set + */ + public void setUpdatedBy(String updatedby) { + updatedBy = updatedby; + } + + /** + * @return the lastUpdatedDate + */ + public String getLastUpdatedDate() { + return lastUpdatedDate; + } + + /** + * @param lastUpdatedDate + * the lastUpdatedDate to set + */ + public void setLastUpdatedDate(String lastUpdatedDate) { + this.lastUpdatedDate = lastUpdatedDate; + } + +} diff --git a/src/main/java/org/onap/clamp/clds/model/CldsEvent.java b/src/main/java/org/onap/clamp/clds/model/CldsEvent.java index 0867b962e..8d3807b76 100644 --- a/src/main/java/org/onap/clamp/clds/model/CldsEvent.java +++ b/src/main/java/org/onap/clamp/clds/model/CldsEvent.java @@ -29,37 +29,38 @@ import org.onap.clamp.clds.dao.CldsDao; * Represent a CLDS Event. */ public class CldsEvent { - public static final String ACTION_TEST = "TEST"; - public static final String ACTION_CREATE = "CREATE"; - public static final String ACTION_MODIFY = "MODIFY"; - public static final String ACTION_SUBMIT = "SUBMIT"; + public static final String ACTION_TEST = "TEST"; + public static final String ACTION_CREATE = "CREATE"; + public static final String ACTION_MODIFY = "MODIFY"; + public static final String ACTION_SUBMIT = "SUBMIT"; // an update before model is active - public static final String ACTION_RESUBMIT = "RESUBMIT"; + public static final String ACTION_RESUBMIT = "RESUBMIT"; // For simplified models - public static final String ACTION_SUBMITDCAE = "SUBMITDCAE"; + public static final String ACTION_SUBMITDCAE = "SUBMITDCAE"; + public static final String ACTION_SUBMITPOLICY = "SUBMITPOLICY"; // only from dcae - public static final String ACTION_DISTRIBUTE = "DISTRIBUTE"; + public static final String ACTION_DISTRIBUTE = "DISTRIBUTE"; // only from dcae - public static final String ACTION_DEPLOY = "DEPLOY"; + public static final String ACTION_DEPLOY = "DEPLOY"; // only from dcae - public static final String ACTION_UNDEPLOY = "UNDEPLOY"; - public static final String ACTION_UPDATE = "UPDATE"; - public static final String ACTION_DELETE = "DELETE"; - public static final String ACTION_STOP = "STOP"; - public static final String ACTION_RESTART = "RESTART"; + public static final String ACTION_UNDEPLOY = "UNDEPLOY"; + public static final String ACTION_UPDATE = "UPDATE"; + public static final String ACTION_DELETE = "DELETE"; + public static final String ACTION_STOP = "STOP"; + public static final String ACTION_RESTART = "RESTART"; public static final String ACTION_STATE_INITIATED = "INITIATED"; - public static final String ACTION_STATE_SENT = "SENT"; + public static final String ACTION_STATE_SENT = "SENT"; public static final String ACTION_STATE_COMPLETED = "COMPLETED"; - public static final String ACTION_STATE_RECEIVED = "RECEIVED"; - public static final String ACTION_STATE_ERROR = "ERROR"; - public static final String ACTION_STATE_ANY = null; - - private String id; - private String actionCd; - private String actionStateCd; - private String processInstanceId; - private String userid; + public static final String ACTION_STATE_RECEIVED = "RECEIVED"; + public static final String ACTION_STATE_ERROR = "ERROR"; + public static final String ACTION_STATE_ANY = null; + + private String id; + private String actionCd; + private String actionStateCd; + private String processInstanceId; + private String userid; public String getId() { return id; diff --git a/src/main/java/org/onap/clamp/clds/model/CldsInfo.java b/src/main/java/org/onap/clamp/clds/model/CldsInfo.java index 382d4e89a..a24885f73 100644 --- a/src/main/java/org/onap/clamp/clds/model/CldsInfo.java +++ b/src/main/java/org/onap/clamp/clds/model/CldsInfo.java @@ -25,12 +25,14 @@ package org.onap.clamp.clds.model; public class CldsInfo { - private String userName; - private String cldsVersion; + private String userName; + private String cldsVersion; private boolean permissionReadCl; private boolean permissionUpdateCl; private boolean permissionReadTemplate; private boolean permissionUpdateTemplate; + private boolean permissionReadTosca; + private boolean permissionUpdateTosca; public String getUserName() { return userName; @@ -80,4 +82,20 @@ public class CldsInfo { this.permissionUpdateTemplate = permissionUpdateTemplate; } + public boolean isPermissionReadTosca() { + return permissionReadTosca; + } + + public void setPermissionReadTosca(boolean permissionReadTosca) { + this.permissionReadTosca = permissionReadTosca; + } + + public boolean isPermissionUpdateTosca() { + return permissionUpdateTosca; + } + + public void setPermissionUpdateTosca(boolean permissionUpdateTosca) { + this.permissionUpdateTosca = permissionUpdateTosca; + } + } diff --git a/src/main/java/org/onap/clamp/clds/model/CldsModel.java b/src/main/java/org/onap/clamp/clds/model/CldsModel.java index 8b2399565..55f4dfd64 100644 --- a/src/main/java/org/onap/clamp/clds/model/CldsModel.java +++ b/src/main/java/org/onap/clamp/clds/model/CldsModel.java @@ -139,7 +139,8 @@ public class CldsModel { } else if (event.isActionAndStateCd(CldsEvent.ACTION_DEPLOY, CldsEvent.ACTION_STATE_RECEIVED) || event.isActionAndStateCd(CldsEvent.ACTION_RESTART, CldsEvent.ACTION_STATE_ANY) || event.isActionAndStateCd(CldsEvent.ACTION_UPDATE, CldsEvent.ACTION_STATE_ANY) - || event.isActionAndStateCd(CldsEvent.ACTION_DEPLOY, CldsEvent.ACTION_STATE_ANY)) { + || event.isActionAndStateCd(CldsEvent.ACTION_DEPLOY, CldsEvent.ACTION_STATE_ANY) + || event.isActionAndStateCd(CldsEvent.ACTION_SUBMITPOLICY, CldsEvent.ACTION_STATE_ANY)) { status = STATUS_ACTIVE; } else if (event.isActionAndStateCd(CldsEvent.ACTION_STOP, CldsEvent.ACTION_STATE_ANY)) { status = STATUS_STOPPED; @@ -185,14 +186,15 @@ public class CldsModel { permittedActionCd = Arrays.asList(CldsEvent.ACTION_SUBMIT, CldsEvent.ACTION_TEST, CldsEvent.ACTION_DELETE); if (isSimplifiedModel()) { - permittedActionCd = Arrays.asList(CldsEvent.ACTION_SUBMITDCAE, CldsEvent.ACTION_TEST, - CldsEvent.ACTION_DELETE); + permittedActionCd = Arrays.asList(CldsEvent.ACTION_SUBMITDCAE, CldsEvent.ACTION_SUBMITPOLICY, + CldsEvent.ACTION_TEST, CldsEvent.ACTION_DELETE); } break; case CldsEvent.ACTION_MODIFY: permittedActionCd = Arrays.asList(CldsEvent.ACTION_RESUBMIT, CldsEvent.ACTION_DELETE); if (isSimplifiedModel()) { - permittedActionCd = Arrays.asList(CldsEvent.ACTION_SUBMITDCAE, CldsEvent.ACTION_DELETE); + permittedActionCd = Arrays.asList(CldsEvent.ACTION_SUBMITDCAE, CldsEvent.ACTION_SUBMITPOLICY, + CldsEvent.ACTION_DELETE); } break; case CldsEvent.ACTION_SUBMIT: @@ -202,6 +204,9 @@ public class CldsModel { case CldsEvent.ACTION_SUBMITDCAE: permittedActionCd = Arrays.asList(CldsEvent.ACTION_SUBMITDCAE, CldsEvent.ACTION_DELETE); break; + case CldsEvent.ACTION_SUBMITPOLICY: + permittedActionCd = Arrays.asList(CldsEvent.ACTION_UPDATE, CldsEvent.ACTION_STOP); + break; case CldsEvent.ACTION_DISTRIBUTE: permittedActionCd = Arrays.asList(CldsEvent.ACTION_DEPLOY, CldsEvent.ACTION_RESUBMIT, CldsEvent.ACTION_DELETE); @@ -226,10 +231,17 @@ public class CldsModel { case CldsEvent.ACTION_UPDATE: permittedActionCd = Arrays.asList(CldsEvent.ACTION_DEPLOY, CldsEvent.ACTION_UPDATE, CldsEvent.ACTION_STOP, CldsEvent.ACTION_UNDEPLOY); + if (isPolicyOnly()) { + permittedActionCd = Arrays.asList(CldsEvent.ACTION_UPDATE, CldsEvent.ACTION_STOP); + } break; case CldsEvent.ACTION_STOP: permittedActionCd = Arrays.asList(CldsEvent.ACTION_UPDATE, CldsEvent.ACTION_RESTART, CldsEvent.ACTION_UNDEPLOY); + if (isPolicyOnly()) { + permittedActionCd = Arrays.asList(CldsEvent.ACTION_UPDATE, CldsEvent.ACTION_RESTART, + CldsEvent.ACTION_DELETE); + } break; default: logger.warn("Invalid current actionCd: " + actionCd); @@ -252,6 +264,22 @@ public class CldsModel { return result; } + private boolean isPolicyOnly() { + boolean result = false; + try { + if (propText != null) { + JsonNode modelJson = JacksonUtils.getObjectMapperInstance().readTree(propText); + JsonNode policyOnlyJson = modelJson.get("policyOnly"); + if (policyOnlyJson != null && policyOnlyJson.asBoolean()) { + result = true; + } + } + } catch (IOException e) { + logger.error("Error while parsing propText json", e); + } + return result; + } + /** * Validate requestedActionCd - determine permittedActionCd and then check * if contained in permittedActionCd Throw IllegalArgumentException if diff --git a/src/main/java/org/onap/clamp/clds/model/CldsToscaModel.java b/src/main/java/org/onap/clamp/clds/model/CldsToscaModel.java new file mode 100644 index 000000000..4a2352527 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/model/CldsToscaModel.java @@ -0,0 +1,130 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2018 AT&T Intellectual Property. 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.clamp.clds.model; + +import java.util.List; + +import org.onap.clamp.clds.dao.CldsDao; + +public class CldsToscaModel extends CldsToscaModelRevision { + + private String id; + private String policyType; + private String toscaModelName; + private String toscaModelYaml; + + /** + * Creates or updates Tosca Model to DB + * + * @param cldsDao + * @param userId + */ + public CldsToscaModel save(CldsDao cldsDao, String userId) { + CldsToscaModel cldsToscaModel = null; + // TODO tosca parsing logic + this.setToscaModelJson("{}"); + this.setPolicyType("Aging");// TODO update with subString or node_type from the model name + List<CldsToscaModel> toscaModels = cldsDao.getToscaModelByName(this.getToscaModelName()); + if (toscaModels != null && !toscaModels.isEmpty()) { + CldsToscaModel toscaModel = toscaModels.stream().findFirst().get(); + // CldsToscaModelRevision modelRevision = + // revisions.stream().max(Comparator.comparingDouble(CldsToscaModelRevision::getVersion)).get(); + this.setVersion(incrementVersion(toscaModel.getVersion())); + this.setId(toscaModel.getId()); + this.setUserId(userId); + cldsToscaModel = cldsDao.updateToscaModelWithNewVersion(this, userId); + } else { + this.setVersion(1); + cldsToscaModel = cldsDao.insToscaModel(this, userId); + } + return cldsToscaModel; + } + + private double incrementVersion(double curVersion) { + return curVersion + 1; + } + + /** + * @return the id + */ + public String getId() { + return id; + } + + /** + * @param id + * the id to set + */ + public void setId(String id) { + this.id = id; + } + + /** + * @return the policyType + */ + public String getPolicyType() { + return policyType; + } + + /** + * @param policyType + * the policyType to set + */ + public void setPolicyType(String policyType) { + this.policyType = policyType; + } + + /** + * @return the toscaModelName + */ + public String getToscaModelName() { + return toscaModelName; + } + + /** + * @param toscaModelName + * the toscaModelName to set + */ + public void setToscaModelName(String toscaModelName) { + this.toscaModelName = toscaModelName; + } + + /** + * @return the toscaModelYaml + */ + @Override + public String getToscaModelYaml() { + return toscaModelYaml; + } + + /** + * @param toscaModelYaml + * the toscaModelYaml to set + */ + @Override + public void setToscaModelYaml(String toscaModelYaml) { + this.toscaModelYaml = toscaModelYaml; + } + +} diff --git a/src/main/java/org/onap/clamp/clds/model/CldsToscaModelDetails.java b/src/main/java/org/onap/clamp/clds/model/CldsToscaModelDetails.java new file mode 100644 index 000000000..5c6f4aa5d --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/model/CldsToscaModelDetails.java @@ -0,0 +1,132 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2018 AT&T Intellectual Property. 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.clamp.clds.model; + +import java.util.ArrayList; +import java.util.List; + +/** + * Represents a CLDS Tosca model + * + */ +public class CldsToscaModelDetails { + + private String id; + private String toscaModelName; + private String policyType; + private List<CldsToscaModelRevision> toscaModelRevisions = new ArrayList<>(); + private String userId; + private String lastUpdatedDate; + + /** + * @return the id + */ + public String getId() { + return id; + } + + /** + * @param id + * the id to set + */ + public void setId(String id) { + this.id = id; + } + + /** + * @return the toscaModelName + */ + public String getToscaModelName() { + return toscaModelName; + } + + /** + * @param toscaModelName + * the toscaModelName to set + */ + public void setToscaModelName(String toscaModelName) { + this.toscaModelName = toscaModelName; + } + + /** + * @return the policyType + */ + public String getPolicyType() { + return policyType; + } + + /** + * @param policyType + * the policyType to set + */ + public void setPolicyType(String policyType) { + this.policyType = policyType; + } + + /** + * @return the toscaModelRevisions + */ + public List<CldsToscaModelRevision> getToscaModelRevisions() { + return toscaModelRevisions; + } + + /** + * @param toscaModelRevisions + * the toscaModelRevisions to set + */ + public void setToscaModelRevisions(List<CldsToscaModelRevision> toscaModelRevisions) { + this.toscaModelRevisions = toscaModelRevisions; + } + + /** + * @return the userId + */ + public String getUserId() { + return userId; + } + + /** + * @param userId + * the userId to set + */ + public void setUserId(String userId) { + this.userId = userId; + } + + /** + * @return the lastUpdatedDate + */ + public String getLastUpdatedDate() { + return lastUpdatedDate; + } + + /** + * @param lastUpdatedDate + * the lastUpdatedDate to set + */ + public void setLastUpdatedDate(String lastUpdatedDate) { + this.lastUpdatedDate = lastUpdatedDate; + } + +} diff --git a/src/main/java/org/onap/clamp/clds/model/CldsToscaModelRevision.java b/src/main/java/org/onap/clamp/clds/model/CldsToscaModelRevision.java new file mode 100644 index 000000000..bfb0536ec --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/model/CldsToscaModelRevision.java @@ -0,0 +1,144 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2018 AT&T Intellectual Property. 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============================================ + * =================================================================== + * + */ + +/** + * Represents a CLDS Tosca model revision + * + */ +package org.onap.clamp.clds.model; + +public class CldsToscaModelRevision { + + private String revisionId; + private String toscaModelYaml; + private double version; + private String toscaModelJson; + private String userId; + private String createdDate; + private String lastUpdatedDate; + + /** + * @return the revisionId + */ + public String getRevisionId() { + return revisionId; + } + + /** + * @param revisionId + * the revisionId to set + */ + public void setRevisionId(String revisionId) { + this.revisionId = revisionId; + } + + /** + * @return the toscaModelYaml + */ + public String getToscaModelYaml() { + return toscaModelYaml; + } + + /** + * @param toscaModelYaml + * the toscaModelYaml to set + */ + public void setToscaModelYaml(String toscaModelYaml) { + this.toscaModelYaml = toscaModelYaml; + } + + /** + * @return the version + */ + public double getVersion() { + return version; + } + + /** + * @param version + * the version to set + */ + public void setVersion(double version) { + this.version = version; + } + + /** + * @return the toscaModelJson + */ + public String getToscaModelJson() { + return toscaModelJson; + } + + /** + * @param toscaModelJson + * the toscaModelJson to set + */ + public void setToscaModelJson(String toscaModelJson) { + this.toscaModelJson = toscaModelJson; + } + + /** + * @return the userId + */ + public String getUserId() { + return userId; + } + + /** + * @param userId + * the userId to set + */ + public void setUserId(String userId) { + this.userId = userId; + } + + /** + * @return the createdDate + */ + public String getCreatedDate() { + return createdDate; + } + + /** + * @param createdDate + * the createdDate to set + */ + public void setCreatedDate(String createdDate) { + this.createdDate = createdDate; + } + + /** + * @return the lastUpdatedDate + */ + public String getLastUpdatedDate() { + return lastUpdatedDate; + } + + /** + * @param lastUpdatedDate + * the lastUpdatedDate to set + */ + public void setLastUpdatedDate(String lastUpdatedDate) { + this.lastUpdatedDate = lastUpdatedDate; + } +} diff --git a/src/main/java/org/onap/clamp/clds/model/properties/PolicyItem.java b/src/main/java/org/onap/clamp/clds/model/properties/PolicyItem.java index 6e3e86593..7caba41f0 100644 --- a/src/main/java/org/onap/clamp/clds/model/properties/PolicyItem.java +++ b/src/main/java/org/onap/clamp/clds/model/properties/PolicyItem.java @@ -66,6 +66,7 @@ public class PolicyItem implements Cloneable { private String targetResourceId; private String recipeInfo; private String recipeLevel; + private String recipeInput; private Map<String, String> recipePayload; private String oapRop; private String oapLimit; @@ -76,7 +77,7 @@ public class PolicyItem implements Cloneable { * @param node * @throws IOException */ - public PolicyItem(JsonNode node) throws IOException { + public PolicyItem(JsonNode node) throws IOException { id = AbstractModelElement.getValueByName(node, "_id"); recipe = AbstractModelElement.getValueByName(node, "recipe"); maxRetries = AbstractModelElement.getIntValueByName(node, "maxRetries"); @@ -89,11 +90,10 @@ public class PolicyItem implements Cloneable { } recipeInfo = AbstractModelElement.getValueByName(node, "recipeInfo"); recipeLevel = AbstractModelElement.getValueByName(node, "recipeLevel"); - String payload = AbstractModelElement.getValueByName(node, "recipeInput"); - + recipeInput = AbstractModelElement.getValueByName(node, "recipeInput"); + String payload = AbstractModelElement.getValueByName(node, "recipePayload"); if (payload != null && !payload.isEmpty()) { - //recipePayload = JacksonUtils.getObjectMapperInstance().convertValue(payload, Map.class); recipePayload = JacksonUtils.getObjectMapperInstance().readValue(payload, new TypeReference<Map<String, String>>(){}); } oapRop = AbstractModelElement.getValueByName(node, "oapRop"); @@ -215,6 +215,10 @@ public class PolicyItem implements Cloneable { return recipeLevel; } + public String getRecipeInput() { + return recipeInput; + } + public Map<String, String> getRecipePayload() { return recipePayload; } diff --git a/src/main/java/org/onap/clamp/clds/service/CldsDictionaryService.java b/src/main/java/org/onap/clamp/clds/service/CldsDictionaryService.java new file mode 100644 index 000000000..5d5e218a2 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/service/CldsDictionaryService.java @@ -0,0 +1,149 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2018 AT&T Intellectual Property. 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.clamp.clds.service; + +import java.util.Date; +import java.util.List; + +import javax.annotation.PostConstruct; + +import org.onap.clamp.clds.dao.CldsDao; +import org.onap.clamp.clds.model.CldsDictionary; +import org.onap.clamp.clds.model.CldsDictionaryItem; +import org.onap.clamp.clds.util.LoggingUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; + +/** + * REST services to manage dictionary and dictionary items for Tosca Model + */ +@Component +public class CldsDictionaryService extends SecureServiceBase { + + @Value("${clamp.config.security.permission.type.tosca:permission-type-tosca}") + private String cldsPermissionTypeTosca; + @Value("${clamp.config.security.permission.instance:dev}") + private String cldsPermissionInstance; + private SecureServicePermission permissionReadTosca; + private SecureServicePermission permissionUpdateTosca; + + @Autowired + private CldsDao cldsDao; + + @PostConstruct + private final void initConstruct() { + permissionReadTosca = SecureServicePermission.create(cldsPermissionTypeTosca, cldsPermissionInstance, "read"); + permissionUpdateTosca = SecureServicePermission.create(cldsPermissionTypeTosca, cldsPermissionInstance, "update"); + } + + /** + * REST Service that creates or Updates a Dictionary + * + * @param dictionaryName + * @param cldsDictionary + * @return CldsDictionary that was created in DB. + */ + public ResponseEntity<CldsDictionary> createOrUpdateDictionary(String dictionaryName, + CldsDictionary cldsDictionary) { + Date startTime = new Date(); + LoggingUtils.setRequestContext("CldsDictionaryService: createOrUpdateDictionary", getPrincipalName()); + // TODO revisit based on new permissions + isAuthorized(permissionUpdateTosca); + if (cldsDictionary == null) { + cldsDictionary = new CldsDictionary(); + cldsDictionary.setDictionaryName(dictionaryName); + } + cldsDictionary.save(dictionaryName, cldsDao, getUserId()); + LoggingUtils.setTimeContext(startTime, new Date()); + LoggingUtils.setResponseContext("0", "createOrUpdateDictionary success", this.getClass().getName()); + auditLogger.info("createOrUpdateDictionary completed"); + return new ResponseEntity<>(cldsDictionary, HttpStatus.OK); + } + + /** + * REST Service that creates or Updates a Dictionary Elements for dictionary in DB + * + * @param dictionaryName + * @param dictionaryItem + * @return CldsDictionaryItem + * A dictionary items that was created or updated in DB + */ + public ResponseEntity<CldsDictionaryItem> createOrUpdateDictionaryElements(String dictionaryName, + CldsDictionaryItem dictionaryItem) { + Date startTime = new Date(); + LoggingUtils.setRequestContext("CldsDictionaryService: createOrUpdateDictionaryElements", getPrincipalName()); + // TODO revisit based on new permissions + isAuthorized(permissionUpdateTosca); + dictionaryItem.save(dictionaryName, cldsDao, getUserId()); + LoggingUtils.setTimeContext(startTime, new Date()); + LoggingUtils.setResponseContext("0", "createOrUpdateDictionaryElements success", this.getClass().getName()); + auditLogger.info("createOrUpdateDictionaryElements completed"); + return new ResponseEntity<>(dictionaryItem, HttpStatus.OK); + } + + /** + * Rest Service that retrieves all CLDS dictionary in DB + * + * @return CldsDictionary List + * List of CldsDictionary available in DB + */ + public ResponseEntity<List<CldsDictionary>> getAllDictionaryNames() { + Date startTime = new Date(); + LoggingUtils.setRequestContext("CldsDictionaryService: getAllDictionaryNames", getPrincipalName()); + // TODO revisit based on new permissions + isAuthorized(permissionReadTosca); + List<CldsDictionary> dictionaries = cldsDao.getDictionary(null, null); + LoggingUtils.setTimeContext(startTime, new Date()); + LoggingUtils.setResponseContext("0", "getAllDictionaryNames success", this.getClass().getName()); + auditLogger.info("getAllDictionaryNames completed"); + return new ResponseEntity<>(dictionaries, HttpStatus.OK); + } + + /** + * Rest Service that retrieves all CLDS dictionary items in DB for a give dictionary name + * + * @param dictionaryName + * @return CldsDictionaryItem list + * List of CLDS Dictionary items for a given dictionary name + */ + public ResponseEntity<List<CldsDictionaryItem>> getDictionaryElementsByName(String dictionaryName) { + Date startTime = new Date(); + LoggingUtils.setRequestContext("CldsDictionaryService: getDictionaryElementsByName", getPrincipalName()); + // TODO revisit based on new permissions + isAuthorized(permissionReadTosca); + List<CldsDictionaryItem> dictionaryItems = cldsDao.getDictionaryElements(dictionaryName, null, null); + LoggingUtils.setTimeContext(startTime, new Date()); + LoggingUtils.setResponseContext("0", "getAllDictionaryNames success", this.getClass().getName()); + auditLogger.info("getAllDictionaryNames completed"); + return new ResponseEntity<>(dictionaryItems, HttpStatus.OK); + } + + public ResponseEntity<?> deleteDictionary() { + return null; + } + +} diff --git a/src/main/java/org/onap/clamp/clds/service/CldsInfoProvider.java b/src/main/java/org/onap/clamp/clds/service/CldsInfoProvider.java index 6bebde921..7027cf1b5 100644 --- a/src/main/java/org/onap/clamp/clds/service/CldsInfoProvider.java +++ b/src/main/java/org/onap/clamp/clds/service/CldsInfoProvider.java @@ -45,6 +45,8 @@ class CldsInfoProvider { cldsInfo.setPermissionUpdateCl(cldsService.isAuthorizedNoException(cldsService.permissionUpdateCl)); cldsInfo.setPermissionReadTemplate(cldsService.isAuthorizedNoException(cldsService.permissionReadTemplate)); cldsInfo.setPermissionUpdateTemplate(cldsService.isAuthorizedNoException(cldsService.permissionUpdateTemplate)); + cldsInfo.setPermissionReadTosca(cldsService.isAuthorizedNoException(cldsService.permissionReadTosca)); + cldsInfo.setPermissionUpdateTosca(cldsService.isAuthorizedNoException(cldsService.permissionUpdateTosca)); return cldsInfo; } } 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 bc58ee69f..521f3ce27 100644 --- a/src/main/java/org/onap/clamp/clds/service/CldsService.java +++ b/src/main/java/org/onap/clamp/clds/service/CldsService.java @@ -105,6 +105,8 @@ public class CldsService extends SecureServiceBase { final SecureServicePermission permissionUpdateCl; final SecureServicePermission permissionReadTemplate; final SecureServicePermission permissionUpdateTemplate; + final SecureServicePermission permissionReadTosca; + final SecureServicePermission permissionUpdateTosca; private final CldsDao cldsDao; private final XslTransformer cldsBpmnTransformer; @@ -125,6 +127,7 @@ public class CldsService extends SecureServiceBase { @Value("${clamp.config.security.permission.type.cl.event:permission-type-cl-event}") String cldsPermissionTypeClEvent, @Value("${clamp.config.security.permission.type.filter.vf:permission-type-filter-vf}") String cldsPermissionTypeFilterVf, @Value("${clamp.config.security.permission.type.template:permission-type-template}") String cldsPermissionTypeTemplate, + @Value("${clamp.config.security.permission.type.tosca:permission-type-tosca}") String cldsPermissionTypeTosca, @Value("${clamp.config.security.permission.instance:dev}") String cldsPermissionInstance) { this.cldsDao = cldsDao; this.cldsBpmnTransformer = cldsBpmnTransformer; @@ -144,6 +147,9 @@ public class CldsService extends SecureServiceBase { "read"); permissionUpdateTemplate = SecureServicePermission.create(cldsPermissionTypeTemplate, cldsPermissionInstance, "update"); + permissionReadTosca = SecureServicePermission.create(cldsPermissionTypeTosca, cldsPermissionInstance, "read"); + permissionUpdateTosca = SecureServicePermission.create(cldsPermissionTypeTosca, cldsPermissionInstance, + "update"); } /* @@ -401,7 +407,7 @@ public class CldsService extends SecureServiceBase { retrievedModel = CldsModel.retrieve(cldsDao, modelName, false); } if (retrievedModel != null) { - if (!isTest && (actionCd.equalsIgnoreCase(CldsEvent.ACTION_SUBMIT) + if (!isTest && !errorCase && (actionCd.equalsIgnoreCase(CldsEvent.ACTION_SUBMIT) || actionCd.equalsIgnoreCase(CldsEvent.ACTION_RESUBMIT) || actionCd.equalsIgnoreCase(CldsEvent.ACTION_SUBMITDCAE))) { if (retrievedModel.getTemplateName().startsWith(CsarInstallerImpl.TEMPLATE_NAME_PREFIX)) { diff --git a/src/main/java/org/onap/clamp/clds/service/CldsToscaService.java b/src/main/java/org/onap/clamp/clds/service/CldsToscaService.java new file mode 100644 index 000000000..f33039f01 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/service/CldsToscaService.java @@ -0,0 +1,149 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2018 AT&T Intellectual Property. 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.clamp.clds.service; + +import java.util.Date; +import java.util.List; +import java.util.Optional; + +import javax.annotation.PostConstruct; + +import org.onap.clamp.clds.dao.CldsDao; +import org.onap.clamp.clds.model.CldsToscaModel; +import org.onap.clamp.clds.util.LoggingUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; + +/** + * REST services to manage Tosca Model + */ +@Component +public class CldsToscaService extends SecureServiceBase { + + @Value("${clamp.config.security.permission.type.tosca:permission-type-tosca}") + private String cldsPermissionTypeTosca; + @Value("${clamp.config.security.permission.instance:dev}") + private String cldsPermissionInstance; + private SecureServicePermission permissionReadTosca; + private SecureServicePermission permissionUpdateTosca; + + @Autowired + private CldsDao cldsDao; + + @PostConstruct + private final void initConstruct() { + permissionReadTosca = SecureServicePermission.create(cldsPermissionTypeTosca, cldsPermissionInstance, "read"); + permissionUpdateTosca = SecureServicePermission.create(cldsPermissionTypeTosca, cldsPermissionInstance, "update"); + } + + /** + * REST service to upload a new Tosca Model or update an existing Tosca model with new version. + * This API will parse the Tosca model yaml and generates a JSON schema out of it. + * + * @param toscaModelName + * Tosca model name to be used as a key + * @param cldsToscaModel + * Object containing the tosca model yaml + * + * @return clds tosca models - list of CLDS tosca models for a given policy type + */ + public ResponseEntity<?> parseToscaModelAndSave(String toscaModelName, CldsToscaModel cldsToscaModel ) { + Date startTime = new Date(); + LoggingUtils.setRequestContext("CldsToscaService: Parse Tosca model and save", getPrincipalName()); + //TODO revisit based on new permissions + isAuthorized(permissionUpdateTosca); + cldsToscaModel.setToscaModelName(toscaModelName); + cldsToscaModel = cldsToscaModel.save(cldsDao, getUserId()); + LoggingUtils.setTimeContext(startTime, new Date()); + LoggingUtils.setResponseContext("0", "Parse Tosca model and save success", this.getClass().getName()); + auditLogger.info("Parse Tosca model and save completed"); + return new ResponseEntity<>(cldsToscaModel, HttpStatus.CREATED); + } + + /** + * REST service to retrieve all Tosca models from the CLDS database. + * + * @return clds tosca models - list of CLDS tosca models + */ + public ResponseEntity<List<CldsToscaModel>> getAllToscaModels() { + + Date startTime = new Date(); + LoggingUtils.setRequestContext("CldsToscaService: Get All tosca models", getPrincipalName()); + //TODO revisit based on new permissions + isAuthorized(permissionReadTosca); + List<CldsToscaModel> cldsToscaModels = Optional.ofNullable(cldsDao.getAllToscaModels()).get(); + LoggingUtils.setTimeContext(startTime, new Date()); + LoggingUtils.setResponseContext("0", "Get All tosca models success", this.getClass().getName()); + auditLogger.info("Get All tosca models"); + return new ResponseEntity<>(cldsToscaModels, HttpStatus.OK); + } + + /** + * REST service that retrieves a CLDS Tosca model by model name from the database. + * + * @param toscaModelName + * Path param with tosca model name + * + * @return clds tosca model - CLDS tosca model for a given tosca model name + */ + public ResponseEntity<CldsToscaModel> getToscaModel(String toscaModelName) { + Date startTime = new Date(); + LoggingUtils.setRequestContext("CldsToscaService: Get tosca models by model name", getPrincipalName()); + //TODO revisit based on new permissions + isAuthorized(permissionReadTosca); + List<CldsToscaModel> cldsToscaModels = Optional.ofNullable(cldsDao.getToscaModelByName(toscaModelName)).get(); + LoggingUtils.setTimeContext(startTime, new Date()); + LoggingUtils.setResponseContext("0", "Get tosca models by model name success", this.getClass().getName()); + auditLogger.info("GET tosca models by model name completed"); + return new ResponseEntity<>(Optional.ofNullable(cldsToscaModels).get().stream().findFirst().get(), HttpStatus.OK); + } + + + /** + * REST service that retrieves a CLDS Tosca model lists for a policy type from the database. + * + * @param policyType + * @return clds tosca model - CLDS tosca model for a given policy type + */ + public ResponseEntity<CldsToscaModel> getToscaModelsByPolicyType(String policyType) { + Date startTime = new Date(); + LoggingUtils.setRequestContext("CldsToscaService: Get tosca models by policyType", getPrincipalName()); + //TODO revisit based on new permissions + isAuthorized(permissionReadTosca); + List<CldsToscaModel> cldsToscaModels = Optional.ofNullable(cldsDao.getToscaModelByPolicyType(policyType)).get(); + LoggingUtils.setTimeContext(startTime, new Date()); + LoggingUtils.setResponseContext("0", "Get tosca models by policyType success", this.getClass().getName()); + auditLogger.info("GET tosca models by policyType completed"); + return new ResponseEntity<>(Optional.ofNullable(cldsToscaModels).get().stream().findFirst().get(), HttpStatus.OK); + } + + public ResponseEntity<?> deleteToscaModelById(String toscaModeId) { + //TODO + return null; + } + +} diff --git a/src/main/java/org/onap/clamp/clds/util/ClampTimer.java b/src/main/java/org/onap/clamp/clds/util/ClampTimer.java deleted file mode 100644 index 794e2b486..000000000 --- a/src/main/java/org/onap/clamp/clds/util/ClampTimer.java +++ /dev/null @@ -1,54 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. 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.clamp.clds.util; - -import java.util.Timer; -import java.util.TimerTask; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; - -import org.springframework.security.core.context.SecurityContextHolder; - -/** - * Define the ClampTimer and CleanupTask, to clear up the Spring Authenticataion info when time is up. - */ - -public class ClampTimer { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(ClampTimer.class); - Timer timer; - - public ClampTimer(int seconds) { - timer = new Timer(); - timer.schedule(new CleanupTask(), seconds*1000); - } - - class CleanupTask extends TimerTask { - public void run() { - logger.debug("Time is up, clear the Spring authenticataion settings"); - //Clear up the spring authentication - SecurityContextHolder.getContext().setAuthentication(null); - //Terminate the timer thread - timer.cancel(); - } - } -}
\ No newline at end of file diff --git a/src/main/java/org/onap/clamp/clds/util/LoggingUtils.java b/src/main/java/org/onap/clamp/clds/util/LoggingUtils.java index cdb2e29c5..759edb1d9 100644 --- a/src/main/java/org/onap/clamp/clds/util/LoggingUtils.java +++ b/src/main/java/org/onap/clamp/clds/util/LoggingUtils.java @@ -18,7 +18,7 @@ * limitations under the License.
* ============LICENSE_END============================================
* ===================================================================
- *
+ *
*/
package org.onap.clamp.clds.util;
@@ -31,21 +31,21 @@ import java.net.InetAddress; import java.net.UnknownHostException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.TimeZone;
-import java.util.UUID;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
-import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.TimeZone;
+import java.util.UUID;
+
import javax.servlet.http.HttpServletRequest;
+import javax.validation.constraints.NotNull;
+import org.onap.clamp.clds.service.DefaultUserNameHandler;
import org.slf4j.MDC;
import org.slf4j.event.Level;
import org.springframework.security.core.context.SecurityContextHolder;
-import org.onap.clamp.clds.service.DefaultUserNameHandler;
-
/**
* This class handles the special info that appear in the log, like RequestID,
* time context, ...
@@ -66,7 +66,7 @@ public class LoggingUtils { * Constructor
*/
public LoggingUtils(final EELFLogger loggerP) {
- this.mLogger = checkNotNull(loggerP);
+ this.mLogger = checkNotNull(loggerP);
}
/**
@@ -86,7 +86,7 @@ public class LoggingUtils { MDC.put("ServerIPAddress", InetAddress.getLocalHost().getHostAddress());
} catch (UnknownHostException e) {
logger.error("Failed to initiate setRequestContext", e);
- }
+ }
}
/**
@@ -149,7 +149,7 @@ public class LoggingUtils { * @return A string with the request ID
*/
public static String getRequestId() {
- String requestId = (String) MDC.get(ONAPLogConstants.MDCs.REQUEST_ID);
+ String requestId = MDC.get(ONAPLogConstants.MDCs.REQUEST_ID);
if (requestId == null || requestId.isEmpty()) {
requestId = UUID.randomUUID().toString();
MDC.put(ONAPLogConstants.MDCs.REQUEST_ID, requestId);
@@ -162,9 +162,9 @@ public class LoggingUtils { dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
return dateFormat;
}
-
-
-
+
+
+
/*********************************************************************************************
* Method for ONAP Application Logging Specification v1.2
********************************************************************************************/
@@ -181,7 +181,7 @@ public class LoggingUtils { final String requestID = defaultToUUID(request.getHeader(ONAPLogConstants.Headers.REQUEST_ID));
final String invocationID = defaultToUUID(request.getHeader(ONAPLogConstants.Headers.INVOCATION_ID));
final String partnerName = defaultToEmpty(request.getHeader(ONAPLogConstants.Headers.PARTNER_NAME));
-
+
// Default the partner name to the user name used to login to clamp
if (partnerName.equalsIgnoreCase(EMPTY_MESSAGE)) {
MDC.put(ONAPLogConstants.MDCs.PARTNER_NAME, new DefaultUserNameHandler().retrieveUserName(SecurityContextHolder.getContext()));
@@ -192,8 +192,8 @@ public class LoggingUtils { // depending on where you need them to appear, OR extend the
// ServiceDescriptor to add them.
MDC.put(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP,
- ZonedDateTime.now(ZoneOffset.UTC)
- .format(DateTimeFormatter.ISO_INSTANT));
+ ZonedDateTime.now(ZoneOffset.UTC)
+ .format(DateTimeFormatter.ISO_INSTANT));
MDC.put(ONAPLogConstants.MDCs.REQUEST_ID, requestID);
MDC.put(ONAPLogConstants.MDCs.INVOCATION_ID, invocationID);
MDC.put(ONAPLogConstants.MDCs.CLIENT_IP_ADDRESS, defaultToEmpty(request.getRemoteAddr()));
@@ -203,7 +203,7 @@ public class LoggingUtils { // Default the service name to the requestURI, in the event that
// no value has been provided.
if (serviceName == null ||
- serviceName.equalsIgnoreCase(EMPTY_MESSAGE)) {
+ serviceName.equalsIgnoreCase(EMPTY_MESSAGE)) {
MDC.put(ONAPLogConstants.MDCs.SERVICE_NAME, request.getRequestURI());
}
@@ -217,7 +217,7 @@ public class LoggingUtils { */
public void exiting(String code, String descrption, Level severity, ONAPLogConstants.ResponseStatus status) {
try {
- MDC.put(ONAPLogConstants.MDCs.RESPONSE_CODE, defaultToEmpty(code));
+ MDC.put(ONAPLogConstants.MDCs.RESPONSE_CODE, defaultToEmpty(code));
MDC.put(ONAPLogConstants.MDCs.RESPONSE_DESCRIPTION, defaultToEmpty(descrption));
MDC.put(ONAPLogConstants.MDCs.RESPONSE_SEVERITY, defaultToEmpty(severity));
MDC.put(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE, defaultToEmpty(status));
@@ -241,11 +241,11 @@ public class LoggingUtils { // Set standard HTTP headers on (southbound request) builder.
con.setRequestProperty(ONAPLogConstants.Headers.REQUEST_ID,
- defaultToEmpty(MDC.get(ONAPLogConstants.MDCs.REQUEST_ID)));
+ defaultToEmpty(MDC.get(ONAPLogConstants.MDCs.REQUEST_ID)));
con.setRequestProperty(ONAPLogConstants.Headers.INVOCATION_ID,
- invocationID);
+ invocationID);
con.setRequestProperty(ONAPLogConstants.Headers.PARTNER_NAME,
- defaultToEmpty(MDC.get(ONAPLogConstants.MDCs.PARTNER_NAME)));
+ defaultToEmpty(MDC.get(ONAPLogConstants.MDCs.PARTNER_NAME)));
invokeContext(targetEntity, targetServiceName, invocationID);
@@ -314,8 +314,8 @@ public class LoggingUtils { MDC.put(ONAPLogConstants.MDCs.TARGET_SERVICE_NAME, defaultToEmpty(targetServiceName));
MDC.put(ONAPLogConstants.MDCs.INVOCATIONID_OUT, invocationID);
MDC.put(ONAPLogConstants.MDCs.INVOKE_TIMESTAMP,
- ZonedDateTime.now(ZoneOffset.UTC)
- .format(DateTimeFormatter.ISO_INSTANT));
+ ZonedDateTime.now(ZoneOffset.UTC)
+ .format(DateTimeFormatter.ISO_INSTANT));
}
/**
diff --git a/src/main/resources/META-INF/resources/designer/partials/portfolios/extra_user_info.html b/src/main/resources/META-INF/resources/designer/partials/portfolios/extra_user_info.html index bf151d7fb..c66047ccc 100644 --- a/src/main/resources/META-INF/resources/designer/partials/portfolios/extra_user_info.html +++ b/src/main/resources/META-INF/resources/designer/partials/portfolios/extra_user_info.html @@ -38,7 +38,10 @@ <b style="font-size:14px;">User Permissions:</b> <div ng-if="userInfo['permissionReadTemplate']">Read Template</div> <div ng-if="userInfo['permissionReadCl']">Read Model</div> + <div ng-if="userInfo['permissionReadTosca']">Read Tosca</div> <div ng-if="userInfo['permissionUpdateCl']">Edit Model</div> + <div ng-if="userInfo['permissionUpdateTemplate']">Edit Template</div> + <div ng-if="userInfo['permissionUpdateTosca']">Edit Tosca</div> </div> </div> <div attribute-test="extrauserinfof" class="modal-footer"> diff --git a/src/main/resources/application-noaaf.properties b/src/main/resources/application-noaaf.properties index 35895539b..fe7eabc5e 100644 --- a/src/main/resources/application-noaaf.properties +++ b/src/main/resources/application-noaaf.properties @@ -102,7 +102,7 @@ async.queue.capacity=500 #For EELF logback file #com.att.eelf.logging.path= -com.att.eelf.logging.file=logback-default.xml +clamp.config.logback.filename=logback-default.xml #The log folder that will be used in logback.xml file clamp.config.log.path=/var/log/ONAP/clamp clamp.config.files.systemProperties=classpath:/system.properties @@ -211,5 +211,6 @@ clamp.config.security.permission.type.cl.manage=org.onap.clamp.clds.cl.manage clamp.config.security.permission.type.cl.event=org.onap.clds.cl.event clamp.config.security.permission.type.filter.vf=org.onap.clamp.clds.filter.vf clamp.config.security.permission.type.template=org.onap.clamp.clds.template +clamp.config.security.permission.type.tosca=org.onap.clamp.clds.tosca #This one indicates the type of instances (dev|prod|perf...), this must be set accordingly in clds-users.properties clamp.config.security.permission.instance=dev diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index b5069159f..9e2e3c979 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -64,7 +64,7 @@ server.ssl.key-store-type=PKCS12 server.ssl.key-alias=clamp@clamp.onap.org ## Config part for Client certificates -server.ssl.client-auth=need +server.ssl.client-auth=want server.ssl.trust-store=classpath:/clds/aaf/truststoreONAPall.jks server.ssl.trust-store-password=changeit @@ -118,8 +118,8 @@ async.max.pool.size=20 async.queue.capacity=500 #For EELF logback file -#com.att.eelf.logging.path= -com.att.eelf.logging.file=logback-default.xml +#clamp.config.logback.path= +clamp.config.logback.filename=logback-default.xml #The log folder that will be used in logback.xml file clamp.config.log.path=/var/log/ONAP/clamp clamp.config.files.systemProperties=classpath:/system.properties @@ -228,6 +228,7 @@ clamp.config.security.permission.type.cl.manage=org.onap.clamp.clds.cl.manage clamp.config.security.permission.type.cl.event=org.onap.clds.cl.event clamp.config.security.permission.type.filter.vf=org.onap.clamp.clds.filter.vf clamp.config.security.permission.type.template=org.onap.clamp.clds.template +clamp.config.security.permission.type.tosca=org.onap.clamp.clds.tosca #This one indicates the type of instances (dev|prod|perf...), this must be set accordingly in clds-users.properties clamp.config.security.permission.instance=dev @@ -236,7 +237,7 @@ clamp.config.cadi.keyFile=classpath:/clds/aaf/org.onap.clamp.keyfile clamp.config.cadi.cadiLoglevel=DEBUG clamp.config.cadi.cadiLatitude=37.78187 clamp.config.cadi.cadiLongitude=-122.26147 -clamp.config.cadi.aafLocateUrl=https://aaf-onap-beijing-test.osaaf.org +clamp.config.cadi.aafLocateUrl=https://aaf-onap-test.osaaf.org:8095 clamp.config.cadi.cadiKeystorePassword=enc:V_kq_EwDNb4itWp_lYfDGXIWJzemHGkhkZOxAQI9IHs clamp.config.cadi.cadiTruststorePassword=enc:Mj0YQqNCUKbKq2lPp1kTFQWeqLxaBXKNwd5F1yB1ukf #clamp.config.cadi.oauthTokenUrl=https://AAF_LOCATE_URL/AAF_NS.token:2.0/token diff --git a/src/main/resources/clds/camel/rest/clds-services.xml b/src/main/resources/clds/camel/rest/clds-services.xml index 1ea8213f5..e67fb162d 100644 --- a/src/main/resources/clds/camel/rest/clds-services.xml +++ b/src/main/resources/clds/camel/rest/clds-services.xml @@ -1,95 +1,181 @@ <rests xmlns="http://camel.apache.org/schema/spring"> - <rest> - <get uri="/clds/cldsDetails" outType="org.onap.clamp.clds.model.CldsMonitoringDetails" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=getCLDSDetails()" /> - </get> - <get uri="/clds/cldsInfo" outType="org.onap.clamp.clds.model.CldsInfo" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=getCldsInfo()" /> - </get> - <get uri="/healthcheck" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsHealthcheckService?method=gethealthcheck()" /> - </get> - <get uri="/clds/model/bpmn/{modelName}" produces="text/xml"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=getBpmnXml(${header.modelName})" /> - </get> - <get uri="/clds/model/image/{modelName}" produces="text/xml"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=getImageXml(${header.modelName})" /> - </get> - <get uri="/clds/model/{modelName}" outType="org.onap.clamp.clds.model.CldsModel" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=getModel(${header.modelName})" /> - </get> - <put uri="/clds/model/{modelName}" type="org.onap.clamp.clds.model.CldsModel" consumes="application/json" outType="org.onap.clamp.clds.model.CldsModel" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=putModel(${header.modelName},${body})" /> - </put> - <get uri="/clds/model-names" outType="org.onap.clamp.clds.model.ValueItem" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=getModelNames()" /> - </get> - <put uri="/clds/action/{action}/{modelName}?test={test}" type="org.onap.clamp.clds.model.CldsModel" consumes="application/json" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=putModelAndProcessAction(${header.action},${header.modelName},${header.test},${body})" /> - </put> - <post uri="/clds/dcae/event?test={test}" type="org.onap.clamp.clds.model.DcaeEvent" consumes="application/json" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=postDcaeEvent(${header.test},${body})" /> - </post> - <get uri="/clds/sdc/services" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=getSdcServices()" /> - </get> - <get uri="/clds/properties" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=getSdcProperties()" /> - </get> - <get uri="/clds/properties/{serviceInvariantUUID}?refresh={refresh}" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=getSdcPropertiesByServiceUUIDForRefresh(${header.serviceInvariantUUID},${header.refresh})" /> - </get> - <put uri="/clds/deploy/{modelName}" type="org.onap.clamp.clds.model.CldsModel" consumes="application/json" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=deployModel(${header.modelName},${body})" /> - </put> - <put uri="/clds/undeploy/{modelName}" type="org.onap.clamp.clds.model.CldsModel" consumes="application/json" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=unDeployModel(${header.modelName},${body})" /> - </put> - - - - - <get uri="/cldsTempate/template/bpmn/{templateName}" produces="text/xml"> - <to - uri="bean:org.onap.clamp.clds.service.CldsTemplateService?method=getBpmnTemplate(${header.templateName})" /> - </get> - <get uri="/cldsTempate/template/image/{templateName}" produces="text/xml"> - <to - uri="bean:org.onap.clamp.clds.service.CldsTemplateService?method=getImageXml(${header.templateName})" /> - </get> - <get uri="/cldsTempate/template/{templateName}" outType="org.onap.clamp.clds.model.CldsTemplate" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsTemplateService?method=getTemplate(${header.templateName})" /> - </get> - <put uri="/cldsTempate/template/{templateName}" type="org.onap.clamp.clds.model.CldsTemplate" consumes="application/json" outType="org.onap.clamp.clds.model.CldsTemplate" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsTemplateService?method=putTemplate(${header.templateName},${body})" /> - </put> - <get uri="/cldsTempate/template-names" outType="org.onap.clamp.clds.model.ValueItem" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsTemplateService?method=getTemplateNames()" /> - </get> - - - - <get uri="/user/getUser" produces="text/plain"> - <to - uri="bean:org.onap.clamp.clds.service.UserService?method=getUser()" /> - </get> - </rest> + <rest> + <get uri="/clds/cldsDetails" + outType="org.onap.clamp.clds.model.CldsMonitoringDetails" + produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsService?method=getCLDSDetails()" /> + </get> + <get uri="/clds/cldsInfo" + outType="org.onap.clamp.clds.model.CldsInfo" + produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsService?method=getCldsInfo()" /> + </get> + <get uri="/healthcheck" produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsHealthcheckService?method=gethealthcheck()" /> + </get> + <get uri="/clds/model/bpmn/{modelName}" produces="text/xml"> + <to + uri="bean:org.onap.clamp.clds.service.CldsService?method=getBpmnXml(${header.modelName})" /> + </get> + <get uri="/clds/model/image/{modelName}" produces="text/xml"> + <to + uri="bean:org.onap.clamp.clds.service.CldsService?method=getImageXml(${header.modelName})" /> + </get> + <get uri="/clds/model/{modelName}" + outType="org.onap.clamp.clds.model.CldsModel" + produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsService?method=getModel(${header.modelName})" /> + </get> + <put uri="/clds/model/{modelName}" + type="org.onap.clamp.clds.model.CldsModel" + consumes="application/json" + outType="org.onap.clamp.clds.model.CldsModel" + produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsService?method=putModel(${header.modelName},${body})" /> + </put> + <get uri="/clds/model-names" + outType="org.onap.clamp.clds.model.ValueItem" + produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsService?method=getModelNames()" /> + </get> + <put uri="/clds/action/{action}/{modelName}?test={test}" + type="org.onap.clamp.clds.model.CldsModel" + consumes="application/json" produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsService?method=putModelAndProcessAction(${header.action},${header.modelName},${header.test},${body})" /> + </put> + <post uri="/clds/dcae/event?test={test}" + type="org.onap.clamp.clds.model.DcaeEvent" + consumes="application/json" produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsService?method=postDcaeEvent(${header.test},${body})" /> + </post> + <get uri="/clds/sdc/services" produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsService?method=getSdcServices()" /> + </get> + <get uri="/clds/properties" produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsService?method=getSdcProperties()" /> + </get> + <get + uri="/clds/properties/{serviceInvariantUUID}?refresh={refresh}" + produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsService?method=getSdcPropertiesByServiceUUIDForRefresh(${header.serviceInvariantUUID},${header.refresh})" /> + </get> + <put uri="/clds/deploy/{modelName}" + type="org.onap.clamp.clds.model.CldsModel" + consumes="application/json" produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsService?method=deployModel(${header.modelName},${body})" /> + </put> + <put uri="/clds/undeploy/{modelName}" + type="org.onap.clamp.clds.model.CldsModel" + consumes="application/json" produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsService?method=unDeployModel(${header.modelName},${body})" /> + </put> + + + + + <get uri="/cldsTempate/template/bpmn/{templateName}" + produces="text/xml"> + <to + uri="bean:org.onap.clamp.clds.service.CldsTemplateService?method=getBpmnTemplate(${header.templateName})" /> + </get> + <get uri="/cldsTempate/template/image/{templateName}" + produces="text/xml"> + <to + uri="bean:org.onap.clamp.clds.service.CldsTemplateService?method=getImageXml(${header.templateName})" /> + </get> + <get uri="/cldsTempate/template/{templateName}" + outType="org.onap.clamp.clds.model.CldsTemplate" + produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsTemplateService?method=getTemplate(${header.templateName})" /> + </get> + <put uri="/cldsTempate/template/{templateName}" + type="org.onap.clamp.clds.model.CldsTemplate" + consumes="application/json" + outType="org.onap.clamp.clds.model.CldsTemplate" + produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsTemplateService?method=putTemplate(${header.templateName},${body})" /> + </put> + <get uri="/cldsTempate/template-names" + outType="org.onap.clamp.clds.model.ValueItem" + produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsTemplateService?method=getTemplateNames()" /> + </get> + + + <put uri="/tosca/models/{toscaModelName}" + type="org.onap.clamp.clds.model.CldsToscaModel" + consumes="application/json" produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsToscaService?method=parseToscaModelAndSave(${header.toscaModelName},${body})" /> + </put> + <get uri="/tosca/models/policyType/{policyType}" + produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsToscaService?method=getToscaModelsByPolicyType(${header.policyType})" /> + </get> + <get uri="/tosca/models" + outType="org.onap.clamp.clds.model.CldsToscaModel" + produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsToscaService?method=getAllToscaModels()" /> + </get> + <get uri="/tosca/models/{toscaModelName}" + outType="org.onap.clamp.clds.model.CldsToscaModel" + produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsToscaService?method=getToscaModel(${header.toscaModelName})" /> + </get> + + + <put uri="/dictionary/{dictionaryName}" + type="org.onap.clamp.clds.model.CldsDictionary" + outType="org.onap.clamp.clds.model.CldsDictionary" + consumes="application/json" produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsDictionaryService?method=createOrUpdateDictionary(${header.dictionaryName},${body})" /> + </put> + + <get uri="/dictionary" + outType="org.onap.clamp.clds.model.CldsDictionary" + produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsDictionaryService?method=getAllDictionaryNames()" /> + </get> + + <put uri="/dictionary/{dictionaryName}/items" + type="org.onap.clamp.clds.model.CldsDictionaryItem" + outType="org.onap.clamp.clds.model.CldsDictionaryItem" + consumes="application/json" produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsDictionaryService?method=createOrUpdateDictionaryElements(${header.dictionaryName},${body})" /> + </put> + + <get uri="/dictionary/{dictionaryName}/items" + outType="org.onap.clamp.clds.model.CldsDictionary" + produces="application/json"> + <to + uri="bean:org.onap.clamp.clds.service.CldsDictionaryService?method=getDictionaryElementsByName(${header.dictionaryName})" /> + </get> + + <get uri="/user/getUser" produces="text/plain"> + <to + uri="bean:org.onap.clamp.clds.service.UserService?method=getUser()" /> + </get> + </rest> </rests> diff --git a/src/main/resources/clds/clds-users.json b/src/main/resources/clds/clds-users.json index 18ab7d394..b4d73a29f 100644 --- a/src/main/resources/clds/clds-users.json +++ b/src/main/resources/clds/clds-users.json @@ -8,7 +8,9 @@ "org.onap.clamp.clds.cl.manage|dev|*", "org.onap.clamp.clds.filter.vf|dev|*", "org.onap.clamp.clds.template|dev|read", - "org.onap.clamp.clds.template|dev|update" + "org.onap.clamp.clds.template|dev|update", + "org.onap.clamp.clds.tosca|dev|read", + "org.onap.clamp.clds.tosca|dev|update" ] }, { @@ -21,7 +23,9 @@ "org.onap.clamp.clds.cl.manage|dev|*", "org.onap.clamp.clds.filter.vf|dev|*", "org.onap.clamp.clds.template|dev|read", - "org.onap.clamp.clds.template|dev|update" + "org.onap.clamp.clds.template|dev|update", + "org.onap.clamp.clds.tosca|dev|read", + "org.onap.clamp.clds.tosca|dev|update" ] } ] diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index dae39d3ac..086cc5356 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -1,9 +1,9 @@ <configuration scan="true" scanPeriod="60 seconds" debug="true"> <springProperty name="logbackFilePath" - source="com.att.eelf.logging.path" /> + source="clamp.config.logback.path" /> <springProperty name="logbackFileName" - source="com.att.eelf.logging.file" /> + source="clamp.config.logback.filename" /> <springProperty name="logDirectory" source="clamp.config.log.path" /> diff --git a/src/test/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyAttributesConstructorTest.java b/src/test/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyAttributesConstructorTest.java new file mode 100644 index 000000000..a6a209a1e --- /dev/null +++ b/src/test/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyAttributesConstructorTest.java @@ -0,0 +1,146 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2018 Nokia Intellectual Property. 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.clamp.clds.client.req.policy; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.collect.ImmutableMap; + +import java.io.IOException; +import java.net.URLDecoder; +import java.util.Map; + +import org.assertj.core.api.Assertions; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Matchers; +import org.mockito.Mockito; +import org.onap.clamp.clds.config.ClampProperties; +import org.onap.clamp.clds.model.properties.ModelProperties; +import org.onap.clamp.clds.model.properties.PolicyChain; +import org.onap.clamp.clds.util.ResourceFileUtil; +import org.onap.policy.api.AttributeType; +import org.onap.policy.controlloop.policy.ControlLoopPolicy; +import org.onap.policy.controlloop.policy.Policy; +import org.onap.policy.controlloop.policy.Target; +import org.onap.policy.controlloop.policy.TargetType; +import org.onap.policy.controlloop.policy.builder.BuilderException; +import org.yaml.snakeyaml.Yaml; + +public class OperationalPolicyAttributesConstructorTest { + + private static final String CONTROL_NAME = "ClosedLoop-d4629aee-970f-11e8-86c9-02552dda865e"; + private ModelProperties modelProperties; + private PolicyChain policyChain; + + @Before + public void setUp() throws Exception { + String modelProp = ResourceFileUtil + .getResourceAsString("example/model-properties/policy/modelBpmnProperties.json"); + modelProperties = new ModelProperties("CLAMPDemoVFW_v1_0_3af8daec-6f10-4027-a3540", CONTROL_NAME, "PUT", false, + "{}", modelProp); + policyChain = readPolicyChainFromResources(); + } + + @Test + public void shouldFormatRequestAttributes() throws IOException, BuilderException { + // given + ClampProperties mockClampProperties = createMockClampProperties(ImmutableMap.<String, String>builder() + .put("op.templateName", "ClosedLoopControlName").put("op.notificationTopic", "POLICY-CL-MGT") + .put("op.controller", "amsterdam").put("op.recipeTopic", "APPC").build()); + + // when + Map<AttributeType, Map<String, String>> requestAttributes = OperationalPolicyAttributesConstructor + .formatAttributes(mockClampProperties, modelProperties, "789875c1-e788-432f-9a76-eac8ed889734", + policyChain); + // then + Assertions.assertThat(requestAttributes).containsKeys(AttributeType.MATCHING, AttributeType.RULE); + Assertions.assertThat(requestAttributes.get(AttributeType.MATCHING)) + .contains(Assertions.entry(OperationalPolicyAttributesConstructor.CONTROLLER, "amsterdam")); + + Map<String, String> ruleParameters = requestAttributes.get(AttributeType.RULE); + Assertions.assertThat(ruleParameters).containsExactly( + Assertions.entry(OperationalPolicyAttributesConstructor.MAX_RETRIES, "3"), + Assertions.entry(OperationalPolicyAttributesConstructor.TEMPLATE_NAME, "ClosedLoopControlName"), + Assertions.entry(OperationalPolicyAttributesConstructor.NOTIFICATION_TOPIC, "POLICY-CL-MGT"), + Assertions.entry(OperationalPolicyAttributesConstructor.RECIPE_TOPIC, "APPC"), + Assertions.entry(OperationalPolicyAttributesConstructor.RECIPE, "healthCheck"), + Assertions.entry(OperationalPolicyAttributesConstructor.RESOURCE_ID, + "cdb69724-57d5-4a22-b96c-4c345150fd0e"), + Assertions.entry(OperationalPolicyAttributesConstructor.RETRY_TIME_LIMIT, "180"), + Assertions.entry(OperationalPolicyAttributesConstructor.CLOSED_LOOP_CONTROL_NAME, CONTROL_NAME + "_1")); + } + + @Test + public void shouldFormatRequestAttributesWithProperControlLoopYaml() throws IOException, BuilderException { + // given + ClampProperties mockClampProperties = createMockClampProperties( + ImmutableMap.<String, String>builder().put("op.templateName", "ClosedLoopControlName") + .put("op.operationTopic", "APPP-CL").put("op.notificationTopic", "POLICY-CL-MGT") + .put("op.controller", "amsterdam").put("op.recipeTopic", "APPC").build()); + + Policy expectedPolicy = new Policy("6f76ad0b-ea9d-4a92-8d7d-6a6367ce2c77", "healthCheck Policy", + "healthCheck Policy - the trigger (no parent) policy - created by CLDS", "APPC", null, + new Target(TargetType.VM, "cdb69724-57d5-4a22-b96c-4c345150fd0e"), "healthCheck", 3, 180); + + // when + Map<AttributeType, Map<String, String>> requestAttributes = OperationalPolicyAttributesConstructor + .formatAttributes(mockClampProperties, modelProperties, "789875c1-e788-432f-9a76-eac8ed889734", + policyChain); + + // then + Assertions.assertThat(requestAttributes).containsKeys(AttributeType.MATCHING, AttributeType.RULE); + Assertions.assertThat(requestAttributes.get(AttributeType.MATCHING)) + .contains(Assertions.entry("controller", "amsterdam")); + + Map<String, String> ruleParameters = requestAttributes.get(AttributeType.RULE); + Assertions.assertThat(ruleParameters).contains( + Assertions.entry(OperationalPolicyAttributesConstructor.OPERATION_TOPIC, "APPP-CL"), + Assertions.entry(OperationalPolicyAttributesConstructor.TEMPLATE_NAME, "ClosedLoopControlName"), + Assertions.entry(OperationalPolicyAttributesConstructor.NOTIFICATION_TOPIC, "POLICY-CL-MGT"), + Assertions.entry(OperationalPolicyAttributesConstructor.CLOSED_LOOP_CONTROL_NAME, CONTROL_NAME + "_1")); + + String controlLoopYaml = URLDecoder + .decode(ruleParameters.get(OperationalPolicyAttributesConstructor.CONTROL_LOOP_YAML), "UTF-8"); + ControlLoopPolicy controlLoopPolicy = new Yaml().load(controlLoopYaml); + + Assertions.assertThat(controlLoopPolicy.getControlLoop().getControlLoopName()).isEqualTo(CONTROL_NAME); + Assertions.assertThat(controlLoopPolicy.getPolicies()).usingElementComparatorIgnoringFields("id") + .containsExactly(expectedPolicy); + } + + private ClampProperties createMockClampProperties(ImmutableMap<String, String> propertiesMap) { + ClampProperties props = Mockito.mock(ClampProperties.class); + propertiesMap.forEach((property, value) -> Mockito + .when(props.getStringValue(Matchers.matches(property), Matchers.any())).thenReturn(value)); + return props; + } + + private PolicyChain readPolicyChainFromResources() throws IOException { + String policyChainText = ResourceFileUtil + .getResourceAsString("example/operational-policy/json-policy-chain.json"); + JsonNode policyChainNode = new ObjectMapper().readTree(policyChainText); + return new PolicyChain(policyChainNode); + } +} diff --git a/src/test/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyReqTest.java b/src/test/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyYamlFormatterTest.java index d5e3069b2..662beb2b4 100644 --- a/src/test/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyReqTest.java +++ b/src/test/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyYamlFormatterTest.java @@ -17,53 +17,48 @@ * See the License for the specific language governing permissions and * limitations under the License. * ============LICENSE_END============================================ + * Modifications copyright (c) 2018 Nokia * =================================================================== - * + * */ package org.onap.clamp.clds.client.req.policy; -import static org.assertj.core.api.Assertions.assertThat; - -import java.lang.reflect.InvocationTargetException; import java.util.Arrays; import java.util.List; + +import org.assertj.core.api.Assertions; import org.junit.Test; import org.onap.policy.controlloop.policy.PolicyResult; import org.onap.policy.sdc.Resource; import org.onap.policy.sdc.ResourceType; -public class OperationalPolicyReqTest { +public class OperationalPolicyYamlFormatterTest { @Test - public void shouldConvertGivenStringsToResourceObjects() - throws NoSuchMethodException, SecurityException, IllegalAccessException, - IllegalArgumentException, InvocationTargetException { + public void shouldConvertGivenStringsToResourceObjects() throws SecurityException, IllegalArgumentException { - //given + // given List<String> stringList = Arrays.asList("test1", "test2", "test3", "test4"); - //when - Resource[] resources = OperationalPolicyReq.convertToResource(stringList, ResourceType.VF); + // when + Resource[] resources = OperationalPolicyYamlFormatter.convertToResources(stringList, ResourceType.VF); - //then - assertThat(resources).extracting(Resource::getResourceName) - .containsExactly("test1", "test2", "test3", "test4"); + // then + Assertions.assertThat(resources).extracting(Resource::getResourceName).containsExactly("test1", "test2", + "test3", "test4"); } @Test - public void shouldConvertGivenStringsToPolicyResults() - throws NoSuchMethodException, SecurityException, IllegalAccessException, - IllegalArgumentException, InvocationTargetException { - //given + public void shouldConvertGivenStringsToPolicyResults() throws SecurityException, IllegalArgumentException { + // given List<String> stringList = Arrays.asList("FAILURE", "SUCCESS", "FAILURE_GUARD", "FAILURE_TIMEOUT"); - //when - PolicyResult[] policyResults = OperationalPolicyReq.convertToPolicyResult(stringList); + // when + PolicyResult[] policyResults = OperationalPolicyYamlFormatter.convertToPolicyResults(stringList); - //then - assertThat(policyResults) - .containsExactly(PolicyResult.FAILURE, PolicyResult.SUCCESS, - PolicyResult.FAILURE_GUARD, PolicyResult.FAILURE_TIMEOUT); + // then + Assertions.assertThat(policyResults).containsExactly(PolicyResult.FAILURE, PolicyResult.SUCCESS, + PolicyResult.FAILURE_GUARD, PolicyResult.FAILURE_TIMEOUT); } -} +}
\ No newline at end of file diff --git a/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java b/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java index 69dad53ec..344641a72 100644 --- a/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java @@ -17,8 +17,9 @@ * See the License for the specific language governing permissions and * limitations under the License. * ============LICENSE_END============================================ + * Modifications copyright (c) 2018 Nokia * =================================================================== - * + * */ package org.onap.clamp.clds.it; @@ -35,7 +36,7 @@ import java.util.Map; import org.junit.Test; import org.junit.runner.RunWith; -import org.onap.clamp.clds.client.req.policy.OperationalPolicyReq; +import org.onap.clamp.clds.client.req.policy.OperationalPolicyAttributesConstructor; import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.model.CldsEvent; import org.onap.clamp.clds.model.properties.ModelProperties; @@ -58,15 +59,15 @@ public class OperationPolicyReqItCase { @Test public void formatAttributesTest() throws IOException, BuilderException { String modelBpmnProp = ResourceFileUtil - .getResourceAsString("example/model-properties/policy/modelBpmnProperties.json"); + .getResourceAsString("example/model-properties/policy/modelBpmnProperties.json"); String modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/policy/modelBpmn.json"); ModelProperties modelProperties = new ModelProperties("testModel", "controlNameTest", CldsEvent.ACTION_SUBMIT, - true, modelBpmn, modelBpmnProp); + true, modelBpmn, modelBpmnProp); List<Map<AttributeType, Map<String, String>>> attributes = new ArrayList<>(); if (modelProperties.getType(Policy.class).isFound()) { for (PolicyChain policyChain : modelProperties.getType(Policy.class).getPolicyChains()) { - attributes.add(OperationalPolicyReq.formatAttributes(refProp, modelProperties, - modelProperties.getType(Policy.class).getId(), policyChain)); + attributes.add(OperationalPolicyAttributesConstructor.formatAttributes(refProp, modelProperties, + modelProperties.getType(Policy.class).getId(), policyChain)); } } assertFalse(attributes.isEmpty()); diff --git a/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java b/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java index c6fc09dbb..59fad9a69 100644 --- a/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java @@ -17,8 +17,9 @@ * See the License for the specific language governing permissions and * limitations under the License. * ============LICENSE_END============================================ + * Modifications copyright (c) 2018 Nokia * =================================================================== - * + * */ package org.onap.clamp.clds.it; @@ -35,7 +36,7 @@ import java.util.concurrent.TimeUnit; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.onap.clamp.clds.client.req.policy.OperationalPolicyReq; +import org.onap.clamp.clds.client.req.policy.OperationalPolicyAttributesConstructor; import org.onap.clamp.clds.client.req.policy.PolicyClient; import org.onap.clamp.clds.client.req.tca.TcaRequestFormatter; import org.onap.clamp.clds.config.ClampProperties; @@ -64,7 +65,8 @@ public class PolicyClientItCase { @Autowired private ClampProperties refProp; @Autowired - protected PolicyClient policyClient; + private PolicyClient policyClient; + String modelProp; String modelBpmnProp; String modelName; @@ -87,8 +89,8 @@ public class PolicyClientItCase { if (policy.isFound()) { for (PolicyChain policyChain : policy.getPolicyChains()) { String operationalPolicyRequestUuid = UUID.randomUUID().toString(); - Map<AttributeType, Map<String, String>> attributes = OperationalPolicyReq.formatAttributes(refProp, - prop, policy.getId(), policyChain); + Map<AttributeType, Map<String, String>> attributes = OperationalPolicyAttributesConstructor + .formatAttributes(refProp, prop, policy.getId(), policyChain); policyClient.sendBrmsPolicy(attributes, prop, operationalPolicyRequestUuid); } } @@ -162,14 +164,14 @@ public class PolicyClientItCase { assertNotNull(policyConfiguration.getNotificationUebServers()); assertEquals(8, policyConfiguration.getProperties().size()); assertTrue(((String) policyConfiguration.getProperties().get(PolicyConfiguration.PDP_URL1)) - .contains("/pdp/ , testpdp, alpha123")); + .contains("/pdp/ , testpdp, alpha123")); assertTrue(((String) policyConfiguration.getProperties().get(PolicyConfiguration.PDP_URL2)) - .contains("/pdp/ , testpdp, alpha123")); + .contains("/pdp/ , testpdp, alpha123")); assertTrue(((String) policyConfiguration.getProperties().get(PolicyConfiguration.PAP_URL)) - .contains("/pap/ , testpap, alpha123")); + .contains("/pap/ , testpap, alpha123")); assertEquals("websocket", policyConfiguration.getProperties().get(PolicyConfiguration.NOTIFICATION_TYPE)); assertEquals("localhost", - policyConfiguration.getProperties().get(PolicyConfiguration.NOTIFICATION_UEB_SERVERS)); + policyConfiguration.getProperties().get(PolicyConfiguration.NOTIFICATION_UEB_SERVERS)); assertEquals("python", policyConfiguration.getProperties().get(PolicyConfiguration.CLIENT_ID)); assertEquals("dGVzdA==", policyConfiguration.getProperties().get(PolicyConfiguration.CLIENT_KEY)); assertEquals("DEVL", policyConfiguration.getProperties().get(PolicyConfiguration.ENVIRONMENT)); diff --git a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java index 751d70404..295ccc59f 100644 --- a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java +++ b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java @@ -18,7 +18,7 @@ * limitations under the License. * ============LICENSE_END============================================ * =================================================================== - * + * */ package org.onap.clamp.clds.model.prop; @@ -52,10 +52,10 @@ public class ModelPropertiesTest { @Test public void testTcaModelDecoding() throws IOException { String modelBpmnProp = ResourceFileUtil - .getResourceAsString("example/model-properties/tca/modelBpmnProperties.json"); + .getResourceAsString("example/model-properties/tca/modelBpmnProperties.json"); String modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmn.json"); ModelProperties prop = new ModelProperties("example-model-name", "example-control-name", null, true, modelBpmn, - modelBpmnProp); + modelBpmnProp); Policy policy = prop.getType(Policy.class); assertTrue(policy.isFound()); assertEquals(1, policy.getPolicyChains().size()); @@ -76,23 +76,21 @@ public class ModelPropertiesTest { assertEquals(2, tca.getTcaItem().getTcaThresholds().size()); assertEquals("ABATED", tca.getTcaItem().getTcaThresholds().get(0).getClosedLoopEventStatus()); assertEquals("$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value", - tca.getTcaItem().getTcaThresholds().get(0).getFieldPath()); + tca.getTcaItem().getTcaThresholds().get(0).getFieldPath()); assertEquals("LESS_OR_EQUAL", tca.getTcaItem().getTcaThresholds().get(0).getOperator()); assertEquals(Integer.valueOf(123), tca.getTcaItem().getTcaThresholds().get(0).getThreshold()); assertEquals("ONSET", tca.getTcaItem().getTcaThresholds().get(1).getClosedLoopEventStatus()); assertEquals("$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value", - tca.getTcaItem().getTcaThresholds().get(1).getFieldPath()); + tca.getTcaItem().getTcaThresholds().get(1).getFieldPath()); assertEquals("GREATER_OR_EQUAL", tca.getTcaItem().getTcaThresholds().get(1).getOperator()); assertEquals(Integer.valueOf(123), tca.getTcaItem().getTcaThresholds().get(1).getThreshold()); // Test global prop assertEquals("vnfRecipe", prop.getGlobal().getActionSet()); assertEquals("4cc5b45a-1f63-4194-8100-cd8e14248c92", prop.getGlobal().getService()); - assertTrue(Arrays.equals(new String[] { - "023a3f0d-1161-45ff-b4cf-8918a8ccf3ad" - }, prop.getGlobal().getResourceVf().toArray())); - assertTrue(Arrays.equals(new String[] { - "SNDGCA64", "ALPRGAED", "LSLEILAA", "MDTWNJC1" - }, prop.getGlobal().getLocation().toArray())); + assertTrue(Arrays.equals(new String[] { "023a3f0d-1161-45ff-b4cf-8918a8ccf3ad" }, + prop.getGlobal().getResourceVf().toArray())); + assertTrue(Arrays.equals(new String[] { "SNDGCA64", "ALPRGAED", "LSLEILAA", "MDTWNJC1" }, + prop.getGlobal().getLocation().toArray())); assertEquals("value1", prop.getGlobal().getDeployParameters().get("input1").asText()); assertEquals("value2", prop.getGlobal().getDeployParameters().get("input2").asText()); } @@ -100,10 +98,10 @@ public class ModelPropertiesTest { @Test public void testHolmesModelDecoding() throws IOException { String modelBpmnProp = ResourceFileUtil - .getResourceAsString("example/model-properties/holmes/modelBpmnProperties.json"); + .getResourceAsString("example/model-properties/holmes/modelBpmnProperties.json"); String modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/holmes/modelBpmn.json"); ModelProperties prop = new ModelProperties("example-model-name", "example-control-name", null, true, modelBpmn, - modelBpmnProp); + modelBpmnProp); Policy policy = prop.getType(Policy.class); assertTrue(policy.isFound()); assertEquals(1, policy.getPolicyChains().size()); @@ -122,12 +120,10 @@ public class ModelPropertiesTest { // Test global prop assertEquals("vnfRecipe", prop.getGlobal().getActionSet()); assertEquals("4cc5b45a-1f63-4194-8100-cd8e14248c92", prop.getGlobal().getService()); - assertTrue(Arrays.equals(new String[] { - "f5213e3a-9191-4362-93b5-b67f8d770e44" - }, prop.getGlobal().getResourceVf().toArray())); - assertTrue(Arrays.equals(new String[] { - "SNDGCA64", "ALPRGAED", "LSLEILAA", "MDTWNJC1" - }, prop.getGlobal().getLocation().toArray())); + assertTrue(Arrays.equals(new String[] { "f5213e3a-9191-4362-93b5-b67f8d770e44" }, + prop.getGlobal().getResourceVf().toArray())); + assertTrue(Arrays.equals(new String[] { "SNDGCA64", "ALPRGAED", "LSLEILAA", "MDTWNJC1" }, + prop.getGlobal().getLocation().toArray())); assertEquals("value1", prop.getGlobal().getDeployParameters().get("input1").asText()); assertEquals("value2", prop.getGlobal().getDeployParameters().get("input2").asText()); } @@ -135,8 +131,8 @@ public class ModelPropertiesTest { @Test public void testGetVf() throws IOException { CldsModel cldsModel = new CldsModel(); - cldsModel.setPropText( - ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmnProperties.json")); + cldsModel + .setPropText(ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmnProperties.json")); assertEquals("023a3f0d-1161-45ff-b4cf-8918a8ccf3ad", ModelProperties.getVf(cldsModel)); } }
\ No newline at end of file diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties index acf64521b..4268ce389 100644 --- a/src/test/resources/application.properties +++ b/src/test/resources/application.properties @@ -110,7 +110,7 @@ async.queue.capacity=500 #For EELF logback file
#com.att.eelf.logging.path=
-com.att.eelf.logging.file=logback-default.xml
+clamp.config.logback.filename=logback-default.xml
#The log folder that will be used in logback.xml file
clamp.config.log.path=log
clamp.config.files.systemProperties=classpath:/system.properties
diff --git a/src/test/resources/example/dao/template-doc-content.json b/src/test/resources/example/dao/template-doc-content.json index 0ee712204..96f96756d 100644 --- a/src/test/resources/example/dao/template-doc-content.json +++ b/src/test/resources/example/dao/template-doc-content.json @@ -47,8 +47,8 @@ node_templates: publisherPollingInterval: '20000' publisherProtocol: https publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub - publisherUserName: m00502@tca.af.dcae.onap.org - publisherUserPassword: Te5021abc + publisherUserName: test@tca.af.dcae.onap.org + publisherUserPassword: password subscriberConsumerGroup: OpenDCAE-c12 subscriberConsumerId: c12 subscriberContentType: application/json @@ -59,8 +59,8 @@ node_templates: subscriberProtocol: https subscriberTimeoutMS: '-1' subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub - subscriberUserName: m00502@tca.af.dcae.onap.org - subscriberUserPassword: Te5021abc + subscriberUserName: test@tca.af.dcae.onap.org + subscriberUserPassword: password tca_policy: null artifact_name: dcae-analytics-tca artifact_version: 1.0.0 diff --git a/src/test/resources/example/operational-policy/json-policy-chain.json b/src/test/resources/example/operational-policy/json-policy-chain.json new file mode 100644 index 000000000..037b4d656 --- /dev/null +++ b/src/test/resources/example/operational-policy/json-policy-chain.json @@ -0,0 +1,63 @@ +[ + { + "name": "pname", + "value": "healthCheck Policy" + }, + { + "name": "pid", + "value": "1" + }, + { + "name": "timeout", + "value": "180" + }, + { + "policyConfigurations": [ + [ + { + "name": "recipe", + "value": [ + "healthCheck" + ] + }, + { + "name": "maxRetries", + "value": [ + "3" + ] + }, + { + "name": "retryTimeLimit", + "value": [ + "180" + ] + }, + { + "name": "_id", + "value": [ + "789875c1-e788-432f-9a76-eac8ed889734" + ] + }, + { + "name": "parentPolicy", + "value": [ + "" + ] + }, + { + "name": "actor", + "value": [ + "APPC" + ] + }, + { + "name": "targetResourceId", + "value": [ + "cdb69724-57d5-4a22-b96c-4c345150fd0e" + ] + } + + ] + ] + } +]
\ No newline at end of file diff --git a/src/test/resources/example/sdc/blueprint-dcae/tca.yaml b/src/test/resources/example/sdc/blueprint-dcae/tca.yaml index 1a756eea9..0ab831712 100644 --- a/src/test/resources/example/sdc/blueprint-dcae/tca.yaml +++ b/src/test/resources/example/sdc/blueprint-dcae/tca.yaml @@ -47,8 +47,8 @@ node_templates: publisherPollingInterval: '20000' publisherProtocol: https publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub - publisherUserName: m00502@tca.af.dcae.onap.org - publisherUserPassword: Te5021abc + publisherUserName: test@tca.af.dcae.onap.org + publisherUserPassword: password subscriberConsumerGroup: OpenDCAE-c12 subscriberConsumerId: c12 subscriberContentType: application/json @@ -59,8 +59,8 @@ node_templates: subscriberProtocol: https subscriberTimeoutMS: '-1' subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub - subscriberUserName: m00502@tca.af.dcae.onap.org - subscriberUserPassword: Te5021abc + subscriberUserName: test@tca.af.dcae.onap.org + subscriberUserPassword: password tca_policy: null artifact_name: dcae-analytics-tca artifact_version: 1.0.0 @@ -101,4 +101,4 @@ node_templates: type: dcae.nodes.Topic properties: topic_name: '' -
\ No newline at end of file + diff --git a/src/test/resources/example/sdc/sdcCVFCResourceExample.json b/src/test/resources/example/sdc/sdcCVFCResourceExample.json index d31b66b11..01998dcbc 100644 --- a/src/test/resources/example/sdc/sdcCVFCResourceExample.json +++ b/src/test/resources/example/sdc/sdcCVFCResourceExample.json @@ -8,7 +8,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740", + "lastUpdaterUserId": "user", "lastUpdaterFullName": "Zero ASDCMech", "toscaResourceName": "org.openecomp.resource.vfc.ClampDev.abstract.nodes.virc_fe_be_0", "resources": [ diff --git a/src/test/resources/example/sdc/sdcCVFCResources.json b/src/test/resources/example/sdc/sdcCVFCResources.json index 790b2d53d..54003a642 100644 --- a/src/test/resources/example/sdc/sdcCVFCResources.json +++ b/src/test/resources/example/sdc/sdcCVFCResources.json @@ -9,7 +9,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "22db11dd-8f1b-4687-93c1-68d9699cc8dd", @@ -21,7 +21,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "pa0916" + "lastUpdaterUserId": "user" }, { "uuid": "a40da782-3ec4-4138-849f-f9dd4013744e", @@ -33,7 +33,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "d5711e0f-1e01-4f0f-8bb7-e3805607ddc8", @@ -45,7 +45,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { "uuid": "c4736acb-5f9b-4918-a188-f166c948f21d", @@ -57,7 +57,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "49c45990-9aca-437a-aeea-cd5d97f4db2d", @@ -69,7 +69,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "37ee791a-cf0b-4968-8003-9f0b93e4e5e0", @@ -81,7 +81,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "pa0916" + "lastUpdaterUserId": "user" }, { "uuid": "59db0e7d-8800-4b73-8236-42d95e28c865", @@ -93,7 +93,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "26b7ac12-5cf0-456c-adb4-fb7b5d0d7162", @@ -105,7 +105,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "a056a4ab-4e72-4631-8539-0f4327b5beb0", @@ -117,7 +117,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "pa0916" + "lastUpdaterUserId": "user" }, { "uuid": "9d81d5e5-72aa-4ec7-b10e-f55f0369f5b5", @@ -129,7 +129,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "ad90ed2d-5266-41f3-af43-db9b9f6765c3", @@ -141,7 +141,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { "uuid": "a790f10d-6915-42a4-ae60-f3525d7dfef2", @@ -153,7 +153,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "8b774c12-26bd-4dff-a9f8-3e4c46d9d5a0", @@ -165,7 +165,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "c2740411-a801-416a-8d71-d10d5a3d3794", @@ -177,7 +177,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "7918ba80-97a2-4ead-87f0-dfc61da405c9", @@ -189,7 +189,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "bdbe08db-0471-443e-967a-eb7b619be46b", @@ -201,7 +201,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "0e997760-1d6d-4afc-b9ab-6c2a94807463", @@ -213,7 +213,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "e47dccd6-a23c-4685-a21b-b57d7c5a7007", @@ -225,7 +225,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "2c8f1219-8000-4001-aa13-496a0396d40f", @@ -237,7 +237,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "c01cc6f1-4109-4498-b6c1-2cba7140a8b0", @@ -249,7 +249,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { "uuid": "0457dd05-f754-48f8-8997-3819c1abbdac", @@ -261,7 +261,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "cba89050-752c-4aac-8cec-6f0463eb8a23", @@ -273,7 +273,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "93a60704-ce74-4f1e-b845-ddb3acfe8819", @@ -285,7 +285,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "5ac81105-ff5a-41fd-a84b-2aff8a694d14", @@ -297,7 +297,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "ba85242a-7910-4501-b8d7-fc47fa9ed902", @@ -309,7 +309,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "dc32e966-81d2-4048-b123-8e91e930b61e", @@ -321,7 +321,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "fd7fa970-c758-4daa-8cd8-77cbc1dc2604", @@ -333,7 +333,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "9b1b82c1-308c-42b8-8ca3-00e744be4cbf", @@ -345,7 +345,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "c771d2d4-b5e0-43ce-baa6-020389238484", @@ -357,7 +357,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "50b5240c-fc4f-4f1e-bd9e-a89f48912b50", @@ -369,7 +369,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { "uuid": "cce30e84-4f25-4712-ae16-6223b81ebe30", @@ -381,7 +381,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "128b71d0-616c-4ddc-bfc6-831fd07d2b23", @@ -393,7 +393,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { "uuid": "2ac67cfc-abc8-4e7a-882f-8594af8a142b", @@ -405,7 +405,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "f3264aab-8f59-4942-a118-2663e445e055", @@ -417,7 +417,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "pa0916" + "lastUpdaterUserId": "user" }, { "uuid": "0d094452-1b7d-4b5a-86ff-bce315102473", @@ -429,7 +429,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml636r" + "lastUpdaterUserId": "user" }, { "uuid": "dec15871-f6f6-4e44-8a8d-1e30f69ac0d3", @@ -441,7 +441,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "9150f327-801e-4963-b25b-b4583ec55c79", @@ -453,7 +453,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "6b143e5e-dfcc-4572-b101-7fcb98c0bdde", @@ -465,7 +465,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ss1245" + "lastUpdaterUserId": "user" }, { "uuid": "fc93fad1-0133-43c8-8355-9e0797665774", @@ -477,7 +477,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ss1245" + "lastUpdaterUserId": "user" }, { "uuid": "24101cfd-f824-4340-916f-a881a203062b", @@ -489,7 +489,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "844453e6-46b2-4673-aee7-f0dba8a90218", @@ -501,7 +501,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "6e19c4fc-fe71-4fd1-951a-37cdb76016b5", @@ -513,7 +513,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "8d5cce48-c3cb-4a7d-b94c-f4a40ea13cf6", @@ -525,7 +525,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "2cb64483-fa56-4599-8752-da98434bfaa0", @@ -537,7 +537,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "ca9d0619-51fc-4c62-a653-c22297a7da0d", @@ -549,7 +549,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "183ca9a3-5e5d-4180-9e16-b89cb19050d6", @@ -561,7 +561,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "a4a0faf3-ec92-425c-8720-2cbd43748348", @@ -573,7 +573,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { "uuid": "140b8590-3d21-474c-9cd2-72d71eae93ac", @@ -585,7 +585,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "2aa34c35-e0b6-4974-89d7-68b0595a67a9", @@ -597,7 +597,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml636r" + "lastUpdaterUserId": "user" }, { "uuid": "7fdf044e-7e8b-4a78-b560-1de3709a5748", @@ -609,7 +609,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml636r" + "lastUpdaterUserId": "user" }, { "uuid": "49632b9c-cb8e-43a3-8aaf-824418e57056", @@ -621,7 +621,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml636r" + "lastUpdaterUserId": "user" }, { "uuid": "07d4e7a0-b849-400d-8c9a-3cb77e7dd8b0", @@ -633,7 +633,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "77752274-77c0-430b-a99c-1b4f324fbbe0", @@ -645,7 +645,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "34236492-9bdf-4014-804d-6067f52bc62d", @@ -657,7 +657,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "3cc412d3-a6ee-4d3c-acc8-2a1ff7810377", @@ -669,7 +669,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "1e55adcd-dabf-432e-b872-f8ba02931b15", @@ -681,7 +681,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "62e449b8-0539-450c-a929-e78af95decef", @@ -693,7 +693,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "72333ee0-007b-4e98-a097-4bc1da668fc6", @@ -705,7 +705,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "4de24e5d-9608-45fc-8803-980f93841f89", @@ -717,7 +717,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "a5e5d12f-7cc8-4b6a-b1b1-f344a7653b76", @@ -729,7 +729,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "be58ec10-fdda-4436-95db-1f059508e63c", @@ -741,7 +741,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml636r" + "lastUpdaterUserId": "user" }, { "uuid": "fb0a4dae-87f6-4c72-897c-aa0c7733bb1d", @@ -753,7 +753,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "eff16637-cc77-4b5e-bb18-e59f4901406b", @@ -765,7 +765,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "a4d9c48f-177b-498d-a4f2-f727359d930c", @@ -777,7 +777,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "a12837b0-336a-473f-b19c-9f711eac89bb", @@ -789,7 +789,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "ba665cad-c3fa-4b7b-b49c-e9151e314fff", @@ -801,7 +801,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "f577a370-980c-4d28-93d7-6db297260bf6", @@ -813,7 +813,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "67fc9bfe-5f35-406e-892b-bcd6635d8503", @@ -825,7 +825,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "1ca8c4da-0609-4fe4-86d5-a3e95b326f6d", @@ -837,7 +837,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "f09d1939-490e-456d-a17c-9e3fe75017aa", @@ -849,7 +849,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "f502cd24-ee81-446f-87dc-cd4d1924b3d0", @@ -861,7 +861,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml636r" + "lastUpdaterUserId": "user" }, { "uuid": "22357844-f903-4252-b9b3-bb21d3190e88", @@ -873,7 +873,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml636r" + "lastUpdaterUserId": "user" }, { "uuid": "5443c9e4-e979-48de-9662-db5e5b0d8473", @@ -885,7 +885,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml636r" + "lastUpdaterUserId": "user" }, { "uuid": "419fd69c-9d1f-4679-9677-88cff351bc13", @@ -897,7 +897,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "02eb6606-ba4d-428a-8043-2a57acfc8180", @@ -909,7 +909,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "9f5fcf0f-013a-429c-807d-325a0ffe1f4e", @@ -921,7 +921,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { "uuid": "3b1050e1-ffef-4e39-9e6e-7f13a3b9c28a", @@ -933,7 +933,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { "uuid": "e6f1576a-6ba7-48b9-a72d-c25d6e830b7c", @@ -945,7 +945,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "c01d30f8-31ee-4e77-90a9-1e6c253e905f", @@ -957,7 +957,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "9020ebb6-0d56-4355-8308-3b3082d96565", @@ -969,7 +969,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "1d746450-e070-4c45-bb49-158537d3246b", @@ -981,7 +981,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "712d2e08-0ca2-4f48-b193-34a887a168c6", @@ -993,7 +993,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "c13f95f6-7757-4124-a5be-3a7c6ae2bd20", @@ -1005,7 +1005,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "12e60ab4-7e48-4f6b-a124-f109b50d9f4a", @@ -1017,7 +1017,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "fb57af5b-84f2-4baf-b6a8-61062f924cd2", @@ -1029,7 +1029,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { "uuid": "7f550ae3-1242-4468-b04a-0666946d84aa", @@ -1041,7 +1041,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "3af9b720-144d-4507-aea8-73b49bc243c4", @@ -1053,7 +1053,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "24ca039c-26e1-4f79-b2a4-660a7a21f752", @@ -1065,7 +1065,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "c0e6a2a1-3fc7-4663-8df7-b0263288f116", @@ -1077,7 +1077,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "e74db726-0ad6-4a6e-be6c-4094df81eafd", @@ -1089,7 +1089,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "e49a643b-23a0-4b50-a3c0-a5a60003a958", @@ -1101,7 +1101,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ss1245" + "lastUpdaterUserId": "user" }, { "uuid": "e0941d01-8ec6-448b-80f8-007e8c88ed28", @@ -1113,7 +1113,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "98771c36-da29-4a80-85e9-72e9fbef3286", @@ -1125,7 +1125,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { "uuid": "7218a91c-7c13-443f-b085-a10f1593624e", @@ -1137,7 +1137,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "5a2c7097-c582-4337-918e-48b58d79dd74", @@ -1149,7 +1149,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "e70970f3-aa70-4d6b-9fd4-eb07ff42693f", @@ -1161,6 +1161,6 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" } ]
\ No newline at end of file diff --git a/src/test/resources/example/sdc/sdcCinderVolume.json b/src/test/resources/example/sdc/sdcCinderVolume.json index b5ffe6465..1832a9aa5 100644 --- a/src/test/resources/example/sdc/sdcCinderVolume.json +++ b/src/test/resources/example/sdc/sdcCinderVolume.json @@ -8,7 +8,7 @@ "subCategory": "Infrastructure", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003", + "lastUpdaterUserId": "user", "lastUpdaterFullName": "Jimmy Hendrix", "toscaResourceName": "org.openecomp.resource.vfc.nodes.heat.cinder.Volume", "description": "Represents a server-local block storage device that provides persistent storage to guest virtual machines. " diff --git a/src/test/resources/example/sdc/sdcResourceDetailsExample.json b/src/test/resources/example/sdc/sdcResourceDetailsExample.json index 3e904b107..7653b9481 100644 --- a/src/test/resources/example/sdc/sdcResourceDetailsExample.json +++ b/src/test/resources/example/sdc/sdcResourceDetailsExample.json @@ -8,7 +8,7 @@ "subCategory": "Router", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08743", + "lastUpdaterUserId": "user", "lastUpdaterFullName": "Three ASDCMech", "toscaResourceName": "org.openecomp.resource.vf.ClampDev", "resources": diff --git a/src/test/resources/example/sdc/sdcSecurityRules.json b/src/test/resources/example/sdc/sdcSecurityRules.json index 07930a288..b73abb058 100644 --- a/src/test/resources/example/sdc/sdcSecurityRules.json +++ b/src/test/resources/example/sdc/sdcSecurityRules.json @@ -8,7 +8,7 @@ "subCategory": "Rules", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003", + "lastUpdaterUserId": "user", "lastUpdaterFullName": "Jimmy Hendrix", "toscaResourceName": "org.openecomp.resource.vfc.rules.nodes.heat.network.neutron.SecurityRules", "description": "Configuration of policy rules to be applied on ports." diff --git a/src/test/resources/example/sdc/sdcServiceDetailsExample.json b/src/test/resources/example/sdc/sdcServiceDetailsExample.json index 820c6ca55..b344f4194 100644 --- a/src/test/resources/example/sdc/sdcServiceDetailsExample.json +++ b/src/test/resources/example/sdc/sdcServiceDetailsExample.json @@ -8,7 +8,7 @@ "subCategory": "Application Server", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535", + "lastUpdaterUserId": "user", "lastUpdaterFullName": "MONICA LAZER", "toscaResourceName": "org.openecomp.resource.vf.Vcts3", "resources": diff --git a/src/test/resources/example/sdc/sdcServicesListExample.json b/src/test/resources/example/sdc/sdcServicesListExample.json index 3c1277a47..d4f154f79 100644 --- a/src/test/resources/example/sdc/sdcServicesListExample.json +++ b/src/test/resources/example/sdc/sdcServicesListExample.json @@ -7,7 +7,7 @@ "toscaModelURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8e/toscaModel", "category": "Application L4+", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535", + "lastUpdaterUserId": "user", "distributionStatus":"DISTRIBUTED" }, { @@ -18,7 +18,7 @@ "toscaModelURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8e/toscaModel", "category": "Application L4+", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535", + "lastUpdaterUserId": "user", "distributionStatus":"DISTRIBUTED" }, { @@ -29,7 +29,7 @@ "toscaModelURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8e/toscaModel", "category": "Application L4+", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535", + "lastUpdaterUserId": "user", "distributionStatus":"DISTRIBUTED" } ]
\ No newline at end of file diff --git a/src/test/resources/example/sdc/sdcVFCGenericWithAlarms.json b/src/test/resources/example/sdc/sdcVFCGenericWithAlarms.json index 0f9cf637b..952650af4 100644 --- a/src/test/resources/example/sdc/sdcVFCGenericWithAlarms.json +++ b/src/test/resources/example/sdc/sdcVFCGenericWithAlarms.json @@ -8,7 +8,7 @@ "subCategory": "Abstract", "resourceType": "CVFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740", + "lastUpdaterUserId": "user", "lastUpdaterFullName": "Zero ASDCMech", "toscaResourceName": "org.openecomp.resource.vfc.ClampDev.abstract.nodes.virc_fe_be_1", "resources": diff --git a/src/test/resources/example/sdc/sdcVFCResourceExample.json b/src/test/resources/example/sdc/sdcVFCResourceExample.json index 0fb2f5dff..5f523e6bd 100644 --- a/src/test/resources/example/sdc/sdcVFCResourceExample.json +++ b/src/test/resources/example/sdc/sdcVFCResourceExample.json @@ -8,7 +8,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740", + "lastUpdaterUserId": "user", "lastUpdaterFullName": "Zero ASDCMech", "toscaResourceName": "org.openecomp.resource.vfc.Clampdev.abstract.nodes.heat.virc_fe_be", "artifacts": [ diff --git a/src/test/resources/example/sdc/sdcVFCResources.json b/src/test/resources/example/sdc/sdcVFCResources.json index be2ee46d4..aa20afc56 100644 --- a/src/test/resources/example/sdc/sdcVFCResources.json +++ b/src/test/resources/example/sdc/sdcVFCResources.json @@ -9,7 +9,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -22,7 +22,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { @@ -35,7 +35,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -48,7 +48,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -61,7 +61,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "pa0916" + "lastUpdaterUserId": "user" }, { @@ -74,7 +74,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { @@ -87,7 +87,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { @@ -100,7 +100,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "pa0916" + "lastUpdaterUserId": "user" }, { @@ -113,7 +113,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "pa0916" + "lastUpdaterUserId": "user" }, { @@ -126,7 +126,7 @@ "subCategory": "Infrastructure", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -139,7 +139,7 @@ "subCategory": "Infrastructure", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -152,7 +152,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -165,7 +165,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "pa0916" + "lastUpdaterUserId": "user" }, { @@ -178,7 +178,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -191,7 +191,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { @@ -204,7 +204,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { @@ -217,7 +217,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -230,7 +230,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -243,7 +243,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -256,7 +256,7 @@ "subCategory": "Network Elements", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -269,7 +269,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -282,7 +282,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { @@ -295,7 +295,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { @@ -308,7 +308,7 @@ "subCategory": "Allotted Resource", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -321,7 +321,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -334,7 +334,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -347,7 +347,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -360,7 +360,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -373,7 +373,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -386,7 +386,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -399,7 +399,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -412,7 +412,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -425,7 +425,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -438,7 +438,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -451,7 +451,7 @@ "subCategory": "Infrastructure", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -464,7 +464,7 @@ "subCategory": "Database", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -477,7 +477,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -490,7 +490,7 @@ "subCategory": "Infrastructure", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -503,7 +503,7 @@ "subCategory": "Rules", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -516,7 +516,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -529,7 +529,7 @@ "subCategory": "Allotted Resource", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99124" + "lastUpdaterUserId": "user" }, { @@ -542,7 +542,7 @@ "subCategory": "Allotted Resource", "resourceType": "VFC", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -555,7 +555,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -568,7 +568,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { @@ -581,7 +581,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { @@ -594,7 +594,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -607,7 +607,7 @@ "subCategory": "Infrastructure", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -620,7 +620,7 @@ "subCategory": "Infrastructure", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -633,7 +633,7 @@ "subCategory": "Rules", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -646,7 +646,7 @@ "subCategory": "Rules", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -659,7 +659,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -672,7 +672,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -685,7 +685,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -698,7 +698,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -711,7 +711,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -724,7 +724,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rb844h" + "lastUpdaterUserId": "user" }, { @@ -737,7 +737,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rb844h" + "lastUpdaterUserId": "user" }, { @@ -750,7 +750,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "az2497" + "lastUpdaterUserId": "user" }, { @@ -763,7 +763,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -776,7 +776,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -789,33 +789,33 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "3c9b6ec9-2b6a-4c81-96cd-f3e5c0264ae6", "invariantUUID": "cdc19c35-bcac-4f78-a7a6-c216b374f5a3", - "name": "VmmscAic30MultiMembersMultiGroupsVolumeCs.nodes.heat.nems_fe", + "name": "VmmscLab30MultiMembersMultiGroupsVolumeCs.nodes.heat.nems_fe", "version": "1.0", "toscaModelURL": "/sdc/v1/catalog/resources/3c9b6ec9-2b6a-4c81-96cd-f3e5c0264ae6/toscaModel", "category": "Generic", "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "612317df-67b5-487f-b592-44f5e682b0a9", "invariantUUID": "3bae7612-b50d-48ed-8ae7-b6f17521395b", - "name": "VmmscAic30MultiMembersMultiGroupsVolumeCs.nodes.heat.nems_be", + "name": "VmmscLab30MultiMembersMultiGroupsVolumeCs.nodes.heat.nems_be", "version": "1.0", "toscaModelURL": "/sdc/v1/catalog/resources/612317df-67b5-487f-b592-44f5e682b0a9/toscaModel", "category": "Generic", "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -828,7 +828,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -841,7 +841,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -854,7 +854,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -867,7 +867,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -880,7 +880,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -893,7 +893,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -906,7 +906,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -919,7 +919,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -932,7 +932,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -945,7 +945,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -958,7 +958,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -971,7 +971,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -984,7 +984,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -997,7 +997,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1010,7 +1010,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1023,7 +1023,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1036,7 +1036,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -1049,7 +1049,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -1062,7 +1062,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -1075,7 +1075,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -1088,7 +1088,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -1101,7 +1101,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1114,7 +1114,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1127,7 +1127,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -1140,7 +1140,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -1153,7 +1153,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1166,7 +1166,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1179,7 +1179,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1192,7 +1192,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1205,7 +1205,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1218,7 +1218,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1231,7 +1231,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "az2497" + "lastUpdaterUserId": "user" }, { @@ -1244,7 +1244,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1257,7 +1257,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -1270,7 +1270,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -1283,7 +1283,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -1296,7 +1296,7 @@ "subCategory": "Infrastructure", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -1309,7 +1309,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1322,7 +1322,7 @@ "subCategory": "Infrastructure", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { @@ -1335,7 +1335,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1348,7 +1348,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1361,7 +1361,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -1374,7 +1374,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -1387,7 +1387,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1400,7 +1400,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1413,7 +1413,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1426,7 +1426,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -1439,7 +1439,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -1452,7 +1452,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { @@ -1465,7 +1465,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -1478,7 +1478,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { @@ -1491,7 +1491,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { @@ -1504,7 +1504,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { @@ -1517,7 +1517,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { @@ -1530,7 +1530,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -1543,7 +1543,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1556,7 +1556,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1569,7 +1569,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "az2497" + "lastUpdaterUserId": "user" }, { @@ -1582,7 +1582,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1595,7 +1595,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1608,7 +1608,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1621,7 +1621,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535" + "lastUpdaterUserId": "user" }, { @@ -1634,7 +1634,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1647,7 +1647,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1660,33 +1660,33 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "bc40b750-56ab-4c6b-8e15-412f9be0178f", "invariantUUID": "ab769637-063f-41fd-927d-771a1913235b", - "name": "VmmscAic30MultiMembersMultiGroupsVolumeCs.nodes.heat.mmsc", + "name": "VmmscLab30MultiMembersMultiGroupsVolumeCs.nodes.heat.mmsc", "version": "1.0", "toscaModelURL": "/sdc/v1/catalog/resources/bc40b750-56ab-4c6b-8e15-412f9be0178f/toscaModel", "category": "Generic", "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "3ff3d87f-c55f-4b4c-a8ae-29931d910359", "invariantUUID": "5af2c63a-1b3e-42a5-ab4b-07e97d1dcbd2", - "name": "VmmscAic30MultiMembersMultiGroupsVolume.nodes.heat.nems_be", + "name": "VmmscLab30MultiMembersMultiGroupsVolume.nodes.heat.nems_be", "version": "1.0", "toscaModelURL": "/sdc/v1/catalog/resources/3ff3d87f-c55f-4b4c-a8ae-29931d910359/toscaModel", "category": "Generic", "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1699,7 +1699,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { @@ -1712,20 +1712,20 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "d544d6a6-4fcc-42db-97f6-e8cccc69c5ee", "invariantUUID": "cd4a433e-cf76-4652-a6b8-59e657e0c5a0", - "name": "VmmscAic30MultiMembersMultiGroupsVolumeCs.nodes.heat.lb", + "name": "VmmscLab30MultiMembersMultiGroupsVolumeCs.nodes.heat.lb", "version": "1.0", "toscaModelURL": "/sdc/v1/catalog/resources/d544d6a6-4fcc-42db-97f6-e8cccc69c5ee/toscaModel", "category": "Generic", "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1738,7 +1738,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1751,7 +1751,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1764,7 +1764,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1777,7 +1777,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1790,20 +1790,20 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "de861add-3f4a-4526-9754-8bcb69d0fd0e", "invariantUUID": "67560771-ffcb-46fb-a40c-0e1dee74f43a", - "name": "VmmscAic30MultiMembersMultiGroupsVolume.nodes.heat.mmsc", + "name": "VmmscLab30MultiMembersMultiGroupsVolume.nodes.heat.mmsc", "version": "1.0", "toscaModelURL": "/sdc/v1/catalog/resources/de861add-3f4a-4526-9754-8bcb69d0fd0e/toscaModel", "category": "Generic", "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1816,7 +1816,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1829,7 +1829,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1842,7 +1842,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1855,7 +1855,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1868,7 +1868,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535" + "lastUpdaterUserId": "user" }, { @@ -1881,7 +1881,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1894,20 +1894,20 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "897dcb54-bb55-4311-8c0e-b663781d7e4f", "invariantUUID": "c223adda-e48d-487d-98e8-654bbb8268af", - "name": "VmmscAic30MultiMembersMultiGroupsVolume.nodes.heat.lb", + "name": "VmmscLab30MultiMembersMultiGroupsVolume.nodes.heat.lb", "version": "1.0", "toscaModelURL": "/sdc/v1/catalog/resources/897dcb54-bb55-4311-8c0e-b663781d7e4f/toscaModel", "category": "Generic", "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1920,20 +1920,20 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "173c32b5-44c8-4404-ba18-32d9de49afae", "invariantUUID": "c247493b-15a4-47af-bb6b-c664cb5a4d37", - "name": "VmmscAic30MultiMembersMultiGroupsVolume.nodes.heat.eca_trx", + "name": "VmmscLab30MultiMembersMultiGroupsVolume.nodes.heat.eca_trx", "version": "1.0", "toscaModelURL": "/sdc/v1/catalog/resources/173c32b5-44c8-4404-ba18-32d9de49afae/toscaModel", "category": "Generic", "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1946,20 +1946,20 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "0e6509c9-7d35-4daf-9086-9fe30fdd1275", "invariantUUID": "9516ad03-b122-4738-ad6d-d9c2166cd75a", - "name": "VmmscAic30MultiMembersMultiGroupsVolume.nodes.heat.nems_fe", + "name": "VmmscLab30MultiMembersMultiGroupsVolume.nodes.heat.nems_fe", "version": "1.0", "toscaModelURL": "/sdc/v1/catalog/resources/0e6509c9-7d35-4daf-9086-9fe30fdd1275/toscaModel", "category": "Generic", "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1972,7 +1972,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1985,7 +1985,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1998,20 +1998,20 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "8678abfe-8cbd-42f2-aa78-ca47a1beaa14", "invariantUUID": "4d02c8a5-e141-4d01-94ec-7a3b94afda97", - "name": "VmmscAic30MultiMembersMultiGroupsVolumeCs.nodes.heat.eca_trx", + "name": "VmmscLab30MultiMembersMultiGroupsVolumeCs.nodes.heat.eca_trx", "version": "1.0", "toscaModelURL": "/sdc/v1/catalog/resources/8678abfe-8cbd-42f2-aa78-ca47a1beaa14/toscaModel", "category": "Generic", "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -2024,7 +2024,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -2037,7 +2037,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -2050,7 +2050,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -2063,7 +2063,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -2076,7 +2076,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -2089,7 +2089,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -2102,7 +2102,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -2115,7 +2115,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -2128,7 +2128,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -2141,7 +2141,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535" + "lastUpdaterUserId": "user" }, { @@ -2154,7 +2154,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rb844h" + "lastUpdaterUserId": "user" }, { @@ -2167,7 +2167,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -2180,7 +2180,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -2193,7 +2193,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -2206,7 +2206,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -2219,7 +2219,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535" + "lastUpdaterUserId": "user" }, { @@ -2232,7 +2232,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rb844h" + "lastUpdaterUserId": "user" }, { @@ -2245,7 +2245,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ss8214" + "lastUpdaterUserId": "user" }, { @@ -2258,7 +2258,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { @@ -2271,7 +2271,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { @@ -2284,7 +2284,7 @@ "subCategory": "Call Control", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { @@ -2297,7 +2297,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "pa0916" + "lastUpdaterUserId": "user" }, { @@ -2310,7 +2310,7 @@ "subCategory": "Call Control", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { @@ -2323,7 +2323,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -2336,7 +2336,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { @@ -2349,7 +2349,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { @@ -2362,7 +2362,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -2375,7 +2375,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -2388,7 +2388,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -2401,7 +2401,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { @@ -2414,7 +2414,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -2427,7 +2427,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -2440,6 +2440,6 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" } ]
\ No newline at end of file diff --git a/src/test/resources/example/sdc/sdcVFCResourcesList.json b/src/test/resources/example/sdc/sdcVFCResourcesList.json index c6ca26dac..7d81afa92 100644 --- a/src/test/resources/example/sdc/sdcVFCResourcesList.json +++ b/src/test/resources/example/sdc/sdcVFCResourcesList.json @@ -9,7 +9,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "da3c740a-e8af-4b85-a487-b4961b040fa3", @@ -21,7 +21,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { "uuid": "b31696d9-ad41-4cb5-bbdd-3e67845204f3", @@ -33,7 +33,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "25b74ab6-565b-424f-bb57-b434bb2944a0", @@ -45,7 +45,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "c13dc4c4-f4cb-4a54-9198-5bce42c5df02", @@ -57,7 +57,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "pa0916" + "lastUpdaterUserId": "user" }, { "uuid": "08e94ce5-79e8-4873-9221-eb9e869ac679", @@ -69,7 +69,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "0d8f93f5-780e-47de-9b03-52ab31cb83d1", @@ -81,7 +81,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "9140709a-d6a9-4690-b102-6fa96a696ce9", @@ -93,7 +93,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "pa0916" + "lastUpdaterUserId": "user" }, { "uuid": "6607c9fc-dc1d-4a89-ac57-b6b18fc79b69", @@ -105,7 +105,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "pa0916" + "lastUpdaterUserId": "user" }, { "uuid": "3cb0c46c-af73-4420-ae5c-d4816b314980", @@ -117,7 +117,7 @@ "subCategory": "Infrastructure", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "b4288e07-597a-44a2-aa98-ad36e551a39d", @@ -129,7 +129,7 @@ "subCategory": "Infrastructure", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "156d628f-f515-4f58-bfb0-210632717ce3", @@ -141,7 +141,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "28eeb6ce-2349-4c07-80ad-f0aacbf67028", @@ -153,7 +153,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "pa0916" + "lastUpdaterUserId": "user" }, { "uuid": "f89e37a8-c5c0-4c0c-a034-f6c0ad8dd83f", @@ -165,7 +165,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "8263c4c5-555e-4b73-9210-ddc8dd7e42f8", @@ -177,7 +177,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { "uuid": "dd7218d7-5760-4834-b78a-33edf5eb22e7", @@ -189,7 +189,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { "uuid": "10906cdf-dbec-405a-a513-7ed2090a5adb", @@ -201,7 +201,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "e0ee89f0-175b-47d8-8258-1ac6ea6d52a8", @@ -213,7 +213,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "e45c5438-0528-4a3d-bfa4-644b2343537c", @@ -225,7 +225,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "ba541b5b-7d06-4198-adf9-c035b374cdb3", @@ -237,7 +237,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "e84b8370-ffb7-4f6c-a242-ab3f340617fa", @@ -249,7 +249,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "512ea41b-b9ac-412a-95ee-ac7410c2b6b2", @@ -261,7 +261,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "b4897fd9-7a50-492a-9e0c-054d044c1dcf", @@ -273,7 +273,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "24413de0-35fd-4e1b-8052-51a1c798b24d", @@ -285,7 +285,7 @@ "subCategory": "Call Control", "resourceType": "VFC", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "d3543795-31cd-4bb9-acd7-09249fdf0c5b", @@ -297,7 +297,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "2b4c437e-9034-4ec3-b6f9-9309022673cf", @@ -309,7 +309,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "56cef7d0-af8c-4f18-80a2-e9aaf4366838", @@ -321,7 +321,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { "uuid": "d7646638-2572-4a94-b497-c028ac15f9ca", @@ -333,7 +333,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "39300382-8d78-4598-afa0-042613d6d8f7", @@ -345,7 +345,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "1d614214-2bc7-45bd-ab85-801ed72888c0", @@ -357,7 +357,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "880e5d06-8c62-43f2-ac4a-befff414e63c", @@ -369,7 +369,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { "uuid": "b58f9c1a-ad21-459d-9efa-a8924147cb90", @@ -381,7 +381,7 @@ "subCategory": "Allotted Resource", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "27307a62-8512-4aeb-a0ad-e8e88643c2ba", @@ -393,7 +393,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "c0cfa0b8-1214-4abc-bf4b-f71aed72f03b", @@ -405,7 +405,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "fd0e3baa-fef7-4096-be2f-a73fea2f1360", @@ -417,7 +417,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "efc0c5f9-b900-4d6e-a8d9-746bfb400c6d", @@ -429,7 +429,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "c003a901-a27e-49a4-bf3f-d9d8ca838f0a", @@ -453,7 +453,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "d555e4fc-5c42-4990-9a53-3cc998496595", @@ -465,7 +465,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ss1245" + "lastUpdaterUserId": "user" }, { "uuid": "73c3f25a-88a2-4ac3-89a4-9c0ecf5a9b31", @@ -477,7 +477,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ss1245" + "lastUpdaterUserId": "user" }, { "uuid": "a12dad87-6120-412f-8a53-c5bb88be89a3", @@ -489,7 +489,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "eabf4617-19da-4df2-b195-579309638c51", @@ -501,7 +501,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "a14e3bbd-b04b-4924-817c-b4d13bfd8fe2", @@ -513,7 +513,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "fa5a2fa8-ae63-49c0-9f6c-5e5e2b7f9faa", @@ -525,7 +525,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "41dea130-9195-4d0b-97ba-8d86c0b00684", @@ -537,7 +537,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "b8334449-de6b-4133-9c5d-1eb6c2736614", @@ -549,7 +549,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { "uuid": "97b6b724-1d91-406f-90c7-4d4643b34630", @@ -561,7 +561,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "a902ec74-9415-4d5c-a14e-f0861a272407", @@ -573,7 +573,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "3127c05d-fe28-4d7f-9866-33d87943e082", @@ -585,7 +585,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml636r" + "lastUpdaterUserId": "user" }, { "uuid": "c17fc945-c327-469b-9912-f6d628cd6e4e", @@ -597,7 +597,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "82646e24-0e94-416a-aae2-9df4b2aa6217", @@ -609,7 +609,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "f059ce03-14f3-46c3-a9b3-246404b2f9d0", @@ -621,7 +621,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "8dfca155-2ff7-49b3-b563-cc9c80bc951d", @@ -633,7 +633,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "b36dd1f0-f6aa-464d-b579-b5b75585ed44", @@ -645,7 +645,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "b425c959-77e2-49bd-8865-dbdb59348b1a", @@ -657,7 +657,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml636r" + "lastUpdaterUserId": "user" }, { "uuid": "3f631e5f-5a89-48e1-9a22-ef4bff70041e", @@ -669,7 +669,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "a6c14d60-4705-4c73-a5a6-0210c9f0d8b7", @@ -681,7 +681,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml636r" + "lastUpdaterUserId": "user" }, { "uuid": "f6b85fc7-0be4-408a-8682-66227e9a9788", @@ -693,7 +693,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml636r" + "lastUpdaterUserId": "user" }, { "uuid": "35014ae6-b3dd-4a06-9046-df1b54354d40", @@ -705,7 +705,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "5fe71b5f-c733-4500-b129-a2f5822ba6f2", @@ -717,7 +717,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { "uuid": "1b81e5d3-4a08-4db5-84a9-09096ff0f5ad", @@ -729,7 +729,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "65624d26-fca6-4af0-bbdb-f3cc33b81417", @@ -741,7 +741,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "3445e9cf-056a-4f0f-b0c3-a151cf9f3c5c", @@ -753,7 +753,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "78ff76c9-23d2-44c4-b0da-2492d93490b9", @@ -765,7 +765,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "3ce98526-e5b6-4b40-99a1-916cca22b652", @@ -777,7 +777,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { "uuid": "aae2edf9-690a-4633-a6ff-d7556ab9ce58", @@ -789,7 +789,7 @@ "subCategory": "Network Elements", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "5a8831a3-d481-49ce-b029-754e37e4bc07", @@ -801,7 +801,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml636r" + "lastUpdaterUserId": "user" }, { "uuid": "5c94528b-c068-4ece-9903-2a206e7b653b", @@ -813,7 +813,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml636r" + "lastUpdaterUserId": "user" }, { "uuid": "0b62cd13-b416-40fc-904b-b071f22134cd", @@ -825,7 +825,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml636r" + "lastUpdaterUserId": "user" }, { "uuid": "ee55b9c4-6ea2-4351-bf6e-f88f38130fd8", @@ -837,7 +837,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { "uuid": "c01c047d-395f-44fa-a34f-dc3f9c51c92c", @@ -849,7 +849,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "143166ba-bb54-4a38-b3c5-24850a16a283", @@ -861,7 +861,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "d6554a01-a3db-4dfe-8f41-af3866e18fa0", @@ -873,7 +873,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { "uuid": "5fc1e5d4-1015-4614-b486-8727eb5e388b", @@ -885,7 +885,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "90024548-1f2c-4267-b3f7-b64b2b7174d5", @@ -897,7 +897,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "592fb9b5-aace-4c14-8e10-f1214cc532f0", @@ -909,7 +909,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml636r" + "lastUpdaterUserId": "user" }, { "uuid": "73b40185-4478-402c-8951-2dd03b3e0e3c", @@ -921,7 +921,7 @@ "subCategory": "Contrail Route", "resourceType": "VFC", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "ml636r" + "lastUpdaterUserId": "user" }, { "uuid": "61214be3-e560-44cc-877b-d484bcc2ee79", @@ -933,7 +933,7 @@ "subCategory": "Infrastructure", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "efb54bab-a842-48b3-842a-dffb000acf1f", @@ -945,7 +945,7 @@ "subCategory": "Database", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "42315f4b-660e-44a5-b4bb-7fb80087de69", @@ -957,7 +957,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "4066e7da-0dba-4d0b-b74c-c30446ed277e", @@ -969,7 +969,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "b39e436d-47b0-4509-95d6-8a63e2c722d1", @@ -981,7 +981,7 @@ "subCategory": "Infrastructure", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "94b8f588-624c-4e61-9ead-32aaadd8cf65", @@ -993,7 +993,7 @@ "subCategory": "Rules", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "fa17c264-7f19-4919-a1d4-aab5c53b9c32", @@ -1005,7 +1005,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "76ba485f-50a3-480d-895e-5c319191bc11", @@ -1017,7 +1017,7 @@ "subCategory": "Allotted Resource", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99124" + "lastUpdaterUserId": "user" }, { "uuid": "1909a305-e032-46ce-9278-c751659958cc", @@ -1029,7 +1029,7 @@ "subCategory": "Allotted Resource", "resourceType": "VFC", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "64fb42a4-7c3d-415b-afd0-1949abef550a", @@ -1041,7 +1041,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "c3ed93e4-4955-4100-8f4b-c9472cb3f28f", @@ -1053,7 +1053,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { "uuid": "a71b3246-b54e-4646-bd6f-d5a11d4878df", @@ -1065,7 +1065,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { "uuid": "d36283cc-7d52-4893-8f72-fbffbbe17857", @@ -1077,7 +1077,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "2ef832aa-25f1-4f5a-b6d4-a6ee90011918", @@ -1089,7 +1089,7 @@ "subCategory": "Infrastructure", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "31060494-0c59-4c15-b4f4-34900d73b803", @@ -1101,7 +1101,7 @@ "subCategory": "Infrastructure", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "d57e57d2-e3c6-470d-8d16-e6ea05f536c5", @@ -1113,7 +1113,7 @@ "subCategory": "Rules", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "db9360b9-0edb-43e1-8cf0-00bb90b7c2be", @@ -1125,7 +1125,7 @@ "subCategory": "Rules", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "503948a9-03bb-4738-8464-c6e21da10792", @@ -1137,7 +1137,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "e4514d83-9708-427f-a62b-f996e426ba58", @@ -1149,7 +1149,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "3ab24991-cf93-4d40-9468-52d233d36ad6", @@ -1161,7 +1161,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "930aab76-fc52-43dd-8f19-e2ce11503bb5", @@ -1173,7 +1173,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "fca030db-0a4b-4873-94d2-20ea6b8f259f", @@ -1185,7 +1185,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "bc74b1ae-11f7-4550-8c25-e528e749d2ea", @@ -1197,7 +1197,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rb844h" + "lastUpdaterUserId": "user" }, { "uuid": "624a7da1-68ce-4b95-9d50-6a07d645e421", @@ -1209,7 +1209,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rb844h" + "lastUpdaterUserId": "user" }, { "uuid": "0c19272a-b2a2-4ffe-a6e7-ce3a683f23fc", @@ -1221,7 +1221,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "az2497" + "lastUpdaterUserId": "user" }, { "uuid": "46887197-fec9-4cf5-9207-e6e7f4a6cf3a", @@ -1233,7 +1233,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "563ca30e-8e6f-4456-b1c0-d1a5b6b052aa", @@ -1245,7 +1245,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "2437819c-3f2e-4ae8-9427-b41463a63a21", @@ -1257,31 +1257,31 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "3c9b6ec9-2b6a-4c81-96cd-f3e5c0264ae6", "invariantUUID": "cdc19c35-bcac-4f78-a7a6-c216b374f5a3", - "name": "VmmscAic30MultiMembersMultiGroupsVolumeCs.nodes.heat.nems_fe", + "name": "VmmscLab30MultiMembersMultiGroupsVolumeCs.nodes.heat.nems_fe", "version": "1.0", "toscaModelURL": "/sdc/v1/catalog/resources/3c9b6ec9-2b6a-4c81-96cd-f3e5c0264ae6/toscaModel", "category": "Generic", "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "612317df-67b5-487f-b592-44f5e682b0a9", "invariantUUID": "3bae7612-b50d-48ed-8ae7-b6f17521395b", - "name": "VmmscAic30MultiMembersMultiGroupsVolumeCs.nodes.heat.nems_be", + "name": "VmmscLab30MultiMembersMultiGroupsVolumeCs.nodes.heat.nems_be", "version": "1.0", "toscaModelURL": "/sdc/v1/catalog/resources/612317df-67b5-487f-b592-44f5e682b0a9/toscaModel", "category": "Generic", "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "77b6934c-353e-407e-aa1e-6f1288cb3969", @@ -1293,7 +1293,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "48a5a370-d91d-4bdd-a1a0-8d82eedcced8", @@ -1305,7 +1305,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "1450f9c2-b491-4ac6-a388-db4e0752a58f", @@ -1317,7 +1317,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "311a159d-ea0b-494c-97dd-52683df85faf", @@ -1329,7 +1329,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "4902fae4-7f42-43c5-9472-fe12eca3f510", @@ -1341,7 +1341,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "a82e5a26-463c-4b17-9d6e-16ea1f8c0dde", @@ -1353,7 +1353,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "d852ce5c-c883-41a1-88f9-167b8b4ff197", @@ -1365,7 +1365,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "b299bd46-66c1-4954-af45-2fe3188f5c5e", @@ -1377,7 +1377,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "f80f5252-2ecb-41e3-84d5-936586ae0a3a", @@ -1389,7 +1389,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "9e4b96d7-5701-413e-8461-4cac258365ca", @@ -1401,7 +1401,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "4d2bfb6f-9276-447b-b145-7f7856af9a6c", @@ -1413,7 +1413,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "a614b20e-9c45-4163-b673-38f0068c5365", @@ -1425,7 +1425,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "fbad0868-45e9-433b-ada7-070e88c09672", @@ -1437,7 +1437,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "e50cbfd4-a860-441b-b1ff-c654c3222ad6", @@ -1449,7 +1449,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "21aaf7bf-5af9-4b1a-9850-f4a5e95f185e", @@ -1461,7 +1461,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "9d4a37d7-3c9b-4dad-abb6-26b50b15da8b", @@ -1473,7 +1473,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "bb8fddbf-e011-4fed-9f36-181478f4e56c", @@ -1485,7 +1485,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "2bb496fb-6ede-42e0-957e-bd80fa2e8aa1", @@ -1497,7 +1497,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "a5226541-363b-4d78-8f52-06d421795457", @@ -1509,7 +1509,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "f58b4bcf-baec-4c11-a6d0-0e92d4629fd2", @@ -1521,7 +1521,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "30db70cc-17b8-4c39-a848-5f629e9a929e", @@ -1533,7 +1533,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "52398d14-90d0-4d3a-ac84-10b525e79e3c", @@ -1545,7 +1545,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "d0deff85-ca52-4c86-8ca7-a02deddba983", @@ -1557,7 +1557,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "25f77df9-f94a-4458-9699-5f483167f700", @@ -1569,7 +1569,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "1ce8b11c-589c-4359-9caa-590a43fb53ec", @@ -1581,7 +1581,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "f27b3a9c-b815-42fe-83c6-da86c18a63a6", @@ -1593,7 +1593,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "c63814fe-9d50-4283-8229-ede6a5961de9", @@ -1605,7 +1605,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "23f4bcc5-c6e1-4fdd-b45b-29eb3f82af2f", @@ -1617,7 +1617,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "e63ef8ed-d40d-4b5f-99da-898fbe4b051b", @@ -1629,7 +1629,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "292d2d83-c33b-4c22-8341-4401194a6499", @@ -1641,7 +1641,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "af51c072-1754-4db3-97be-179ab7433295", @@ -1653,7 +1653,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "5ec9fb9f-fa32-48e8-a317-8be839e15d30", @@ -1665,7 +1665,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "az2497" + "lastUpdaterUserId": "user" }, { "uuid": "3a8230f1-dd86-42f8-9d73-c239bc5c74e8", @@ -1677,7 +1677,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "5658235d-6a1e-47fe-8e5f-9e081a11b713", @@ -1689,7 +1689,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "d4979513-3719-4076-bbc1-5a4fe040ddc6", @@ -1701,7 +1701,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "a450b1ba-2d69-44e7-8934-1d21952ba6c9", @@ -1713,7 +1713,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "c0bd2a8b-9dc3-4819-8ab1-11175ae06ef1", @@ -1725,7 +1725,7 @@ "subCategory": "Infrastructure", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "5f6ccc29-6f6c-41cf-b995-73c58e7278d2", @@ -1737,7 +1737,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "5d6fdb58-1166-41b6-aab7-260e494ccc58", @@ -1749,7 +1749,7 @@ "subCategory": "Infrastructure", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "jh0003" + "lastUpdaterUserId": "user" }, { "uuid": "57d4264b-3175-4a31-9515-f23c0318930f", @@ -1761,7 +1761,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "dcd62b53-a045-4864-9ed3-aaf722fec10a", @@ -1773,7 +1773,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "aa00977d-ff67-473a-acb8-bb24db037a0b", @@ -1785,7 +1785,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "cb08bf67-6fc9-44ae-ae31-ab619cfd94af", @@ -1797,7 +1797,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "cc3a0064-e9d4-421e-ba14-ce340adb7ed9", @@ -1809,7 +1809,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "1f927980-bd8d-4a0c-8002-8f550e52efbe", @@ -1821,7 +1821,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "6d1669d1-be78-47e7-aed4-d5a2267c81d4", @@ -1833,7 +1833,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "bd9e5061-40dc-42ca-8d77-c606a24c8bfd", @@ -1845,7 +1845,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "68ea026e-c604-47b5-9cd1-524a58714a14", @@ -1857,7 +1857,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "bc3a8aae-7f94-4dac-b819-d37a077a08fc", @@ -1869,7 +1869,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { "uuid": "8ba3f710-58d4-4d60-9384-1dad449d381a", @@ -1881,7 +1881,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "0a09e932-9fde-4e52-b7e3-2e542b61faa0", @@ -1893,7 +1893,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { "uuid": "fa6ca25b-4578-4093-b8a2-031cb8f1f481", @@ -1905,7 +1905,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { "uuid": "f11a8681-ab58-4f0d-8387-76ecdfa31073", @@ -1917,7 +1917,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { "uuid": "4b1cca9b-23a0-4037-aaf3-ce5cd7c91851", @@ -1929,7 +1929,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "17ed7b78-1ffb-4864-a2ec-b6666a5fed16", @@ -1941,7 +1941,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "ab89b69b-b92b-4e34-b1db-a6378d709241", @@ -1953,7 +1953,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "d45694e4-ed86-4a44-a644-5a8a3ff89397", @@ -1965,7 +1965,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "5c7fd7c0-fc79-4309-bb03-85388cae45a8", @@ -1977,7 +1977,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "az2497" + "lastUpdaterUserId": "user" }, { "uuid": "f739ea35-7bd4-42ed-b9ee-1e0fd2017c72", @@ -1989,7 +1989,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "f2339431-f3ab-41c9-90c4-6c2c958e1b06", @@ -2001,7 +2001,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "15728e01-7076-4765-8002-95154ad29d5f", @@ -2013,7 +2013,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "ab168037-e654-4990-a188-e5d2f25a8768", @@ -2025,7 +2025,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535" + "lastUpdaterUserId": "user" }, { "uuid": "e1d7eb6a-646d-4906-9981-44ed892dc01c", @@ -2037,7 +2037,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "74c527c6-edb7-4bbe-a63c-d2daf5a12db0", @@ -2049,7 +2049,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "345459d0-ba42-45ba-9eb0-cc56e4f35ea9", @@ -2061,31 +2061,31 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "bc40b750-56ab-4c6b-8e15-412f9be0178f", "invariantUUID": "ab769637-063f-41fd-927d-771a1913235b", - "name": "VmmscAic30MultiMembersMultiGroupsVolumeCs.nodes.heat.mmsc", + "name": "VmmscLab30MultiMembersMultiGroupsVolumeCs.nodes.heat.mmsc", "version": "1.0", "toscaModelURL": "/sdc/v1/catalog/resources/bc40b750-56ab-4c6b-8e15-412f9be0178f/toscaModel", "category": "Generic", "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "3ff3d87f-c55f-4b4c-a8ae-29931d910359", "invariantUUID": "5af2c63a-1b3e-42a5-ab4b-07e97d1dcbd2", - "name": "VmmscAic30MultiMembersMultiGroupsVolume.nodes.heat.nems_be", + "name": "VmmscLab30MultiMembersMultiGroupsVolume.nodes.heat.nems_be", "version": "1.0", "toscaModelURL": "/sdc/v1/catalog/resources/3ff3d87f-c55f-4b4c-a8ae-29931d910359/toscaModel", "category": "Generic", "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "fda7cb95-cbd0-46cc-8311-87ae632f75d6", @@ -2097,7 +2097,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "d8a2de8a-27d8-491c-bbb9-da779a4da7c6", @@ -2109,19 +2109,19 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "d544d6a6-4fcc-42db-97f6-e8cccc69c5ee", "invariantUUID": "cd4a433e-cf76-4652-a6b8-59e657e0c5a0", - "name": "VmmscAic30MultiMembersMultiGroupsVolumeCs.nodes.heat.lb", + "name": "VmmscLab30MultiMembersMultiGroupsVolumeCs.nodes.heat.lb", "version": "1.0", "toscaModelURL": "/sdc/v1/catalog/resources/d544d6a6-4fcc-42db-97f6-e8cccc69c5ee/toscaModel", "category": "Generic", "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "5d6e7129-d7c8-41b8-ae2a-5f1688162c7c", @@ -2133,7 +2133,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "fcc6655e-7074-48de-89ef-ef6e4a5705e3", @@ -2145,7 +2145,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "400cab12-2d1e-4a2c-a33a-d9d7b3262dd1", @@ -2157,7 +2157,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "a068d0c0-06c6-4b58-bc99-6ac910700edb", @@ -2169,7 +2169,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "c2e88763-87a9-4d33-b598-7811ae3f87d2", @@ -2181,19 +2181,19 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "de861add-3f4a-4526-9754-8bcb69d0fd0e", "invariantUUID": "67560771-ffcb-46fb-a40c-0e1dee74f43a", - "name": "VmmscAic30MultiMembersMultiGroupsVolume.nodes.heat.mmsc", + "name": "VmmscLab30MultiMembersMultiGroupsVolume.nodes.heat.mmsc", "version": "1.0", "toscaModelURL": "/sdc/v1/catalog/resources/de861add-3f4a-4526-9754-8bcb69d0fd0e/toscaModel", "category": "Generic", "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "4514b4e5-f163-4011-87fd-445f4366e3c2", @@ -2205,7 +2205,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "3679d10e-a1a2-46a4-97b3-4056a0920e7b", @@ -2217,7 +2217,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "f905ca32-dac5-4337-a1d7-cc2bca86b407", @@ -2229,7 +2229,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "ee10af8a-c8bf-4455-808e-5550050d4ea9", @@ -2241,7 +2241,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "771ca169-bfac-4306-9748-b2ae804852f9", @@ -2253,7 +2253,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535" + "lastUpdaterUserId": "user" }, { "uuid": "72682bb7-94ca-47a7-9917-826f62e3d00d", @@ -2265,7 +2265,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "1fa641db-1d77-4242-8d0b-c0aa5f88fe2e", @@ -2277,19 +2277,19 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "897dcb54-bb55-4311-8c0e-b663781d7e4f", "invariantUUID": "c223adda-e48d-487d-98e8-654bbb8268af", - "name": "VmmscAic30MultiMembersMultiGroupsVolume.nodes.heat.lb", + "name": "VmmscLab30MultiMembersMultiGroupsVolume.nodes.heat.lb", "version": "1.0", "toscaModelURL": "/sdc/v1/catalog/resources/897dcb54-bb55-4311-8c0e-b663781d7e4f/toscaModel", "category": "Generic", "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "a60c5230-8201-4b50-84a8-c905128c2bc2", @@ -2301,19 +2301,19 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "173c32b5-44c8-4404-ba18-32d9de49afae", "invariantUUID": "c247493b-15a4-47af-bb6b-c664cb5a4d37", - "name": "VmmscAic30MultiMembersMultiGroupsVolume.nodes.heat.eca_trx", + "name": "VmmscLab30MultiMembersMultiGroupsVolume.nodes.heat.eca_trx", "version": "1.0", "toscaModelURL": "/sdc/v1/catalog/resources/173c32b5-44c8-4404-ba18-32d9de49afae/toscaModel", "category": "Generic", "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "59aa2d42-db52-438c-a69c-0b97a193abcd", @@ -2325,19 +2325,19 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "0e6509c9-7d35-4daf-9086-9fe30fdd1275", "invariantUUID": "9516ad03-b122-4738-ad6d-d9c2166cd75a", - "name": "VmmscAic30MultiMembersMultiGroupsVolume.nodes.heat.nems_fe", + "name": "VmmscLab30MultiMembersMultiGroupsVolume.nodes.heat.nems_fe", "version": "1.0", "toscaModelURL": "/sdc/v1/catalog/resources/0e6509c9-7d35-4daf-9086-9fe30fdd1275/toscaModel", "category": "Generic", "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "e541a64c-9de7-4c71-b827-eb0f4d319e62", @@ -2349,7 +2349,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "5e448cd9-6dbd-4c31-98f2-caeceaf5efa7", @@ -2361,7 +2361,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "d5c6a462-9d9a-46d4-a0b2-485300f34f0c", @@ -2373,19 +2373,19 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "8678abfe-8cbd-42f2-aa78-ca47a1beaa14", "invariantUUID": "4d02c8a5-e141-4d01-94ec-7a3b94afda97", - "name": "VmmscAic30MultiMembersMultiGroupsVolumeCs.nodes.heat.eca_trx", + "name": "VmmscLab30MultiMembersMultiGroupsVolumeCs.nodes.heat.eca_trx", "version": "1.0", "toscaModelURL": "/sdc/v1/catalog/resources/8678abfe-8cbd-42f2-aa78-ca47a1beaa14/toscaModel", "category": "Generic", "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "1c469da0-298f-41ea-94a2-aef82264e1e7", @@ -2397,7 +2397,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "c29e22e2-1a09-4164-a9a2-72d0e3f5df5b", @@ -2409,7 +2409,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "986b76dc-aca7-45b1-919c-398b770d5504", @@ -2421,7 +2421,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "606f6c2b-a411-4644-a183-5487e3aed612", @@ -2433,7 +2433,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "00695bbf-fa3f-47e4-96d7-973700a66f4f", @@ -2445,7 +2445,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "d94275b4-ccfa-4096-bd7b-dd45ff6e84f2", @@ -2457,7 +2457,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "8beb2fe4-672e-46c3-8650-e2065ea429ea", @@ -2469,7 +2469,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "c4b4f162-a616-45c6-b229-9833a78a46fd", @@ -2481,7 +2481,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "95e982cd-551d-49b2-9600-04f1328b9ab5", @@ -2493,7 +2493,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "8316c6e3-7791-42cb-80fb-e57ed0809be6", @@ -2505,7 +2505,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535" + "lastUpdaterUserId": "user" }, { "uuid": "49cc354b-ea2e-48a9-a6b8-d414e6991898", @@ -2517,7 +2517,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rb844h" + "lastUpdaterUserId": "user" }, { "uuid": "cc0048fb-a464-4407-9907-5e760684bc7b", @@ -2529,7 +2529,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "bc1dea1b-5753-4d17-af6f-ac6050b3e281", @@ -2541,7 +2541,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "0b894e43-6d45-4c3d-95dd-2e80228055f3", @@ -2553,7 +2553,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "2bb1e047-fa3b-41f5-9d29-ebbdbf01857c", @@ -2565,7 +2565,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { "uuid": "05c82d0d-826b-458c-8c81-9572298522a3", @@ -2577,7 +2577,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535" + "lastUpdaterUserId": "user" }, { "uuid": "c6809100-9349-4f98-a066-55b6f0cb8650", @@ -2589,7 +2589,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rb844h" + "lastUpdaterUserId": "user" }, { "uuid": "abe50ede-b86c-415f-9f5f-235200433b51", @@ -2601,7 +2601,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ss8214" + "lastUpdaterUserId": "user" }, { "uuid": "3ce1be04-57ad-4deb-bdba-b18447374a88", @@ -2613,7 +2613,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { "uuid": "f6406bba-b64c-4211-aaee-773cde6e7d54", @@ -2625,7 +2625,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { "uuid": "d48751e4-07de-4208-9307-7ecb775fe7ca", @@ -2637,7 +2637,7 @@ "subCategory": "Call Control", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { "uuid": "cdb99a41-e2ee-4b59-9107-13f0b2282ccc", @@ -2649,7 +2649,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "pa0916" + "lastUpdaterUserId": "user" }, { "uuid": "99b9dce6-ed85-4d76-aed9-40c020ba4607", @@ -2661,7 +2661,7 @@ "subCategory": "Call Control", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { "uuid": "acf4e0fa-17f9-4ac8-9fb2-2301cf942fcf", @@ -2673,7 +2673,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "fb6a8f39-84be-49a2-b551-26ce99ee6853", @@ -2685,7 +2685,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { "uuid": "b09ec9ff-af66-4bdc-82d4-01a918e8e3ca", @@ -2697,7 +2697,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { "uuid": "83256b0a-cb38-45de-b5f0-d2d4390f543d", @@ -2709,7 +2709,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { "uuid": "16ba1289-5f91-4f07-914a-d2456d11c673", @@ -2721,7 +2721,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "93fe78c8-1350-4b1f-ac5f-ede411b992a0", @@ -2733,7 +2733,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "1e5eafc0-1888-4247-9762-9ebd1383d0ae", @@ -2745,7 +2745,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { "uuid": "01faf05a-70b9-442f-be62-9884ea4cdf33", @@ -2757,7 +2757,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "4583652c-e066-4a5c-88b8-fbcdd8619d2c", @@ -2769,7 +2769,7 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { "uuid": "16f02038-00f6-4a11-ab98-2a2154e98924", @@ -2781,6 +2781,6 @@ "subCategory": "Abstract", "resourceType": "VFC", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" } ] diff --git a/src/test/resources/example/sdc/sdcVFResources.json b/src/test/resources/example/sdc/sdcVFResources.json index 7bf99bb45..4274ba8fc 100644 --- a/src/test/resources/example/sdc/sdcVFResources.json +++ b/src/test/resources/example/sdc/sdcVFResources.json @@ -9,7 +9,7 @@ "subCategory": "Router", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08743" + "lastUpdaterUserId": "user" }, { @@ -22,7 +22,7 @@ "subCategory": "Load Balancer", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "ss8214" + "lastUpdaterUserId": "user" }, { @@ -35,7 +35,7 @@ "subCategory": "Call Control", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sw594b" + "lastUpdaterUserId": "user" }, { @@ -48,7 +48,7 @@ "subCategory": "Database", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "ss8214" + "lastUpdaterUserId": "user" }, { @@ -61,7 +61,7 @@ "subCategory": "Contrail Route", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "el489u" + "lastUpdaterUserId": "user" }, { @@ -74,7 +74,7 @@ "subCategory": "Network Elements", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08743" + "lastUpdaterUserId": "user" }, { @@ -87,7 +87,7 @@ "subCategory": "Application Server", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08743" + "lastUpdaterUserId": "user" }, { @@ -100,7 +100,7 @@ "subCategory": "LAN Connectors", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -113,7 +113,7 @@ "subCategory": "Allotted Resource", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -126,7 +126,7 @@ "subCategory": "Microservice", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { @@ -139,7 +139,7 @@ "subCategory": "Microservice", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08743" + "lastUpdaterUserId": "user" }, { @@ -152,7 +152,7 @@ "subCategory": "Media Servers", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -165,7 +165,7 @@ "subCategory": "Allotted Resource", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { @@ -178,7 +178,7 @@ "subCategory": "WAN Connectors", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { @@ -191,7 +191,7 @@ "subCategory": "IP Mux Demux", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "ys278k" + "lastUpdaterUserId": "user" }, { @@ -204,7 +204,7 @@ "subCategory": "Microservice", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { @@ -217,7 +217,7 @@ "subCategory": "Microservice", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08743" + "lastUpdaterUserId": "user" }, { @@ -230,7 +230,7 @@ "subCategory": "Allotted Resource", "resourceType": "VF", "lifecycleState": "CERTIFICATION_IN_PROGRESS", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -243,7 +243,7 @@ "subCategory": "IP Mux Demux", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "le056g" + "lastUpdaterUserId": "user" }, { @@ -256,7 +256,7 @@ "subCategory": "Microservice", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "ss8214" + "lastUpdaterUserId": "user" }, { @@ -269,7 +269,7 @@ "subCategory": "Collector", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "lr0306" + "lastUpdaterUserId": "user" }, { @@ -282,7 +282,7 @@ "subCategory": "Call Control", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -295,7 +295,7 @@ "subCategory": "Router", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -308,7 +308,7 @@ "subCategory": "Call Control", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "pa0916" + "lastUpdaterUserId": "user" }, { @@ -321,7 +321,7 @@ "subCategory": "Firewall", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -334,7 +334,7 @@ "subCategory": "Firewall", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -347,7 +347,7 @@ "subCategory": "Microservice", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08743" + "lastUpdaterUserId": "user" }, { @@ -360,7 +360,7 @@ "subCategory": "Infrastructure", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "pa0916" + "lastUpdaterUserId": "user" }, { @@ -373,7 +373,7 @@ "subCategory": "Abstract", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "sj2381" + "lastUpdaterUserId": "user" }, { @@ -386,7 +386,7 @@ "subCategory": "Call Control", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -399,7 +399,7 @@ "subCategory": "Collector", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08743" + "lastUpdaterUserId": "user" }, { @@ -412,7 +412,7 @@ "subCategory": "Allotted Resource", "resourceType": "VF", "lifecycleState": "CERTIFICATION_IN_PROGRESS", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -425,7 +425,7 @@ "subCategory": "Tunnel XConnect", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "rb844h" + "lastUpdaterUserId": "user" }, { @@ -438,7 +438,7 @@ "subCategory": "Virtual Links", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { @@ -451,7 +451,7 @@ "subCategory": "Collector", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08743" + "lastUpdaterUserId": "user" }, { @@ -464,7 +464,7 @@ "subCategory": "Infrastructure", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sw594b" + "lastUpdaterUserId": "user" }, { @@ -477,7 +477,7 @@ "subCategory": "Database", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -490,7 +490,7 @@ "subCategory": "Media Servers", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -503,7 +503,7 @@ "subCategory": "Call Control", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -516,7 +516,7 @@ "subCategory": "IP Mux Demux", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "yy815m" + "lastUpdaterUserId": "user" }, { @@ -529,7 +529,7 @@ "subCategory": "Router", "resourceType": "VF", "lifecycleState": "CERTIFICATION_IN_PROGRESS", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -542,7 +542,7 @@ "subCategory": "Call Control", "resourceType": "VF", "lifecycleState": "READY_FOR_CERTIFICATION", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { @@ -555,7 +555,7 @@ "subCategory": "Call Control", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -568,7 +568,7 @@ "subCategory": "Security Zone", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "nk909r" + "lastUpdaterUserId": "user" }, { @@ -581,7 +581,7 @@ "subCategory": "Load Balancer", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -594,7 +594,7 @@ "subCategory": "Utility", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535" + "lastUpdaterUserId": "user" }, { @@ -607,7 +607,7 @@ "subCategory": "Utility", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535" + "lastUpdaterUserId": "user" }, { @@ -620,7 +620,7 @@ "subCategory": "Application Server", "resourceType": "VF", "lifecycleState": "READY_FOR_CERTIFICATION", - "lastUpdaterUserId": "rx827p" + "lastUpdaterUserId": "user" }, { @@ -633,7 +633,7 @@ "subCategory": "Tunnel XConnect", "resourceType": "VF", "lifecycleState": "READY_FOR_CERTIFICATION", - "lastUpdaterUserId": "rb844h" + "lastUpdaterUserId": "user" }, { @@ -646,7 +646,7 @@ "subCategory": "Microservice", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535" + "lastUpdaterUserId": "user" }, { @@ -659,7 +659,7 @@ "subCategory": "Firewall", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "mh677g" + "lastUpdaterUserId": "user" }, { @@ -672,7 +672,7 @@ "subCategory": "Web Server", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -685,7 +685,7 @@ "subCategory": "Gateway", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -698,7 +698,7 @@ "subCategory": "Application Server", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535" + "lastUpdaterUserId": "user" }, { @@ -711,7 +711,7 @@ "subCategory": "Source", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535" + "lastUpdaterUserId": "user" }, { @@ -724,7 +724,7 @@ "subCategory": "Firewall", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "nk909r" + "lastUpdaterUserId": "user" }, { @@ -737,7 +737,7 @@ "subCategory": "Collector", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "ym903w" + "lastUpdaterUserId": "user" }, { @@ -750,7 +750,7 @@ "subCategory": "Database", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -763,7 +763,7 @@ "subCategory": "Media Servers", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "yy815m" + "lastUpdaterUserId": "user" }, { @@ -776,7 +776,7 @@ "subCategory": "Call Control", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { @@ -789,7 +789,7 @@ "subCategory": "Call Control", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { @@ -802,7 +802,7 @@ "subCategory": "Service Admin", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "ol664w" + "lastUpdaterUserId": "user" }, { @@ -815,7 +815,7 @@ "subCategory": "Firewall", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { @@ -828,7 +828,7 @@ "subCategory": "Call Control", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { @@ -841,7 +841,7 @@ "subCategory": "Collector", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "ml4535" + "lastUpdaterUserId": "user" }, { @@ -854,7 +854,7 @@ "subCategory": "Media Servers", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -867,7 +867,7 @@ "subCategory": "Application Server", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "m08740" + "lastUpdaterUserId": "user" }, { @@ -880,7 +880,7 @@ "subCategory": "Allotted Resource", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "ol664w" + "lastUpdaterUserId": "user" }, { @@ -893,7 +893,7 @@ "subCategory": "Infrastructure", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { @@ -906,7 +906,7 @@ "subCategory": "Allotted Resource", "resourceType": "VF", "lifecycleState": "CERTIFICATION_IN_PROGRESS", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -919,7 +919,7 @@ "subCategory": "Tunnel XConnect", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { @@ -932,7 +932,7 @@ "subCategory": "Call Control", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "pa0916" + "lastUpdaterUserId": "user" }, { @@ -945,7 +945,7 @@ "subCategory": "Firewall", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "az2497" + "lastUpdaterUserId": "user" }, { @@ -958,7 +958,7 @@ "subCategory": "Firewall", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "nk909r" + "lastUpdaterUserId": "user" }, { @@ -971,7 +971,7 @@ "subCategory": "Firewall", "resourceType": "VF", "lifecycleState": "READY_FOR_CERTIFICATION", - "lastUpdaterUserId": "nk909r" + "lastUpdaterUserId": "user" }, { @@ -984,7 +984,7 @@ "subCategory": "Border Element", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -997,7 +997,7 @@ "subCategory": "Firewall", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "nk909r" + "lastUpdaterUserId": "user" }, { @@ -1010,7 +1010,7 @@ "subCategory": "Database", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99124" + "lastUpdaterUserId": "user" }, { @@ -1023,7 +1023,7 @@ "subCategory": "Load Balancer", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99124" + "lastUpdaterUserId": "user" }, { @@ -1036,7 +1036,7 @@ "subCategory": "Firewall", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "lm906x" + "lastUpdaterUserId": "user" }, { @@ -1049,7 +1049,7 @@ "subCategory": "Collector", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535" + "lastUpdaterUserId": "user" }, { @@ -1062,7 +1062,7 @@ "subCategory": "Call Control", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1075,7 +1075,7 @@ "subCategory": "Call Control", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535" + "lastUpdaterUserId": "user" }, { @@ -1088,7 +1088,7 @@ "subCategory": "Database", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1101,7 +1101,7 @@ "subCategory": "Border Element", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99124" + "lastUpdaterUserId": "user" }, { @@ -1114,7 +1114,7 @@ "subCategory": "Collector", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -1127,7 +1127,7 @@ "subCategory": "Web Server", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99124" + "lastUpdaterUserId": "user" }, { @@ -1140,7 +1140,7 @@ "subCategory": "Web Server", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1153,7 +1153,7 @@ "subCategory": "Media Servers", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1166,7 +1166,7 @@ "subCategory": "Firewall", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "nk909r" + "lastUpdaterUserId": "user" }, { @@ -1179,7 +1179,7 @@ "subCategory": "Border Element", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1192,7 +1192,7 @@ "subCategory": "Contrail Route", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1205,7 +1205,7 @@ "subCategory": "Common Network Resources", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -1218,7 +1218,7 @@ "subCategory": "Security Zone", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1231,7 +1231,7 @@ "subCategory": "IP Mux Demux", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99124" + "lastUpdaterUserId": "user" }, { @@ -1244,7 +1244,7 @@ "subCategory": "WAN Connectors", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m99124" + "lastUpdaterUserId": "user" }, { @@ -1257,7 +1257,7 @@ "subCategory": "Gateway", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1270,7 +1270,7 @@ "subCategory": "Call Control", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { @@ -1283,7 +1283,7 @@ "subCategory": "Load Balancer", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1296,7 +1296,7 @@ "subCategory": "Call Control", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ed852m" + "lastUpdaterUserId": "user" }, { @@ -1309,7 +1309,7 @@ "subCategory": "Call Control", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sw594b" + "lastUpdaterUserId": "user" }, { @@ -1322,7 +1322,7 @@ "subCategory": "Database", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1335,7 +1335,7 @@ "subCategory": "Microservice", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535" + "lastUpdaterUserId": "user" }, { @@ -1348,7 +1348,7 @@ "subCategory": "Gateway", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -1361,7 +1361,7 @@ "subCategory": "Source", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "ml4535" + "lastUpdaterUserId": "user" }, { @@ -1374,7 +1374,7 @@ "subCategory": "Load Balancer", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1387,7 +1387,7 @@ "subCategory": "Firewall", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "lm906x" + "lastUpdaterUserId": "user" }, { @@ -1400,7 +1400,7 @@ "subCategory": "Common Network Resources", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -1413,7 +1413,7 @@ "subCategory": "Firewall", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "nk909r" + "lastUpdaterUserId": "user" }, { @@ -1426,7 +1426,7 @@ "subCategory": "Call Control", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "m99121" + "lastUpdaterUserId": "user" }, { @@ -1439,7 +1439,7 @@ "subCategory": "Service Admin", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "rb844h" + "lastUpdaterUserId": "user" }, { @@ -1452,7 +1452,7 @@ "subCategory": "Collector", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "af3193" + "lastUpdaterUserId": "user" }, { @@ -1465,7 +1465,7 @@ "subCategory": "Database", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -1478,7 +1478,7 @@ "subCategory": "Router", "resourceType": "VF", "lifecycleState": "CERTIFIED", - "lastUpdaterUserId": "m08743" + "lastUpdaterUserId": "user" }, { @@ -1491,7 +1491,7 @@ "subCategory": "Router", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -1504,7 +1504,7 @@ "subCategory": "Load Balancer", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "ss8214" + "lastUpdaterUserId": "user" }, { @@ -1517,7 +1517,7 @@ "subCategory": "Firewall", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKIN", - "lastUpdaterUserId": "sa997j" + "lastUpdaterUserId": "user" }, { @@ -1530,7 +1530,7 @@ "subCategory": "Infrastructure", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "rh176a" + "lastUpdaterUserId": "user" }, { @@ -1543,6 +1543,6 @@ "subCategory": "Microservice", "resourceType": "VF", "lifecycleState": "NOT_CERTIFIED_CHECKOUT", - "lastUpdaterUserId": "ss7286" + "lastUpdaterUserId": "user" } ]
\ No newline at end of file diff --git a/src/test/resources/example/tca-policy-req/blueprint-expected.yaml b/src/test/resources/example/tca-policy-req/blueprint-expected.yaml index a35557cca..07f679375 100644 --- a/src/test/resources/example/tca-policy-req/blueprint-expected.yaml +++ b/src/test/resources/example/tca-policy-req/blueprint-expected.yaml @@ -24,12 +24,12 @@ node_templates: app_preferences: {publisherContentType: application/json, publisherHostName: mrlocal-mtnjftle01.onap.org, publisherHostPort: '3905', publisherMaxBatchSize: '10', publisherMaxRecoveryQueueSize: '100000', publisherPollingInterval: '20000', publisherProtocol: https, publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub, - publisherUserName: m00502@tca.af.dcae.onap.org, publisherUserPassword: Te5021abc, + publisherUserName: test@tca.af.dcae.onap.org, publisherUserPassword: password, subscriberConsumerGroup: OpenDCAE-c12, subscriberConsumerId: c12, subscriberContentType: application/json, subscriberHostName: mrlocal-mtnjftle01.onap.org, subscriberHostPort: '3905', subscriberMessageLimit: '-1', subscriberPollingInterval: '20000', subscriberProtocol: https, subscriberTimeoutMS: '-1', subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub, - subscriberUserName: m00502@tca.af.dcae.onap.org, subscriberUserPassword: Te5021abc, + subscriberUserName: test@tca.af.dcae.onap.org, subscriberUserPassword: password, tca_policy: '{"domain":"measurementsForVfScaling","metricsPerEventName":[{"eventName":"vFirewallBroadcastPackets","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value","thresholdValue":123,"direction":"LESS_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ABATED"},{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"}]}]}'} artifact_name: dcae-analytics-tca artifact_version: 1.0.0 diff --git a/src/test/resources/example/tca-policy-req/blueprint-input.yaml b/src/test/resources/example/tca-policy-req/blueprint-input.yaml index 101dc2c0d..497a7972c 100644 --- a/src/test/resources/example/tca-policy-req/blueprint-input.yaml +++ b/src/test/resources/example/tca-policy-req/blueprint-input.yaml @@ -40,8 +40,8 @@ node_templates: publisherPollingInterval: '20000' publisherProtocol: https publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub - publisherUserName: m00502@tca.af.dcae.onap.org - publisherUserPassword: Te5021abc + publisherUserName: test@tca.af.dcae.onap.org + publisherUserPassword: password subscriberConsumerGroup: OpenDCAE-c12 subscriberConsumerId: c12 subscriberContentType: application/json @@ -52,8 +52,8 @@ node_templates: subscriberProtocol: https subscriberTimeoutMS: '-1' subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub - subscriberUserName: m00502@tca.af.dcae.onap.org - subscriberUserPassword: Te5021abc + subscriberUserName: test@tca.af.dcae.onap.org + subscriberUserPassword: password tca_policy: null artifact_name: dcae-analytics-tca artifact_version: 1.0.0 @@ -79,4 +79,4 @@ node_templates: streamname: TCASubscriberOutputStream relationships: - target: cdap_host_host - type: dcae.relationships.component_contained_in
\ No newline at end of file + type: dcae.relationships.component_contained_in diff --git a/src/test/resources/example/tca-policy-req/prop-text.json b/src/test/resources/example/tca-policy-req/prop-text.json index 42dd851e3..49673d25e 100644 --- a/src/test/resources/example/tca-policy-req/prop-text.json +++ b/src/test/resources/example/tca-policy-req/prop-text.json @@ -1 +1 @@ -{"global":[{"name":"service","value":["tosca_definitions_version: cloudify_dsl_1_3\r\nimports:\r\n- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\r\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml\r\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml\r\n- http://onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml\r\ninputs:\r\n location_id:\r\n type: string\r\n service_id:\r\n type: string\r\nnode_templates:\r\n cdap_host_host:\r\n type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure\r\n properties:\r\n location_id:\r\n get_input: location_id\r\n scn_override: cdap_broker.solutioning-central.dcae.onap.org\r\n interfaces:\r\n cloudify.interfaces.lifecycle: {\r\n }\r\n tca_tca:\r\n type: dcae.nodes.MicroService.cdap\r\n properties:\r\n app_config:\r\n appDescription: DCAE Analytics Threshold Crossing Alert Application\r\n appName: dcae-tca\r\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\r\n tcaVESAlertsTableName: TCAVESAlertsTable\r\n tcaVESAlertsTableTTLSeconds: '1728000'\r\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\r\n tcaVESMessageStatusTableTTLSeconds: '86400'\r\n thresholdCalculatorFlowletInstances: '2'\r\n app_preferences:\r\n publisherContentType: application/json\r\n publisherHostName: mrlocal-mtnjftle01.onap.org\r\n publisherHostPort: '3905'\r\n publisherMaxBatchSize: '10'\r\n publisherMaxRecoveryQueueSize: '100000'\r\n publisherPollingInterval: '20000'\r\n publisherProtocol: https\r\n publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub\r\n publisherUserName: m00502@tca.af.dcae.onap.org\r\n publisherUserPassword: Te5021abc\r\n subscriberConsumerGroup: OpenDCAE-c12\r\n subscriberConsumerId: c12\r\n subscriberContentType: application/json\r\n subscriberHostName: mrlocal-mtnjftle01.onap.org\r\n subscriberHostPort: '3905'\r\n subscriberMessageLimit: '-1'\r\n subscriberPollingInterval: '20000'\r\n subscriberProtocol: https\r\n subscriberTimeoutMS: '-1'\r\n subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub\r\n subscriberUserName: m00502@tca.af.dcae.onap.org\r\n subscriberUserPassword: Te5021abc\r\n tca_policy: '{\"domain\":\"measurementsForVfScaling\",\"metricsPerEventName\":[{\"eventName\":\"vFirewallBroadcastPackets\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"DCAE\",\"policyName\":\"example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\",\"thresholdValue\":123,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"MAJOR\",\"closedLoopEventStatus\":\"ONSET\"},{\"closedLoopControlName\":\"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\",\"thresholdValue\":123,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"MAJOR\",\"closedLoopEventStatus\":\"ONSET\"}]}]}'\r\n artifact_name: dcae-analytics-tca\r\n artifact_version: 1.0.0\r\n connections:\r\n streams_publishes: [\r\n ]\r\n streams_subscribes: [\r\n ]\r\n jar_url: http://somejar\r\n location_id:\r\n get_input: location_id\r\n namespace: cdap_tca_hi_lo\r\n programs:\r\n - program_id: TCAVESCollectorFlow\r\n program_type: flows\r\n - program_id: TCADMaaPMRSubscriberWorker\r\n program_type: workers\r\n - program_id: TCADMaaPMRPublisherWorker\r\n program_type: workers\r\n service_component_type: cdap_app_tca\r\n service_id:\r\n get_input: service_id\r\n streamname: TCASubscriberOutputStream\r\n relationships:\r\n - target: cdap_host_host\r\n type: dcae.relationships.component_contained_in"]}]}
\ No newline at end of file +{"global":[{"name":"service","value":["tosca_definitions_version: cloudify_dsl_1_3\r\nimports:\r\n- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\r\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml\r\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml\r\n- http://onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml\r\ninputs:\r\n location_id:\r\n type: string\r\n service_id:\r\n type: string\r\nnode_templates:\r\n cdap_host_host:\r\n type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure\r\n properties:\r\n location_id:\r\n get_input: location_id\r\n scn_override: cdap_broker.solutioning-central.dcae.onap.org\r\n interfaces:\r\n cloudify.interfaces.lifecycle: {\r\n }\r\n tca_tca:\r\n type: dcae.nodes.MicroService.cdap\r\n properties:\r\n app_config:\r\n appDescription: DCAE Analytics Threshold Crossing Alert Application\r\n appName: dcae-tca\r\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\r\n tcaVESAlertsTableName: TCAVESAlertsTable\r\n tcaVESAlertsTableTTLSeconds: '1728000'\r\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\r\n tcaVESMessageStatusTableTTLSeconds: '86400'\r\n thresholdCalculatorFlowletInstances: '2'\r\n app_preferences:\r\n publisherContentType: application/json\r\n publisherHostName: mrlocal-mtnjftle01.onap.org\r\n publisherHostPort: '3905'\r\n publisherMaxBatchSize: '10'\r\n publisherMaxRecoveryQueueSize: '100000'\r\n publisherPollingInterval: '20000'\r\n publisherProtocol: https\r\n publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub\r\n publisherUserName: test@tca.af.dcae.onap.org\r\n publisherUserPassword: password\r\n subscriberConsumerGroup: OpenDCAE-c12\r\n subscriberConsumerId: c12\r\n subscriberContentType: application/json\r\n subscriberHostName: mrlocal-mtnjftle01.onap.org\r\n subscriberHostPort: '3905'\r\n subscriberMessageLimit: '-1'\r\n subscriberPollingInterval: '20000'\r\n subscriberProtocol: https\r\n subscriberTimeoutMS: '-1'\r\n subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub\r\n subscriberUserName: test@tca.af.dcae.onap.org\r\n subscriberUserPassword: password\r\n tca_policy: '{\"domain\":\"measurementsForVfScaling\",\"metricsPerEventName\":[{\"eventName\":\"vFirewallBroadcastPackets\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"DCAE\",\"policyName\":\"example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\",\"thresholdValue\":123,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"MAJOR\",\"closedLoopEventStatus\":\"ONSET\"},{\"closedLoopControlName\":\"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\",\"thresholdValue\":123,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"MAJOR\",\"closedLoopEventStatus\":\"ONSET\"}]}]}'\r\n artifact_name: dcae-analytics-tca\r\n artifact_version: 1.0.0\r\n connections:\r\n streams_publishes: [\r\n ]\r\n streams_subscribes: [\r\n ]\r\n jar_url: http://somejar\r\n location_id:\r\n get_input: location_id\r\n namespace: cdap_tca_hi_lo\r\n programs:\r\n - program_id: TCAVESCollectorFlow\r\n program_type: flows\r\n - program_id: TCADMaaPMRSubscriberWorker\r\n program_type: workers\r\n - program_id: TCADMaaPMRPublisherWorker\r\n program_type: workers\r\n service_component_type: cdap_app_tca\r\n service_id:\r\n get_input: service_id\r\n streamname: TCASubscriberOutputStream\r\n relationships:\r\n - target: cdap_host_host\r\n type: dcae.relationships.component_contained_in"]}]}
\ No newline at end of file diff --git a/src/test/resources/http-cache/example/sdc/v1/catalog/resources?resourceType=VFC/.file b/src/test/resources/http-cache/example/sdc/v1/catalog/resources?resourceType=VFC/.file index a99aa44d2..542fc479c 100644 --- a/src/test/resources/http-cache/example/sdc/v1/catalog/resources?resourceType=VFC/.file +++ b/src/test/resources/http-cache/example/sdc/v1/catalog/resources?resourceType=VFC/.file @@ -1 +1 @@ -[{"uuid":"a72ab48d-2d20-4c28-936a-94f45160d126","invariantUUID":"528a9e7e-1db8-44cd-a59a-f7f2833aaeb3","name":"SoftwareComponent","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/a72ab48d-2d20-4c28-936a-94f45160d126/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"2fa6c8ab-297f-4ec6-869f-893db6c84ac4","invariantUUID":"281696ab-4415-4dbb-8f4b-42ff25314466","name":"Root","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/2fa6c8ab-297f-4ec6-869f-893db6c84ac4/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"ba598da2-fd47-4701-b906-c03309ce52d7","invariantUUID":"cfdfb7b0-44fe-4b03-8efd-83533b4a3e94","name":"Compute","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/ba598da2-fd47-4701-b906-c03309ce52d7/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"c505b470-d39e-44f2-bb3a-26bc1b10bc84","invariantUUID":"7afee9e5-f666-4109-875c-89663f4c2676","name":"WebApplication","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/c505b470-d39e-44f2-bb3a-26bc1b10bc84/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"32c7f0ad-70b1-445f-9ec4-a54fdc054081","invariantUUID":"f0c9ed72-f92d-471b-8014-b810cb9d6c53","name":"Database","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/32c7f0ad-70b1-445f-9ec4-a54fdc054081/toscaModel","category":"Generic","subCategory":"Database","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"3187eb9b-dbba-492d-9137-e12db15226e7","invariantUUID":"ec55e51b-eb97-41ce-b2bf-bd7240d773a1","name":"WebServer","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/3187eb9b-dbba-492d-9137-e12db15226e7/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"59dc3d57-6609-4acd-b280-1297504b3fa3","invariantUUID":"3d5f7968-8432-47a7-9532-5833050636c9","name":"ObjectStorage","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/59dc3d57-6609-4acd-b280-1297504b3fa3/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"6000538b-f0f0-467b-bb8c-d6514d84529f","invariantUUID":"8c5a23e8-388d-4af8-8a5e-469081b2b8cd","name":"Runtime","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/6000538b-f0f0-467b-bb8c-d6514d84529f/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"92cb6435-1f95-42e1-b7a4-3418fa58f99c","invariantUUID":"fc537796-7a6a-4878-ad2c-ebae0b1031eb","name":"BlockStorage","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/92cb6435-1f95-42e1-b7a4-3418fa58f99c/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"7e41c605-b93c-4679-bc8e-83ac839e92c8","invariantUUID":"e09d62d9-c704-41be-a091-d0bf8d5c2c6b","name":"Application","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/7e41c605-b93c-4679-bc8e-83ac839e92c8/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"0dc498fd-2c4f-4e83-afbd-4404c7644234","invariantUUID":"55642129-7e02-49f3-827b-ef309ca80ff4","name":"GlobalCompute","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/0dc498fd-2c4f-4e83-afbd-4404c7644234/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"8d77ceb7-14a4-44f1-9a53-d92313ed56d0","invariantUUID":"f43bb2b2-db21-4739-8a64-f7743d54db15","name":"CinderVolume","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/8d77ceb7-14a4-44f1-9a53-d92313ed56d0/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"5a14f316-0f4e-4638-a0ad-71776a5014d2","invariantUUID":"40f6daa6-e352-4047-a115-9c4931ce0334","name":"volume","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/5a14f316-0f4e-4638-a0ad-71776a5014d2/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"2220d928-d281-4ba1-b44a-21b72c8c9872","invariantUUID":"7c398180-ea60-494b-b345-678391fbe8c2","name":"NovaServer","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/2220d928-d281-4ba1-b44a-21b72c8c9872/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"c9ed9d61-f3a5-4210-9af7-70a4f93b836a","invariantUUID":"ca7f356c-9f1c-4672-ade1-27a7f190064c","name":"AbstractSubstitute","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/c9ed9d61-f3a5-4210-9af7-70a4f93b836a/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"50ada44a-dd89-4e8d-850b-113019d2175b","invariantUUID":"6bb86fb2-e7f2-4ba6-aca8-80ccea04bc0a","name":"ContrailNetworkRules","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/50ada44a-dd89-4e8d-850b-113019d2175b/toscaModel","category":"Generic","subCategory":"Rules","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"bb37dd40-0e70-405f-81ca-c6ca22d3384f","invariantUUID":"3622a332-ce1c-406c-8212-966822eba394","name":"SecurityRules","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/bb37dd40-0e70-405f-81ca-c6ca22d3384f/toscaModel","category":"Generic","subCategory":"Rules","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"b876d972-31bf-427c-a557-0cc0befcfbec","invariantUUID":"12d9d4a3-f695-4055-b22b-edc60e738795","name":"ContrailAbstractSubstitute","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/b876d972-31bf-427c-a557-0cc0befcfbec/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"6baeb8d4-1d26-4530-a017-60d48dd38ace","invariantUUID":"015e424d-3482-4cd4-a047-1a4ca66588cc","name":"vnfConfiguration","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/6baeb8d4-1d26-4530-a017-60d48dd38ace/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"9f1402d1-b8cc-4b70-a45c-54d636e50086","invariantUUID":"a47fd09d-a910-4829-bb35-38741cefd2b9","name":"DBMS","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/9f1402d1-b8cc-4b70-a45c-54d636e50086/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"467ee1a0-34dd-46da-a198-a4ebe94c31b1","invariantUUID":"35b1df1f-4f9d-4bc6-9dbb-368e26c64243","name":"ContrailV2VirtualMachineInterface","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/467ee1a0-34dd-46da-a198-a4ebe94c31b1/toscaModel","category":"Generic","subCategory":"Network Elements","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"0d26b446-bd26-44ed-95a8-7ec302dd91aa","invariantUUID":"03c4eac9-4af8-4751-94fc-ce6095930c83","name":"ContrailCompute","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/0d26b446-bd26-44ed-95a8-7ec302dd91aa/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"83ccfaa3-a5e5-4567-88c4-aa5cb3a7b22e","invariantUUID":"1a67dbe6-ceca-4621-891e-3bb14f42943a","name":"multiFlavorVFC","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/83ccfaa3-a5e5-4567-88c4-aa5cb3a7b22e/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"14ddb890-fe68-4fee-a296-711d5a4b6e59","invariantUUID":"14184c8a-0c13-4873-a5c1-2586032db98c","name":"Ext Image File","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/14ddb890-fe68-4fee-a296-711d5a4b6e59/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"720552c5-e05d-4933-9882-8d7359af6e82","invariantUUID":"f43a5ef6-ddbf-4520-a6cb-9ca8b6b39ad6","name":"Ext Local Storage","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/720552c5-e05d-4933-9882-8d7359af6e82/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"6ba191b3-2315-44ec-85ac-d5351e7d4b81","invariantUUID":"0e0269f9-6e04-4234-bfd1-bfae52af7f83","name":"Ext Zte VDU","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/6ba191b3-2315-44ec-85ac-d5351e7d4b81/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"307cd1f4-bbc4-4675-b491-8e318231dc76","invariantUUID":"1fa025a5-c877-4221-9fbf-1b117fb66631","name":"LoadBalancer","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/307cd1f4-bbc4-4675-b491-8e318231dc76/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"949e82db-98ee-47d0-a5d2-21cb06c4a091","invariantUUID":"348d3957-11fd-4194-8835-1b112664b78b","name":"NSD","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/949e82db-98ee-47d0-a5d2-21cb06c4a091/toscaModel","category":"Generic","subCategory":"Network Elements","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"f54c8dde-2dc9-4f06-8bd6-1679d0b12b0c","invariantUUID":"4644b678-6680-432a-9d54-b209cc8264fe","name":"VDU","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/f54c8dde-2dc9-4f06-8bd6-1679d0b12b0c/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"cca286e8-5ac0-451c-b874-8cc307181e10","invariantUUID":"b4ad5952-aa22-4645-ac57-72d55c8833be","name":"Vloadbalancer.nodes.heat.vdns","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/cca286e8-5ac0-451c-b874-8cc307181e10/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"cs0008"},{"uuid":"876f7eff-46e3-4981-8717-597c01310714","invariantUUID":"7c3316b0-2090-4a2f-a21b-63e3c9dd3bf8","name":"AllottedResource","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/876f7eff-46e3-4981-8717-597c01310714/toscaModel","category":"Allotted Resource","subCategory":"Allotted Resource","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"c25db6d1-2653-45d9-8062-440f962c83ba","invariantUUID":"86aeffce-6d21-4bc0-84c5-e4fd3f7acdaa","name":"VDU VirtualStorage","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/c25db6d1-2653-45d9-8062-440f962c83ba/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"68bb176c-8d5f-4d27-8407-fd8d9e5910eb","invariantUUID":"1a12347c-6166-4d21-9861-b2c432722a23","name":"Vfirewall.nodes.heat.vfw","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/68bb176c-8d5f-4d27-8407-fd8d9e5910eb/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"cs0008"},{"uuid":"f2686c0f-11c5-4cab-83bd-b0f2cc35bf4d","invariantUUID":"3ff44c1d-0384-4501-8e33-dd3000799378","name":"Vloadbalancer.nodes.heat.vlb","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/f2686c0f-11c5-4cab-83bd-b0f2cc35bf4d/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"cs0008"},{"uuid":"8fb4db8b-1d1f-4369-8611-0375d86f0051","invariantUUID":"05e3e25f-b671-433f-8ea6-835c198c15ae","name":"Vloadbalancer.nodes.heat.vpg","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/8fb4db8b-1d1f-4369-8611-0375d86f0051/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"cs0008"},{"uuid":"c8a01686-2762-483c-98ad-a66606b9947f","invariantUUID":"86769df9-139b-489f-949d-05efb7f0ed6a","name":"Vpacketgen.nodes.heat.vpg","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/c8a01686-2762-483c-98ad-a66606b9947f/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"cs0008"},{"uuid":"5a136c51-055f-46b7-90e3-3d99d1da3d10","invariantUUID":"a6c4eda9-c71b-4435-ad73-51f82946df1b","name":"ContrailV2NetworkRules","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/5a136c51-055f-46b7-90e3-3d99d1da3d10/toscaModel","category":"Generic","subCategory":"Rules","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"163dded5-44a3-42e3-b373-c594412eeac6","invariantUUID":"1550f69b-12cb-44ad-81b3-de6ec606a566","name":"VDU Compute","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/163dded5-44a3-42e3-b373-c594412eeac6/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"jh0003"},{"uuid":"b339e576-e433-4be4-8a43-258f629c4e79","invariantUUID":"d66c0bce-d7e1-41ad-bdaf-468d442d0543","name":"Vfirewall.nodes.heat.vsn","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/b339e576-e433-4be4-8a43-258f629c4e79/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"cs0008"}]
\ No newline at end of file +[{"uuid":"a72ab48d-2d20-4c28-936a-94f45160d126","invariantUUID":"528a9e7e-1db8-44cd-a59a-f7f2833aaeb3","name":"SoftwareComponent","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/a72ab48d-2d20-4c28-936a-94f45160d126/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"2fa6c8ab-297f-4ec6-869f-893db6c84ac4","invariantUUID":"281696ab-4415-4dbb-8f4b-42ff25314466","name":"Root","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/2fa6c8ab-297f-4ec6-869f-893db6c84ac4/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"ba598da2-fd47-4701-b906-c03309ce52d7","invariantUUID":"cfdfb7b0-44fe-4b03-8efd-83533b4a3e94","name":"Compute","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/ba598da2-fd47-4701-b906-c03309ce52d7/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"c505b470-d39e-44f2-bb3a-26bc1b10bc84","invariantUUID":"7afee9e5-f666-4109-875c-89663f4c2676","name":"WebApplication","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/c505b470-d39e-44f2-bb3a-26bc1b10bc84/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"32c7f0ad-70b1-445f-9ec4-a54fdc054081","invariantUUID":"f0c9ed72-f92d-471b-8014-b810cb9d6c53","name":"Database","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/32c7f0ad-70b1-445f-9ec4-a54fdc054081/toscaModel","category":"Generic","subCategory":"Database","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"3187eb9b-dbba-492d-9137-e12db15226e7","invariantUUID":"ec55e51b-eb97-41ce-b2bf-bd7240d773a1","name":"WebServer","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/3187eb9b-dbba-492d-9137-e12db15226e7/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"59dc3d57-6609-4acd-b280-1297504b3fa3","invariantUUID":"3d5f7968-8432-47a7-9532-5833050636c9","name":"ObjectStorage","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/59dc3d57-6609-4acd-b280-1297504b3fa3/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"6000538b-f0f0-467b-bb8c-d6514d84529f","invariantUUID":"8c5a23e8-388d-4af8-8a5e-469081b2b8cd","name":"Runtime","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/6000538b-f0f0-467b-bb8c-d6514d84529f/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"92cb6435-1f95-42e1-b7a4-3418fa58f99c","invariantUUID":"fc537796-7a6a-4878-ad2c-ebae0b1031eb","name":"BlockStorage","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/92cb6435-1f95-42e1-b7a4-3418fa58f99c/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"7e41c605-b93c-4679-bc8e-83ac839e92c8","invariantUUID":"e09d62d9-c704-41be-a091-d0bf8d5c2c6b","name":"Application","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/7e41c605-b93c-4679-bc8e-83ac839e92c8/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"0dc498fd-2c4f-4e83-afbd-4404c7644234","invariantUUID":"55642129-7e02-49f3-827b-ef309ca80ff4","name":"GlobalCompute","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/0dc498fd-2c4f-4e83-afbd-4404c7644234/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"8d77ceb7-14a4-44f1-9a53-d92313ed56d0","invariantUUID":"f43bb2b2-db21-4739-8a64-f7743d54db15","name":"CinderVolume","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/8d77ceb7-14a4-44f1-9a53-d92313ed56d0/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"5a14f316-0f4e-4638-a0ad-71776a5014d2","invariantUUID":"40f6daa6-e352-4047-a115-9c4931ce0334","name":"volume","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/5a14f316-0f4e-4638-a0ad-71776a5014d2/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"2220d928-d281-4ba1-b44a-21b72c8c9872","invariantUUID":"7c398180-ea60-494b-b345-678391fbe8c2","name":"NovaServer","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/2220d928-d281-4ba1-b44a-21b72c8c9872/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"c9ed9d61-f3a5-4210-9af7-70a4f93b836a","invariantUUID":"ca7f356c-9f1c-4672-ade1-27a7f190064c","name":"AbstractSubstitute","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/c9ed9d61-f3a5-4210-9af7-70a4f93b836a/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"50ada44a-dd89-4e8d-850b-113019d2175b","invariantUUID":"6bb86fb2-e7f2-4ba6-aca8-80ccea04bc0a","name":"ContrailNetworkRules","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/50ada44a-dd89-4e8d-850b-113019d2175b/toscaModel","category":"Generic","subCategory":"Rules","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"bb37dd40-0e70-405f-81ca-c6ca22d3384f","invariantUUID":"3622a332-ce1c-406c-8212-966822eba394","name":"SecurityRules","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/bb37dd40-0e70-405f-81ca-c6ca22d3384f/toscaModel","category":"Generic","subCategory":"Rules","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"b876d972-31bf-427c-a557-0cc0befcfbec","invariantUUID":"12d9d4a3-f695-4055-b22b-edc60e738795","name":"ContrailAbstractSubstitute","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/b876d972-31bf-427c-a557-0cc0befcfbec/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"6baeb8d4-1d26-4530-a017-60d48dd38ace","invariantUUID":"015e424d-3482-4cd4-a047-1a4ca66588cc","name":"vnfConfiguration","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/6baeb8d4-1d26-4530-a017-60d48dd38ace/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"9f1402d1-b8cc-4b70-a45c-54d636e50086","invariantUUID":"a47fd09d-a910-4829-bb35-38741cefd2b9","name":"DBMS","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/9f1402d1-b8cc-4b70-a45c-54d636e50086/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"467ee1a0-34dd-46da-a198-a4ebe94c31b1","invariantUUID":"35b1df1f-4f9d-4bc6-9dbb-368e26c64243","name":"ContrailV2VirtualMachineInterface","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/467ee1a0-34dd-46da-a198-a4ebe94c31b1/toscaModel","category":"Generic","subCategory":"Network Elements","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"0d26b446-bd26-44ed-95a8-7ec302dd91aa","invariantUUID":"03c4eac9-4af8-4751-94fc-ce6095930c83","name":"ContrailCompute","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/0d26b446-bd26-44ed-95a8-7ec302dd91aa/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"83ccfaa3-a5e5-4567-88c4-aa5cb3a7b22e","invariantUUID":"1a67dbe6-ceca-4621-891e-3bb14f42943a","name":"multiFlavorVFC","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/83ccfaa3-a5e5-4567-88c4-aa5cb3a7b22e/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"14ddb890-fe68-4fee-a296-711d5a4b6e59","invariantUUID":"14184c8a-0c13-4873-a5c1-2586032db98c","name":"Ext Image File","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/14ddb890-fe68-4fee-a296-711d5a4b6e59/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"720552c5-e05d-4933-9882-8d7359af6e82","invariantUUID":"f43a5ef6-ddbf-4520-a6cb-9ca8b6b39ad6","name":"Ext Local Storage","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/720552c5-e05d-4933-9882-8d7359af6e82/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"6ba191b3-2315-44ec-85ac-d5351e7d4b81","invariantUUID":"0e0269f9-6e04-4234-bfd1-bfae52af7f83","name":"Ext Zte VDU","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/6ba191b3-2315-44ec-85ac-d5351e7d4b81/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"307cd1f4-bbc4-4675-b491-8e318231dc76","invariantUUID":"1fa025a5-c877-4221-9fbf-1b117fb66631","name":"LoadBalancer","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/307cd1f4-bbc4-4675-b491-8e318231dc76/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"949e82db-98ee-47d0-a5d2-21cb06c4a091","invariantUUID":"348d3957-11fd-4194-8835-1b112664b78b","name":"NSD","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/949e82db-98ee-47d0-a5d2-21cb06c4a091/toscaModel","category":"Generic","subCategory":"Network Elements","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"f54c8dde-2dc9-4f06-8bd6-1679d0b12b0c","invariantUUID":"4644b678-6680-432a-9d54-b209cc8264fe","name":"VDU","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/f54c8dde-2dc9-4f06-8bd6-1679d0b12b0c/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"cca286e8-5ac0-451c-b874-8cc307181e10","invariantUUID":"b4ad5952-aa22-4645-ac57-72d55c8833be","name":"Vloadbalancer.nodes.heat.vdns","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/cca286e8-5ac0-451c-b874-8cc307181e10/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"cs0008"},{"uuid":"876f7eff-46e3-4981-8717-597c01310714","invariantUUID":"7c3316b0-2090-4a2f-a21b-63e3c9dd3bf8","name":"AllottedResource","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/876f7eff-46e3-4981-8717-597c01310714/toscaModel","category":"Allotted Resource","subCategory":"Allotted Resource","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"c25db6d1-2653-45d9-8062-440f962c83ba","invariantUUID":"86aeffce-6d21-4bc0-84c5-e4fd3f7acdaa","name":"VDU VirtualStorage","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/c25db6d1-2653-45d9-8062-440f962c83ba/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"68bb176c-8d5f-4d27-8407-fd8d9e5910eb","invariantUUID":"1a12347c-6166-4d21-9861-b2c432722a23","name":"Vfirewall.nodes.heat.vfw","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/68bb176c-8d5f-4d27-8407-fd8d9e5910eb/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"cs0008"},{"uuid":"f2686c0f-11c5-4cab-83bd-b0f2cc35bf4d","invariantUUID":"3ff44c1d-0384-4501-8e33-dd3000799378","name":"Vloadbalancer.nodes.heat.vlb","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/f2686c0f-11c5-4cab-83bd-b0f2cc35bf4d/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"cs0008"},{"uuid":"8fb4db8b-1d1f-4369-8611-0375d86f0051","invariantUUID":"05e3e25f-b671-433f-8ea6-835c198c15ae","name":"Vloadbalancer.nodes.heat.vpg","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/8fb4db8b-1d1f-4369-8611-0375d86f0051/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"cs0008"},{"uuid":"c8a01686-2762-483c-98ad-a66606b9947f","invariantUUID":"86769df9-139b-489f-949d-05efb7f0ed6a","name":"Vpacketgen.nodes.heat.vpg","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/c8a01686-2762-483c-98ad-a66606b9947f/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"cs0008"},{"uuid":"5a136c51-055f-46b7-90e3-3d99d1da3d10","invariantUUID":"a6c4eda9-c71b-4435-ad73-51f82946df1b","name":"ContrailV2NetworkRules","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/5a136c51-055f-46b7-90e3-3d99d1da3d10/toscaModel","category":"Generic","subCategory":"Rules","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"163dded5-44a3-42e3-b373-c594412eeac6","invariantUUID":"1550f69b-12cb-44ad-81b3-de6ec606a566","name":"VDU Compute","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/163dded5-44a3-42e3-b373-c594412eeac6/toscaModel","category":"Generic","subCategory":"Infrastructure","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"user"},{"uuid":"b339e576-e433-4be4-8a43-258f629c4e79","invariantUUID":"d66c0bce-d7e1-41ad-bdaf-468d442d0543","name":"Vfirewall.nodes.heat.vsn","version":"1.0","toscaModelURL":"/sdc/v1/catalog/resources/b339e576-e433-4be4-8a43-258f629c4e79/toscaModel","category":"Generic","subCategory":"Abstract","resourceType":"VFC","lifecycleState":"CERTIFIED","lastUpdaterUserId":"cs0008"}]
\ No newline at end of file diff --git a/src/test/resources/sql/four_templates_only.sql b/src/test/resources/sql/four_templates_only.sql index 2a333ceeb..862e3601d 100755 --- a/src/test/resources/sql/four_templates_only.sql +++ b/src/test/resources/sql/four_templates_only.sql @@ -47,7 +47,7 @@ UNLOCK TABLES; LOCK TABLES `template_doc` WRITE; /*!40000 ALTER TABLE `template_doc` DISABLE KEYS */; -INSERT INTO `template_doc` VALUES ('04ebec9b-17eb-11e8-b63b-0242ac130002','04e43cfa-17eb-11e8-b63b-0242ac130002','{}',NULL,'2018-02-22 16:11:20'),('27b1a0c9-17eb-11e8-b63b-0242ac130002','27aa4250-17eb-11e8-b63b-0242ac130002','{\"global\":[{\"name\":\"service\",\"value\":[\"tosca_definitions_version: cloudify_dsl_1_3\\r\\nimports:\\r\\n- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\\r\\n- https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml\\r\\n- https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml\\r\\n- http://nexus01.research.att.com:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml\\r\\ninputs:\\r\\n location_id:\\r\\n type: string\\r\\n service_id:\\r\\n type: string\\r\\nnode_templates:\\r\\n cdap_host_host:\\r\\n type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure\\r\\n properties:\\r\\n location_id:\\r\\n get_input: location_id\\r\\n scn_override: cdap_broker.solutioning-central.dcae.att.com\\r\\n interfaces:\\r\\n cloudify.interfaces.lifecycle: {}\\r\\n tca_tca:\\r\\n type: dcae.nodes.MicroService.cdap\\r\\n properties:\\r\\n app_config:\\r\\n appDescription: DCAE Analytics Threshold Crossing Alert Application\\r\\n appName: dcae-tca\\r\\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\\r\\n tcaVESAlertsTableName: TCAVESAlertsTable\\r\\n tcaVESAlertsTableTTLSeconds: \'1728000\'\\r\\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\\r\\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\\r\\n thresholdCalculatorFlowletInstances: \'2\'\\r\\n app_preferences:\\r\\n publisherContentType: application/json\\r\\n publisherHostName: mrlocal-mtnjftle01.homer.att.com\\r\\n publisherHostPort: \'3905\'\\r\\n publisherMaxBatchSize: \'10\'\\r\\n publisherMaxRecoveryQueueSize: \'100000\'\\r\\n publisherPollingInterval: \'20000\'\\r\\n publisherProtocol: https\\r\\n publisherTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESPub\\r\\n publisherUserName: m00502@tca.af.dcae.att.com\\r\\n publisherUserPassword: Te5021abc\\r\\n subscriberConsumerGroup: OpenDCAE-c12\\r\\n subscriberConsumerId: c12\\r\\n subscriberContentType: application/json\\r\\n subscriberHostName: mrlocal-mtnjftle01.homer.att.com\\r\\n subscriberHostPort: \'3905\'\\r\\n subscriberMessageLimit: \'-1\'\\r\\n subscriberPollingInterval: \'20000\'\\r\\n subscriberProtocol: https\\r\\n subscriberTimeoutMS: \'-1\'\\r\\n subscriberTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESSub\\r\\n subscriberUserName: m00502@tca.af.dcae.att.com\\r\\n subscriberUserPassword: Te5021abc\\r\\n tca_policy: \\r\\n artifact_name: dcae-analytics-tca\\r\\n artifact_version: 1.0.0\\r\\n connections:\\r\\n streams_publishes: []\\r\\n streams_subscribes: []\\r\\n jar_url: http://somejar\\r\\n location_id:\\r\\n get_input: location_id\\r\\n namespace: cdap_tca_hi_lo\\r\\n programs:\\r\\n - program_id: TCAVESCollectorFlow\\r\\n program_type: flows\\r\\n - program_id: TCADMaaPMRSubscriberWorker\\r\\n program_type: workers\\r\\n - program_id: TCADMaaPMRPublisherWorker\\r\\n program_type: workers\\r\\n service_component_type: cdap_app_tca\\r\\n service_id:\\r\\n get_input: service_id\\r\\n streamname: TCASubscriberOutputStream\\r\\n relationships:\\r\\n - target: cdap_host_host\\r\\n type: dcae.relationships.component_contained_in\\r\\n\"]}]}',NULL,'2018-02-22 16:12:18'),('3c0d7849-17eb-11e8-b63b-0242ac130002','3c02f310-17eb-11e8-b63b-0242ac130002','{\"global\":[{\"name\":\"service\",\"value\":[\"tosca_definitions_version: cloudify_dsl_1_3\\r\\nimports:\\r\\n- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\\r\\n- https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml\\r\\n- https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml\\r\\n- http://nexus01.research.att.com:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml\\r\\ninputs:\\r\\n location_id:\\r\\n type: string\\r\\n service_id:\\r\\n type: string\\r\\nnode_templates:\\r\\n cdap_host_host:\\r\\n type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure\\r\\n properties:\\r\\n location_id:\\r\\n get_input: location_id\\r\\n scn_override: cdap_broker.solutioning-central.dcae.att.com\\r\\n interfaces:\\r\\n cloudify.interfaces.lifecycle: {}\\r\\n tca_tca:\\r\\n type: dcae.nodes.MicroService.cdap\\r\\n properties:\\r\\n app_config:\\r\\n appDescription: DCAE Analytics Threshold Crossing Alert Application\\r\\n appName: dcae-tca\\r\\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\\r\\n tcaVESAlertsTableName: TCAVESAlertsTable\\r\\n tcaVESAlertsTableTTLSeconds: \'1728000\'\\r\\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\\r\\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\\r\\n thresholdCalculatorFlowletInstances: \'2\'\\r\\n app_preferences:\\r\\n publisherContentType: application/json\\r\\n publisherHostName: mrlocal-mtnjftle01.homer.att.com\\r\\n publisherHostPort: \'3905\'\\r\\n publisherMaxBatchSize: \'10\'\\r\\n publisherMaxRecoveryQueueSize: \'100000\'\\r\\n publisherPollingInterval: \'20000\'\\r\\n publisherProtocol: https\\r\\n publisherTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESPub\\r\\n publisherUserName: m00502@tca.af.dcae.att.com\\r\\n publisherUserPassword: Te5021abc\\r\\n subscriberConsumerGroup: OpenDCAE-c12\\r\\n subscriberConsumerId: c12\\r\\n subscriberContentType: application/json\\r\\n subscriberHostName: mrlocal-mtnjftle01.homer.att.com\\r\\n subscriberHostPort: \'3905\'\\r\\n subscriberMessageLimit: \'-1\'\\r\\n subscriberPollingInterval: \'20000\'\\r\\n subscriberProtocol: https\\r\\n subscriberTimeoutMS: \'-1\'\\r\\n subscriberTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESSub\\r\\n subscriberUserName: m00502@tca.af.dcae.att.com\\r\\n subscriberUserPassword: Te5021abc\\r\\n tca_policy: \\r\\n artifact_name: dcae-analytics-tca\\r\\n artifact_version: 1.0.0\\r\\n connections:\\r\\n streams_publishes: []\\r\\n streams_subscribes: []\\r\\n jar_url: http://somejar\\r\\n location_id:\\r\\n get_input: location_id\\r\\n namespace: cdap_tca_hi_lo\\r\\n programs:\\r\\n - program_id: TCAVESCollectorFlow\\r\\n program_type: flows\\r\\n - program_id: TCADMaaPMRSubscriberWorker\\r\\n program_type: workers\\r\\n - program_id: TCADMaaPMRPublisherWorker\\r\\n program_type: workers\\r\\n service_component_type: cdap_app_tca\\r\\n service_id:\\r\\n get_input: service_id\\r\\n streamname: TCASubscriberOutputStream\\r\\n relationships:\\r\\n - target: cdap_host_host\\r\\n type: dcae.relationships.component_contained_in\\r\\n\"]}]}',NULL,'2018-02-22 16:12:52'),('eb9f5d1c-17ea-11e8-b63b-0242ac130002','eb98db1e-17ea-11e8-b63b-0242ac130002','{}',NULL,'2018-02-22 16:10:37'); +INSERT INTO `template_doc` VALUES ('04ebec9b-17eb-11e8-b63b-0242ac130002','04e43cfa-17eb-11e8-b63b-0242ac130002','{}',NULL,'2018-02-22 16:11:20'),('27b1a0c9-17eb-11e8-b63b-0242ac130002','27aa4250-17eb-11e8-b63b-0242ac130002','{\"global\":[{\"name\":\"service\",\"value\":[\"tosca_definitions_version: cloudify_dsl_1_3\\r\\nimports:\\r\\n- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\\r\\n- https://test.onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml\\r\\n- https://test.onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml\\r\\n- http://test.onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml\\r\\ninputs:\\r\\n location_id:\\r\\n type: string\\r\\n service_id:\\r\\n type: string\\r\\nnode_templates:\\r\\n cdap_host_host:\\r\\n type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure\\r\\n properties:\\r\\n location_id:\\r\\n get_input: location_id\\r\\n scn_override: cdap_broker.solutioning-central.dcae.onap.org\\r\\n interfaces:\\r\\n cloudify.interfaces.lifecycle: {}\\r\\n tca_tca:\\r\\n type: dcae.nodes.MicroService.cdap\\r\\n properties:\\r\\n app_config:\\r\\n appDescription: DCAE Analytics Threshold Crossing Alert Application\\r\\n appName: dcae-tca\\r\\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\\r\\n tcaVESAlertsTableName: TCAVESAlertsTable\\r\\n tcaVESAlertsTableTTLSeconds: \'1728000\'\\r\\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\\r\\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\\r\\n thresholdCalculatorFlowletInstances: \'2\'\\r\\n app_preferences:\\r\\n publisherContentType: application/json\\r\\n publisherHostName: test.onap.org\\r\\n publisherHostPort: \'3905\'\\r\\n publisherMaxBatchSize: \'10\'\\r\\n publisherMaxRecoveryQueueSize: \'100000\'\\r\\n publisherPollingInterval: \'20000\'\\r\\n publisherProtocol: https\\r\\n publisherTopicName: org.onap.dcae.dmaap.DcaeTestVESPub\\r\\n publisherUserName: user@onap.org\\r\\n publisherUserPassword: password\\r\\n subscriberConsumerGroup: OpenDCAE-c12\\r\\n subscriberConsumerId: c12\\r\\n subscriberContentType: application/json\\r\\n subscriberHostName: test.onap.org\\r\\n subscriberHostPort: \'3905\'\\r\\n subscriberMessageLimit: \'-1\'\\r\\n subscriberPollingInterval: \'20000\'\\r\\n subscriberProtocol: https\\r\\n subscriberTimeoutMS: \'-1\'\\r\\n subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub\\r\\n subscriberUserName: user@test.onap.org\\r\\n subscriberUserPasswordpasswordbc\\r\\n tca_policy: \\r\\n artifact_name: dcae-analytics-tca\\r\\n artifact_version: 1.0.0\\r\\n connections:\\r\\n streams_publishes: []\\r\\n streams_subscribes: []\\r\\n jar_url: http://somejar\\r\\n location_id:\\r\\n get_input: location_id\\r\\n namespace: cdap_tca_hi_lo\\r\\n programs:\\r\\n - program_id: TCAVESCollectorFlow\\r\\n program_type: flows\\r\\n - program_id: TCADMaaPMRSubscriberWorker\\r\\n program_type: workers\\r\\n - program_id: TCADMaaPMRPublisherWorker\\r\\n program_type: workers\\r\\n service_component_type: cdap_app_tca\\r\\n service_id:\\r\\n get_input: service_id\\r\\n streamname: TCASubscriberOutputStream\\r\\n relationships:\\r\\n - target: cdap_host_host\\r\\n type: dcae.relationships.component_contained_in\\r\\n\"]}]}',NULL,'2018-02-22 16:12:18'),('3c0d7849-17eb-11e8-b63b-0242ac130002','3c02f310-17eb-11e8-b63b-0242ac130002','{\"global\":[{\"name\":\"service\",\"value\":[\"tosca_definitions_version: cloudify_dsl_1_3\\r\\nimports:\\r\\n- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\\r\\n- https://test.onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml\\r\\n- https://test.onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml\\r\\n- http://test.onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml\\r\\ninputs:\\r\\n location_id:\\r\\n type: string\\r\\n service_id:\\r\\n type: string\\r\\nnode_templates:\\r\\n cdap_host_host:\\r\\n type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure\\r\\n properties:\\r\\n location_id:\\r\\n get_input: location_id\\r\\n scn_override: cdap_broker.solutioning-central.dcae.onap.org\\r\\n interfaces:\\r\\n cloudify.interfaces.lifecycle: {}\\r\\n tca_tca:\\r\\n type: dcae.nodes.MicroService.cdap\\r\\n properties:\\r\\n app_config:\\r\\n appDescription: DCAE Analytics Threshold Crossing Alert Application\\r\\n appName: dcae-tca\\r\\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\\r\\n tcaVESAlertsTableName: TCAVESAlertsTable\\r\\n tcaVESAlertsTableTTLSeconds: \'1728000\'\\r\\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\\r\\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\\r\\n thresholdCalculatorFlowletInstances: \'2\'\\r\\n app_preferences:\\r\\n publisherContentType: application/json\\r\\n publisherHostName: test.homer.onap.org\\r\\n publisherHostPort: \'3905\'\\r\\n publisherMaxBatchSize: \'10\'\\r\\n publisherMaxRecoveryQueueSize: \'100000\'\\r\\n publisherPollingInterval: \'20000\'\\r\\n publisherProtocol: https\\r\\n publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub\\r\\n publisherUserName: user@tca.af.dcae.onap.org\\r\\n publisherUserPasswordpasswordbc\\r\\n subscriberConsumerGroup: OpenDCAE-c12\\r\\n subscriberConsumerId: c12\\r\\n subscriberContentType: application/json\\r\\n subscriberHostName: test.homer.onap.org\\r\\n subscriberHostPort: \'3905\'\\r\\n subscriberMessageLimit: \'-1\'\\r\\n subscriberPollingInterval: \'20000\'\\r\\n subscriberProtocol: https\\r\\n subscriberTimeoutMS: \'-1\'\\r\\n subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub\\r\\n subscriberUserName: user@tca.af.dcae.onap.org\\r\\n subscriberUserPasswordpasswordbc\\r\\n tca_policy: \\r\\n artifact_name: dcae-analytics-tca\\r\\n artifact_version: 1.0.0\\r\\n connections:\\r\\n streams_publishes: []\\r\\n streams_subscribes: []\\r\\n jar_url: http://somejar\\r\\n location_id:\\r\\n get_input: location_id\\r\\n namespace: cdap_tca_hi_lo\\r\\n programs:\\r\\n - program_id: TCAVESCollectorFlow\\r\\n program_type: flows\\r\\n - program_id: TCADMaaPMRSubscriberWorker\\r\\n program_type: workers\\r\\n - program_id: TCADMaaPMRPublisherWorker\\r\\n program_type: workers\\r\\n service_component_type: cdap_app_tca\\r\\n service_id:\\r\\n get_input: service_id\\r\\n streamname: TCASubscriberOutputStream\\r\\n relationships:\\r\\n - target: cdap_host_host\\r\\n type: dcae.relationships.component_contained_in\\r\\n\"]}]}',NULL,'2018-02-22 16:12:52'),('eb9f5d1c-17ea-11e8-b63b-0242ac130002','eb98db1e-17ea-11e8-b63b-0242ac130002','{}',NULL,'2018-02-22 16:10:37'); /*!40000 ALTER TABLE `template_doc` ENABLE KEYS */; UNLOCK TABLES; |