Commit 86119965 authored by zafar's avatar zafar
Browse files

SOL001 & SOL006 Descriptor parsing and checking updated for VNFLCM-API

parent ad5297ca
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -33,6 +33,7 @@ GET information about multiple VNF instances
    GET multiple vnfInstances
    GET multiple vnfInstances
    Check HTTP Response Status Code Is    200
    Check HTTP Response Status Code Is    200
    Check HTTP Response Body Json Schema Is    vnfInstances
    Check HTTP Response Body Json Schema Is    vnfInstances
    Check HTTP Response Body vnfInstances content against VNF Descriptor    
    
    
GET information about multiple VNF instances Bad Request Invalid attribute-based filtering parameters
GET information about multiple VNF instances Bad Request Invalid attribute-based filtering parameters
    [Documentation]    Test ID: 6.3.5.1.3
    [Documentation]    Test ID: 6.3.5.1.3
+164 −91
Original line number Original line Diff line number Diff line
@@ -11,6 +11,7 @@ Library Collections
Library    JSONSchemaLibrary    schemas/
Library    JSONSchemaLibrary    schemas/
Library           String
Library           String
Variables    descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml
Variables    descriptors/SOL001/reference_tst010_vnf_b_2vdu_SOL001.yaml
Variables    descriptors/SOL006/reference_tst010_vnf_b_2vdu_SOL006.yaml


*** Keywords ***
*** Keywords ***


@@ -80,9 +81,9 @@ POST Create a new vnfInstance
    Set Headers  {"Accept":"${ACCEPT}"}  
    Set Headers  {"Accept":"${ACCEPT}"}  
    Set Headers  {"Content-Type": "${CONTENT_TYPE}"}
    Set Headers  {"Content-Type": "${CONTENT_TYPE}"}
    Set Headers    {"Authorization":"${AUTHORIZATION}"}
    Set Headers    {"Authorization":"${AUTHORIZATION}"}
    Run Keyword If    ${check_descriptors} == 1    Add VNF Descriptor Content to VNF Instance
    Run Keyword If    ${check_descriptors} == 1    PARSE the Descriptor File
    ${template} =    Get File    jsons/createVnfRequest.json
    ${template} =    Get File    jsons/createVnfRequest.json
    ${body}=        Format String   ${template}     vnfdId=${descriptor_id}
    ${body}=        Format String   ${template}     vnfdId=${Descriptor_ID}
    Post    ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances    ${body}
    Post    ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances    ${body}
    ${outputResponse}=    Output    response
    ${outputResponse}=    Output    response
	Set Global Variable    ${response}    ${outputResponse} 	
	Set Global Variable    ${response}    ${outputResponse} 	
@@ -1021,106 +1022,178 @@ Check HTTP Response Header Contain Link
    ${linkURL}=    Get Value From Json    ${response['headers']}    $..Link
    ${linkURL}=    Get Value From Json    ${response['headers']}    $..Link
    Should Not Be Empty    ${linkURL}
    Should Not Be Empty    ${linkURL}


Get key for VNF Descriptor
Check HTTP Response Body vnfInstances content against VNF Descriptor
    FOR    ${key}    IN    @{topology_template.node_templates.keys()} 
    #{check_multiple_instances} flag, set to 1 to check multiple instances against descriptors
        Log    ${key}
    Run Keyword If    ${check_multiple_instances} == 1    Check Multiple VNF Instances Content
        ${check1}=    Run Keyword And Return Status    Should End With    ${key}    VNF
    
        Run Keyword If     ${check1}     Set Global Variable    ${vnfKey}    ${key}   
Check Multiple VNF Instances Content
    END
    #${number_of_instances}=    Get Length    ${response['body']}
    #FOR    ${i}    IN RANGE    ${number_of_instances}
    ${response['body']}=    Get Variable Value    ${response['body'][0]}    #Gets the first instance at index 0
    Check Individual VNF Instance Content
    #END


Check HTTP Response Body vnfInstance content against VNF Descriptor
Check HTTP Response Body vnfInstance content against VNF Descriptor
    #${check_descriptors} flag, 1 to check descriptors
    #${check_descriptors} flag, 1 to check descriptors
    Run Keyword If    ${check_descriptors} == 1    Check Individual VNF Instance Content
    Run Keyword If    ${check_descriptors} == 1    Check Individual VNF Instance Content


Check Individual VNF Instance Content  
Check Individual VNF Instance Content  
    Run Keyword If  '${descriptorType}'=='SOL001'  Parse SOL001    ELSE    Parse SOL006
    PARSE the Descriptor File
    
    Match the VNF Instance Response Attributes with Descriptors  
Parse SOL001
  
    Get key for VNF Descriptor
PARSE the Descriptor File
    
    Run Keyword If  '${descriptorType}'=='SOL001'    Fetch Information from SOL001 descriptor file    ELSE    Fetch Information from SOL006 descriptor file
    ${descriptor_id}=    Get Variable Value    ${topology_template.node_templates.${vnfKey}.properties.descriptor_id}
    
    ${provider}=    Get Variable Value    ${topology_template.node_templates.${vnfKey}.properties.provider}
Fetch Information from SOL001 descriptor file
    ${product_name}=    Get Variable Value    ${topology_template.node_templates.${vnfKey}.properties.product_name}
    @{VDU_labels}=    Create List
    ${software_version}=    Get Variable Value    ${topology_template.node_templates.${vnfKey}.properties.software_version}
    @{VNF_labels}=    Create List
    ${descriptor_version}=    Get Variable Value    ${topology_template.node_templates.${vnfKey}.properties.descriptor_version}
    @{VirtualLink_labels}=    Create List
    ${flavour_id}=    Get Variable Value    ${topology_template.node_templates.${vnfKey}.properties.flavour_id}
    @{CP_labels}=    Create List
    
    @{Storage_labels}=    Create List
    Should Be Equal As Strings    ${response['body']['vnfdId']}    ${descriptor_id}
    FOR    ${key}    IN    @{topology_template.node_templates.keys()} 
    Should Be Equal As Strings    ${response['body']['vnfProvider']}    ${provider}
        ${key_type}=    Get Variable Value    ${topology_template.node_templates.${key}.type}
    Should Be Equal As Strings    ${response['body']['vnfProductName']}    ${product_name}
        ${VDU_check}=    Run Keyword And Return Status    Should Be Equal As Strings    ${key_type}   ${tosca_type_VDU_compute}
    Should Be Equal As Strings    ${response['body']['vnfSoftwareVesion']}    ${software_version}
        ${VNF_check}=    Run Keyword And Return Status    Should Be Equal As Strings    ${key_type}    ${tosca_type_VNF}
    Should Be Equal As Strings    ${response['body']['vnfdVersion']}    ${descriptor_version}
        ${Link_check}=    Run Keyword And Return Status    Should Be Equal As Strings    ${key_type}    ${tosca_type_virtual_link}
    Should Be Equal As Strings    ${response['body']['instantiatedVnfInfo']['flavourId']}    ${flavour_id}
        ${VDUcp_check}=    Run Keyword And Return Status    Should Be Equal As Strings    ${key_type}    ${tosca_type_VDU_cp}
    
        ${Storage_check}=    Run Keyword And Return Status    Should Be Equal As Strings    ${key_type}    ${tosca_type_storage}
Parse SOL006
        Run Keyword If    ${VDU_check}    Append To List    ${VDU_labels}    ${key}
     ${descriptor_id}=    Get Variable Value    ${nfv.vnfd[0].id}
        Run Keyword If    ${VNF_check}    Append To List    ${VNF_labels}    ${key}
     ${provider}=    Get Variable Value    ${nfv.vnfd[0].provider}
        Run Keyword If    ${VNF_check}    Get VNF Attributes from SOL001    ${key}            
     ${product_name}=    Get Variable Value    ${nfv.vnfd[0].product-name}
        Run Keyword If    ${Link_check}    Append To List    ${VirtualLink_labels}    ${key}
     ${software_version}=    Get Variable Value    ${nfv.vnfd[0].software-version}
        Run Keyword If    ${VDUcp_check}    Append To List    ${CP_labels}    ${key}
     ${descriptor_version}=    Get Variable Value    ${nfv.vnfd[0].version}
        Run Keyword If    ${Storage_check}    Append To List    ${Storage_labels}    ${key}
     ${external_cp}=    Get Variable Value    ${nfv.vnfd[0].ext-cpd[0].id}
    END
     ${vdu_id}=    Get Variable Value    ${nfv.vnfd[0].vdu[0].id}
    Set Global Variable    @{VDU_IDs}    @{VDU_labels}
     ${vdu_cpid}=    Get Variable Value    ${nfv.vnfd[0].vdu[0].int-cpd[2].id} 
    Set Global Variable    @{VNF_IDs}    @{VNF_labels}
     ${virtual_storage}=    Get Variable Value    ${nfv.vnfd[0].virtual-storage-desc.id}
    Set Global Variable    @{VirtualLink_IDs}    @{VirtualLink_labels}
     ${virtual_link}=    Get Variable Value    ${nfv.vnfd[0].int-virtual-link-desc.id}
    Set Global Variable    @{CP_IDs}    @{CP_labels}

    Set Global Variable    @{Storage_IDs}    @{Storage_labels}
     

    Should Be Equal As Strings    ${response['body']['vnfdId']}    ${descriptor_id}
Get VNF Attributes from SOL001
    Should Be Equal As Strings    ${response['body']['vnfProvider']}    ${provider}
    [Arguments]    ${VNF_label}
    Should Be Equal As Strings    ${response['body']['vnfProductName']}    ${product_name}
    ${descriptor_id}=    Get Variable Value    ${topology_template.node_templates.${VNF_label}.properties.descriptor_id}
    Should Be Equal As Strings    ${response['body']['vnfSoftwareVesion']}    ${software_version}
    ${provider}=    Get Variable Value    ${topology_template.node_templates.${VNF_label}.properties.provider}
    Should Be Equal As Strings    ${response['body']['vnfdVersion']}    ${descriptor_version}
    ${product_name}=    Get Variable Value    ${topology_template.node_templates.${VNF_label}.properties.product_name}
    Should Be Equal As Strings    ${response['body']['instantiatedVnfInfo']['extCpInfo']['cpdId']}    ${external_cp}
    ${software_version}=    Get Variable Value    ${topology_template.node_templates.${VNF_label}.properties.software_version}
    Should Be Equal As Strings    ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']}    ${vdu_id}
    ${descriptor_version}=    Get Variable Value    ${topology_template.node_templates.${VNF_label}.properties.descriptor_version}
    Should Be Equal As Strings    ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vnfcCpInfo']['cpdId']}    ${vdu_cpid}
    ${flavour_id}=    Get Variable Value    ${topology_template.node_templates.${VNF_label}.properties.flavour_id}
    Should Be Equal As Strings    ${response['body']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']}    ${virtual_storage}
    
    Should Be Equal As Strings    ${response['body']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']}    ${virtual_link}
    Set Global Variable    ${Descriptor_ID}    ${descriptor_id}

    Set Global Variable    ${Provider}    ${provider}

    Set Global Variable    ${Product_Name}    ${product_name}

    Set Global Variable    ${Software_Version}    ${software_version}
Add VNF Descriptor Content to VNF Instance
    Set Global Variable    ${Descriptor_Version}    ${descriptor_version}
    Run Keyword If  '${descriptorType}'=='SOL001'  Parse SOL001 VNF Instance    ELSE    Parse SOL006 VNF Instance
    Set Global Variable    ${Flavour_ID}    ${flavour_id}
    

Parse SOL001 VNF Instance
Fetch Information from SOL006 descriptor file
    Get key for VNF Descriptor
    ${descriptor_id}=    Get Variable Value    ${topology_template.node_templates.${vnfKey}.properties.descriptor_id}
    ${provider}=    Get Variable Value    ${topology_template.node_templates.${vnfKey}.properties.provider}
    ${product_name}=    Get Variable Value    ${topology_template.node_templates.${vnfKey}.properties.product_name}
    ${software_version}=    Get Variable Value    ${topology_template.node_templates.${vnfKey}.properties.software_version}
    ${descriptor_version}=    Get Variable Value    ${topology_template.node_templates.${vnfKey}.properties.descriptor_version}
    
Parse SOL006 VNF Instance
    ${descriptor_id}=    Get Variable Value    ${nfv.vnfd[0].id}
    ${descriptor_id}=    Get Variable Value    ${nfv.vnfd[0].id}
    ${provider}=    Get Variable Value    ${nfv.vnfd[0].provider}
    ${provider}=    Get Variable Value    ${nfv.vnfd[0].provider}
    ${product_name}=    Get Variable Value    ${nfv.vnfd[0].product-name}
    ${product_name}=    Get Variable Value    ${nfv.vnfd[0].product-name}
    ${software_version}=    Get Variable Value    ${nfv.vnfd[0].software-version}
    ${software_version}=    Get Variable Value    ${nfv.vnfd[0].software-version}
    ${descriptor_version}=    Get Variable Value    ${nfv.vnfd[0].version}    
    ${descriptor_version}=    Get Variable Value    ${nfv.vnfd[0].version}    
    ${VDUcount}=    Get Length    ${nfv.vnfd[0].vdu}
    ${extCP_count}=    Get Length    ${nfv.vnfd[0].ext_cpd}
    ${virtualLink_count}=    Get length    ${nfv.vnfd[0].int_virtual_link_desc}
    ${instantiation_levels}=    Get Length    ${nfv.vnfd[0].df.instantiation_level}    
    FOR    ${key}    IN    @{nfv.vnfd[0].keys()}
        ${VDU_check}=    Run Keyword And Return Status    Should Be Equal As Strings    ${key}    vdu
        Run Keyword If    ${VDU_check}    Get VDU IDs    ${VDUcount}
        ${extCP_check}=    Run Keyword And Return Status    Should Be Equal As Strings    ${key}    ext_cpd
        Run Keyword If    ${extCP_check}    Get External CP IDs    ${extCP_count}
        ${virtualLink_check}=    Run Keyword And Return Status    Should Be Equal As Strings    ${key}    int_virtual_link_desc
        Run Keyword If    ${virtualLink_check}    Get Virtual Link IDs   ${virtualLink_count}    
        ${DF_check}=    Run Keyword And Return Status    Should Be Equal As Strings    ${key}    df
        Run Keyword If    ${DF_check}    Get Instantiation Levels    ${instantiation_levels}    
    END
    Set Global Variable    ${Descriptor_ID}    ${descriptor_id}
    Set Global Variable    ${Provider}    ${provider}
    Set Global Variable    ${Product_Name}    ${product_name}
    Set Global Variable    ${Software_Version}    ${software_version}
    Set Global Variable    ${Descriptor_Version}    ${descriptor_version}

Get VDU IDs
    [Arguments]    ${count}    
    @{VDU_labels}=    Create List
    ${Storage_labels}=    Create List
    FOR    ${i}    IN RANGE    ${count}
        Append To List    ${VDU_labels}    ${nfv.vnfd[0].vdu[${i}].id}
        Append To List    ${Storage_labels}    ${nfv.vnfd[0].vdu[${i}].virtual_storage_desc} 
        Get Internal CPs for each VDU    ${i}   
    END
    Set Global Variable    ${VDU_IDs}    ${VDU_labels}
    Set Global Variable    ${Storage_IDs}    ${Storage_labels}
            
Get Internal CPs for each VDU
    [Arguments]    ${vdu}
    ${count}=    Get Length    ${nfv.vnfd[0].vdu[${vdu}].int_cpd}    
    ${internal_CPs}=    Create List
    FOR    ${i}    IN RANGE    ${count}
        Append To List    ${internal_CPs}    ${nfv.vnfd[0].vdu[${vdu}].int_cpd[${i}].id} 
    END
    Set Global Variable    ${internalCP_IDs}    ${internal_CPs}
    
    
Check HTTP Response Body vnf LCM OpOCC content against VNF Descriptor
Get External CP IDs
    Run Keyword If    ${check_descriptors} == 1    Check Individual VNF LCM Operation Occurence Content
    [Arguments]    ${count}    
    
    @{external_CPs}=    Create List
Check Individual VNF LCM Operation Occurence Content    
    FOR    ${i}    IN RANGE    ${count}
    Run Keyword If  '${descriptorType}'=='SOL001'  Parse SOL001 LCM Op Occ   ELSE    Parse SOL006 LCM Op Occ
        Append To List    ${external_CPs}    ${nfv.vnfd[0].ext_cpd[${i}].id} 
    
    END
Parse SOL001 LCM Op Occ
    Set Global Variable    ${externalCP_IDs}    ${external_CPs}
    Get key for VNF Descriptor
    
    ${descriptor_id}=    Get Variable Value    ${topology_template.node_templates.${vnfKey}.properties.descriptor_id}
    ${descriptor_version}=    Get Variable Value    ${topology_template.node_templates.${vnfKey}.properties.descriptor_version}


    Should Be Equal As Strings    ${response['body']['changedInfo']['vnfdId']}    ${descriptor_id}
Get Virtual Link IDs
    Should Be Equal As Strings    ${response['body']['changedInfo']['vnfdVersion']}    ${descriptor_version}
    [Arguments]    ${count}    
    ${VirtualLink_labels}=    Create List
    FOR    ${i}    IN RANGE    ${count}
        Append To List    ${VirtualLink_labels}    ${nfv.vnfd[0].int_virtual_link_desc[${i}].id} 
    END
    Set Global Variable    ${VirtualLink_IDs}    ${VirtualLink_labels}


Parse SOL006 LCM Op Occ
Get Instantiation Levels
     ${descriptor_id}=    Get Variable Value    ${nfv.vnfd[0].id}
    [Arguments]    ${count}
     ${descriptor_version}=    Get Variable Value    ${nfv.vnfd[0].version}
    @{Instantiation_Levels}=    Create List
     ${vdu_id}=    Get Variable Value    ${nfv.vnfd[0].vdu[0].id}
    FOR    ${i}    IN RANGE    ${count}
     ${virtual_storage}=    Get Variable Value    ${nfv.vnfd[0].virtual-storage-desc.id}
        Append To List    ${Instantiation_Levels}    ${nfv.vnfd[0].df.instantiation_level[${i}].id} 
     ${virtual_link}=    Get Variable Value    ${nfv.vnfd[0].int-virtual-link-desc.id}
    END
    Set Global Variable    ${InstantiationLevel_IDs}    ${Instantiation_Levels}

Match the VNF Instance Response Attributes with Descriptors
    #Checking Response attributes with VNF Descriptors
    Should Be Equal As Strings    ${response['body']['vnfdId']}    ${Descriptor_ID}
    Should Be Equal As Strings    ${response['body']['vnfProvider']}    ${Provider}
    Should Be Equal As Strings    ${response['body']['vnfProductName']}    ${Product_Name}
    Should Be Equal As Strings    ${response['body']['vnfSoftwareVesion']}    ${Software_Version}
    Should Be Equal As Strings    ${response['body']['vnfdVersion']}    ${Descriptor_Version}
    Should Be Equal As Strings    ${response['body']['instantiatedVnfInfo']['flavourId']}    ${Flavour_ID}
    List Should Contain Value    ${VDU_IDs}    ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']}        
    Run Keyword If  '${descriptorType}'=='SOL006'    List Should Contain Value    ${externalCP_IDs}    ${response['body']['instantiatedVnfInfo']['extCpInfo']['cpdId']}
    Run Keyword If  '${descriptorType}'=='SOL006'    List Should Contain Value    ${internalCP_IDs}    ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vnfcCpInfo']['cpdId']}
    Run Keyword If  '${descriptorType}'=='SOL001'    List Should Contain Value    @{CP_IDs}    ${response['body']['instantiatedVnfInfo']['extCpInfo']['cpdId']}
    Run Keyword If  '${descriptorType}'=='SOL001'    List Should Contain Value    @{CP_IDs}    ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vnfcCpInfo']['cpdId']}
    List Should Contain value    ${Storage_IDs}    ${response['body']['instantiatedVnfInfo']['virtualStorageResourceInfo']['virtualStorageDescId']}
    List Should Contain Value    ${VirtualLink_IDs}    ${response['body']['instantiatedVnfInfo']['extManagedVirtualLinkInfo']['vnfVirtualLinkDescId']}
    
Check HTTP Response Body vnf LCM OpOCCs content against VNF Descriptor
    #{check_multiple_instances} flag, set to 1 to check multiple instances against descriptors
    Run Keyword If    ${check_multiple_instances} == 1    Check Multiple VNF LCM OpOCCs Content
    
Check Multiple VNF LCM OpOCCs Content
    #${number_of_instances}=    Get Length    ${response['body']}
    #FOR    ${i}    IN RANGE    ${number_of_instances}
    ${response['body']}=    Get Variable Value    ${response['body'][0]}    #Gets the first instance at index 0
    Check Individual VNF LCM Operation Occurence Content
    #END


    Should Be Equal As Strings    ${response['body']['changedInfo']['vnfdId']}    ${descriptor_id}
Check HTTP Response Body vnf LCM OpOCC content against VNF Descriptor
    Should Be Equal As Strings    ${response['body']['changedInfo']['vnfdVersion']}    ${descriptor_version}
    Run Keyword If    ${check_descriptors} == 1    Check Individual VNF LCM Operation Occurence Content
    Should Be Equal As Strings    ${response['body']['resourceChanges']['affectedVirtualLinks']['vnfVirtualLinkDescId']}    ${virtual_link}
    Should Be Equal As Strings    ${response['body']['resourceChanges']['affectedVnfcs']['vduId']}    ${vdu_id}
    Should Be Equal As Strings    ${response['body']['resourceChanges']['affectedVirtualStorages']['virtualStorageDescId']}    ${virtual_storage}


Check Individual VNF LCM Operation Occurence Content
    PARSE the Descriptor File
    Match the VNF LCM Operation Occurence Response Attributes with Descriptors  

Match the VNF LCM Operation Occurence Response Attributes with Descriptors  
    Should Be Equal As Strings    ${response['body']['changedInfo']['vnfdId']}    ${Descriptor_ID}
    Should Be Equal As Strings    ${response['body']['changedInfo']['vnfdVersion']}    ${Descriptor_Version}
    List Should Contain Value    ${VDU_IDs}    ${response['body']['resourceChanges']['affectedVnfcs']['vduId']}    
    List Should Contain value    ${Storage_IDs}    ${response['body']['resourceChanges']['affectedVirtualStorages']['virtualStorageDescId']}
    List Should Contain Value    ${VirtualLink_IDs}    ${response['body']['resourceChanges']['affectedVirtualLinks']['vnfVirtualLinkDescId']}
+2 −1
Original line number Original line Diff line number Diff line
@@ -32,6 +32,7 @@ GET status information about multiple VNF LCM operation occurrences
    GET VNF LCM OP occurrences
    GET VNF LCM OP occurrences
    Check HTTP Response Status Code Is    202
    Check HTTP Response Status Code Is    202
    Check HTTP Response Body Json Schema Is    VnfLcmOpOccs 
    Check HTTP Response Body Json Schema Is    VnfLcmOpOccs 
    Check HTTP Response Body vnf LCM OpOCCs content against VNF Descriptor
    
    
GET status information about multiple VNF LCM operation occurrences Bad Request Invalid attribute-based filtering parameters
GET status information about multiple VNF LCM operation occurrences Bad Request Invalid attribute-based filtering parameters
    [Documentation]    Test ID: 6.3.5.11.3
    [Documentation]    Test ID: 6.3.5.11.3
+2 −0
Original line number Original line Diff line number Diff line
@@ -81,6 +81,7 @@ ${callbackResp} localhost


${check_descriptors}    1
${check_descriptors}    1
${descriptorType}    SOL006
${descriptorType}    SOL006
${check_multiple_instances}    0


${tosca_type_VDU_compute}    tosca.nodes.nfv.Vdu.Compute
${tosca_type_VDU_compute}    tosca.nodes.nfv.Vdu.Compute
${tosca_type_VNF}    tosca.nodes.nfv.VNF
${tosca_type_VNF}    tosca.nodes.nfv.VNF
@@ -102,3 +103,4 @@ ${Provider}
${Product_Name}
${Product_Name}
${Software_Version}
${Software_Version}
${Descriptor_Version}
${Descriptor_Version}
${Flavour_ID}