*** Settings *** Resource environment/configuration.txt Resource environment/variables.txt Resource environment/scaleVariables.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} spec=SOL003-VNFLifecycleManagement-API.yaml Library OperatingSystem Library BuiltIn Library JSONLibrary Library Collections 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 [Return] ${body} 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} Validate Json ${schema} ${response.body} ${vnfInstanceId}= evaluate ${response.body.id} Log Json Schema Validation OK Check resource Instantiated Check VNF Instance ${vnfInstanceId} Check HTTP Response Status Code Is 200 Check VNF Status ${response.body.instantiationState} INSTANTIATED Check resource not Instantiated Check VNF Instance ${vnfInstanceId} Check HTTP Response Status Code Is 200 Check VNF Status ${response.body.instantiationState} NOT_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 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} Get Vnf Operational State Info [Arguments] ${vnfInstanceId} ${vnfInstance}= Get Vnf Instance ${vnfInstanceId} ${stateInfo}= Get Value From Json ${vnfInstance} $..vnfState [Return] ${stateInfo} Get Vnf Ext Link Id [Arguments] ${vnfInstanceId} ${vnfInstance}= Get Vnf Instance ${vnfInstanceId} [Return] ${vnfInstance.instantiatedVnfInfo.extVirtualLinkInfo.id} Check HTTP Response Header Contains [Arguments] ${CONTENT_TYPE} Should Contain ${response.headers} ${CONTENT_TYPE} Log Header is present Send VNF Scale Out Request 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}"} ${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} 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 Instance Resource 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 Instance Resource 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} Send Change VNF Operational State Request Log Trying to change the operational state 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/operateVnFRequest.json ${response}= Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/operate ${body} Send Heal VNF Request Log Trying to heal 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/healVnFRequest.json ${response}= Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/heal ${body} Send Change Ext Connectivity Request Log Trying to change the external connectivity 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/changeExtVnfConnectivityRequest.json ${response}= Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${body} Send Terminate VNF Request Log Trying to terminate 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/terminateVnFRequest.json ${response}= Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/terminate ${body} Send Info Modification Request Log Trying to update information 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/patchBodyRequest.json ${response}= Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} ${body} Send Retry Operation Request Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${response}= Post ${apiRoot}/${apiName}/${apiVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry Create a new Grant - Synchronous mode [Arguments] ${vnfInstanceId} ${vnfLcmOpOccId} ${operation} 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 ${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 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 Validate Json grant.schema.json ${result} Log Validation OK Create a new Grant - Asynchronous mode [Arguments] ${vnfInstanceId} ${vnfLcmOpOccId} ${operation} 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 ${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 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