Merge "confirmation msg for delete FG doesn't appear"
authorVitaly Emporopulo <Vitaliy.Emporopulo@amdocs.com>
Wed, 1 Nov 2017 15:07:19 +0000 (15:07 +0000)
committerGerrit Code Review <gerrit@onap.org>
Wed, 1 Nov 2017 15:07:19 +0000 (15:07 +0000)
58 files changed:
catalog-be/src/main/java/org/openecomp/sdc/be/externalapi/servlet/AssetsDataServlet.java
catalog-be/src/main/java/org/openecomp/sdc/be/tosca/PropertyConvertor.java
catalog-be/src/main/resources/import/tosca/normative-types/allottedResource/allottedResource.json [new file with mode: 0644]
catalog-be/src/main/resources/import/tosca/normative-types/allottedResource/allottedResource.yml [new file with mode: 0644]
catalog-be/src/main/resources/import/tosca/normative-types/allottedResource/allottedResource.zip [new file with mode: 0644]
catalog-be/src/main/resources/scripts/import/tosca/importNormativeTypes.py
catalog-be/src/main/resources/scripts/import/tosca/importOnapTypes.py
catalog-be/src/test/java/org/openecomp/sdc/be/tosca/PropertyConvertorTest.java
common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp-heat/data.yml
docs/configuration.rst
docs/consumedapis.rst
docs/logging.rst
docs/offeredapis.rst
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/errors/DuplicateResourceIdsInDifferentFilesErrorBuilder.java [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/errors/TranslatorErrorCodes.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionMixPatternFullTest.java
openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsLimits.js
openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditor.js
openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js
openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditor.js
openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsLimits.js
openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditor.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesList.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcesses.js
pom.xml
sdc-os-chef/pom.xml
sdc-os-chef/scripts/docker_run.sh
sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_4_jetty_Modules.rb [moved from sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_5_jetty_Modules.rb with 100% similarity]
sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_5_setup_elasticsearch.rb [moved from sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_6_setup_elasticsearch.rb with 100% similarity]
sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_6_setup_portal_properties.rb [moved from sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_7_setup_portal_properties.rb with 100% similarity]
sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_7_logback.rb [moved from sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_8_logback.rb with 100% similarity]
sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_8_errors_config.rb [moved from sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_9_errors_config.rb with 100% similarity]
sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_Number_create_DMaaP_keys.rb-NotUsed [moved from sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_4_create_DMaaP_keys.rb with 100% similarity]
sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_Number_import_Normatives.rb [moved from sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_10_import_Normatives.rb with 100% similarity]
sdc-os-chef/sdc-backend/chef-solo/roles/catalog-be.json
sdc-os-chef/sdc-backend/startup.sh
sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vHSS.csar [new file with mode: 0644]
sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vMME.csar [new file with mode: 0644]
sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vPCRF_aligned_fixed.csar [new file with mode: 0644]
sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vSPGW.csar [new file with mode: 0644]
sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/ZteEpcSpgwVf-csar.csar [new file with mode: 0644]
sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/cscf_si_fixed.csar [new file with mode: 0644]
sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/ntas.csar [new file with mode: 0644]
sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/resource-ZteEpcMmeVf-csar_fix.csar [new file with mode: 0644]
sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vCSCF_aligned.csar
sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vCSCF_v3.0.csar [new file with mode: 0644]
sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vSBC_aligned.csar [new file with mode: 0644]
sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/recipes/sanityTests_3_sanity_execution.rb
sdc-os-chef/sdc-sanity/startup.sh
test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/api/ComponentBaseTest.java
test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/sanity/Onboard.java
test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/CsarToscaTester.java [new file with mode: 0644]
test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/general/FileHandling.java
test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/rest/AssetRestUtils.java
test-apis-ci/src/main/resources/ci/testSuites/onap.xml

index 6e971f2..b995606 100644 (file)
@@ -243,8 +243,13 @@ public class AssetsDataServlet extends AbstractValidationsServlet {
                ComponentTypeEnum componentType = ComponentTypeEnum.findByParamName(assetType);
                additionalParam.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_CONSUMER_ID, instanceIdHeader);
                additionalParam.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_RESOURCE_URL, requestURI);
-               additionalParam.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_TYPE, componentType.getValue());
                additionalParam.put(AuditingFieldsKeysEnum.AUDIT_SERVICE_INSTANCE_ID, uuid);
+               if (componentType == null) {
+                       log.debug("getMetaData: assetType parameter {} is not valid", assetType);
+                       responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT);
+                       return buildErrorResponse(responseFormat);
+               }
+               additionalParam.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_TYPE, componentType.getValue());
 
                // Mandatory
                if (instanceIdHeader == null || instanceIdHeader.isEmpty()) {
@@ -331,8 +336,15 @@ public class AssetsDataServlet extends AbstractValidationsServlet {
                EnumMap<AuditingFieldsKeysEnum, Object> additionalParam = new EnumMap<AuditingFieldsKeysEnum, Object>(AuditingFieldsKeysEnum.class);
                additionalParam.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_CONSUMER_ID, instanceIdHeader);
                additionalParam.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_RESOURCE_URL, url);
-               additionalParam.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_TYPE, componentType.getValue());
                additionalParam.put(AuditingFieldsKeysEnum.AUDIT_SERVICE_INSTANCE_ID, uuid);
+               
+               if (componentType == null) {
+                       log.debug("getToscaModel: assetType parameter {} is not valid", assetType);
+                       responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT);
+                       return buildErrorResponse(responseFormat);
+               }
+               additionalParam.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_TYPE, componentType.getValue());
+
 
                if (instanceIdHeader == null || instanceIdHeader.isEmpty()) {
                        log.debug("getToscaModel: Missing X-ECOMP-InstanceID header");
index 68adbd5..22f6730 100644 (file)
 
 package org.openecomp.sdc.be.tosca;
 
-import com.google.gson.Gson;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonParser;
-import com.google.gson.stream.JsonReader;
-import fj.data.Either;
+import java.io.StringReader;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.commons.lang3.StringUtils;
 import org.openecomp.sdc.be.datatypes.elements.SchemaDefinition;
 import org.openecomp.sdc.be.model.Component;
@@ -41,10 +41,12 @@ import org.openecomp.sdc.be.tosca.model.ToscaProperty;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.StringReader;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import com.google.gson.Gson;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
+import com.google.gson.stream.JsonReader;
+
+import fj.data.Either;
 
 public class PropertyConvertor {
        private static PropertyConvertor instance;
@@ -72,12 +74,8 @@ public class PropertyConvertor {
 
                                // take only the properties of this resource
                                props.stream().filter(p -> p.getOwnerId() == null || p.getOwnerId().equals(component.getUniqueId())).forEach(property -> {
-                                       ToscaProperty prop = convertProperty(dataTypes, property, false);
-
-                                       if (prop != null) {
-                                           properties.put(property.getName(), prop);
-                    }
-                               });
+                    properties.put(property.getName(), convertProperty(dataTypes, property, false));
+                               });
                                if (!properties.isEmpty()) {
                                        toscaNodeType.setProperties(properties);
                                }
@@ -99,10 +97,9 @@ public class PropertyConvertor {
                        prop.setEntry_schema(eschema);
                }
                log.trace("try to convert property {} from type {} with default value [{}]", property.getName(), property.getType(), property.getDefaultValue());
-               prop.setDefaultp(convertToToscaObject(property.getType(), property.getDefaultValue(), innerType, dataTypes));
-               
-               if (prop.getDefaultp() == null) {
-                   return null;
+        Object convertedObj = convertToToscaObject(property.getType(), property.getDefaultValue(), innerType, dataTypes);
+        if (convertedObj != null) {
+            prop.setDefaultp(convertedObj);
         }
                prop.setType(property.getType());
         prop.setDescription(property.getDescription());
@@ -111,6 +108,7 @@ public class PropertyConvertor {
             prop.setRequired(property.isRequired());
         }
         return prop;
+
        }
 
        public Object convertToToscaObject(String propertyType, String value, String innerType, Map<String, DataTypeDefinition> dataTypes) {
@@ -120,7 +118,6 @@ public class PropertyConvertor {
                        if(StringUtils.isEmpty(value)){
                                return null;
                        }
-
                }
                try {
                        ToscaMapValueConverter mapConverterInst = ToscaMapValueConverter.getInstance();
diff --git a/catalog-be/src/main/resources/import/tosca/normative-types/allottedResource/allottedResource.json b/catalog-be/src/main/resources/import/tosca/normative-types/allottedResource/allottedResource.json
new file mode 100644 (file)
index 0000000..143f623
--- /dev/null
@@ -0,0 +1,20 @@
+{
+  "payloadName": "allottedResource.yml",
+  "contactId": "jh0003",
+  "name": "AllottedResource",
+  "description": "Allotted Resource base type all other allotted resources node types derive from",
+  "resourceIconPath": "defaulticon",
+  "categories": [
+  {
+    "name": "Allotted Resource",
+    "subcategories": [
+      {
+        "name": "Allotted Resource"
+      }
+    ]
+  }
+],
+  "tags": [
+    "AllottedResource"
+  ]
+}
\ No newline at end of file
diff --git a/catalog-be/src/main/resources/import/tosca/normative-types/allottedResource/allottedResource.yml b/catalog-be/src/main/resources/import/tosca/normative-types/allottedResource/allottedResource.yml
new file mode 100644 (file)
index 0000000..00d3bd2
--- /dev/null
@@ -0,0 +1,38 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+node_types:
+  org.openecomp.resource.vfc.AllottedResource:
+    derived_from: tosca.nodes.Root
+    description: ECOMP Allotted Resource base type all other allotted resources node types derive from
+    properties:
+      providing_service_uuid:
+        type: string
+        required: true
+        description: The depending service uuid in order to map the allotted resource to the specific service version
+      providing_service_invariant_uuid:
+        type: string
+        required: true
+        description: The depending service invariant uuid in order to map the allotted resource to the specific service version
+      providing_service_name:
+        type: string
+        required: true
+        description: The depending service name in order to map the allotted resource to the specific service version
+      role:
+        type: string
+        required: true
+        description: Unique label that defines the role that this allotted resource performs
+      min_instances:
+        type: integer
+        default: 1
+      max_instances:
+        type: integer
+        default: 1
+      target_network_role:
+        type: string
+        required: true
+        description: Target network role
+    requirements:
+    - service_dependency:
+        capability: org.openecomp.capabilities.AllottedResource
+        relationship: tosca.relationships.DependsOn
+        node: tosca.services.Root
+
diff --git a/catalog-be/src/main/resources/import/tosca/normative-types/allottedResource/allottedResource.zip b/catalog-be/src/main/resources/import/tosca/normative-types/allottedResource/allottedResource.zip
new file mode 100644 (file)
index 0000000..fd3f7e9
Binary files /dev/null and b/catalog-be/src/main/resources/import/tosca/normative-types/allottedResource/allottedResource.zip differ
index d47c0b8..1f52385 100644 (file)
@@ -84,7 +84,7 @@ def usage():
 
 def importNormativeTypes(beHost, bePort, adminUser, fileDir, updateversion):
        
-       normativeTypes = [ "root", "compute", "softwareComponent", "webServer", "webApplication", "DBMS", "database", "objectStorage", "blockStorage", "containerRuntime", "containerApplication", "loadBalancer", "port", "network"]
+       normativeTypes = [ "root", "compute", "softwareComponent", "webServer", "webApplication", "DBMS", "database", "objectStorage", "blockStorage", "containerRuntime", "containerApplication", "loadBalancer", "port", "network", "allottedResource"]
        #normativeTypes = [ "root" ]
        responseCodes = [200, 201]
        
index 664c5cc..18d2270 100644 (file)
@@ -26,12 +26,12 @@ def importOnapTypes(beHost, bePort, adminUser, fileDir, updateversion):
                      "extZteCP",
                      "extZteVDU",
                      "extZteVL",
+                     "NSD",
+                                 "VDU",
                      "vduCompute",
                                  "vduCpd",
                                  "vduVirtualStorage",
-                                 "vnfVirtualLinkDesc",
-                                 "NSD",
-                                 "VDU"
+                                 "vnfVirtualLinkDesc"
                                  ]
                
        responseCodes = [200, 201]
index a987e02..c77c0f1 100644 (file)
@@ -7,6 +7,7 @@ import static org.junit.Assert.assertTrue;
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -37,7 +38,9 @@ public class PropertyConvertorTest {
 
     @Test
     public void convertPropertyWhenValueAndDefaultNull() {
-        assertNull(PropertyConvertor.getInstance().convertProperty(dataTypes, property, false));
+        ToscaProperty prop = PropertyConvertor.getInstance().convertProperty(dataTypes, property, false);
+        assertNotNull(prop);
+        assertNull(prop.getDefaultp());
     }
 
     @Test
@@ -63,7 +66,15 @@ public class PropertyConvertorTest {
         resource.setProperties(properties);
         Either<ToscaNodeType, ToscaError> result = PropertyConvertor.getInstance().convertProperties(resource, new ToscaNodeType(), dataTypes);
         assertTrue(result.isLeft());
-        assertEquals(1, result.left().value().getProperties().size());
+        assertEquals(2, result.left().value().getProperties().size());
+        int cnt = 0;
+        for (Iterator<ToscaProperty> it = result.left().value().getProperties().values().iterator(); it.hasNext(); ) {
+            ToscaProperty prop = it.next();
+            if (prop.getDefaultp() == null) {
+                cnt++;
+            }
+        }
+        assertEquals(1, cnt);
     }
 
     @Test
@@ -82,6 +93,10 @@ public class PropertyConvertorTest {
         Either<ToscaNodeType, ToscaError> result = PropertyConvertor.getInstance().convertProperties(resource, new ToscaNodeType(), dataTypes);
         assertTrue(result.isLeft());
         assertEquals(2, result.left().value().getProperties().size());
+        for (Iterator<ToscaProperty> it = result.left().value().getProperties().values().iterator(); it.hasNext(); ) {
+            ToscaProperty prop = it.next();
+            assertNotNull(prop.getDefaultp());
+        }
     }
 
     @Test
@@ -97,6 +112,10 @@ public class PropertyConvertorTest {
         resource.setProperties(properties);
         Either<ToscaNodeType, ToscaError> result = PropertyConvertor.getInstance().convertProperties(resource, new ToscaNodeType(), dataTypes);
         assertTrue(result.isLeft());
-        assertNull(result.left().value().getProperties());
-    }
-}
\ No newline at end of file
+        assertEquals(2, result.left().value().getProperties().size());
+        for (Iterator<ToscaProperty> it = result.left().value().getProperties().values().iterator(); it.hasNext(); ) {
+            ToscaProperty prop = it.next();
+            assertNull(prop.getDefaultp());
+        }
+     }
+}
index f320a98..c9dda19 100644 (file)
@@ -562,6 +562,12 @@ data_types:
         type: string
         status: SUPPORTED
         required: false
+      subnet_id:
+        type: string
+        description: Subnet in which to allocate the IP address for this port
+        required: false
+        status: SUPPORTED
+
 
   org.openecomp.datatypes.heat.contrailV2.virtual.machine.interface.Properties:
     derived_from: tosca.datatypes.Root
index 085f9c6..281f07d 100644 (file)
 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
 .. http://creativecommons.org/licenses/by/4.0
 
+=============
 Configuration
 =============
 
-.. note::
-   * This section is used to describe the options a software component offers for configuration.
+.. contents::
+   :depth: 3
+..
+
+Global Configuration
+====================
+
+environment.json
+----------------
+
+::
+
+    {
+        # Environment name
+        "name": "xxx",
+        
+        # Environment description
+        "description": "OpenSource-xxx",
+        
+        # Chef properties
+        "cookbook_versions": {
+            "Deploy-SDandC": "= 1.0.0"
+        },
+        "json_class": "Chef::Environment",
+        "chef_type": "environment",
+        
+        "default_attributes": {
+        
+            # IPs used for docker configuration
+            "CS_VIP": "yyy",
+            "BE_VIP": "yyy",
+            "FE_VIP": "yyy",
+            "ES_VIP": "yyy",
+            "interfaces": {
+                "application": "eth0",
+                "private": "eth1"
+            },
+            
+            # Configuration parameters used in portal properties 
+            "ECompP": {
+                "ecomp_rest_url": "http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/auxapi",
+                "ueb_url_list": "10.0.11.1,10.0.11.1",
+                "app_secret": "XftIATw9Jr3VzAcPqt3NnJOu",
+                "app_key": "x9UfO7JsDn8BESVX",
+                "inbox_name": "ECOMP-PORTAL-INBOX",
+                "ecomp_redirect_url": "http://portal.api.simpledemo.openecomp.org:8989/ECOMPPORTAL/login.htm",
+                "app_topic_name": "ECOMP-PORTAL-OUTBOX-SDC1",
+                "decryption_key": "AGLDdG4D04BKm2IxIWEr8o=="
+            },
+            
+            # Configuration parameters used by SDC to work with Dmaap
+            "UEB": {
+                "PublicKey": "iPIxkpAMI8qTcQj8",
+                "SecretKey": "Ehq3WyT4bkif4zwgEbvshGal",
+                "fqdn": ["10.0.11.1", "10.0.11.1"]
+            },
+            
+            # IPs used for docker configuration
+            "Nodes": {
+                "CS": "yyy",
+                "BE": "yyy",
+                "FE": "yyy",
+                "ES": "yyy"
+            }
+        },
+        "override_attributes": {
+             
+            # FE and BE listening ports
+            "FE": {
+                "http_port": "8181",
+                "https_port": "9443"
+            },
+            "BE": {
+                "http_port": "8080",
+                "https_port": "8443"
+            },
+            
+            # Elasticsearch configuration
+            "elasticsearch": {
+                "cluster_name": "SDC-ES-",
+                "ES_path_home": "/usr/share/elasticsearch",
+                "ES_path_data": "/usr/share/elasticsearch/data",
+                "num_of_replicas": "0",
+                "num_of_shards": "1"
+            },
+            
+            # Cassandra configuration
+            "cassandra": {
+                "concurrent_reads": "32",
+                "num_tokens": "256",
+                "data_dir": "/var/lib/cassandra/data",
+                "hinted_handoff_enabled": "true",
+                "cassandra_user": "asdc_user",
+                "cassandra_password": "Aa1234%^!",
+                "concurrent_writes": "32",
+                "cluster_name": "SDC-CS-",
+                "multithreaded_compaction": "false",
+                "cache_dir": "/var/lib/cassandra/saved_caches",
+                "log_file": "/var/lib/cassandra/log/system.log",
+                "phi_convict_threshold": "8",
+                "commitlog_dir": "/var/lib/cassandra/commitlog"
+            }
+        }
+    }
+
+Backend Configurations
+======================
+
+BE-configuration.yaml
+---------------------
+
+::
+
+    # Request headers for identification of the user that made the request
+    identificationHeaderFields:
+    - HTTP_IV_USER
+    - HTTP_CSP_FIRSTNAME
+    - HTTP_CSP_LASTNAME
+    - HTTP_IV_REMOTE_ADDRESS
+    - HTTP_CSP_WSTYPE
+    
+    # Catalog backend hostname
+    beFqdn: <%= @host_ip %>
+    
+    # Catalog backend http port
+    beHttpPort: <%= @catalog_port %>
+    
+    # Catalog backend http context
+    beContext: /sdc/rest/config/get
+    
+    # Catalog backend protocol
+    beProtocol: http
+    
+    # Catalog backend ssl port
+    beSslPort: <%= @ssl_port %>
+    
+    # Catalog backend configuration vesrion
+    version: 1.0
+    
+    # Catalog backend configuration release date
+    released: 2012-11-30
+    
+    # Catalog tosca current conformance version
+    toscaConformanceLevel: 4.0
+    
+    # Catalog minimum tosca conformance version
+    minToscaConformanceLevel: 3.0
+    
+    # Titan configuration file location
+    titanCfgFile: /var/lib/jetty/config/catalog-be/titan.properties
+    
+    # Does titan holds the persistency data in memory
+    titanInMemoryGraph: false
+    
+    # The timeout for titan to lock on an object in a transaction
+    titanLockTimeout: 1800
+    
+    # The interval to try and reconnect to titan DB when it is down during SDC startup
+    titanReconnectIntervalInSeconds: 3
+    
+    # The read timeout towards Titan DB when health check is invoked
+    titanHealthCheckReadTimeout: 1
+    
+    # The interval to try and reconnect to Elasticsearch when it is down during SDC startup
+    esReconnectIntervalInSeconds: 3
+    
+    # The interval to try and reconnect to UEB health check when it is down during SDC startup
+    uebHealthCheckReconnectIntervalInSeconds: 15
+    
+    # The read timeout towards UEB when helath check is invoked
+    uebHealthCheckReadTimeout: 4
+    
+    # Protocols being used in SDC
+    protocols:
+        - http
+        - https
+    
+    # Default imports
+    # Under each import there is the file the data will be imported from
+    defaultImports:
+        - nodes:
+            file: nodes.yml
+        - datatypes:
+            file: data.yml
+        - capabilities:
+            file: capabilities.yml
+        - relationships:
+            file: relationships.yml
+        - groups:
+            file: groups.yml
+        - policies:
+            file: policies.yml
+    
+    # Users
+    # Deprecated. Will be removed in future releases
+    users:
+        tom: passwd
+        bob: passwd
+    
+    cassandraConfig:
+        # Cassandra hostname
+        cassandraHosts: <%= @cassandra_ip %>
+        
+        # Cassandra local data center name
+        localDataCenter: <%= @DC_NAME %>
+        
+        # The read timeout towards Cassandra when health check is invoked
+        reconnectTimeout : 30000
+        
+        # Should an authentication be used when accessing Cassandra
+        authenticate: true
+        
+        # Username for accessing Cassandra
+        username: asdc_user
+        
+        # Password for accessing Cassnadra
+        password: {{cassandra_password}}
+        
+        # Does an ssl should be used
+        ssl: false
+        
+        # Location of .truststore file
+        truststorePath : /config/.truststore
+        
+        # The .truststore file password
+        truststorePassword : Aa123456
+        
+        # Keyspaces configuration for Cassandra
+        keySpaces:
+            - { name: dox, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['<%= @DC_NAME %>','<%= @rep_factor %>']}
+            - { name: sdcaudit, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['<%= @DC_NAME %>','<%= @rep_factor %>']}
+            - { name: sdcartifact, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['<%= @DC_NAME %>','<%= @rep_factor %>']}
+            - { name: sdccomponent, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['<%= @DC_NAME %>','<%= @rep_factor %>']}
+            - { name: sdcrepository, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['<%= @DC_NAME %>','<%= @rep_factor %>']}
+    
+    # Application-specific settings of ES
+    elasticSearch:
+        
+        # Mapping of index prefix to time-based frame. For example, if below is configured:
+        #
+        # - indexPrefix: auditingevents
+        #    creationPeriod: minute
+        #
+        # then ES object of type which is mapped to "auditingevents-*" template, and created on 2015-12-23 13:24:54, will enter "auditingevents-2015-12-23-13-24" index.
+        # Another object created on 2015-12-23 13:25:54, will enter "auditingevents-2015-12-23-13-25" index.
+        # If creationPeriod: month, both of the above will enter "auditingevents-2015-12" index.
+        #
+        # PLEASE NOTE: the timestamps are created in UTC/GMT timezone! This is needed so that timestamps will be correctly presented in Kibana.
+        #
+        # Legal values for creationPeriod - year, month, day, hour, minute, none (meaning no time-based behaviour).
+        #
+        # If no creationPeriod is configured for indexPrefix, default behavour is creationPeriod: month.
+        indicesTimeFrequency:
+            - indexPrefix: auditingevents
+              creationPeriod: month
+            - indexPrefix: monitoring_events
+              creationPeriod: month
+    
+    # Artifact types placeholder
+    artifactTypes:
+        - CHEF
+        - PUPPET
+        - SHELL
+        - YANG
+        - YANG_XML
+        - HEAT
+        - BPEL
+        - DG_XML
+        - MURANO_PKG
+        - WORKFLOW
+        - NETWORK_CALL_FLOW
+        - TOSCA_TEMPLATE
+        - TOSCA_CSAR
+        - AAI_SERVICE_MODEL
+        - AAI_VF_MODEL
+        - AAI_VF_MODULE_MODEL
+        - AAI_VF_INSTANCE_MODEL
+        - OTHER
+        - SNMP_POLL
+        - SNMP_TRAP
+        - GUIDE
+        - PLAN
+    
+    # License types placeholder
+    licenseTypes:
+        - User
+        - Installation
+        - CPU
+    
+    # Resource types placeholder
+    resourceTypes: &allResourceTypes
+        - VFC
+        - CP
+        - VL
+        - VF
+        - VFCMT
+        - Abstract
+        - CVFC
+    
+    #Deployment resource artifacts placeHolder
+    deploymentResourceArtifacts:
+    
+    # Deployment resource instance artifacts placeholders
+    # For each artifact the following properties exists:
+    # 
+    # displayName - The display name of the artifact
+    # type - The type of the artifact
+    # description - The description of the artifact
+    # fileExtension - The file extension of the artifact file for uploading
+    deploymentResourceInstanceArtifacts:
+        heatEnv:
+            displayName: "HEAT ENV"
+            type: HEAT_ENV
+            description: "Auto-generated HEAT Environment deployment artifact"
+            fileExtension: "env"
+        VfHeatEnv:
+            displayName: "VF HEAT ENV"
+            type: HEAT_ENV
+            description: "VF Auto-generated HEAT Environment deployment artifact"
+            fileExtension: "env"
+    
+    # Tosca artifacts placeholders
+    # For each artifact there is a template and a scar.
+    # For each one the following properties exists:
+    # 
+    # artifactName - The suffix of the artifact file
+    # displayName - The display name of the artifact
+    # type - The type of the artifact
+    # description - The description of the artifact
+    toscaArtifacts:
+        assetToscaTemplate:
+            artifactName: -template.yml
+            displayName: Tosca Template
+            type: TOSCA_TEMPLATE
+            description: TOSCA representation of the asset
+        assetToscaCsar:
+            artifactName: -csar.csar
+            displayName: Tosca Model
+            type: TOSCA_CSAR
+            description: TOSCA definition package of the asset
+    
+    # Resource category to exclude
+    excludeResourceCategory:
+        - Generic
+    
+    # Resource type to exclude
+    excludeResourceType:
+        - PNF
+    
+    # Informational resource artifacts placeHolder
+    # For each artifact the following properties exists:
+    # 
+    # displayName - The display name of the artifact
+    # type - The type of the artifact
+    informationalResourceArtifacts:
+        features:
+            displayName: Features
+            type: OTHER
+    capacity:
+        displayName: Capacity
+        type: OTHER
+    vendorTestResult:
+        displayName: Vendor Test Result
+        type: OTHER
+    testScripts:
+        displayName: Test Scripts
+        type: OTHER
+    CloudQuestionnaire:
+        displayName: Cloud Questionnaire (completed)
+        type: OTHER
+    HEATTemplateFromVendor:
+        displayName: HEAT Template from Vendor
+        type: HEAT
+    resourceSecurityTemplate:
+        displayName: Resource Security Template
+        type: OTHER
+    
+    # Service category to exclude
+    excludeServiceCategory:
+    
+    # Informational service artifacts placeHolder
+    # For each artifact the following properties exists:
+    # 
+    # displayName - The display name of the artifact
+    # type - The type of the artifact
+    informationalServiceArtifacts:
+        serviceArtifactPlan:
+            displayName: Service Artifact Plan
+            type: OTHER
+        summaryOfImpactsToECOMPElements:
+            displayName: Summary of impacts to ECOMP elements,OSSs, BSSs
+            type: OTHER
+        controlLoopFunctions:
+            displayName: Control Loop Functions
+            type: OTHER
+        dimensioningInfo:
+            displayName: Dimensioning Info
+            type: OTHER
+        affinityRules:
+            displayName: Affinity Rules
+            type: OTHER
+        operationalPolicies:
+            displayName: Operational Policies
+            type: OTHER
+        serviceSpecificPolicies:
+            displayName: Service-specific Policies
+            type: OTHER
+        engineeringRules:
+            displayName: Engineering Rules (ERD)
+            type: OTHER
+        distributionInstructions:
+            displayName: Distribution Instructions
+            type: OTHER
+        certificationTestResults:
+            displayName: TD Certification Test Results
+            type: OTHER
+        deploymentVotingRecord:
+            displayName: Deployment Voting Record
+            type: OTHER
+        serviceQuestionnaire:
+            displayName: Service Questionnaire
+            type: OTHER
+        serviceSecurityTemplate:
+            displayName: Service Security Template
+            type: OTHER
+    
+    # Service api artifacts placeHolder
+    # For each artifact the following properties exists:
+    # 
+    # displayName - The display name of the artifact
+    # type - The type of the artifact
+    serviceApiArtifacts:
+        configuration:
+            displayName: Configuration
+            type: OTHER
+        instantiation:
+            displayName: Instantiation
+            type: OTHER
+        monitoring:
+            displayName: Monitoring
+            type: OTHER
+        reporting:
+            displayName: Reporting
+            type: OTHER
+        logging:
+            displayName: Logging
+            type: OTHER
+        testing:
+            displayName: Testing
+            type: OTHER
+    
+    # The maximum number of keys permited for additional information on service
+    additionalInformationMaxNumberOfKeys: 50
+    
+    # Collect process statistics
+    systemMonitoring:
+        
+        # Should monitoring be enabled
+        enabled: false
+        
+        # In case of going through the FE server proxy the information to the BE
+        isProxy: false
+        
+        # What is the interval of the statistics collection
+        probeIntervalInSeconds: 15
+    
+    defaultHeatArtifactTimeoutMinutes: 60
+    
+    # Service deployment artifacts placeHolder
+    # For each artifact the following properties exists:
+    # 
+    # acceptedTypes - File types that can be uploaded as each artifact
+    serviceDeploymentArtifacts:
+        YANG_XML:
+            acceptedTypes:
+                - xml
+        VNF_CATALOG:
+            acceptedTypes:
+                - xml
+        MODEL_INVENTORY_PROFILE:
+            acceptedTypes:
+                - xml
+        MODEL_QUERY_SPEC:
+            acceptedTypes:
+                - xml
+        UCPE_LAYER_2_CONFIGURATION:
+            acceptedTypes:
+                - xml
+    
+    #AAI Artifacts
+        AAI_SERVICE_MODEL:
+            acceptedTypes:
+                - xml
+        AAI_VF_MODULE_MODEL:
+            acceptedTypes:
+                - xml
+        AAI_VF_INSTANCE_MODEL:
+            acceptedTypes:
+                - xml
+        OTHER:
+            acceptedTypes:
+    
+    #PLAN
+        PLAN:
+            acceptedTypes:
+                - xml
+    
+    # Resource deployment artifacts placeHolder
+    # For each artifact the following properties exists:
+    # 
+    # acceptedTypes - File types that can be uploaded as each artifact
+    # validForRespurceTypes - Resource types that support each artifact. 
+    # If left empty it means all resource types are valid
+    resourceDeploymentArtifacts:
+        HEAT:
+            acceptedTypes:
+                - yaml
+                - yml
+            validForResourceTypes: *allResourceTypes
+        HEAT_VOL:
+            acceptedTypes:
+                - yaml
+                - yml
+            validForResourceTypes: *allResourceTypes
+        HEAT_NET:
+            acceptedTypes:
+                - yaml
+                - yml
+            validForResourceTypes: *allResourceTypes
+        HEAT_NESTED:
+            acceptedTypes:
+                - yaml
+                - yml
+            validForResourceTypes: *allResourceTypes
+        HEAT_ARTIFACT:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        YANG_XML:
+            acceptedTypes:
+                - xml
+            validForResourceTypes: *allResourceTypes
+        VNF_CATALOG:
+            acceptedTypes:
+                - xml
+            validForResourceTypes: *allResourceTypes
+        VF_LICENSE:
+            acceptedTypes:
+                - xml
+            validForResourceTypes: *allResourceTypes
+        VENDOR_LICENSE:
+            acceptedTypes:
+                - xml
+            validForResourceTypes: *allResourceTypes
+        MODEL_INVENTORY_PROFILE:
+            acceptedTypes:
+                - xml
+            validForResourceTypes: *allResourceTypes
+        MODEL_QUERY_SPEC:
+            acceptedTypes:
+                - xml
+            validForResourceTypes: *allResourceTypes
+        LIFECYCLE_OPERATIONS:
+            acceptedTypes:
+                - yaml
+                - yml
+            validForResourceTypes:
+                - VF
+                - VFC
+        VES_EVENTS:
+            acceptedTypes:
+                - yaml
+                - yml
+            validForResourceTypes: *allResourceTypes
+        PERFORMANCE_COUNTER:
+            acceptedTypes:
+                - csv
+            validForResourceTypes: *allResourceTypes
+        APPC_CONFIG:
+            acceptedTypes:
+            validForResourceTypes:
+                - VF
+        DCAE_TOSCA:
+            acceptedTypes:
+                - yml
+                - yaml
+            validForResourceTypes:
+                - VF
+                - VFCMT
+        DCAE_JSON:
+            acceptedTypes:
+                - json
+            validForResourceTypes:
+                - VF
+                - VFCMT
+        DCAE_POLICY:
+            acceptedTypes:
+                - emf
+            validForResourceTypes:
+                - VF
+                - VFCMT
+        DCAE_DOC:
+            acceptedTypes:
+            validForResourceTypes:
+                - VF
+                - VFCMT
+        DCAE_EVENT:
+            acceptedTypes:
+            validForResourceTypes:
+                - VF
+                - VFCMT
+        AAI_VF_MODEL:
+            acceptedTypes:
+                - xml
+            validForResourceTypes:
+                - VF
+        AAI_VF_MODULE_MODEL:
+            acceptedTypes:
+                - xml
+            validForResourceTypes:
+                - VF
+        OTHER:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        SNMP_POLL:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        SNMP_TRAP:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+    
+    #PLAN
+        PLAN:
+            acceptedTypes:
+                - xml
+            validForResourceTypes:
+                - VF
+                - VFC
+    
+    # Resource instance deployment artifacts placeHolder
+    # For each artifact the following properties exists:
+    # 
+    # acceptedTypes - File types that can be uploaded as each artifact
+    # validForRespurceTypes - Resource types that support each artifact. 
+    # If left empty it means all resource types are valid
+    resourceInstanceDeploymentArtifacts:
+        HEAT_ENV:
+            acceptedTypes:
+                - env
+        VF_MODULES_METADATA:
+            acceptedTypes:
+                - json
+        VES_EVENTS:
+            acceptedTypes:
+                - yaml
+                - yml
+        PERFORMANCE_COUNTER:
+            acceptedTypes:
+                - csv
+        DCAE_INVENTORY_TOSCA:
+            acceptedTypes:
+                - yml
+                - yaml
+        DCAE_INVENTORY_JSON:
+            acceptedTypes:
+                - json
+        DCAE_INVENTORY_POLICY:
+          acceptedTypes:
+                - emf
+        DCAE_INVENTORY_DOC:
+          acceptedTypes:
+        DCAE_INVENTORY_BLUEPRINT:
+          acceptedTypes:
+        DCAE_INVENTORY_EVENT:
+          acceptedTypes:
+        SNMP_POLL:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        SNMP_TRAP:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+    
+    #PLAN
+        PLAN:
+            acceptedTypes:
+                - xml
+    
+    # Resource informational artifacts placeHolder
+    # For each artifact the following properties exists:
+    # 
+    # acceptedTypes - File types that can be uploaded as each artifact
+    # validForRespurceTypes - Resource types that support each artifact. 
+    # If left empty it means all resource types are valid
+    resourceInformationalArtifacts:
+        CHEF:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        PUPPET:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        SHELL:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        YANG:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        YANG_XML:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        HEAT:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        BPEL:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        DG_XML:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        MURANO_PKG:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        OTHER:
+            acceptedTypes:
+            validForResourceTypes:
+                - VFC
+                - CVFC
+                - CP
+                - VL
+                - VF
+                - VFCMT
+                - Abstract
+                - PNF
+        SNMP_POLL:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        SNMP_TRAP:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        GUIDE:
+            acceptedTypes:
+            validForResourceTypes:
+                - VF
+                - VFC
+                - CVFC
+    
+    # Resource informational deployment artifact placeholder
+    resourceInformationalDeployedArtifacts:
+    
+    # Requirements needed to be fulfilled before certificattion
+    requirementsToFulfillBeforeCert:
+    
+    # Capabillities needed to be fulfilled before certificattion
+    capabilitiesToConsumeBeforeCert:
+    
+    # Urls that should not be logged
+    unLoggedUrls:
+       - /sdc2/rest/healthCheck
+    
+    # When component is being set as deleted those are the clean configurations
+    cleanComponentsConfiguration:
+        
+        # The interval to check for deleted components to clean
+        cleanIntervalInMinutes: 1440
+        
+        # The components types to delete
+        componentsToClean:
+           - Resource
+           - Service
+    
+    # Deprecated. Will be removed in future releases
+    artifactsIndex: resources
+    
+    # Used to add header and footer to heatENV files generated by SDC
+    heatEnvArtifactHeader: ""
+    heatEnvArtifactFooter: ""
+    
+    onboarding:
+        
+        # Onboarding protocol
+        protocol: http
+        
+        # Onboarding backend hostname
+        host: <%= @host_ip %>
+        
+        # Onboarding backend http port
+        port: <%= @catalog_port %>
+        
+        # The url that being used when downloading CSARs
+        downloadCsarUri: "/onboarding-api/v1.0/vendor-software-products/packages"
+        
+        # Url for onboarding health check
+        healthCheckUri: "/onboarding-api/v1.0/healthcheck"
+    
+    
+    #GSS IDNS
+    # Switchover configuration is used for geo redundency to provide automatic failovers
+    switchoverDetector:
+        gBeFqdn:
+        gFeFqdn:
+        beVip: 1.2.3.4
+        feVip: 1.2.3.4
+        beResolveAttempts: 3
+        feResolveAttempts: 3
+        enabled: false
+        interval: 60
+        changePriorityUser: ecompasdc
+        changePriorityPassword: ecompasdc123
+        publishNetworkUrl:
+        publishNetworkBody: '{"note":"comment"}'
+        groups:
+          beSet: { changePriorityUrl: "", changePriorityBody: '{"name":"","uri":"","no_ad_redirection":false,"v4groups":{"failover_groups":["","","failover_policy":["FAILALL"]},"comment":"","intended_app_proto":"DNS"}'}
+          feSet: { changePriorityUrl: "", changePriorityBody: '{"name":"","uri":"","no_ad_redirection":false,"v4groups":{"failover_groups":["",""],"failover_policy":["FAILALL"]},"comment":"","intended_app_proto":"DNS"}'}
+    
+    # Cache for datatypes. Improving run times for data type search
+    applicationL1Cache:
+        datatypes:
+            enabled: true
+            firstRunDelay: 10
+            pollIntervalInSec: 60
+    
+    # Deprecated. Will be removed in future releases
+    applicationL2Cache:
+        enabled: false
+        catalogL1Cache:
+            enabled: false
+            resourcesSizeInCache: 300
+            servicesSizeInCache: 200
+            productsSizeInCache: 100
+        queue:
+            syncIntervalInSecondes: 43200
+            waitOnShutDownInMinutes: 10
+            numberOfCacheWorkers: 4
+    
+    # Validators for tosca properties
+    toscaValidators:
+        stringMaxLength: 2500
+    
+    # Should audit be disabled
+    disableAudit: false
+    
+    # VF module validations properties
+    vfModuleProperties:
+        min_vf_module_instances:
+            forBaseModule: 1
+            forNonBaseModule: 0
+        max_vf_module_instances:
+            forBaseModule: 1
+            forNonBaseModule:
+        initial_count:
+            forBaseModule: 1
+            forNonBaseModule: 0
+        vf_module_type:
+            forBaseModule: Base
+            forNonBaseModule: Expansion
+    
+    # For each generic node type defining it's coresponding class
+    genericAssetNodeTypes:
+        VFC: org.openecomp.resource.abstract.nodes.VFC
+        CVFC: org.openecomp.resource.abstract.nodes.VFC
+        VF : org.openecomp.resource.abstract.nodes.VF
+        PNF: org.openecomp.resource.abstract.nodes.PNF
+        Service: org.openecomp.resource.abstract.nodes.service
+
+
+BE-distribution-engine-configuration.yaml
+-----------------------------------------
+
+::
+
+    # UEB servers list
+    uebServers:
+        <% node['UEB']['fqdn'].each do |conn| -%>
+            - <%= conn %>
+        <% end -%>
+    
+    # UEB public key
+    uebPublicKey: <%= node['UEB']['PublicKey'] %>
+    
+    # UEB secret key
+    uebSecretKey: <%= node['UEB']['SecretKey'] %>
+    
+    # Topic name for receiving distribution notification
+    distributionNotifTopicName:  SDC-DISTR-NOTIF-TOPIC
+    
+    # Topic name for distribution status
+    distributionStatusTopicName: SDC-DISTR-STATUS-TOPIC
+    
+    # Distibution initializtion retry interval time
+    initRetryIntervalSec: 5
+    
+    # Distribution initializtion maximum interval time
+    initMaxIntervalSec: 60
+    
+    # Deprecated. Will be removed in future releases
+    distribNotifServiceArtifactTypes:
+        info:
+            - MURANO-PKG
+    
+    # Deprecated. Will be removed in future releases
+    distribNotifResourceArtifactTypes:
+        lifecycle:
+            - HEAT
+            - DG-XML
+    
+    # Distribution environments
+    environments:
+        - <%= node.chef_environment %>
+    
+    distributionStatusTopic:
+        
+        # Distribution status polling interval
+        pollingIntervalSec: 60
+        
+        # Distribution status fetch time
+        fetchTimeSec: 15
+        
+        # Distribution status consumer group
+        consumerGroup: sdc-<%= node.chef_environment %>
+        
+        # Distribution status consumer id
+        consumerId: sdc-<%= node.chef_environment %>1
+    
+    distributionNotificationTopic:
+        
+        # Minimum pool size for distribution notifications
+        minThreadPoolSize: 0
+        
+        # Maximum pool size for distribution notifications
+        maxThreadPoolSize: 10
+        
+        # Maximum waiting time after sending a notification
+        maxWaitingAfterSendingSeconds: 5
+    
+    # Deprecated. Will be removed in future releases
+    createTopic:
+        partitionCount: 1
+        replicationCount: 1
+    
+    # STarting the distribution engine
+    startDistributionEngine: true
+    
+    #This is false by default, since ONAP Dmaap currently doesn't support https
+    # Does https should be used with Dmaap
+    useHttpsWithDmaap: false
+
+
+BE-onboarding-configuration.yaml
+--------------------------------
+
+::
+
+    notifications:
+        
+        # Backend onboarding notifications polling interval in milliseconds
+        pollingIntervalMsec: 2000
+        
+        # Backend onboarding notifications selection size
+        selectionSize: 100
+        
+        # Backend onboarding norifications backend hostname
+        beHost: <%= @catalog_ip %>
+        
+        # Backend onboarding notifications backend http port
+        beHttpPort: <%= @catalog_port %>
+
+
+BE-titan.properties
+-------------------
+
+::
+
+    # Titan storage backend
+    storage.backend=cassandra
+    
+    # Titan storage hostname
+    storage.hostname=<%= @CASSANDRA_IP %>
+    
+    # Titan storage port]
+    storage.port=9160
+    
+    # Titan storage username
+    storage.username=<%= @CASSANDRA_USR %>
+    
+    # Titan storage password
+    storage.password=<%= @CASSANDRA_PWD %>
+    
+    # Titan storage connection timeout
+    storage.connection-timeout=10000
+    
+    # Titan cassandra keyspace name
+    storage.cassandra.keyspace=sdctitan
+    
+    # Is Titan cassandra ssl is enabled
+    storage.cassandra.ssl.enabled=false
+    
+    # Titan cassandra ssl truststore file location
+    storage.cassandra.ssl.truststore.location=/var/lib/jetty/config/.truststore
+    
+    # Titan cassandra ssl truststore file password
+    storage.cassandra.ssl.truststore.password=Aa123456
+    
+    # Does titan should use cache
+    cache.db-cache = false
+    
+    # How long in milliseconds should the cache keep entries before flushing them
+    cache.db-cache-clean-wait = 20
+    
+    # Default experation time in milliseconds for entries in the cache
+    cache.db-cache-time = 180000
+    
+    # Size of titan database cache
+    cache.db-cache-size = 0.5
+    
+    # Titan cassandra read consistency level
+    storage.cassandra.read-consistency-level=LOCAL_QUORUM
+    
+    # Titan cassandra write consistency level
+    storage.cassandra.write-consistency-level=LOCAL_QUORUM
+    
+    # Titan cassandra replication strategy class name
+    storage.cassandra.replication-strategy-class=org.apache.cassandra.locator.NetworkTopologyStrategy
+    
+    # Titan cassandra replication startegy options
+    storage.cassandra.replication-strategy-options=<%= @DC_NAME %>,<%= @rep_factor %>
+    
+    # Titan cassandra local data center name
+    storage.cassandra.astyanax.local-datacenter=<%= @DC_NAME %>
+    
+    # Number of times the system attempts to acquire a lock before giving up and throwing an exception
+    storage.lock.retries=5
+    
+    # Number of milliseconds the system waits for a lock application to be acknowledged by the storage backend
+    storage.lock.wait-time=500
+
 
-   * Configuration is typically: provided for platform-component and sdk projects;
-     and referenced in developer and user guides.
-   
-   * This note must be removed after content has been added.
+Frontend Configuration
+======================
 
+FE-configuration.yaml
+---------------------
 
+::
 
-Example ...
+    # Catalog frontend hostname
+    feFqdn: <%= @fe_host_ip %>
+    
+    # Catalog backend hostname
+    beHost: <%= @be_host_ip %>
+    
+    # Catalog backend http port
+    beHttpPort: <%= @catalog_port %>
+    
+    # Catalog backend http context
+    beContext: /sdc2/rest/v1/catalog/upload/resources
+    
+    # Catalog backend protocol
+    beProtocol: http
+    
+    # Catalog backend ssl port
+    beSslPort: <%= @ssl_port %>
+    
+    # Threadpool size for handling requests
+    threadpoolSize: 50
+    
+    # Request processing timeout (seconds)
+    requestTimeout: 10
+    
+    # Health check timeout in milliseconds
+    healthCheckSocketTimeoutInMs: 5000
+    
+    # Health check inteval in seconds
+    healthCheckIntervalInSeconds: 5
+    
+    onboarding:
+        
+        # Onboarding protocol
+        protocol: http
+        
+        # Onboarding frontend hostname
+        host: <%= @fe_host_ip %>
+        
+        # Onboarding frontend port
+        port: 8181
+        
+        # Onboarding frontend health check url
+        healthCheckUri: "/onboarding/v1.0/healthcheck"
+    
+    # Request headers for identification of the user that made the request
+    identificationHeaderFields: 
+        -
+            - &HTTP_IV_USER HTTP_IV_USER
+            - &iv-user iv-user
+        -
+            - &USER_ID USER_ID
+            - &user-id user-id
+        -
+            - &HTTP_CSP_ATTUID HTTP_CSP_ATTUID
+            - &csp-attuid csp-attuid
+        -
+            - &HTTP_CSP_WSTYPE HTTP_CSP_WSTYPE
+            - &csp-wstype csp-wstype
+    
+    # Optional request headers
+    optionalHeaderFields:
+        -
+            - &HTTP_CSP_FIRSTNAME HTTP_CSP_FIRSTNAME
+            - &csp-firstname csp-firstname
+        -
+            - &HTTP_CSP_LASTNAME HTTP_CSP_LASTNAME
+            - &csp-lastname csp-lastname
+        -
+            - &HTTP_IV_REMOTE_ADDRESS HTTP_IV_REMOTE_ADDRESS
+            - &iv-remote-address iv-remote-address
+        -
+            - &HTTP_CSP_EMAIL HTTP_CSP_EMAIL
+            - &csp-email csp-email
+    
+    # Frontend configuration version
+    version: 1.0
+    
+    # Frontend configuration release date
+    released: 2012-11-30
+    
+    # Connection parameters
+    connection:
+        url: jdbc:mysql://localhost:3306/db
+        poolSize: 17
+    
+    # Protocols being used in SDC
+    protocols:
+        - http
+        - https
+    
+    # Collect process statistics
+    systemMonitoring:
+        
+        # Should monitoring be enabled
+        enabled: false
+        
+        # In case of going through the FE server proxy the information to the BE
+        isProxy: true
+        
+        # What is the interval of the statistics collection
+        probeIntervalInSeconds: 15
+    
+    # Kibana hostname
+    kibanaHost: localhost
+    
+    # Kibana http port
+    kibanaPort: 5601
+    
+    # Kibana usage protocol
+    kibanaProtocol: http
 
-You can provide the following in ``basic.conf``
 
-``host=ADDRESS``
-  The address of the host
+FE-onboarding-configuration.yaml
+--------------------------------
 
-``port=PORT``
-  The port used for signaling
+::
 
-  Optional. Default: ``8080``
+    notifications:
+        
+        # Frontend onboarding notifications polling interval in milliseconds
+        pollingIntervalMsec: 2000
+        
+        # Frontend onboarding notifications selection size
+        selectionSize: 100
+        
+        # Frontend onboarding norifications backend hostname
+        beHost: <%= @catalog_ip %>
+        
+        # Frontend onboarding notifications backend http port
+        beHttpPort: <%= @catalog_port %>
index 099442d..2379d75 100644 (file)
@@ -1,7 +1,8 @@
 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
 .. http://creativecommons.org/licenses/by/4.0
 
+=============
 Consumed APIs
 =============
 
-SDC Project does not consume any APIs form other sources therfore this section is currently empty
+SDC Project does not consume any APIs from other sources therefore this section is currently empty
index a6cca5b..9e82e15 100644 (file)
@@ -5,16 +5,6 @@
 Logging
 =======
 
-.. note::
-   * This section is used to describe the informational or diagnostic messages emitted from 
-     a software component and the methods or collecting them.
-   
-   * This section is typically: provided for a platform-component and sdk; and
-     referenced in developer and user guides
-   
-   * This note must be removed after content has been added.
-
-
 Where to Access Information
 ---------------------------
 
index 349e7ba..e9decd1 100644 (file)
@@ -17,7 +17,7 @@ Overview
 Version information
 -------------------
 
-*Version* : 1.0.0
+*Version* : 1.1.0
 
 URI scheme
 ----------
index a0034a3..ddbcaf7 100644 (file)
@@ -25,14 +25,12 @@ import org.openecomp.config.api.ConfigurationManager;
 import org.openecomp.core.utilities.CommonMethods;
 import org.openecomp.core.utilities.file.FileContentHandler;
 import org.openecomp.sdc.common.errors.CoreException;
-import org.openecomp.sdc.common.errors.ErrorCode;
 import org.openecomp.sdc.common.utils.SdcCommon;
 import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration;
 import org.openecomp.sdc.heat.datatypes.manifest.FileData;
 import org.openecomp.sdc.heat.datatypes.manifest.ManifestFile;
 import org.openecomp.sdc.heat.datatypes.model.Resource;
 import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
-import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment;
 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
 import org.openecomp.sdc.tosca.services.ToscaUtil;
 import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslatedHeatResource;
@@ -42,6 +40,7 @@ import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolida
 import org.openecomp.sdc.translator.services.heattotosca.ConfigConstants;
 import org.openecomp.sdc.translator.services.heattotosca.Constants;
 import org.openecomp.sdc.translator.services.heattotosca.NameExtractor;
+import org.openecomp.sdc.translator.services.heattotosca.errors.DuplicateResourceIdsInDifferentFilesErrorBuilder;
 import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesGenerator;
 
 import java.io.InputStream;
@@ -385,10 +384,7 @@ public class TranslationContext {
     }
 
     if(nodeAbstractNodeTemplateIdMap.containsKey(originalNodeTemplateId)){
-      throw new CoreException((new ErrorCode.ErrorCodeBuilder())
-          .withMessage("Resource with id "
-              + originalNodeTemplateId + " occures more than once in different addOn files")
-          .build());
+      throw new CoreException(new DuplicateResourceIdsInDifferentFilesErrorBuilder(originalNodeTemplateId).build());
     }
     nodeAbstractNodeTemplateIdMap.put(originalNodeTemplateId, abstractNodeTemplateId);
     this.getUnifiedSubstitutionData().get(serviceTemplateFileName).setNodesRelatedAbstractNode(
index b86038d..5d1bb1c 100644 (file)
@@ -31,6 +31,7 @@ import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolida
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.RequirementAssignmentData;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.TypeComputeConsolidationData;
+import org.openecomp.sdc.translator.services.heattotosca.errors.DuplicateResourceIdsInDifferentFilesErrorBuilder;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -154,10 +155,7 @@ public class ConsolidationDataUtil {
 
     if(isNestedResourceIdOccuresInDifferentNestedFiles(context, nestedHeatFileName,
         nestedNodeTemplateId)){
-      throw new CoreException((new ErrorCode.ErrorCodeBuilder())
-          .withMessage("Resource with id "
-              + nestedNodeTemplateId + " occures more than once in different addOn "
-              + "files").build());
+      throw new CoreException(new DuplicateResourceIdsInDifferentFilesErrorBuilder(nestedNodeTemplateId).build());
     }
 
     ConsolidationData consolidationData = context.getConsolidationData();
index 16a6301..d3f2a72 100644 (file)
@@ -24,6 +24,7 @@ import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolida
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.RequirementAssignmentData;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.TypeComputeConsolidationData;
+import org.openecomp.sdc.translator.services.heattotosca.errors.DuplicateResourceIdsInDifferentFilesErrorBuilder;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -637,20 +638,16 @@ public class ConsolidationService {
     NodeTemplate startingPortNodeTemplate = nodeTemplates.get(portNodeTemplateIdList.get(0));
 
     if (Objects.isNull(startingPortNodeTemplate)) {
-      throw new CoreException((new ErrorCode.ErrorCodeBuilder())
-          .withMessage("Resource with id "
-              + portNodeTemplateIdList.get(0) + " occures more than once in different addOn files")
-          .build());
+      throw new CoreException(
+          new DuplicateResourceIdsInDifferentFilesErrorBuilder(portNodeTemplateIdList.get(0)).build());
     }
 
     for (int i = 1; i < portNodeTemplateIdList.size(); i++) {
       NodeTemplate portNodeTemplate = nodeTemplates.get(portNodeTemplateIdList.get(i));
 
       if (Objects.isNull(portNodeTemplate)) {
-        throw new CoreException((new ErrorCode.ErrorCodeBuilder())
-            .withMessage("Resource with id "
-                + portNodeTemplateIdList.get(i) + " occures more than once in different addOn "
-                + "files").build());
+        throw new CoreException(
+            new DuplicateResourceIdsInDifferentFilesErrorBuilder(portNodeTemplateIdList.get(i)).build());
       }
 
       if (!isPropertySimilarBetweenNodeTemplates(propertyToCheck, portNodeTemplateIdList, nodeTemplates)) {
@@ -695,9 +692,8 @@ public class ConsolidationService {
     for (int i = 1; i < entityNodeTemplateIds.size(); i++) {
       NodeTemplate currentNodeTemplate = idToNodeTemplate.get(entityNodeTemplateIds.get(i));
       if (Objects.isNull(currentNodeTemplate)) {
-        throw new CoreException((new ErrorCode.ErrorCodeBuilder())
-            .withMessage("Resource with id "
-                + entityNodeTemplateIds.get(i) + " occures more than once in different addOn files").build());
+        throw new CoreException(
+            new DuplicateResourceIdsInDifferentFilesErrorBuilder(entityNodeTemplateIds.get(i)).build());
       }
       if(propertyExistCondition != isPropertyExistInNodeTemplate(propertyToCheck, currentNodeTemplate)){
         return false;
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/errors/DuplicateResourceIdsInDifferentFilesErrorBuilder.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/errors/DuplicateResourceIdsInDifferentFilesErrorBuilder.java
new file mode 100644 (file)
index 0000000..a75e8b3
--- /dev/null
@@ -0,0 +1,16 @@
+package org.openecomp.sdc.translator.services.heattotosca.errors;
+
+import org.openecomp.sdc.common.errors.BaseErrorBuilder;
+import org.openecomp.sdc.common.errors.ErrorCategory;
+
+public final class DuplicateResourceIdsInDifferentFilesErrorBuilder extends BaseErrorBuilder {
+
+  private static final String DUPLICATE_RESOURCE_ID_MSG = "Resource with id %s occurs more than once in " +
+      "different addOn files";
+
+  public DuplicateResourceIdsInDifferentFilesErrorBuilder(String resourceId) {
+    getErrorCodeBuilder().withId(TranslatorErrorCodes.DUPLICATE_RESOURCE_ID_IN_DIFFERENT_FILES)
+    .withCategory(ErrorCategory.APPLICATION)
+    .withMessage(String.format(DUPLICATE_RESOURCE_ID_MSG, resourceId));
+  }
+}
index bfcf834..5afb1ae 100644 (file)
@@ -29,4 +29,5 @@ public class TranslatorErrorCodes {
       "REFERENCE_TO_UNSUPPORTED_RESOURCE";
   public static final String NOT_IN_SYNC_NUMBER_OF_INTERFACES = "NOT_IN_SYNC_NUMBER_OF_INTERFACES";
   public static final String INVALID_PROPERTY_VALUE = "INVALID_PROPERTY_VALUE";
+  public static final String DUPLICATE_RESOURCE_ID_IN_DIFFERENT_FILES = "DUPLICATE_RESOURCE_ID_IN_DIFFERENT_FILES";
 }
index b1946b3..9399b91 100644 (file)
@@ -2,7 +2,10 @@ package org.openecomp.sdc.translator.services.heattotosca.impl.fulltest;
 
 import org.junit.Assert;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.openecomp.sdc.common.errors.CoreException;
 import org.openecomp.sdc.logging.api.Logger;
 import org.openecomp.sdc.logging.api.LoggerFactory;
 import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseFullTranslationTest;
@@ -19,6 +22,9 @@ public class UnifiedCompositionMixPatternFullTest extends BaseFullTranslationTes
     // do not delete this function. it prevents the superclass setup from running
   }
 
+  @Rule
+  public ExpectedException exception = ExpectedException.none();
+
   @Test
   public void testMixPatterns() throws IOException {
     inputFilesPath =
@@ -52,16 +58,13 @@ public class UnifiedCompositionMixPatternFullTest extends BaseFullTranslationTes
 
   @Test
   public void testDuplicateResourceIdsInDiffAddOnFiles() throws IOException {
+    exception.expect(CoreException.class);
+    exception.expectMessage("Resource with id lb_0_int_oam_int_0_port occurs more " +
+        "than once in different addOn files");
+
     inputFilesPath =
         "/mock/services/heattotosca/fulltest/mixPatterns/duplicateResourceIdsInDiffAddOnFiles/in";
-
-    try {
-      testTranslationWithInit();
-    }catch(Exception e){
-      log.debug("",e);
-      Assert.assertEquals(e.getMessage(), "Resource with id lb_0_int_oam_int_0_port occures more " +
-          "than once in different addOn files");
-    }
+    testTranslationWithInit();
   }
 
   @Test
index ae53a75..1eb6eeb 100644 (file)
@@ -44,7 +44,7 @@ const mapActionsToProps = (dispatch) => {
                        data:{
                                msg: i18n(`Are you sure you want to delete ${limit.name}?`),
                                confirmationButtonText: i18n('Delete'),
-                               title: i18n('Warning'),
+                               title: i18n('Delete'),
                                onConfirmed: ()=> EntitlementPoolsActionHelper.deleteLimit(dispatch, {limit, entitlementPool: parent, licenseModelId, version}).then(() => 
                                        selectedLimit === limit.id && onCloseLimitEditor()
                                )
index 62c6663..fa21109 100644 (file)
@@ -43,8 +43,9 @@ const mapActionsToProps = (dispatch, {licenseModelId, version}) => {
                onDeleteEntitlementPool: entitlementPool => dispatch({
                        type: globalMoadlActions.GLOBAL_MODAL_WARNING,
                        data:{
-                               msg: generateConfirmationMsg(entitlementPool),                          
-                               title: i18n('Warning'),                         
+                               msg: generateConfirmationMsg(entitlementPool),
+                               confirmationButtonText: i18n('Delete'),
+                               title: i18n('Delete'),
                                onConfirmed: ()=>EntitlementPoolsActionHelper.deleteEntitlementPool(dispatch, {
                                        licenseModelId,
                                        entitlementPoolId: entitlementPool.id,
index 83473a3..fc89238 100644 (file)
@@ -44,7 +44,8 @@ const mapActionsToProps = (dispatch, {licenseModelId}) => {
                        type: globalMoadlActions.GLOBAL_MODAL_WARNING,
                        data:{
                                msg: generateConfirmationMsg(featureGroup),
-                               title: i18n('Warning'),
+                               confirmationButtonText: i18n('Delete'),
+                               title: i18n('Delete'),
                                onConfirmed: ()=>FeatureGroupsActionHelper.deleteFeatureGroup(dispatch, {featureGroupId: featureGroup.id, licenseModelId, version})
                        }
                }),
index 72a99e2..92c2550 100644 (file)
@@ -45,7 +45,8 @@ const mapActionsToProps = (dispatch, {licenseModelId}) => {
                        type: globalMoadlActions.GLOBAL_MODAL_WARNING,
                        data:{
                                msg: i18n(`Are you sure you want to delete "${licenseAgreement.name}"?`),
-                               title: i18n('Warning'),
+                               confirmationButtonText: i18n('Delete'),
+                               title: i18n('Delete'),
                                onConfirmed: ()=>LicenseAgreementActionHelper.deleteLicenseAgreement(dispatch, {licenseModelId, licenseAgreementId: licenseAgreement.id, version})
                        }
                })
index 7745a12..0e20a6a 100644 (file)
@@ -45,7 +45,7 @@ const mapActionsToProps = (dispatch) => {
                        data:{
                                msg: i18n(`Are you sure you want to delete ${limit.name}?`),
                                confirmationButtonText: i18n('Delete'),
-                               title: i18n('Warning'),
+                               title: i18n('Delete'),
                                onConfirmed: ()=> LicenseKeyGroupsActionHelper.deleteLimit(dispatch, {limit, licenseKeyGroup: parent, licenseModelId, version}).then(() => 
                                        selectedLimit === limit.id && onCloseLimitEditor()
                                )
index a8cf1eb..c1d9373 100644 (file)
@@ -42,8 +42,9 @@ const mapActionsToProps = (dispatch, {licenseModelId, version}) => {
                onDeleteLicenseKeyGroupClick: licenseKeyGroup => dispatch({
                        type: globalMoadlActions.GLOBAL_MODAL_WARNING,
                        data:{
-                               msg: generateConfirmationMsg(licenseKeyGroup),                          
-                               title: i18n('Warning'),                         
+                               msg: generateConfirmationMsg(licenseKeyGroup),
+                               confirmationButtonText: i18n('Delete'),
+                               title: i18n('Delete'),
                                onConfirmed: ()=>LicenseKeyGroupsActionHelper.deleteLicenseKeyGroup(dispatch, {licenseModelId, licenseKeyGroupId:licenseKeyGroup.id, version})
                        }
                })
index 8262011..8c359db 100644 (file)
@@ -48,6 +48,8 @@ const mapActionsToProps = (dispatch, {componentId, softwareProductId}) => {
                        type: modalActionTypes.GLOBAL_MODAL_WARNING,
                        data:{
                                msg: i18n(`Are you sure you want to delete "${process.name}"?`),
+                               confirmationButtonText: i18n('Delete'),
+                               title: i18n('Delete'),
                                onConfirmed: ()=> SoftwareProductComponentProcessesActionHelper.deleteProcess(dispatch,
                                        {process, softwareProductId, version, componentId})
                        }
index afd6331..c704529 100644 (file)
@@ -43,6 +43,8 @@ const mapActionsToProps = (dispatch, {softwareProductId}) => {
                        type: modalActionTypes.GLOBAL_MODAL_WARNING,
                        data:{
                                msg: i18n(`Are you sure you want to delete "${process.name}"?`),
+                               confirmationButtonText: i18n('Delete'),
+                               title: i18n('Delete'),
                                onConfirmed: ()=> SoftwareProductProcessesActionHelper.deleteProcess(dispatch,
                                        {process, softwareProductId, version})
                        }
diff --git a/pom.xml b/pom.xml
index 6a7d39d..b633606 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -85,7 +85,7 @@
                <extentreports.version>3.0.3</extentreports.version>
                
                <!-- parser-->
-               <sdc-tosca-parser.version>1.1.34</sdc-tosca-parser.version>
+               <sdc-tosca-parser.version>1.1.32</sdc-tosca-parser.version>
                
                <!--JaCoCO -->
                <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
                                <artifact-generator-api.version>1710.0.0</artifact-generator-api.version>
                                <artifact-generator-core.version>1710.0.0</artifact-generator-core.version>
                                <dox-common-lib.version>1710.0.0</dox-common-lib.version>
-                               <sdc-tosca-parser.version>1.1.14</sdc-tosca-parser.version>
+                               <sdc-tosca-parser.version>1.1.32</sdc-tosca-parser.version>
                        </properties>
                </profile>
 
index 21deaf4..9fec52d 100644 (file)
                             <apiVersion>1.23</apiVersion>
                             <registry>nexus3.onap.org:10003</registry>
                             <authConfig>
-                                                       <username>docker</username>
-                                                       <password>docker</password>
-                                               </authConfig>
+                                <pull>
+                                       <username>docker</username>
+                                       <password>docker</password>
+                               </pull>
+                           </authConfig>
 
                             <images>
 
                                 <id>push-images</id>
                                 <phase>deploy</phase>
                                 <goals>
-                                    <goal>build</goal>
                                     <goal>push</goal>
                                 </goals>
                                 <configuration>
index 417db09..963b2fc 100755 (executable)
@@ -17,16 +17,16 @@ function cleanup {
 
 
 function dir_perms {
-       mkdir -p /data/logs/BE/ASDC/ASDC-BE
-       mkdir -p /data/logs/FE/ASDC/ASDC-FE
+       mkdir -p /data/logs/BE/SDC/SDC-BE
+       mkdir -p /data/logs/FE/SDC/SDC-FE
        chmod -R 777 /data/logs
 }
 
 function monitor_docker {
 
 echo monitor $1 Docker
-
-TIME_OUT=180
+sleep 5
+TIME_OUT=600
 INTERVAL=20
 TIME=0
 while [ "$TIME" -lt "$TIME_OUT" ]; do
@@ -201,9 +201,9 @@ echo -e ""
 
 /data/scripts/docker_health.sh
 
-if [ $? -ne 0 ]; then
-    exit 1
-fi
+#if [ $? -ne 0 ]; then
+#    exit 1
+#fi
 
 # sanityDocker
 echo "docker run sdc-frontend..."
index a05a283..220eee7 100644 (file)
     "recipe[sdc-catalog-be::BE_1_cleanup_jettydir]",
     "recipe[sdc-catalog-be::BE_2_setup_configuration]",
     "recipe[sdc-catalog-be::BE_3_locate_keystore]",
-    "recipe[sdc-catalog-be::BE_5_jetty_Modules]",
-    "recipe[sdc-catalog-be::BE_6_setup_elasticsearch]",
-    "recipe[sdc-catalog-be::BE_7_setup_portal_properties]",
-    "recipe[sdc-catalog-be::BE_8_logback]",
-    "recipe[sdc-catalog-be::BE_9_errors_config]"
+    "recipe[sdc-catalog-be::BE_4_jetty_Modules]",
+    "recipe[sdc-catalog-be::BE_5_setup_elasticsearch]",
+    "recipe[sdc-catalog-be::BE_6_setup_portal_properties]",
+    "recipe[sdc-catalog-be::BE_7_logback]",
+    "recipe[sdc-catalog-be::BE_8_errors_config]"
   ],
   "env_run_lists": {
   }
index 87f4ae6..8e5926c 100644 (file)
@@ -37,7 +37,9 @@ else
    chef-solo -c normatives.rb
 fi
 
+echo "###### DOCKER STARTED #####"
+
 while true; do sleep 2; done
 
-echo "###### DOCKER STARTED #####"
+
 
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vHSS.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vHSS.csar
new file mode 100644 (file)
index 0000000..ea5c128
Binary files /dev/null and b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vHSS.csar differ
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vMME.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vMME.csar
new file mode 100644 (file)
index 0000000..f921f46
Binary files /dev/null and b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vMME.csar differ
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vPCRF_aligned_fixed.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vPCRF_aligned_fixed.csar
new file mode 100644 (file)
index 0000000..6f997bc
Binary files /dev/null and b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vPCRF_aligned_fixed.csar differ
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vSPGW.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vSPGW.csar
new file mode 100644 (file)
index 0000000..8beae6e
Binary files /dev/null and b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vSPGW.csar differ
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/ZteEpcSpgwVf-csar.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/ZteEpcSpgwVf-csar.csar
new file mode 100644 (file)
index 0000000..0eacd74
Binary files /dev/null and b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/ZteEpcSpgwVf-csar.csar differ
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/cscf_si_fixed.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/cscf_si_fixed.csar
new file mode 100644 (file)
index 0000000..bc8397a
Binary files /dev/null and b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/cscf_si_fixed.csar differ
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/ntas.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/ntas.csar
new file mode 100644 (file)
index 0000000..6b6f7c4
Binary files /dev/null and b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/ntas.csar differ
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/resource-ZteEpcMmeVf-csar_fix.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/resource-ZteEpcMmeVf-csar_fix.csar
new file mode 100644 (file)
index 0000000..bf0e775
Binary files /dev/null and b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/resource-ZteEpcMmeVf-csar_fix.csar differ
index ea977be..347b8bc 100644 (file)
Binary files a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vCSCF_aligned.csar and b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vCSCF_aligned.csar differ
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vCSCF_v3.0.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vCSCF_v3.0.csar
new file mode 100644 (file)
index 0000000..1c52cca
Binary files /dev/null and b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vCSCF_v3.0.csar differ
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vSBC_aligned.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vSBC_aligned.csar
new file mode 100644 (file)
index 0000000..ee60eed
Binary files /dev/null and b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vSBC_aligned.csar differ
index 690559a..c4323c2 100644 (file)
@@ -6,7 +6,7 @@ cwd "#{tests_base}"
 code <<-EOH
    cd "#{tests_base}"
    jar_file=`ls test-apis*-jar-with-dependencies.jar`
-   nohup ./startTest.sh $jar_file #{ci_test_suite} &
+   ./startTest.sh $jar_file #{ci_test_suite} > #{tests_base}/target/startTest.out 2>&1
    echo "return code from startTest.sh = [$?]"
 EOH
 timeout 72000
index d4316c3..e4edfc6 100644 (file)
@@ -14,7 +14,7 @@ rc=$?
 #   exit 0
 #fi
 
-while true; do sleep 2; done
+#while true; do sleep 2; done
 
 ##/docker-entrypoint.sh
 
index 6b0dc56..01fad09 100644 (file)
@@ -28,6 +28,7 @@ import com.thinkaurelius.titan.core.TitanFactory;
 import com.thinkaurelius.titan.core.TitanGraph;
 import com.thinkaurelius.titan.core.TitanVertex;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.commons.lang3.tuple.ImmutableTriple;
 import org.apache.log4j.Logger;
@@ -48,6 +49,7 @@ import org.openecomp.sdc.ci.tests.utils.Utils;
 import org.openecomp.sdc.ci.tests.utils.cassandra.CassandraUtils;
 import org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils;
 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
+import org.openecomp.sdc.ci.tests.utils.general.FileHandling;
 import org.openecomp.sdc.ci.tests.utils.rest.*;
 import org.slf4j.LoggerFactory;
 import org.testng.ITestContext;
@@ -186,6 +188,10 @@ public abstract class ComponentBaseTest {
                
                performClean();
                shutdownTitanLogic();
+               String basePath = FileHandling.getBasePath();
+               String csarDir = FileHandling.getCreateDirByName("outputCsar");
+               FileUtils.cleanDirectory(new File(csarDir));
+
 
        }
 
index 44e386a..4db35a2 100644 (file)
@@ -24,8 +24,10 @@ package org.openecomp.sdc.ci.tests.sanity;
 
 
 
+import org.apache.http.HttpResponse;
 import org.junit.Rule;
 import org.junit.rules.TestName;
+import org.openecomp.sdc.be.datatypes.enums.AssetTypeEnum;
 import org.openecomp.sdc.be.model.ComponentInstance;
 import org.openecomp.sdc.be.model.Resource;
 import org.openecomp.sdc.be.model.Service;
@@ -39,9 +41,14 @@ import org.openecomp.sdc.ci.tests.datatypes.VendorSoftwareProductObject;
 import org.openecomp.sdc.ci.tests.datatypes.enums.LifeCycleStatesEnum;
 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
+import org.openecomp.sdc.ci.tests.utils.CsarToscaTester;
 import org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils;
 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
 import org.openecomp.sdc.ci.tests.utils.general.OnboardingUtillViaApis;
+import org.openecomp.sdc.ci.tests.utils.rest.AssetRestUtils;
+import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper;
+import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException;
+import org.openecomp.sdc.tosca.parser.impl.SdcToscaParserFactory;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Optional;
 import org.testng.annotations.Parameters;
@@ -52,9 +59,10 @@ import com.clearspring.analytics.util.Pair;
 
 import fj.data.Either;
 
-
-
-
+import java.io.File;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Map;
 
 
 public class Onboard extends ComponentBaseTest {
@@ -68,6 +76,8 @@ public class Onboard extends ComponentBaseTest {
        }
 
        protected String makeDistributionValue;
+       protected ISdcCsarHelper fdntCsarHelper;
+       protected SdcToscaParserFactory factory = SdcToscaParserFactory.getInstance();
 
 
 
@@ -115,12 +125,30 @@ public class Onboard extends ComponentBaseTest {
                ExtentTestActions.log(Status.INFO, String.format("Certify Service"));
                service = (Service) AtomicOperationUtils.changeComponentState(service, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true).getLeft();
 
+
 //             ExtentTestActions.log(Status.INFO, String.format("Distribute Service"));
 //             AtomicOperationUtils.distributeService(service, true);
-               
-               ExtentTestActions.log(Status.INFO, String.format("The onboarding %s test is passed ! ", vnfFile));
-       }
+               try{
+//                     HttpResponse assetResponse = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.SERVICES, service.getUUID());
+//                     InputStream inputStream = assetResponse.getEntity().getContent();
+                       File csarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.SERVICES, service.getUUID());
+
+                       ExtentTestActions.log(Status.INFO, "Tosca parser is going to convert service csar file to ISdcCsarHelper object...");
+                       fdntCsarHelper = factory.getSdcCsarHelper(csarFile.getAbsolutePath());
+            CsarToscaTester.processCsar(fdntCsarHelper);
 
+                       ExtentTestActions.log(Status.INFO, String.format("Tosca parser successfully parsed service CSAR"));
 
+                       ExtentTestActions.log(Status.INFO, String.format("The onboarding %s test is passed ! ", vnfFile));
+
+               }catch(Exception e){
+                       ExtentTestActions.log(Status.ERROR, "Tosca parser FAILED to convert service csar file to ISdcCsarHelper object...");
+                       ExtentTestActions.log(Status.FAIL, e);
+
+               }
+
+
+
+       }
 
 }
diff --git a/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/CsarToscaTester.java b/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/CsarToscaTester.java
new file mode 100644 (file)
index 0000000..afdfa43
--- /dev/null
@@ -0,0 +1,137 @@
+package org.openecomp.sdc.ci.tests.utils;
+
+import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper;
+import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException;
+import org.openecomp.sdc.tosca.parser.impl.SdcToscaParserFactory;
+import org.openecomp.sdc.tosca.parser.impl.SdcTypes;
+import org.openecomp.sdc.toscaparser.api.Group;
+import org.openecomp.sdc.toscaparser.api.NodeTemplate;
+import org.openecomp.sdc.toscaparser.api.elements.Metadata;
+import org.openecomp.sdc.toscaparser.api.parameters.Input;
+import org.openecomp.sdc.toscaparser.api.utils.ThreadLocalsHolder;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+public class CsarToscaTester {
+       public static void main(String[] args) throws Exception {
+               System.out.println("CsarToscaParser - path to CSAR's Directory is " + Arrays.toString(args));
+               SdcToscaParserFactory factory = SdcToscaParserFactory.getInstance();
+
+               File folder = new File(args[0]);
+               File[] listOfFiles = folder.listFiles();
+               Date now = new Date();
+               SimpleDateFormat dateFormat = new SimpleDateFormat("d-MM-y-HH_mm_ss");
+               String time = dateFormat.format(now);
+               String csarsDir = args[1] + "/csar-reports-" + time;
+               File dir = new File(csarsDir);
+               dir.mkdir();
+
+
+               for (File file : listOfFiles) {
+                       if (file.isFile()) {  
+                               System.out.println("File  " + file.getAbsolutePath());
+                               String name = file.getName();
+                               String currentCsarDir = csarsDir+"/"+name+"-"+time;
+                               dir = new File(currentCsarDir);
+                               dir.mkdir();
+                               try {
+                                       processCsar(factory, file);
+                               } catch (SdcToscaParserException e){
+                                       System.out.println("SdcToscaParserException caught. Code: "+e.getCode()+", message: "+ e.getMessage());
+                               }
+                               List<String> notAnalyzedReport = ThreadLocalsHolder.getCollector().getNotAnalyzedExceptionsReport();
+                               System.out.println("NOT ANALYZED during CSAR parsing are: " + (notAnalyzedReport != null ? notAnalyzedReport.toString() : "none"));
+                               List<String> warningsReport = ThreadLocalsHolder.getCollector().getWarningsReport();
+                               //System.out.println("WARNINGS during CSAR parsing are: " + (warningsReport != null ? warningsReport.toString() : "none"));
+                               List<String> criticalsReport = ThreadLocalsHolder.getCollector().getCriticalsReport();
+                               System.out.println("CRITICALS during CSAR parsing are: " + (criticalsReport != null ? criticalsReport.toString() : "none"));
+
+                               try {
+                                       generateReport(time, name, currentCsarDir, criticalsReport, "critical");
+                                       generateReport(time, name, currentCsarDir, warningsReport, "warning");
+                                       generateReport(time, name, currentCsarDir, notAnalyzedReport, "notAnalyzed");
+
+                               } catch (IOException ex) {
+                                       ex.printStackTrace();
+                               }
+                       }
+
+               }               
+       }
+
+       public static void processCsar(SdcToscaParserFactory factory, File file) throws SdcToscaParserException {
+               ISdcCsarHelper sdcCsarHelper = factory.getSdcCsarHelper(file.getAbsolutePath());
+               processCsarImpl(sdcCsarHelper);
+               
+       }
+
+       public static void processCsar(ISdcCsarHelper sdcCsarHelper) throws SdcToscaParserException {
+               processCsarImpl(sdcCsarHelper);
+
+       }
+
+       private static void processCsarImpl(ISdcCsarHelper sdcCsarHelper) {
+
+               //Service level
+               System.out.println("Invoking sdc-tosca methods on this CSAR....");
+               String conformanceLevel = sdcCsarHelper.getConformanceLevel();
+               System.out.println("getConformanceLevel() - conformance level is "+conformanceLevel);
+               String serviceSubstitutionMappingsTypeName = sdcCsarHelper.getServiceSubstitutionMappingsTypeName();
+               System.out.println("serviceSubstitutionMappingsTypeName() - subst mappings type of service is "+serviceSubstitutionMappingsTypeName);
+               List<Input> serviceInputs = sdcCsarHelper.getServiceInputs();
+               System.out.println("getServiceInputs() - service inputs are "+serviceInputs);
+               Metadata serviceMetadata = sdcCsarHelper.getServiceMetadata();
+               System.out.println("getServiceMetadata() - service metadata is "+serviceMetadata);
+               Map<String, Object> serviceMetadataProperties = sdcCsarHelper.getServiceMetadataProperties();
+               System.out.println("getServiceMetadataProperties() - service metadata properties is "+serviceMetadataProperties);
+               List<NodeTemplate> allottedResources = sdcCsarHelper.getAllottedResources();
+               System.out.println("getAllottedResources() - service allotted resources are "+allottedResources);
+               List<NodeTemplate> serviceVfList = sdcCsarHelper.getServiceVfList();
+               System.out.println("getServiceVfList() - VF list is "+serviceVfList);
+               List<NodeTemplate> serviceNodeTemplateBySdcType = sdcCsarHelper.getServiceNodeTemplateBySdcType(SdcTypes.VF);
+               System.out.println("getServiceNodeTemplateBySdcType() - VF list is "+serviceNodeTemplateBySdcType);
+               List<NodeTemplate> serviceNodeTemplates = sdcCsarHelper.getServiceNodeTemplates();
+               System.out.println("getServiceNodeTemplates() - all node templates list of service is "+serviceNodeTemplates);
+
+               serviceVfList.forEach(x -> {
+                       String nodeTemplateCustomizationUuid = sdcCsarHelper.getNodeTemplateCustomizationUuid(x);
+                       System.out.println("getNodeTemplateCustomizationUuid() - VF ID is "+nodeTemplateCustomizationUuid);
+                       String typeOfNodeTemplate = sdcCsarHelper.getTypeOfNodeTemplate(x);
+                       System.out.println("getTypeOfNodeTemplate() - VF tosca type is "+typeOfNodeTemplate);
+                       List<Group> vfModulesByVf = sdcCsarHelper.getVfModulesByVf(nodeTemplateCustomizationUuid);
+                       System.out.println("getVfModulesByVf() - VF modules list is "+vfModulesByVf);
+                       vfModulesByVf.forEach(y -> {
+                               List<NodeTemplate> membersOfVfModule = sdcCsarHelper.getMembersOfVfModule(x, y);
+                               System.out.println("getMembersOfVfModule() - members of VfModule are "+membersOfVfModule);
+                       });
+                       List<NodeTemplate> vfcListByVf = sdcCsarHelper.getVfcListByVf(nodeTemplateCustomizationUuid);
+                       System.out.println("getVfcListByVf() - VFC list is "+vfcListByVf);
+                       vfcListByVf.forEach(z -> {
+                               List<NodeTemplate> nodeTemplateBySdcType = sdcCsarHelper.getNodeTemplateBySdcType(z, SdcTypes.CP);
+                               System.out.println("getNodeTemplateBySdcType() - CP children node templates of this VFC are "+nodeTemplateBySdcType);
+                               Map<String, Map<String, Object>> cpPropertiesFromVfcAsObject = sdcCsarHelper.getCpPropertiesFromVfcAsObject(z);
+                               System.out.println("getCpPropertiesFromVfcAsObject() - consolidated CP properties for this VFC are "+cpPropertiesFromVfcAsObject);
+                               boolean hasTopology = sdcCsarHelper.hasTopology(z);
+                               System.out.println("hasTopology() - this VFC is "+(hasTopology ? "nested" : "not nested"));
+                       });
+               });
+       }
+
+       private static void generateReport(String time, String name, String currentCsarDir, List<String> criticalsReport, String type)
+                       throws IOException {
+               FileWriter fw;
+               fw = new FileWriter(new File(currentCsarDir + "/" + criticalsReport.size() + "-"+type+"-" + name +"-"+time + ".txt"));
+               for (String exception : criticalsReport) {
+                       fw.write(exception);
+                       fw.write("\r\n");
+               }
+               fw.close();
+       }
+}
index c8f9ee4..2c5d985 100644 (file)
@@ -390,6 +390,15 @@ public class FileHandling {
 //
 //             }
 //     }
+
+       public static String getCreateDirByName(String dirName) {
+               File dir = new File(dirName);
+               dir.mkdir();
+               if(!dir.exists()) {
+               }
+
+               return dir.getPath();
+       }
        
        public static boolean isFileDownloaded(String downloadPath, String fileName) {
                boolean flag = false;
index 13a5641..7bcf338 100644 (file)
@@ -26,10 +26,7 @@ import static org.testng.AssertJUnit.assertTrue;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.Map.Entry;
 
 import org.apache.http.HttpEntity;
@@ -62,6 +59,7 @@ import org.openecomp.sdc.ci.tests.datatypes.http.HttpRequest;
 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
 import org.openecomp.sdc.ci.tests.utils.Utils;
 import org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils;
+import org.openecomp.sdc.ci.tests.utils.general.FileHandling;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -105,7 +103,9 @@ public class AssetRestUtils extends BaseRestUtils {
                String url = String.format(Urls.GET_TOSCA_MODEL, config.getCatalogBeHost(), config.getCatalogBePort(),
                                assetType.getValue(), uuid);
                HttpGet httpGet = new HttpGet(url);
-               File myFile = new File("tmpCSAR");
+
+               String csarDir = FileHandling.getCreateDirByName("outputCsar");
+               File myFile = new File(csarDir+ File.separator + "tmpCSAR" + getShortUUID()+".csar");
 
                
                httpGet.addHeader(HttpHeaderEnum.X_ECOMP_INSTANCE_ID.getValue(), "ci");
@@ -123,7 +123,9 @@ public class AssetRestUtils extends BaseRestUtils {
            }
                return myFile;
        }
-       
+
+
+
        public static RestResponse getRestResponseComponentToscaModel(AssetTypeEnum assetType, String uuid) throws IOException {
                Config config = Utils.getConfig();
                
@@ -622,5 +624,8 @@ public class AssetRestUtils extends BaseRestUtils {
                }
                return null;
        }
+       private static String getShortUUID() {
+               return UUID.randomUUID().toString().split("-")[0];
+       }
        
 }
index c075f10..1d5bc4b 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-<suite name="externalApis" configfailurepolicy="continue" verbose="2" parallel="methods" thread-count="2" data-provider-thread-count="2">
+<suite name="externalApis" configfailurepolicy="continue" verbose="2" parallel="methods" thread-count="1" data-provider-thread-count="1">
        <test name="ExternalApis"> 
                <classes>