Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
NFV - Network Functions Virtualisation
api-tests
Commits
6b64ca06
Commit
6b64ca06
authored
Sep 28, 2021
by
Muhammad Hamza
Committed by
Giacomo Bernini
Oct 05, 2021
Browse files
fixed VNFD parsing in SOL003 APIs
parent
2e629660
Changes
10
Hide whitespace changes
Inline
Side-by-side
SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot
View file @
6b64ca06
...
...
@@ -1517,8 +1517,16 @@ Fetch Information from SOL001 descriptor file
@{VirtualLink_labels}
=
Create List
@{CP_labels}
=
Create List
@{Storage_labels}
=
Create List
FOR
${key}
IN
@{node_types.keys()}
${node_type}
=
Get Variable Value
${node_types['${key}']['derived_from']}
${is_VNF}
=
Run Keyword And Return Status
Should Be Equal As Strings
${node_type}
${tosca_type_VNF}
Run Keyword If
${is_VNF}
Set Global Variable
${tosca_type_derived_from_VNF}
${key}
END
${derived_type_is_used}
=
Run Keyword And Return Status
Should not be empty
${tosca_type_derived_from_VNF}
Run Keyword If
${derived_type_is_used}
Set Global Variable
${tosca_type_VNF}
${tosca_type_derived_from_VNF}
FOR
${key}
IN
@{topology_template.node_templates.keys()}
${key_type}
=
Get Variable Value
${topology_template.node_templates
.
${key}.type}
${key_type}
=
Get Variable Value
${topology_template.node_templates
['
${key}
']
.type}
${VDU_check}
=
Run Keyword And Return Status
Should Be Equal As Strings
${key_type}
${tosca_type_VDU_compute}
${VNF_check}
=
Run Keyword And Return Status
Should Be Equal As Strings
${key_type}
${tosca_type_VNF}
${Link_check}
=
Run Keyword And Return Status
Should Be Equal As Strings
${key_type}
${tosca_type_virtual_link}
...
...
@@ -1540,12 +1548,12 @@ Fetch Information from SOL001 descriptor file
Get VNF Attributes from SOL001
[
Arguments
]
${VNF_label}
Import Variables
${CURDIR}
/descriptors/SOL001/VNFD/vnfd_SOL001.yaml
${descriptor_id}
=
Get Variable Value
${topology_template.node_templates
.
${VNF_label}.properties.descriptor_id}
${provider}
=
Get Variable Value
${topology_template.node_templates
.
${VNF_label}.properties.provider}
${product_name}
=
Get Variable Value
${topology_template.node_templates
.
${VNF_label}.properties.product_name}
${software_version}
=
Get Variable Value
${topology_template.node_templates
.
${VNF_label}.properties.software_version}
${descriptor_version}
=
Get Variable Value
${topology_template.node_templates
.
${VNF_label}.properties.descriptor_version}
${flavour_id}
=
Get Variable Value
${topology_template.node_templates
.
${VNF_label}.properties.flavour_id}
${descriptor_id}
=
Get Variable Value
${topology_template.node_templates
['
${VNF_label}
']
.properties.descriptor_id}
${provider}
=
Get Variable Value
${topology_template.node_templates
['
${VNF_label}
']
.properties.provider}
${product_name}
=
Get Variable Value
${topology_template.node_templates
['
${VNF_label}
']
.properties.product_name}
${software_version}
=
Get Variable Value
${topology_template.node_templates
['
${VNF_label}
']
.properties.software_version}
${descriptor_version}
=
Get Variable Value
${topology_template.node_templates
['
${VNF_label}
']
.properties.descriptor_version}
${flavour_id}
=
Get Variable Value
${topology_template.node_templates
['
${VNF_label}
']
.properties.flavour_id}
Set Global Variable
${Descriptor_ID}
${descriptor_id}
Set Global Variable
${Provider}
${provider}
...
...
SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml
View file @
6b64ca06
tosca_definitions_version
:
tosca_simple_yaml_1_2
description
:
"
TST010
reference
VNF-B"
imports
:
-
https://forge.etsi.org/rep/nfv/SOL001/raw/v3.3.1/etsi_nfv_sol001_vnfd_types.yaml
metadata
:
descriptor_id
:
"
VNF-B"
vendor
:
"
ETSI
TST
WG"
version
:
"
2.0"
node_types
:
tst010.vnf.simple
:
derived_from
:
tosca.nodes.nfv.VNF
properties
:
descriptor_id
:
type
:
string
default
:
VNF-B
descriptor_version
:
type
:
string
default
:
'
1.0'
provider
:
type
:
string
default
:
ETSI TST WG
product_name
:
type
:
string
default
:
VNF-B
software_version
:
type
:
string
default
:
'
1.0'
product_info_name
:
type
:
string
default
:
VNF-B
product_info_description
:
type
:
string
default
:
TST010 reference VNF-B
flavour_id
:
type
:
string
default
:
VNF-B_flavor
flavour_description
:
type
:
string
default
:
"
VNF-B
flavor"
vnfm_info
:
type
:
list
entry_schema
:
type
:
string
default
:
[
'
etsivnfm:v2.3.1'
]
interfaces
:
Vnflcm
:
type
:
"
tosca.interfaces.nfv.Vnflcm"
scale
:
description
:
Invoked upon receipt of a Scale VNF request
terminate
:
description
:
Invoked upon receipt Terminate VNF request
operate
:
description
:
Invoked upon receipt of an Operate VNF request
requirements
:
-
virtual_link_right
:
capability
:
tosca.capabilities.nfv.VirtualLinkable
relationship
:
tosca.relationships.nfv.VirtualLinksTo
occurrences
:
[
0
,
1
]
-
virtual_link_left
:
capability
:
tosca.capabilities.nfv.VirtualLinkable
relationship
:
tosca.relationships.nfv.VirtualLinksTo
occurrences
:
[
0
,
1
]
-
virtual_link_management
:
capability
:
tosca.capabilities.nfv.VirtualLinkable
relationship
:
tosca.relationships.nfv.VirtualLinksTo
occurrences
:
[
0
,
1
]
-
virtual_link
:
capability
:
tosca.capabilities.nfv.VirtualLinkable
relationship
:
tosca.relationships.nfv.VirtualLinksTo
occurrences
:
[
0
,
0
]
topology_template
:
substitution_mappings
:
node_type
:
"
t
osca.nodes.nfv.VNF
"
node_type
:
"
t
st010.vnf.simple
"
requirements
:
virtual_link_right
:
[
right
,
virtual_link_right
]
virtual_link_management
:
[
management
,
virtual_link_management
]
virtual_link_left
:
[
left
,
virtual_link_left
]
virtual_link_right
:
[
right
,
virtual_link_right
]
node_templates
:
right
:
type
:
"
tosca.nodes.nfv.VduCp"
properties
:
layer_protocols
:
[
ipv4
]
order
:
1
requirements
:
virtual_link_right
:
virtual_binding
:
VDU-B-2
-
virtual_binding
:
VDU-B
management
:
type
:
"
tosca.nodes.nfv.VduCp"
properties
:
layer_protocols
:
[
ipv4
]
order
:
0
requirements
:
virtual_link_management
:
virtual_binding
:
VDU-B-1
-
virtual_binding
:
VDU-B
left
:
type
:
"
tosca.nodes.nfv.VduCp"
properties
:
layer_protocols
:
[
ipv4
]
order
:
2
requirements
:
virtual_link_left
:
virtual_binding
:
VDU-B-1
internal_vl
:
type
:
"
tosca.nodes.nfv.VnfVirtualLink"
properties
:
connectivity_type
:
layer_protocols
:
[
ipv4
]
description
:
Internal Virtual link in the VNF
vl_profile
:
max_bitrate_requirements
:
root
:
100000
leaf
:
20000
min_bitrate_requirements
:
root
:
10000
leaf
:
10000
internal_vdu_b_1_cp
:
type
:
"
tosca.nodes.nfv.VduCp"
properties
:
order
:
2
requirements
:
-
virtual_binding
:
VDU-B-1
-
virtual_link
:
internal_vl
internal_vdu_b_2_cp
:
type
:
"
tosca.nodes.nfv.VduCp"
properties
:
order
:
0
requirements
:
-
virtual_binding
:
VDU-B-2
-
virtual_link
:
internal_vl
vdu_b_1_vsd
:
-
virtual_binding
:
VDU-B
vdu-b-1-vsd
:
type
:
"
tosca.nodes.nfv.Vdu.VirtualBlockStorage"
properties
:
virtual_block_storage_data
:
size_of_storage
:
20
size_of_storage
:
20
GB
rdma_enabled
:
false
sw_image_data
:
name
:
"
vdu-b-1
image"
...
...
@@ -76,63 +117,15 @@ topology_template:
algorithm
:
"
sha-224"
hash
:
"
somehashfortst010"
container_format
:
"
bare"
disk
-
format
:
qcow2
min
-
disk
:
'
1'
min
-
ram
:
'
2'
disk
_
format
:
qcow2
min
_
disk
:
'
1'
min
_
ram
:
'
2'
size
:
'
1'
artifacts
:
sw_image
:
type
:
"
tosca.artifacts.nfv.SwImage"
file
:
vdu-b-1.qcow2
vdu_b_2_vsd
:
type
:
"
tosca.nodes.nfv.Vdu.VirtualBlockStorage"
properties
:
virtual_block_storage_data
:
size_of_storage
:
20
rdma_enabled
:
false
sw_image_data
:
name
:
"
vdu-b-2
image"
version
:
"
1.1"
checksum
:
algorithm
:
"
sha-224"
hash
:
"
somehashfortst010"
container_format
:
"
bare"
disk-format
:
qcow2
min-disk
:
'
1'
min-ram
:
'
2'
size
:
'
1'
artifacts
:
sw_image
:
type
:
tosca.artifacts.nfv.SwImage
file
:
vdu-b-2.qcow2
vnf_b_1_VNF
:
type
:
"
tosca.nodes.nfv.VNF"
properties
:
descriptor_id
:
"
VNF-B-2VDUs"
descriptor_version
:
"
2.0"
provider
:
"
ETSI
TST
WG"
product_name
:
"
VNF-B-2VDUs"
software_version
:
"
2.0"
product_info_name
:
"
VNF-B-2VDUs"
product_info_description
:
"
TST010
reference
VNF-B
with
2
VDUs"
flavour_id
:
"
VNF-B-2VDU_flavor"
flavour_description
:
"
VNF-B
with
2
VDUs
flavor"
vnfm_info
:
etsivnfm
:
-
v2.3.1
interfaces
:
Vnflcm
:
scale
:
implementation
:
scale-example.yaml
terminate
:
implementation
:
terminate-example.yaml
operate
:
implementation
:
operate-example.yaml
VDU_B_1
:
VDU-B
:
type
:
"
tosca.nodes.nfv.Vdu.Compute"
properties
:
name
:
"
vdu-b-1-vcd"
descript
or
:
"
Description
of
VDU-B-1"
descript
ion
:
"
Description
of
VDU-B-1"
vdu_profile
:
min_number_of_instances
:
1
max_number_of_instances
:
2
...
...
@@ -140,29 +133,33 @@ topology_template:
virtual_compute
:
properties
:
virtual_memory
:
virtual_mem_size
:
4096
virtual_mem_size
:
4096
MB
numa_enabled
:
false
virtual_cpu
:
num_virtual_cpu
:
2
requirements
:
virtual_storage
:
-
"
vdu-b-1-vsd"
VDU_B_2
:
type
:
"
t
osca.nodes.nfv.Vdu.Comput
e"
-
virtual_storage
:
vdu-b-1-vsd
vnf-b-1_VNF
:
type
:
"
t
st010.vnf.simpl
e"
properties
:
name
:
"
vdu-b-2-vcd"
descriptor
:
"
Description
of
VDU-B-2"
vdu_profile
:
min_number_of_instances
:
1
max_number_of_instances
:
4
capabilities
:
virtual_compute
:
properties
:
virtual_memory
:
virtual_mem_size
:
6144
numa_enabled
:
false
virtual_cpu
:
num_virtual_cpu
:
2
requirements
:
virtual_storage
:
-
"
vdu-b-2-vsd"
\ No newline at end of file
descriptor_id
:
"
VNF-B"
descriptor_version
:
"
2.0"
provider
:
"
ETSI
TST
WG"
product_name
:
"
VDU_VNF-B"
software_version
:
"
2.0"
product_info_name
:
"
VDU_VNF-B"
product_info_description
:
"
TST010
reference
VNF-A"
flavour_id
:
"
VNF-B_flavor"
flavour_description
:
"
VNF-B
flavor"
vnfm_info
:
-
etsivnfm:v2.3.1
interfaces
:
Vnflcm
:
type
:
"
tosca.interfaces.nfv.Vnflcm"
scale
:
implementation
:
scale-example.yaml
terminate
:
implementation
:
terminate-example.yaml
operate
:
implementation
:
operate-example.yaml
\ No newline at end of file
SOL003/VNFLifecycleManagement-API/environment/variables.txt
View file @
6b64ca06
...
...
@@ -140,12 +140,14 @@ ${callbackResp} localhost
${descriptorType} SOL001
${check_descriptors} 1
#############internal variables used for descriptor parsing################
${tosca_type_VDU_compute} tosca.nodes.nfv.Vdu.Compute
${tosca_type_VNF} tosca.nodes.nfv.VNF
${tosca_type_virtual_link} tosca.nodes.nfv.VnfVirtualLink
${tosca_type_VDU_cp} tosca.nodes.nfv.VduCp
${tosca_type_storage} tosca.nodes.nfv.Vdu.VirtualBlockStorage
${tosca_type_derived_from_VNF}
${VDU_IDs}
${VNF_IDs}
${virtualLink_IDs}
...
...
SOL003/VNFLifecycleOperationGranting-API/Grants.robot
View file @
6b64ca06
*** Settings ***
Library
String
Resource
environment/variables.txt
Resource
environment/variables.txt
Resource
VNFLifecycleOperationGrantingKeywords.robot
Library
REST
${NFVO_SCHEMA}
://
${NFVO_HOST}
:
${NFVO_PORT}
ssl_verify=false
Library
OperatingSystem
Library
JSONLibrary
...
...
@@ -12,7 +13,6 @@ Documentation This resource represents grants. The client can use this resour
...
from the NFVO to perform a particular VNF lifecycle operation.
*** Variables ***
${response}
{}
${retry}
2 min
${polling}
10 sec
...
...
@@ -109,137 +109,4 @@ DELETE Grants - Method not implemented
*** Keywords ***
Wait for individual grant successful notification
Wait Until Keyword Succeeds
${retry}
${polling}
Get an individual grant - Successful
Send Request Grant Request in Synchronous mode
Log
Request a new Grant for a VNF LCM operation by POST to
${apiRoot}
/
${apiName}
/
${apiMajorVersion}
/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_HEADER}
":"
${AUTHORIZATION_TOKEN}
"}
Run Keyword If
${check_descriptors}
=
= 1
Add VNF Descriptor Content to Grant Request
${template}
=
Get File
jsons/grantRequest.json
${body}
=
Format String
${template}
vnfInstanceId=
${vnfInstanceId}
vnfLcmOpOccId=
${vnfLcmOpOccId}
vnfdId=
${Descriptor_ID}
flavourId=
${Flavour_ID}
Post
${apiRoot}
/
${apiName}
/
${apiMajorVersion}
/grants
${body}
${body}
=
Output
response
Set Suite Variable
${response}
${body}
Send Request Grant Request in Asynchronous mode
Log
Request a new Grant for a VNF LCM operation by POST to
${apiRoot}
/
${apiName}
/
${apiMajorVersion}
/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_HEADER}
":"
${AUTHORIZATION_TOKEN}
"}
Run Keyword If
${check_descriptors}
=
= 1
Add VNF Descriptor Content to Grant Request
${template}
=
Get File
jsons/grantRequest.json
${body}
=
Format String
${template}
vnfInstanceId=
${vnfInstanceId}
vnfLcmOpOccId=
${vnfLcmOpOccId}
vnfdId=
${Descriptor_ID}
flavourId=
${Flavour_ID}
Post
${apiRoot}
/
${apiName}
/
${apiMajorVersion}
/grants
${body}
${body}
=
Output
response
Set Suite Variable
${response}
${body}
Send Request for a new Grant Forbiden Operation
Log
Request a new Grant for a VNF LCM operation by POST to
${apiRoot}
/
${apiName}
/
${apiMajorVersion}
/grants
Log
The grant request should be rejected
Set Headers
{"Accept": "
${ACCEPT}
"}
Set Headers
{"Content-Type": "
${CONTENT_TYPE}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"
${AUTHORIZATION_HEADER}
":"
${AUTHORIZATION_TOKEN}
"}
Run Keyword If
${check_descriptors}
=
= 1
Add VNF Descriptor Content to Grant Request
${template}
=
Get File
jsons/grantRejectedRequest.json
${body}
=
Format String
${template}
vnfInstanceId=
${vnfInstanceId}
vnfLcmOpOccId=
${vnfLcmOpOccId}
vnfdId=
${Descriptor_ID}
flavourId=
${Flavour_ID}
Post
${apiRoot}
/
${apiName}
/
${apiMajorVersion}
/grants
${body}
${body}
=
Output
response
Set Suite Variable
${response}
${body}
Check HTTP Response Status Code Is
[
Arguments
]
${expected_status}
Should Be Equal As Strings
${response['status']}
${expected_status}
Log
Status code validated
Check Operation Occurrence Id existence
${occId}
=
Get Value From Json
${response['headers']}
$..Location
Should Not Be Empty
${occId}
Check HTTP Response Header Contains
[
Arguments
]
${CONTENT_TYPE}
Should Contain
${response['headers']}
${CONTENT_TYPE}
Log
Header is present
Check HTTP Response Body Json Schema Is
[
Arguments
]
${input}
Run Keyword If
'
${input}
' == 'ProblemDetails'
Should Contain
${response['headers']['Content-Type']}
application/problem+json
...
ELSE
Should Contain
${response['headers']['Content-Type']}
application/json
${schema}
=
Catenate
SEPARATOR=
${input}
.schema.json
Validate Json
${schema}
${response['body']}
Get an individual grant - Successful
log
Trying to read an individual grant
Set Headers
{"Accept":"
${ACCEPT}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"
${AUTHORIZATION_HEADER}
":"
${AUTHORIZATION_TOKEN}
"}
Get
${response['headers']['Location']}
Log
Validate Status code
Integer
response status
200
Get Grants
Log
Trying to perform a GET. This method should not be implemented
Set Headers
{"Accept":"
${ACCEPT}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"
${AUTHORIZATION_HEADER}
":"
${AUTHORIZATION_TOKEN}
"}
Get
${apiRoot}
/
${apiName}
/
${apiMajorVersion}
/grants
${body}
=
Output
response
Set Suite Variable
${response}
${body}
Put Grants
Log
Trying to perform a PUT. This method should not be implemented
Set Headers
{"Accept":"
${ACCEPT}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"
${AUTHORIZATION_HEADER}
":"
${AUTHORIZATION_TOKEN}
"}
Put
${apiRoot}
/
${apiName}
/
${apiMajorVersion}
/grants
${body}
=
Output
response
Set Suite Variable
${response}
${body}
Patch Grants
Log
Trying to perform a PATCH. This method should not be implemented
Set Headers
{"Accept":"
${ACCEPT}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"
${AUTHORIZATION_HEADER}
":"
${AUTHORIZATION_TOKEN}
"}
Patch
${apiRoot}
/
${apiName}
/
${apiMajorVersion}
/grants
${body}
=
Output
response
Set Suite Variable
${response}
${body}
Delete Grants
Log
Trying to perform a DELETE. This method should not be implemented
Set Headers
{"Accept":"
${ACCEPT}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"
${AUTHORIZATION_HEADER}
":"
${AUTHORIZATION_TOKEN}
"}
Delete
${apiRoot}
/
${apiName}
/
${apiMajorVersion}
/grants
${body}
=
Output
response
Set Suite Variable
${response}
${body}
Add VNF Descriptor Content to Grant Request
PARSE the Descriptor File
PARSE the Descriptor File
Run Keyword If
'
${descriptorType}
'=='SOL001'
Fetch Information from SOL001 descriptor file
ELSE
Fetch Information from SOL006 descriptor file
Fetch Information from SOL001 descriptor file
Import Variables
${CURDIR}
/descriptors/SOL001/VNFD/vnfd_SOL001.yaml
${descriptor_id}
=
Get Variable Value
${topology_template.node_templates.properties.descriptor_id}
${provider}
=
Get Variable Value
${topology_template.node_templates.properties.provider}
${product_name}
=
Get Variable Value
${topology_template.node_templates.properties.product_name}
${software_version}
=
Get Variable Value
${topology_template.node_templates.properties.software_version}
${descriptor_version}
=
Get Variable Value
${topology_template.node_templates.properties.descriptor_version}
${flavour_id}
=
Get Variable Value
${topology_template.node_templates.properties.flavour_id}
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}
Set Global Variable
${Flavour_ID}
${flavour_id}
Fetch Information from SOL006 descriptor file
Import Variables
${CURDIR}
/descriptors/SOL006/VNFD/vnfd_SOL006.yaml
${descriptor_id}
=
Get Variable Value
${nfv.vnfd[0].id}
${provider}
=
Get Variable Value
${nfv.vnfd[0].provider}
${product_name}
=
Get Variable Value
${nfv.vnfd[0]['product-name']}
${software_version}
=
Get Variable Value
${nfv.vnfd[0]['software-version']}
${descriptor_version}
=
Get Variable Value
${nfv.vnfd[0].version}
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}
\ No newline at end of file
Wait Until Keyword Succeeds
${retry}
${polling}
Get an individual grant - Successful
\ No newline at end of file
SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot
View file @
6b64ca06
*** Settings ***
Resource
environment/variables.txt
Resource
environment/variables.txt
Resource
VNFLifecycleOperationGrantingKeywords.robot
Library
OperatingSystem
Library
JSONLibrary
Library
JSONSchemaLibrary
schemas/
...
...
@@ -100,147 +101,4 @@ DELETE an individual grant - Method not implemented
...
Applicability: none
...
Post-Conditions: none
Delete individual Grant
Check HTTP Response Status Code Is
405
*** Keywords ***
Get individual grant
log
Trying to read an individual grant
Set Headers
{"Accept":"
${ACCEPT}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"
${AUTHORIZATION_HEADER}
":"
${AUTHORIZATION_TOKEN}
"}
Get
${apiRoot}
/
${apiName}
/
${apiMajorVersion}
/grants/
${grantId}
${body}
=
Output
response
Set Suite Variable
${response}
${body}
Check resource existence
Set Headers
{"Accept":"
${ACCEPT}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"
${AUTHORIZATION_HEADER}
":"
${AUTHORIZATION_TOKEN}
"}
Get
${apiRoot}
/
${apiName}
/
${apiMajorVersion}
/subscriptions/
${subscriptionId}
Integer
response status
200
Post individual Grant
log
Trying to read an individual grant
Pass Execution If
${SYNC_MODE}
=
= 1
Skipping. Synchronous mode is supported
Set Headers
{"Accept":"
${ACCEPT}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"
${AUTHORIZATION_HEADER}
":"
${AUTHORIZATION_TOKEN}
"}
Get
${apiRoot}
/
${apiName}
/
${apiMajorVersion}
/grants/
${grantId}
${body}
=
Output
response
Set Suite Variable
${response}
${body}
Put individual Grant
Log
Trying to perform a GET. This method should not be implemented
Set Headers
{"Accept":"
${ACCEPT}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"
${AUTHORIZATION_HEADER}
":"
${AUTHORIZATION_TOKEN}
"}
Put
${apiRoot}
/
${apiName}
/
${apiMajorVersion}
/grants/
${grantId}
${body}
=
Output
response
Set Suite Variable
${response}
${body}
Patch individual Grant
Log
Trying to perform a GET. This method should not be implemented
Set Headers
{"Accept":"
${ACCEPT}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"
${AUTHORIZATION_HEADER}
":"
${AUTHORIZATION_TOKEN}
"}
Patch
${apiRoot}
/
${apiName}
/
${apiMajorVersion}
/grants/
${grantId}
${body}
=
Output
response
Set Suite Variable
${response}
${body}
Delete individual Grant
Log
Trying to perform a GET. This method should not be implemented
Set Headers
{"Accept":"
${ACCEPT}
"}
Run Keyword If
${AUTH_USAGE}
=
= 1
Set Headers
{"
${AUTHORIZATION_HEADER}
":"
${AUTHORIZATION_TOKEN}
"}
Delete
${apiRoot}
/
${apiName}
/
${apiMajorVersion}
/grants/
${grantId}
${body}
=
Output
response
Set Suite Variable
${response}
${body}
Check HTTP Response Status Code Is
[
Arguments
]
${expected_status}
Should Be Equal As Strings
${response['status']}
${expected_status}
Log
Status code validated
Check HTTP Response Header Contains
[
Arguments
]
${CONTENT_TYPE}
Should Contain
${response['headers']}
${CONTENT_TYPE}
Log
Header is present
Check HTTP Response Body Json Schema Is
[
Arguments
]
${input}
Run Keyword If
'
${input}
' == 'ProblemDetails'
Should Contain
${response['headers']['Content-Type']}
application/problem+json
...
ELSE
Should Contain
${response['headers']['Content-Type']}
application/json
${schema}
=
Catenate
SEPARATOR=
${input}
.schema.json
Validate Json
${schema}
${response['body']}
Check HTTP Response Body grant content against VNF Descriptor
Run Keyword If
${check_descriptors}
=
= 1
Check Individual grant Content
Check Individual grant Content
PARSE the Descriptor File
Match the grant Response Attributes with Descriptors
PARSE the Descriptor File
Run Keyword If
'
${descriptorType}
'=='SOL001'
Fetch Information from SOL001 descriptor file
ELSE
Fetch Information from SOL006 descriptor file
Fetch Information from SOL001 descriptor file