removing servicemapping.py 09/88309/1
authorDR695H <dr695h@att.com>
Wed, 22 May 2019 21:21:38 +0000 (17:21 -0400)
committerDR695H <dr695h@att.com>
Wed, 22 May 2019 21:22:10 +0000 (17:22 -0400)
everything is in demo folder now

Change-Id: Ib2fc57c7a3912526b51c8bd8e3a99451281c72a6
Issue-ID: TEST-157
Signed-off-by: DR695H <dr695h@att.com>
red.xml
robot/assets/service_mappings.py [deleted file]
robot/resources/asdc_interface.robot
robot/resources/heatbridge.robot
robot/resources/sdngc_interface.robot
robot/resources/stack_validation/policy_check_vfw.robot
robot/resources/test_templates/model_test_template.robot
robot/resources/test_templates/model_test_template_vcperescust.robot
robot/resources/test_templates/vnf_orchestration_test_template.robot

diff --git a/red.xml b/red.xml
index dd83144..9c10abd 100644 (file)
--- a/red.xml
+++ b/red.xml
@@ -10,8 +10,6 @@
     <referencedLibrary type="PYTHON" name="SSHLibrary" path="testsuite/robot/library"/>
     <referencedLibrary type="PYTHON" name="HTTPUtils" path="testsuite/robot/library/eteutils"/>
     <referencedLibrary type="PYTHON" name="JSONUtils" path="testsuite/robot/library/eteutils"/>
-    <referencedLibrary type="PYTHON" name="HttpLibrary" path="testsuite/robot/library"/>
-    <referencedLibrary type="PYTHON" name="HttpLibrary.HTTP" path="testsuite/robot/library"/>
     <referencedLibrary type="PYTHON" name="StringTemplater" path="testsuite/robot/library/eteutils"/>
     <referencedLibrary type="PYTHON" name="OpenstackLibrary" path="testsuite/robot/library/eteutils"/>
     <referencedLibrary type="PYTHON" name="TemplatingEngine" path="testsuite/robot/library/eteutils"/>
@@ -24,6 +22,7 @@
     <referencedLibrary type="PYTHON" name="KafkaLibrary" path="testsuite/robot/library"/>
     <referencedLibrary type="PYTHON" name="DateTime" path="testsuite/robot/library"/>
     <referencedLibrary type="PYTHON" name="SocketUtils" path="testsuite/robot/library/eteutils"/>
+    <referencedLibrary type="PYTHON" name="ONAPLibrary.ServiceMapping" path="testsuite/robot/library"/>
     <pythonpath>
         <path location="robot/library"/>
     </pythonpath>
@@ -31,7 +30,6 @@
     <variableFiles path="../oom/kubernetes/robot/resources/config/eteshare/config/integration_preload_parameters.py"/>
     <variableFiles path="../oom/kubernetes/robot/resources/config/eteshare/config/integration_robot_properties.py"/>
     <variableFiles path="../oom/kubernetes/robot/resources/config/eteshare/config/vm_properties.py"/>
-    <variableFiles path="testsuite/robot/assets/service_mappings.py"/>
     <excludedForValidation/>
     <isValidatedFileSizeCheckingEnabled>true</isValidatedFileSizeCheckingEnabled>
     <validatedFileMaxSize>1024</validatedFileMaxSize>
diff --git a/robot/assets/service_mappings.py b/robot/assets/service_mappings.py
deleted file mode 100644 (file)
index 908c540..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-import json
-import os.path
-
-
-'''
-This metadata identifies the folders to be zipped and uploaded to SDC for model distribution for a given VNF
-'''
-GLOBAL_SERVICE_FOLDER_MAPPING = {}
-
-'''
-Map the service to the list of VNFs to be orchestrated
-'''
-GLOBAL_SERVICE_VNF_MAPPING = {}
-
-'''
-Map the service to the list of Generic Neutron Networks to be orchestrated
-'''
-GLOBAL_SERVICE_GEN_NEUTRON_NETWORK_MAPPING = {}
-
-'''
-Map the service to the list of Deployment Artifacts for Closed Loop Control
-'''
-GLOBAL_SERVICE_DEPLOYMENT_ARTIFACT_MAPPING = {}
-
-'''
-This metadata identifes the preloads that need to be done for a VNF as there may be more than one (vLB)
-"template" maps to the parameters in the preload_paramenters.py
-  - GLOBAL_PRELOAD_PARAMETERS[<testcase>][<template>] -
-    i.e. GLOBAL_PRELOAD_PARAMETERS['Demo'][dnsscaling_preload.template']
-'''
-GLOBAL_SERVICE_TEMPLATE_MAPPING = {}
-
-'''
-Used by the Heatbridge Validate Query to A&AI to locate the vserver name
-'''
-GLOBAL_VALIDATE_NAME_MAPPING = {}
-
-# Create dictionaries for new MAPPING data to join to original MAPPING data
-GLOBAL_SERVICE_FOLDER_MAPPING2 = {}
-GLOBAL_SERVICE_VNF_MAPPING2 = {}
-GLOBAL_SERVICE_GEN_NEUTRON_NETWORK_MAPPING2 = {}
-GLOBAL_SERVICE_DEPLOYMENT_ARTIFACT_MAPPING2 = {}
-GLOBAL_SERVICE_TEMPLATE_MAPPING2 = {}
-GLOBAL_VALIDATE_NAME_MAPPING2 = {} 
-
-
-folder=os.path.join('./demo/service_mapping')
-subfolders = [d for d in os.listdir(folder) if os.path.isdir(os.path.join(folder, d))]
-
-for service in subfolders:
-    filepath=os.path.join('./demo/service_mapping', service, 'service_mapping.json')
-    with open(filepath, 'r') as f:
-        service_mappings = json.load(f)
-    for mapping in service_mappings:
-        if mapping == 'GLOBAL_SERVICE_FOLDER_MAPPING':
-           GLOBAL_SERVICE_FOLDER_MAPPING2[service]=service_mappings[mapping][service]
-        if mapping == 'GLOBAL_SERVICE_VNF_MAPPING':
-           GLOBAL_SERVICE_VNF_MAPPING2[service]=service_mappings[mapping][service]
-        if mapping == 'GLOBAL_SERVICE_GEN_NEUTRON_NETWORK_MAPPING':
-           GLOBAL_SERVICE_GEN_NEUTRON_NETWORK_MAPPING2[service]=service_mappings[mapping][service]
-        if mapping == 'GLOBAL_SERVICE_DEPLOYMENT_ARTIFACT_MAPPING':
-           GLOBAL_SERVICE_DEPLOYMENT_ARTIFACT_MAPPING2[service]=service_mappings[mapping][service]
-        if mapping == 'GLOBAL_SERVICE_TEMPLATE_MAPPING':
-        #  service changes for complex vnf
-           #GLOBAL_SERVICE_TEMPLATE_MAPPING2[service]=service_mappings[mapping][service]
-           for vnftype   in service_mappings[mapping]:
-               GLOBAL_SERVICE_TEMPLATE_MAPPING2[vnftype]=service_mappings[mapping][vnftype]
-        if mapping == 'GLOBAL_VALIDATE_NAME_MAPPING':
-        #  service changes for complex vnf
-           #GLOBAL_VALIDATE_NAME_MAPPING2[service]=service_mappings[mapping][service]
-           for vnftype   in service_mappings[mapping]:
-               GLOBAL_VALIDATE_NAME_MAPPING2[vnftype]=service_mappings[mapping][vnftype]
-
-# Merge dictionaries
-GLOBAL_SERVICE_FOLDER_MAPPING =  dict(GLOBAL_SERVICE_FOLDER_MAPPING.items() + GLOBAL_SERVICE_FOLDER_MAPPING2.items())
-GLOBAL_SERVICE_VNF_MAPPING =  dict(GLOBAL_SERVICE_VNF_MAPPING.items() + GLOBAL_SERVICE_VNF_MAPPING2.items())
-GLOBAL_SERVICE_GEN_NEUTRON_NETWORK_MAPPING =  dict(GLOBAL_SERVICE_GEN_NEUTRON_NETWORK_MAPPING.items() + GLOBAL_SERVICE_GEN_NEUTRON_NETWORK_MAPPING2.items())   
-GLOBAL_SERVICE_DEPLOYMENT_ARTIFACT_MAPPING =  dict(GLOBAL_SERVICE_DEPLOYMENT_ARTIFACT_MAPPING.items() + GLOBAL_SERVICE_DEPLOYMENT_ARTIFACT_MAPPING2.items()) 
-GLOBAL_SERVICE_TEMPLATE_MAPPING =  dict(GLOBAL_SERVICE_TEMPLATE_MAPPING.items() + GLOBAL_SERVICE_TEMPLATE_MAPPING2.items()) 
-GLOBAL_VALIDATE_NAME_MAPPING =  dict(GLOBAL_VALIDATE_NAME_MAPPING.items() + GLOBAL_VALIDATE_NAME_MAPPING2.items()) 
index b790525..fc17034 100644 (file)
@@ -11,6 +11,7 @@ Library           StringTemplater
 Library           ArchiveLibrary
 Library           HEATUtils
 Library           DateTime
+Library           ONAPLibrary.ServiceMapping
 Resource          global_properties.robot
 Resource          browser_setup.robot
 Resource          json_templater.robot
@@ -78,8 +79,8 @@ Distribute Model From ASDC
     ${catalog_resources}=   Create Dictionary
     #####  TODO: Support for Multiple resources of one type in a service  ######
     #   The zip list is the resources - no mechanism to indicate more than 1 of the items in the zip list
-    #   GLOBAL_SERVICE_VNF_MAPPING  has the logical mapping but it is not the same key as model_zip_path
-    #   ${vnflist}=   Get From Dictionary    ${GLOBAL_SERVICE_VNF_MAPPING}    ${service}
+    #   Get Service Vnf Mapping  has the logical mapping but it is not the same key as model_zip_path
+    #   ${vnflist}=   Get Service Vnf Mapping    alias    ${service}
     #   Save the resource_id in a dictionary keyed by the resource name in the zipfile name (vFWDT_vFWSNK.zip or vFWDT_vPKG.zip)
     #   Create the resources but do not immediately add resource
     #   Add Resource to Service in a separate FOR loop
@@ -94,8 +95,8 @@ Distribute Model From ASDC
     \    Set To Dictionary    ${resource_types}    ${resource_type_string}    ${loop_catalog_resource_id}   
     \    Append To List    ${catalog_resource_ids}   ${loop_catalog_resource_id}
 
-
-    ${vnflist}=   Get From Dictionary    ${GLOBAL_SERVICE_VNF_MAPPING}    ${service}
+    Set Directory    default    ./demo/service_mapping
+    ${vnflist}=    Get Service Vnf Mapping    default    ${service}
 
     # Spread the icons on the pallette starting on the left
     ${xoffset}=    Set Variable    ${0}
@@ -110,7 +111,7 @@ Distribute Model From ASDC
     ${vf_module}=   Find Element In Array    ${loop_catalog_resource_resp['groups']}    type    org.openecomp.groups.VfModule
     #
     #  do network
-    ${networklist}=   Get From Dictionary    ${GLOBAL_SERVICE_GEN_NEUTRON_NETWORK_MAPPING}    ${service}
+    ${networklist}=    Get Service Neutron Mapping    default    ${service}
     ${generic_neutron_net_uuid}=   Get Generic NeutronNet UUID
     :FOR   ${network}   IN   @{networklist}
     \    ${loop_catalog_resource_id}=   Set Variable    ${generic_neutron_net_uuid}
@@ -125,7 +126,7 @@ Distribute Model From ASDC
     #
     # do deployment artifacts
     #
-    ${deploymentlist}=   Get From Dictionary    ${GLOBAL_SERVICE_DEPLOYMENT_ARTIFACT_MAPPING}    ${service}
+    ${deploymentlist}=    Get Service Deployment Artifact Mapping    default    ${service}
     :FOR  ${deployment}  IN   @{deploymentlist}
     \    ${loop_catalog_resource_resp}=    Get ASDC Catalog Resource    ${loop_catalog_resource_id}
     \    Setup SDC Catalog Resource Deployment Artifact Properties      ${catalog_service_id}   ${loop_catalog_resource_resp}  ${catalog_resource_unique_name}  ${deployment}
index f155c8f..e3202e0 100644 (file)
@@ -4,6 +4,7 @@ Library     Collections
 Library     StringTemplater
 Library     OperatingSystem
 Library     UUID
+Library         ONAPLibrary.ServiceMapping
 
 Resource    openstack/keystone_interface.robot
 Resource    openstack/heat_interface.robot
@@ -63,7 +64,7 @@ Execute Heatbridge
     Should Match Regexp    ${status_string}    ^(201|200)$
     ${reverse_heatbridge}=   Generate Reverse Heatbridge From Stack Info   ${stack_info}
     Set Test Variable   ${REVERSE_HEATBRIDGE}   ${reverse_heatbridge}
-    Run Validation Query    ${stack_info}    ${service}
+    Run Validation Query    ${stack_info}    ${service}    ${vnf_id}
 
 Run Create VNFC
     [Documentation]    Create a VNFC for a vServer
@@ -80,9 +81,12 @@ Run Create VNFC
 
 Run Validation Query
     [Documentation]    Run A&AI query to validate the bulk add
-    [Arguments]    ${stack_info}    ${service}
+    [Arguments]    ${stack_info}    ${service}    ${vnf_id}
     Return from Keyword If    '${service}' == ''
-    ${server_name_parameter}=    Get From Dictionary    ${GLOBAL_VALIDATE_NAME_MAPPING}    ${service}
+    Set Directory    default    ./demo/service_mapping
+    ${payload}=  Run Get Generic VNF by VnfId       ${vnf_id}
+    ${vnf_type}=    Catenate    ${payload.json()[vnf-type]}
+    ${server_name_parameter}=    Get Validate Name Mapping    default    ${service}    ${vnf_type}
     ${vserver_name}=    Get From Dictionary    ${stack_info}   ${server_name_parameter}
     Run Vserver Query   ${vserver_name}
 
@@ -100,9 +104,9 @@ Run Set VNF Params
     [Documentation]  Run A&A GET and PUT to set prov-status, orchestration status, and ipv4-oam-address
     [Arguments]   ${vnf_id}  ${ipv4_vnf_address}  ${prov_status}=ACTIVE  ${orch_status}=Active
     ${payload}=  Run Get Generic VNF by VnfId   ${vnf_id}
-
+    ${vnf_type}=    Catenate    ${payload.json()[vnf-type]}
     #${payload_json}=    evaluate    json.loads('''${payload}''')    json
-    set to dictionary    ${payload}    prov-status    ${prov_status}
+    set to dictionary    ${payload}    vnf-type    ${prov_status}
     set to dictionary    ${payload}    orchestration-status   ${orch_status}
     set to dictionary    ${payload}    ipv4-oam-address  ${ipv4_vnf_address}
     ${payload_string}=    evaluate    json.dumps(${payload})    json
index 0570be8..d4a16ac 100644 (file)
@@ -7,11 +7,12 @@ Library           SeleniumLibrary
 Library         Collections
 Library      String
 Library      StringTemplater
+Library           ONAPLibrary.ServiceMapping
+
 Resource          global_properties.robot
 Resource          ../resources/json_templater.robot
 Resource        browser_setup.robot
 
-Variables    ../assets/service_mappings.py
 
 *** Variables ***
 ${PRELOAD_VNF_TOPOLOGY_OPERATION_PATH}  /operations/VNF-API:preload-vnf-topology-operation
@@ -85,7 +86,8 @@ Preload Vnf
     [Arguments]    ${service_type_uuid}    ${generic_vnf_name}    ${generic_vnf_type}     ${vf_module_name}    ${vf_modules}    ${service}   ${uuid}
     ${base_vf_module_type}=    Catenate
     ${closedloop_vf_module}=    Create Dictionary
-    ${templates}=    Get From Dictionary    ${GLOBAL_SERVICE_TEMPLATE_MAPPING}    ${service}
+    Set Directory    default    ./demo/service_mapping
+    ${templates}=    Get Service Template Mapping    default    ${service}    ${generic_vnf_type}
     :FOR    ${vf_module}    IN      @{vf_modules}
     \       ${vf_module_type}=    Get From Dictionary    ${vf_module}    name
     #     need to pass in vnf_index if non-zero
index 35f7dea..b3c225a 100644 (file)
@@ -9,6 +9,8 @@ Library    OpenstackLibrary
 Library    HEATUtils
 Library    Collections
 Library    String
+Library           ONAPLibrary.ServiceMapping
+
 Resource          ../openstack/keystone_interface.robot
 Resource          ../openstack/nova_interface.robot
 Resource          ../openstack/heat_interface.robot
@@ -91,7 +93,8 @@ Policy Check vLB Stack
     [Return]    ${dnsscaling}
 
 Get DNSScaling Prefix
-    ${mapping}=    Get From Dictionary   ${GLOBAL_SERVICE_TEMPLATE_MAPPING}   vLB
+    Set Directory    default    ./demo/service_mapping
+    ${mapping}=    Get Service Template Mapping    default    vLB    vLB
     :FOR   ${dict}    IN   @{mapping}
     \    Return From Keyword If    '${dict['isBase']}' == 'false'    ${dict['prefix']}
     [Return]   None
index 47083c3..67c95e9 100644 (file)
@@ -5,10 +5,9 @@ Library            ArchiveLibrary
 Library           Collections
 Library           String
 Library           DateTime
+Library           ONAPLibrary.ServiceMapping
 Resource          ../asdc_interface.robot
 
-Variables       ../../assets/service_mappings.py
-
 *** Variables ***
 ${ASDC_BASE_PATH}    /sdc1
 ${ASDC_DESIGNER_PATH}    /proxy-designer1#/dashboard
@@ -23,7 +22,8 @@ ${CATALOG_SERVICE_ID}
 
 Model Distribution For Directory
     [Arguments]    ${service}   ${catalog_service_name}=    ${cds}=
-    ${directory_list}=    Get From Dictionary    ${GLOBAL_SERVICE_FOLDER_MAPPING}    ${service}
+    Set Directory    default    ./demo/service_mapping
+    ${directory_list}=    Get Service Folder Mapping    default    ${service}
     ${ziplist}=    Create List
     ${uuid}=    Get Current Date
     ${service_name}=    Catenate    ${service}    ${uuid}
index 17e3965..b096a30 100644 (file)
@@ -5,10 +5,9 @@ Library            ArchiveLibrary
 Library           Collections
 Library           String
 Library           DateTime
+Library           ONAPLibrary.ServiceMapping
 Resource          ../asdc_interface.robot
 
-Variables       ../../assets/service_mappings.py
-
 *** Variables ***
 ${ASDC_BASE_PATH}    /sdc1
 ${ASDC_DESIGNER_PATH}    /proxy-designer1#/dashboard
@@ -23,7 +22,8 @@ ${CATALOG_SERVICE_ID}
 
 Model Distribution For vCPEResCust Directory
     [Arguments]    ${service}   ${catalog_service_name}=    ${cds}=
-    ${directory_list}=    Get From Dictionary    ${GLOBAL_SERVICE_FOLDER_MAPPING}    ${service}
+    Set Directory    default    ./demo/service_mapping
+    ${directory_list}=    Get Service Folder Mapping    default    ${service}
     ${ziplist}=    Create List
     ${uuid}=    Get Current Date
     ${service_name}=    Catenate    ${service}    ${uuid}
index ec22265..49201b5 100644 (file)
@@ -23,6 +23,7 @@ Library           SeleniumLibrary
 Library                UUID
 Library                Collections
 Library         JSONUtils
+Library         ONAPLibrary.ServiceMapping
 
 
 
@@ -66,7 +67,8 @@ Orchestrate VNF
     ${service_instance_id}=   Wait Until Keyword Succeeds    300s   5s    Create VID Service Instance    ${customer_name}    ${service_model_type}    ${service}     ${service_name}   ${project_name}   ${owning_entity}
     Set Test Variable   ${SERVICE_INSTANCE_ID}   ${service_instance_id}
     Validate Service Instance    ${service_instance_id}    ${service}      ${customer_name}
-    ${vnflist}=   Get From Dictionary    ${GLOBAL_SERVICE_VNF_MAPPING}    ${service}
+    Set Directory    default    ./demo/service_mapping
+    ${vnflist}=    Get Service Vnf Mapping    default    ${service}
     ${generic_vnfs}=    Create Dictionary
     ${vnf_name_index}=   Set Variable  0
     ${vf_module_name_list}=    Create List
@@ -76,8 +78,8 @@ Orchestrate VNF
     \   ${vnf_name}=    Catenate    Ete_${vnf}_${uuid}_${vnf_name_index}
     \   ${vf_module_name}=    Catenate    Vfmodule_Ete_${vnf}_${uuid}_${vnf_name_index}
     \   ${vnf_name_index}=   Evaluate   ${vnf_name_index} + 1
-    \   ${vnf_type}=   Get VNF Type   ${catalog_resources}   ${vnf}
-    \   ${vf_module}=    Get VF Module    ${catalog_resources}   ${vnf}
+    \   ${vnf_type}=   Get VNF Type   ${catalog_resources}   ${vnf}    ${service}
+    \   ${vf_module}=    Get VF Module    ${catalog_resources}   ${vnf}    ${service}
     \   Append To List   ${STACK_NAMES}   ${vf_module_name}
     \   Wait Until Keyword Succeeds    300s   5s    Create VID VNF    ${service_instance_id}    ${vnf_name}    ${product_family}    ${lcp_region}    ${tenant}    ${vnf_type}   ${CUSTOMER_NAME}
     \   ${vf_module_type}   ${closedloop_vf_module}=   Preload Vnf    ${service_instance_id}   ${vnf_name}   ${vnf_type}   ${vf_module_name}    ${vf_module}    ${vnf}    ${uuid}
@@ -116,7 +118,8 @@ Orchestrate Demo VNF
     ${service_instance_id}=   Wait Until Keyword Succeeds    300s   5s    Create VID Service Instance    ${customer_name}    ${service_model_type}    ${service}     ${service_name}   ${project_name}   ${owning_entity}
     Set Test Variable   ${SERVICE_INSTANCE_ID}   ${service_instance_id}
     Validate Service Instance    ${service_instance_id}    ${service}      ${customer_name}
-    ${vnflist}=   Get From Dictionary    ${GLOBAL_SERVICE_VNF_MAPPING}    ${service}
+    Set Directory    default    ./demo/service_mapping
+    ${vnflist}=    Get Service Vnf Mapping    default    ${service}
     ${generic_vnfs}=    Create Dictionary
     :FOR   ${vnf}   IN   @{vnflist}
     \   ${vnf_name}=    Catenate    Ete_${vnf}_${uuid}
@@ -141,23 +144,23 @@ Orchestrate Demo VNF
 
 Get VNF Type
     [Documentation]    To support services with multiple VNFs, we need to dig the vnf type out of the SDC catalog resources to select in the VID UI
-    [Arguments]   ${resources}   ${vnf}
-    ${cr}=   Get Catalog Resource    ${resources}    ${vnf}
+    [Arguments]   ${resources}   ${vnf}    ${service}
+    ${cr}=   Get Catalog Resource    ${resources}    ${vnf}    ${service}
     ${vnf_type}=   Get From Dictionary   ${cr}   name
     [Return]   ${vnf_type}
 
 Get VF Module
     [Documentation]    To support services with multiple VNFs, we need to dig the vnf type out of the SDC catalog resources to select in the VID UI
-    [Arguments]   ${resources}   ${vnf}
-    ${cr}=   Get Catalog Resource    ${resources}    ${vnf}
+    [Arguments]   ${resources}   ${vnf}    ${service}
+    ${cr}=   Get Catalog Resource    ${resources}    ${vnf}    ${service}
     ${vf_module}=    Find Element In Array    ${cr['groups']}    type    org.openecomp.groups.VfModule
     [Return]  ${vf_module}
 
 Get Catalog Resource
     [Documentation]    To support services with multiple VNFs, we need to dig the vnf type out of the SDC catalog resources to select in the VID UI
-    [Arguments]   ${resources}   ${vnf}
+    [Arguments]   ${resources}   ${vnf}    ${service}
 
-    ${base_name}=  Get Name Pattern   ${vnf}
+    ${base_name}=  Get Name Pattern   ${vnf}    ${service}
     ${keys}=    Get Dictionary Keys    ${resources}
 
     :FOR   ${key}   IN    @{keys}
@@ -168,8 +171,9 @@ Get Catalog Resource
 
 Get Name Pattern
     [Documentation]    To support services with multiple VNFs, we need to dig the vnf type out of the SDC catalog resources to select in the VID UI
-    [Arguments]   ${vnf}
-    ${list}=   Get From Dictionary    ${GLOBAL_SERVICE_TEMPLATE_MAPPING}   ${vnf}
+    [Arguments]   ${vnf}    ${service}
+    Set Directory    default    ./demo/service_mapping
+    ${list}=    Get Service Template Mapping    default    ${service}    ${vnf}
     :FOR    ${dict}   IN   @{list}
     \   ${base_name}=   Get From Dictionary    ${dict}    name_pattern
     \   Return From Keyword If   '${dict['isBase']}' == 'true'   ${base_name}