Merge "Add mime type for png screen shots"
diff --git a/robot/assets/service_mappings.py b/robot/assets/service_mappings.py
index ff41fad..b1ed2d8 100644
--- a/robot/assets/service_mappings.py
+++ b/robot/assets/service_mappings.py
@@ -6,6 +6,7 @@
                                  "vVG" : ['vVG'], \
                                  "vCPE" : ['vCPE/infra', 'vCPE/vbng', 'vCPE/vbrgemu', 'vCPE/vgmux', 'vCPE/vgw'],
                                  "vFWCL" : ['vFWCL/vFWSNK', 'vFWCL/vPKG'],
+                                 "vFWNG" : ['vFW_NextGen/templates'],
                                  }
 
 '''
@@ -17,6 +18,7 @@
     "vVG"  : ['vVG'],
     "vCPE" : ['vCPE'],
     "vFWCL"  : ['vFWSNK', 'vPKG'],
+    "vFWNG"  : ['vFWNG'],
                                  }
 
 '''
diff --git a/robot/assets/templates/asdc/catalog_vnf_inputs.template b/robot/assets/templates/asdc/catalog_vnf_inputs.template
new file mode 100644
index 0000000..fb5d494
--- /dev/null
+++ b/robot/assets/templates/asdc/catalog_vnf_inputs.template
@@ -0,0 +1,112 @@
+[
+  {
+    "defaultValue": "${nf_function}",
+    "description": null,
+    "name": "nf_function",
+    "parentUniqueId": "cs0008",
+    "password": false,
+    "required": false,
+    "schema": {
+      "property": {}
+    },
+    "type": "string",
+    "uniqueId": "${nf_function_uid}",
+    "value": null,
+    "definition": false,
+    "getInputValues": null,
+    "instanceUniqueId": null,
+    "propertyId": null,
+    "properties": null,
+    "inputs": null,
+    "ownerId": "cs0008",
+    "inputPath": null
+  },
+  {
+    "defaultValue": "${nf_type}",
+    "description": null,
+    "name": "nf_type",
+    "parentUniqueId": null,
+    "password": false,
+    "required": false,
+    "schema": {
+      "property": {}
+    },
+    "type": "string",
+    "uniqueId": "${nf_type_uid}",
+    "value": null,
+    "definition": false,
+    "getInputValues": null,
+    "instanceUniqueId": null,
+    "propertyId": null,
+    "properties": null,
+    "inputs": null,
+    "ownerId": null,
+    "inputPath": null
+  },
+  {
+    "defaultValue": "${nf_naming_code}",
+    "description": null,
+    "name": "nf_naming_code",
+    "parentUniqueId": null,
+    "password": false,
+    "required": false,
+    "schema": {
+      "property": {}
+    },
+    "type": "string",
+    "uniqueId": "${nf_naming_code_uid}",
+    "value": null,
+    "definition": false,
+    "getInputValues": null,
+    "instanceUniqueId": null,
+    "propertyId": null,
+    "properties": null,
+    "inputs": null,
+    "ownerId": null,
+    "inputPath": null
+  },
+  {
+    "defaultValue": "${nf_role}",
+    "description": null,
+    "name": "nf_role",
+    "parentUniqueId": null,
+    "password": false,
+    "required": false,
+    "schema": {
+      "property": {}
+    },
+    "type": "string",
+    "uniqueId": "${nf_role_uid}",
+    "value": null,
+    "definition": false,
+    "getInputValues": null,
+    "instanceUniqueId": null,
+    "propertyId": null,
+    "properties": null,
+    "inputs": null,
+    "ownerId": null,
+    "inputPath": null
+  },
+  {
+    "defaultValue": "${cloud_env}",
+    "description": "Cloud environment (e.g., openstack, rackspace)",
+    "name": "cloud_env",
+    "parentUniqueId": null,
+    "password": false,
+    "required": false,
+    "schema": {
+      "property": {}
+    },
+    "type": "string",
+    "uniqueId": "${cloud_env_uid}",
+    "value": null,
+    "definition": false,
+    "getInputValues": null,
+    "instanceUniqueId": null,
+    "propertyId": null,
+    "properties": null,
+    "inputs": null,
+    "ownerId": null,
+    "inputPath": null
+  }
+]
diff --git a/robot/assets/templates/asdc/catalog_vnf_properties.template b/robot/assets/templates/asdc/catalog_vnf_properties.template
new file mode 100644
index 0000000..63e8552
--- /dev/null
+++ b/robot/assets/templates/asdc/catalog_vnf_properties.template
@@ -0,0 +1,29 @@
+[
+  {
+    "name": "nfc_function",
+    "parentUniqueId": "${parent_id}",
+    "password": false,
+    "required": false,
+    "schema": {
+      "property": {}
+    },
+    "type": "string",
+    "uniqueId": "${parent_id}.nfc_function",
+    "value": "${nfc_function}",
+    "definition": false
+  },
+  {
+    "description": "vfc naming",
+    "name": "nfc_naming",
+    "parentUniqueId": "${parent_id}",
+    "password": false,
+    "required": false,
+    "schema": {
+      "property": {}
+    },
+    "type": "org.openecomp.datatypes.Naming",
+    "uniqueId": "${parent_id}.nfc_naming",
+    "value": "{\"ecomp_generated_naming\":true,\"naming_policy\":\"${nfc_naming_policy}\"}",
+    "definition": false
+  }
+]
diff --git a/robot/resources/asdc_interface.robot b/robot/resources/asdc_interface.robot
index 38d7c27..8d61c84 100644
--- a/robot/resources/asdc_interface.robot
+++ b/robot/resources/asdc_interface.robot
@@ -23,6 +23,7 @@
 ${ASDC_VENDOR_LICENSE_AGREEMENT_PATH}    /license-agreements
 ${ASDC_VENDOR_ACTIONS_PATH}    /actions
 ${ASDC_VENDOR_SOFTWARE_UPLOAD_PATH}    /orchestration-template-candidate
+${ASDC_FE_CATALOG_RESOURCES_PATH}    /sdc1/feProxy/rest/v1/catalog/resources
 ${ASDC_CATALOG_RESOURCES_PATH}    /sdc2/rest/v1/catalog/resources
 ${ASDC_CATALOG_SERVICES_PATH}    /sdc2/rest/v1/catalog/services
 ${ASDC_CATALOG_INACTIVE_RESOURCES_PATH}    /sdc2/rest/v1/inactiveComponents/resource
@@ -44,6 +45,8 @@
 ${ASDC_USER_REMARKS_TEMPLATE}    robot/assets/templates/asdc/user_remarks.template
 ${ASDC_CATALOG_SERVICE_TEMPLATE}    robot/assets/templates/asdc/catalog_service.template
 ${ASDC_RESOURCE_INSTANCE_TEMPLATE}    robot/assets/templates/asdc/resource_instance.template
+${ASDC_RESOURCE_INSTANCE_VNF_PROPERTIES_TEMPLATE}    robot/assets/templates/asdc/catalog_vnf_properties.template
+${ASDC_RESOURCE_INSTANCE_VNF_INPUTS_TEMPLATE}    robot/assets/templates/asdc/catalog_vnf_inputs.template
 ${ASDC_FE_ENDPOINT}     ${GLOBAL_ASDC_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SDC_FE_IP_ADDR}:${GLOBAL_ASDC_FE_PORT}
 ${ASDC_BE_ENDPOINT}     ${GLOBAL_ASDC_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SDC_BE_IP_ADDR}:${GLOBAL_ASDC_BE_PORT}
 ${ASDC_BE_ONBOARD_ENDPOINT}     ${GLOBAL_ASDC_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SDC_BE_ONBOARD_IP_ADDR}:${GLOBAL_ASDC_BE_ONBOARD_PORT}
@@ -51,12 +54,12 @@
 *** Keywords ***
 Distribute Model From ASDC
     [Documentation]    goes end to end creating all the asdc objects based ona  model and distributing it to the systems. it then returns the service name, vf name and vf module name
-    [Arguments]    ${model_zip_path}   ${catalog_service_name}=
+    [Arguments]    ${model_zip_path}   ${catalog_service_name}=    ${cds}=
     ${catalog_service_id}=    Add ASDC Catalog Service    ${catalog_service_name}
     ${catalog_resource_ids}=    Create List
     ${catalog_resources}=   Create Dictionary
     : FOR    ${zip}     IN     @{model_zip_path}
-    \    ${loop_catalog_resource_id}=    Setup ASDC Catalog Resource    ${zip}
+    \    ${loop_catalog_resource_id}=    Setup ASDC Catalog Resource    ${zip}    ${cds}
     \    Append To List    ${catalog_resource_ids}   ${loop_catalog_resource_id}
     \    ${loop_catalog_resource_resp}=    Get ASDC Catalog Resource    ${loop_catalog_resource_id}
     \    Add ASDC Resource Instance    ${catalog_service_id}    ${loop_catalog_resource_id}    ${loop_catalog_resource_resp['name']}
@@ -91,7 +94,7 @@
 
 Setup ASDC Catalog Resource
     [Documentation]    Creates all the steps a vf needs for an asdc catalog resource and returns the id
-    [Arguments]    ${model_zip_path}
+    [Arguments]    ${model_zip_path}    ${cds}=
     ${license_model_id}   ${license_model_version_id}=    Add ASDC License Model
     ${key_group_id}=    Add ASDC License Group    ${license_model_id}   ${license_model_version_id}
     ${pool_id}=    Add ASDC Entitlement Pool    ${license_model_id}   ${license_model_version_id}
@@ -106,8 +109,45 @@
     Package ASDC Software Product    ${software_product_id}   ${software_product_version_id}
     ${software_product_resp}=    Get ASDC Software Product    ${software_product_id}    ${software_product_version_id}
     ${catalog_resource_id}=    Add ASDC Catalog Resource     ${license_agreement_id}    ${software_product_resp['name']}    ${license_model_resp['vendorName']}    ${software_product_id}  
+    # Check if need to set up CDS properties
+    Run Keyword If    '${cds}' == 'vfwng'    Setup ASDC Catalog Resource CDS Properties    ${catalog_resource_id}
+    
     ${catalog_resource_id}=   Certify ASDC Catalog Resource    ${catalog_resource_id}  ${ASDC_DESIGNER_USER_ID}
     [Return]    ${catalog_resource_id}
+Setup ASDC Catalog Resource CDS Properties
+    [Documentation]    Set up vfwng VNF properties and inputs for CDS
+    [Arguments]    ${catalog_resource_id} 
+    # Set vnf module properties
+    ${resp}=    Get ASDC Catalog Resource Component Instances   ${catalog_resource_id}
+    :FOR    ${comp}    in    @{resp['componentInstances']}
+    \    ${name}    Set Variable   ${comp['name']}
+    \    ${uniqueId}    Set Variable    ${comp['uniqueId']}
+    \    ${actualComponentUid}    Set Variable    ${comp['actualComponentUid']}
+    \    ${test}    ${v}=    Run Keyword and Ignore Error    Should Contain    ${name}    abstract_
+    \    Run Keyword If    '${test}' == 'FAIL'    Continue For Loop
+    \    ${response}=    Get ASDC Catalog Resource Component Instance Properties    ${catalog_resource_id}    ${uniqueId}    ${actualComponentUid}
+    \    ${dict}=    Create Dictionary    parent_id=${response[6]['parentUniqueId']}
+    \    Run Keyword If   '${name}'=='abstract_vfw'   Set To Dictionary    ${dict}    nfc_function=vfw    nfc_naming_policy=SDNC_Policy.ONAP_VFW_NAMING_TIMESTAMP
+    \    Run Keyword If   '${name}'=='abstract_vpg'   Set To Dictionary    ${dict}    nfc_function=vpg    nfc_naming_policy=SDNC_Policy.ONAP_VPG_NAMING_TIMESTAMP
+    \    Run Keyword If   '${name}'=='abstract_vsn'   Set To Dictionary    ${dict}    nfc_function=vsn    nfc_naming_policy=SDNC_Policy.ONAP_VSN_NAMING_TIMESTAMP
+    \    ${data}=   Fill JSON Template File    ${ASDC_RESOURCE_INSTANCE_VNF_PROPERTIES_TEMPLATE}    ${dict} 
+    \    ${response}=    Set ASDC Catalog Resource Component Instance Properties    ${catalog_resource_id}    ${uniqueId}    ${data}
+    \    Log To Console    resp=${response}
+
+    # Set vnf inputs
+    ${resp}=    Get ASDC Catalog Resource Inputs    ${catalog_resource_id}
+    ${dict}=    Create Dictionary
+    :FOR    ${comp}    in    @{resp['inputs']} 
+    \    ${name}    Set Variable    ${comp['name']}
+    \    ${uid}    Set Variable    ${comp['uniqueId']}
+    \    Run Keyword If    '${name}'=='nf_function'    Set To Dictionary    ${dict}    nf_function=ONAP-FIREWALL    nf_function_uid=${uid}
+    \    Run Keyword If    '${name}'=='nf_type'    Set To Dictionary    ${dict}    nf_type=FIREWALL    nf_type_uid=${uid}
+    \    Run Keyword If    '${name}'=='nf_naming_code'    Set To Dictionary    ${dict}    nf_naming_code=vfw    nf_naming_code_uid=${uid}
+    \    Run Keyword If    '${name}'=='nf_role'    Set To Dictionary    ${dict}    nf_role=vFW    nf_role_uid=${uid}
+    \    Run Keyword If    '${name}'=='cloud_env'    Set To Dictionary    ${dict}    cloud_env=openstack    cloud_env_uid=${uid}
+    ${data}=   Fill JSON Template File    ${ASDC_RESOURCE_INSTANCE_VNF_INPUTS_TEMPLATE}    ${dict} 
+    ${response}=    Set ASDC Catalog Resource VNF Inputs    ${catalog_resource_id}    ${data}
+
 Add ASDC License Model
     [Documentation]    Creates an asdc license model and returns its id
     ${uuid}=    Generate UUID
@@ -273,6 +313,31 @@
     [Arguments]    ${catalog_resource_id}
     ${resp}=    Run ASDC Get Request    ${ASDC_CATALOG_RESOURCES_PATH}/${catalog_resource_id}    ${ASDC_DESIGNER_USER_ID} 
     [Return]    ${resp.json()}
+Get ASDC Catalog Resource Component Instances
+    [Documentation]    gets asdc Catalog Resource Component Instances by its id
+    [Arguments]    ${catalog_resource_id}
+    ${resp}=    Run ASDC Get Request    ${ASDC_FE_CATALOG_RESOURCES_PATH}/${catalog_resource_id}/filteredDataByParams?include=componentInstances    ${ASDC_DESIGNER_USER_ID}    ${ASDC_FE_ENDPOINT}
+    [Return]    ${resp.json()}
+Get ASDC Catalog Resource Inputs
+    [Documentation]    gets asdc Catalog Inputs by its id
+    [Arguments]    ${catalog_resource_id}
+    ${resp}=    Run ASDC Get Request    ${ASDC_FE_CATALOG_RESOURCES_PATH}/${catalog_resource_id}/filteredDataByParams?include=inputs    ${ASDC_DESIGNER_USER_ID}    ${ASDC_FE_ENDPOINT}
+    [Return]    ${resp.json()}
+Get ASDC Catalog Resource Component Instance Properties
+    [Documentation]    gets an asdc Catalog Resource properties by its id
+    [Arguments]    ${catalog_resource_id}    ${component_instance_id}    ${component_id}
+    ${resp}=    Run ASDC Get Request    ${ASDC_FE_CATALOG_RESOURCES_PATH}/${catalog_resource_id}/componentInstances/${component_instance_id}/${component_id}/inputs    ${ASDC_DESIGNER_USER_ID}    ${ASDC_FE_ENDPOINT}
+    [Return]    ${resp.json()}
+Set ASDC Catalog Resource Component Instance Properties
+    [Documentation]    sets an asdc Catalog Resource by its id
+    [Arguments]    ${catalog_resource_id}    ${component_instance_id}    ${data}
+    ${resp}=    Run ASDC Post Request    ${ASDC_FE_CATALOG_RESOURCES_PATH}/${catalog_resource_id}/resourceInstance/${component_instance_id}/inputs    ${data}    ${ASDC_DESIGNER_USER_ID}    ${ASDC_FE_ENDPOINT}
+    [Return]    ${resp.json()}
+Set ASDC Catalog Resource VNF Inputs
+    [Documentation]    sets an asdc Catalog Resource by its id
+    [Arguments]    ${catalog_resource_id}    ${data}
+    ${resp}=    Run ASDC Post Request    ${ASDC_FE_CATALOG_RESOURCES_PATH}/${catalog_resource_id}/update/inputs    ${data}    ${ASDC_DESIGNER_USER_ID}    ${ASDC_FE_ENDPOINT}
+    [Return]    ${resp.json()}
 Checkin ASDC Catalog Resource
     [Documentation]    checksin an asdc Catalog Resource by its id
     [Arguments]    ${catalog_resource_id}
diff --git a/robot/resources/oof_interface.robot b/robot/resources/oof_interface.robot
index 1c3137e..02b8177 100644
--- a/robot/resources/oof_interface.robot
+++ b/robot/resources/oof_interface.robot
@@ -7,9 +7,11 @@
 *** Variables ***
 ${OOF_HOMING_HEALTH_CHECK_PATH}       /v1/plans/healthcheck
 ${OOF_SNIRO_HEALTH_CHECK_PATH}        /api/oof/v1/healthcheck
+${OOF_CMSO_HEALTH_CHECK_PATH}        /cmso/v1/health?checkInterfaces=false
 
 ${OOF_HOMING_ENDPOINT}    ${GLOBAL_OOF_SERVER_PROTOCOL}://${GLOBAL_INJECTED_OOF_HOMING_IP_ADDR}:${GLOBAL_OOF_HOMING_SERVER_PORT}
 ${OOF_SNIRO_ENDPOINT}     ${GLOBAL_OOF_SERVER_PROTOCOL}://${GLOBAL_INJECTED_OOF_SNIRO_IP_ADDR}:${GLOBAL_OOF_SNIRO_SERVER_PORT}
+${OOF_CMSO_ENDPOINT}      ${GLOBAL_OOF_CMSO_PROTOCOL}://${GLOBAL_INJECTED_OOF_CMSO_IP_ADDR}:${GLOBAL_OOF_CMSO_SERVER_PORT}
 
 *** Keywords ***
 Run OOF-Homing Health Check
@@ -39,3 +41,19 @@
      Should Be Equal As Integers   ${resp.status_code}   200
      Log    Received response from OOF-SNIRO ${resp.text}
      [Return]    ${resp}
+
+
+Run OOF-CMSO Health Check
+     [Documentation]    Runs OOF-CMSO Health check
+     ${resp}=    Run OOF-CMSO Get Request    ${OOF_CMSO_HEALTH_CHECK_PATH}
+     Should Be Equal As Integers   ${resp.status_code}   200
+
+Run OOF-CMSO Get Request
+     [Documentation]    Runs OOF-CMSO Get request
+     [Arguments]    ${data_path}
+     ${auth}=  Create List  ${GLOBAL_OOF_CMSO_USERNAME}    ${GLOBAL_OOF_CMSO_PASSWORD}
+     ${session}=    Create Session   session   ${OOF_CMSO_ENDPOINT}   auth=${auth}
+     ${resp}=   Get Request   session   ${data_path}
+     Should Be Equal As Integers   ${resp.status_code}   200
+     Log    Received response from OOF-CMSO ${resp.text}
+     [Return]    ${resp}
diff --git a/robot/resources/test_templates/model_test_template.robot b/robot/resources/test_templates/model_test_template.robot
index bd63d2b..3fbf7d2 100644
--- a/robot/resources/test_templates/model_test_template.robot
+++ b/robot/resources/test_templates/model_test_template.robot
@@ -22,7 +22,7 @@
 *** Keywords ***
 
 Model Distribution For Directory
-    [Arguments]    ${service}   ${catalog_service_name}=
+    [Arguments]    ${service}   ${catalog_service_name}=    ${cds}=
     ${directory_list}=    Get From Dictionary    ${GLOBAL_SERVICE_FOLDER_MAPPING}    ${service}
     ${ziplist}=    Create List
     ${uuid}=    Get Current Date
@@ -36,7 +36,7 @@
     \    OperatingSystem.Create Directory    ${ASDC_ASSETS_DIRECTORY}/temp
     \    Create Zip From Files In Directory        ${folder}    ${zip}
     \    Append To List    ${ziplist}    ${zip}
-    ${catalog_service_name}    ${catalog_resource_name}    ${vf_modules}    ${catalog_resource_ids}   ${catalog_service_id}   ${catalog_resources}   Distribute Model From ASDC    ${ziplist}    ${catalog_service_name}
+    ${catalog_service_name}    ${catalog_resource_name}    ${vf_modules}    ${catalog_resource_ids}   ${catalog_service_id}   ${catalog_resources}   Distribute Model From ASDC    ${ziplist}    ${catalog_service_name}    ${cds}
     Set Test Variable   ${CATALOG_RESOURCE_IDS}   ${catalog_resource_ids}
     Set Test Variable   ${CATALOG_SERVICE_ID}   ${catalog_service_id}
     Set Test Variable   ${CATALOG_RESOURCES}   ${catalog_resources}
diff --git a/robot/testsuites/demo.robot b/robot/testsuites/demo.robot
index e329671..54129a3 100644
--- a/robot/testsuites/demo.robot
+++ b/robot/testsuites/demo.robot
@@ -4,6 +4,7 @@
 Library   Collections
 Library    HTTPUtils
 Resource         ../resources/demo_preload.robot
+Resource         ../resources/asdc_interface.robot
 *** Variables ***
 
 ${VNF_NAME}       DemoVNF
@@ -71,3 +72,9 @@
     Preload APPC CDT GUI
 #    Preload APPC CDT GUI   demo   reference_AllAction_vLoadBalancer_vLoadBalancer-test0_0.0.1V.json   ${EXECDIR}/robot/assets/templates/appc/reference_AllAction_vLoadBalancer_vLoadBalancer-test0_0.0.1V.json   ${EXECDIR}/robot/assets/templates/appc/template_ConfigScaleOut_vLoadBalancer_vLoadBalancer-test0_0.0.1V_vLB.xml   ${EXECDIR}/robot/assets/templates/appc/pd_ConfigScaleOut_vLoadBalancer_vLoadBalancer-test0_0.0.1V_vLB.yaml
 
+Distribute vFWNG CDS Model
+    [Documentation]    Distribute vFWNG for CDS
+    [Tags]    DistributeVFWNG
+    [Timeout]    600
+    Model Distribution For Directory    service=vFWNG    cds=vfwng
+
diff --git a/robot/testsuites/health-check.robot b/robot/testsuites/health-check.robot
index 3d65306..3932819 100644
--- a/robot/testsuites/health-check.robot
+++ b/robot/testsuites/health-check.robot
@@ -113,6 +113,10 @@
     [Tags]    health    medium
     Run OOF-SNIRO Health Check
 
+Basic OOF-CMSO Health Check
+    [Tags]    health    medium
+    Run OOF-CMSO Health Check
+
 Basic Policy Health Check
     [Tags]    health    medium
     Run Policy Health Check