Skip to content
Snippets Groups Projects
VnfLcmMntOperationKeywords.robot 7.58 KiB
Newer Older
  • Learn to ignore specific revisions
  • mengxuan.zhao's avatar
    mengxuan.zhao committed
    *** Settings ***
    
    Resource    environment/configuration.txt
    
    Resource    environment/variables.txt
    
    mengxuan.zhao's avatar
    mengxuan.zhao committed
    Resource    environment/scaleVariables.txt
    
    mengxuan.zhao's avatar
    mengxuan.zhao committed
    Library    REST    ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT}    spec=SOL003-VNFLifecycleManagement-API.yaml
    
    Library    OperatingSystem
    Library    BuiltIn
    Library    JSONLibrary
    
    mengxuan.zhao's avatar
    mengxuan.zhao committed
    Library    Collections
    
    mengxuan.zhao's avatar
    mengxuan.zhao committed
    Library    JSONSchemaLibrary    schemas/
    
    *** Keywords ***
    
    Get Vnf Instance 
        [Arguments]    ${vnfInstanceId}
        Set Headers    {"Accept":"${ACCEPT}"}  
        Set Headers    {"Content-Type": "${CONTENT_TYPE}"}
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
        Get    ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}
        ${body}=    Output    response body
        ${json}=    evaluate    json.loads('''${body}''')    json
    
    mengxuan.zhao's avatar
    mengxuan.zhao committed
        [Return]    ${json}
    
    Check HTTP Response Status Code Is
        [Arguments]    ${expected_status}    
        Should Be Equal    ${response.status_code}    ${expected_status}
        Log    Status code validated 
    
    Check Operation Occurrence Id
        ${vnfLcmOpOccId}=    Get Value From Json    ${response.headers}    $..Location
        Should Not Be Empty    ${vnfLcmOpOccId}
    
    Check HTTP Response Body Json Schema Is
        [Arguments]    ${schema}
        ${json}=    evaluate    json.loads('''${response.body}''')    json
        Validate Json    ${schema}    ${json}
        ${vnfInstanceId}=    evaluate   ${response.body.id}
        Log    Json Schema Validation OK
    
    
    mengxuan.zhao's avatar
    mengxuan.zhao committed
    Check resource Instantiated
    
        Check VNF Instance    ${vnfInstanceId}
        Check HTTP Response Status Code Is    200
        Check VNF Status    ${response.body.instantiationState}    INSTANTIATED
    
    Check VNF Instance
        [Arguments]    ${vnfId}
        Set Headers  {"Accept":"${ACCEPT}"}  
        Set Headers  {"Content-Type": "${CONTENT_TYPE}"}
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
        ${response}=    Get    ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfId}
    
    Check VNF Status
        [Arguments]    ${current}    ${expected}
        Should Be Equal As Strings    ${current}    ${expected}
        Log    VNF Status in the correct status
    
    
    mengxuan.zhao's avatar
    mengxuan.zhao committed
    Get Vnf Scale Info
        [Arguments]    ${vnfInstanceId}
        ${vnfInstance}=    Get Vnf Instance    ${vnfInstanceId}
        ${scaleInfo}=    Get Value From Json    ${vnfInstance}    $..scaleStatus
        [Return]   ${scaleInfo} 
    
    
    Get Vnf Flavour Info
        [Arguments]    ${vnfInstanceId}
        ${vnfInstance}=    Get Vnf Instance    ${vnfInstanceId}
        ${flavourInfo}=    Get Value From Json    ${vnfInstance}    $..flavourId
        [Return]    ${flavourInfo}
    
    
    Check HTTP Response Header Contains
    
        [Arguments]    ${CONTENT_TYPE}
        Should Contain    ${response.headers}    ${CONTENT_TYPE}
        Log    Header is present
    
    mengxuan.zhao's avatar
    mengxuan.zhao committed
        Log    Trying to scale a vnf Instance
        Set Headers    {"Accept":"${ACCEPT}"}
        Set Headers    {"Content-Type": "${CONTENT_TYPE}"}
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
    
    mengxuan.zhao's avatar
    mengxuan.zhao committed
        ${body}=    Get File    json/scaleVnfOutRequest.json
        ${json}=    evaluate    json.loads('''${body}''')    json
        ${aspectId}=    Set Variable    ${json.aspectId}  
    
        ${response}=    Post    ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale    ${body}
    
    mengxuan.zhao's avatar
    mengxuan.zhao committed
    Send VNF Scale To Level Request
        [Documentation]    Instantiate VNF The POST method instantiates a VNF instance.
        Log    Trying to Instantiate a vnf Instance
        Set Headers  {"Accept":"${ACCEPT}"}  
        Set Headers  {"Content-Type": "${CONTENT_TYPE}"}
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
        ${body}=    Get File    json/scaleVnfToLevelRequest.json
        ${json}=    evaluate    json.loads('''${body}''')    json
        ${aspectId}=    Set Variable    ${json.aspectId}  
        ${response}=    Post    ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale_to_level    ${body}
        
    
    Send VNF Create Request
        Log    Create VNF instance by POST to ${apiRoot}/${apiName}/${apiVersion}/vnf_instances
        Set Headers  {"Accept":"${ACCEPT}"}  
        Set Headers  {"Content-Type": "${CONTENT_TYPE}"}
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
        ${body}=    Get File    json/createVnfRequest.json
        ${response}=    Post    ${apiRoot}/${apiName}/${apiVersion}/vnf_instances    ${body}
    
    
    Send VNF Delete Request
        log    Delete an individual VNF instance
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
        ${response}=    Delete    ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}
    
    Send Change VNF Flavour Request
        Log    Trying to change the deployment flavour of a VNF instance.
        Set Headers  {"Accept":"${ACCEPT}"}  
        Set Headers  {"Content-Type": "${CONTENT_TYPE}"}
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
        ${body}=    Get File    json/changeVnfFlavourRequest.json
        ${response}=    Post    ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_flavour    ${body}
    
    mengxuan.zhao's avatar
    mengxuan.zhao committed
    Create a new Grant - Synchronous mode
    
    mengxuan.zhao's avatar
    mengxuan.zhao committed
        [Arguments]    ${vnfInstanceId}    ${vnfLcmOpOccId}    ${operation}
    
    mengxuan.zhao's avatar
    mengxuan.zhao committed
        Log    Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiVersion}/grants
        Pass Execution If    ${SYNC_MODE} == 0    The Granting process is asynchronous mode. Skipping the test
        Set Headers  {"Accept":"${ACCEPT}"}  
        Set Headers  {"Content-Type": "${CONTENT_TYPE}"}
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
        ${body}=    Get File    json/grantRequest.json
    
    mengxuan.zhao's avatar
    mengxuan.zhao committed
        ${json_body}=    evaluate    json.loads('''${body}''')    json
        Set To Dictionary     ${json_body}    vnfInstanceId=${vnfInstanceId}    vnfLcmOpOccId=${vnfLcmOpOccId}    operation=${operation}  
        ${body}=    evaluate    json.dumps(${json_body})    json  
    
    mengxuan.zhao's avatar
    mengxuan.zhao committed
        Post    ${apiRoot}/${apiName}/${apiVersion}/grants    ${body}
        Integer    response status    201
        Log    Status code validated 
        ${headers}=    Output    response headers
        Should Contain    ${headers}    Location
        ${contentType}=    Output    response headers Content-Type
        Should Contain    ${contentType}    ${CONTENT_TYPE}
        ${result}=    Output    response body
        ${json}=    evaluate    json.loads('''${result}''')    json
        Validate Json    grant.schema.json    ${json}
        Log    Validation OK
    
    Create a new Grant - Asynchronous mode
    
    mengxuan.zhao's avatar
    mengxuan.zhao committed
        [Arguments]    ${vnfInstanceId}    ${vnfLcmOpOccId}    ${operation}
    
    mengxuan.zhao's avatar
    mengxuan.zhao committed
        Log    Request a new Grant for a VNF LCM operation by POST to ${apiRoot}/${apiName}/${apiVersion}/grants
        Pass Execution If    ${SYNC_MODE} == 1    The Granting process is synchronous mode. Skipping the test
        Set Headers    {"Accept": "${ACCEPT}"}
        Set Headers    {"Content-Type": "${CONTENT_TYPE}"}
        Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
        ${body}=    Get File    json/grantRequest.json
    
    mengxuan.zhao's avatar
    mengxuan.zhao committed
        ${json_body}=    evaluate    json.loads('''${body}''')    json
        Set To Dictionary     ${json_body}    vnfInstanceId=${vnfInstanceId}    vnfLcmOpOccId=${vnfLcmOpOccId}    operation=${operation}    
        ${body}=    evaluate    json.dumps(${json_body})    json 
    
    mengxuan.zhao's avatar
    mengxuan.zhao committed
        Post    ${apiRoot}/${apiName}/${apiVersion}/grants    ${body}
        Output    response
        Integer    response status    202
        Log    Status code validated
        ${headers}=    Output    response headers
        Should Contain    ${headers}    Location
        ${contentType}=    Output    response headers Content-Type
        Should Contain    ${contentType}    ${CONTENT_TYPE}
        Log    Validation OK