blob: c139f7cc5258cf8561dc9ef848c1acb2a150ee69 [file] [log] [blame]
*** Settings ***
Documentation Operations on vpn-bindings in AAI for CCVPN use case,
... using earliest API version where changes are implemented and
... latest API version where changes are not implemented
Resource ../json_templater.robot
Resource aai_interface.robot
Resource api_version_properties.robot
Resource add-relationship-list.robot
Library OperatingSystem
Library Collections
*** Variables ***
${AAI_VPNB_ROOT_PATH} /network/vpn-bindings/vpn-binding
${AAI_VPNB_EXAMPLES_PATH} /examples/vpn-bindings
${AAI_VPNB_NODES_PATH} /nodes/vpn-bindings
${AAI_ADD_VPNBINDING_BODY}= robot/assets/templates/aai/add-vpn-binding.template
${AAI_VPNB_API_NA_INDEX_PATH}= ${AAI_BEIJING_INDEX_PATH}
${AAI_VPNB_API_IMPL_INDEX_PATH}= ${AAI_CASABLANCA_INDEX_PATH}
*** Keywords ***
Create VPN Binding If Not Exists
[Documentation] Creates VPN Binding in AAI if it doesn't exist
[Arguments] ${vpn_id}
${get_resp}= Run A&AI Get Request ${AAI_VPNB_API_IMPL_INDEX_PATH}${AAI_VPNB_ROOT_PATH}/${vpn_id}
Return From Keyword If '${get_resp.status_code}' == '200'
Create VPN Binding ${vpn_id}
Create VPN Binding
[Documentation] Creates VPN Binding in AAI
[Arguments] ${vpn_id}
${arguments}= Create Dictionary vpn_id=${vpn_id}
${data}= Fill JSON Template File ${AAI_ADD_VPNBINDING_BODY} ${arguments}
${put_resp}= Run A&AI Put Request ${AAI_VPNB_API_IMPL_INDEX_PATH}${AAI_VPNB_ROOT_PATH}/${vpn_id} ${data}
${status_string}= Convert To String ${put_resp.status_code}
Should Match Regexp ${status_string} ^(201|200)$
Delete VPN Binding If Exists
[Documentation] Removes VPN Binding from AAI if it exists
[Arguments] ${vpn_id}
${get_resp}= Run A&AI Get Request ${AAI_VPNB_API_IMPL_INDEX_PATH}${AAI_VPNB_ROOT_PATH}/${vpn_id}
Run Keyword If '${get_resp.status_code}' == '200' Delete VPN Binding ${vpn_id} ${get_resp.json()}
Delete VPN Binding
[Documentation] Removes VPN Binding from AAI
[Arguments] ${vpn_id} ${json}
${resource_version}= Catenate ${json['resource-version']}
${put_resp}= Run A&AI Delete Request ${AAI_VPNB_API_IMPL_INDEX_PATH}${AAI_VPNB_ROOT_PATH}/${vpn_id} ${resource_version}
Should Be Equal As Strings ${put_resp.status_code} 204
Get VPN Binding
[Documentation] Return VPN Binding
[Arguments] ${vpn_id}
${resp}= Run A&AI Get Request ${AAI_VPNB_API_IMPL_INDEX_PATH}${AAI_VPNB_ROOT_PATH}/${vpn_id}
Should Be Equal As Strings ${resp.status_code} 200
[Return] ${resp.json()}
Get Valid VPN Binding URL
[Documentation] Return Valid VPN Binding URL
[Arguments] ${vpn_id}
${resp}= Run A&AI Get Request ${AAI_VPNB_API_IMPL_INDEX_PATH}${AAI_VPNB_ROOT_PATH}/${vpn_id}
Should Be Equal As Strings ${resp.status_code} 200
[Return] ${AAI_VPNB_API_IMPL_INDEX_PATH}${AAI_VPNB_ROOT_PATH}/${vpn_id}
Get Nodes Query VPN Binding
[Documentation] Return Nodes query VPN Binding
[Arguments] ${vpn_id}
${resp}= Run A&AI Get Request ${AAI_VPNB_API_IMPL_INDEX_PATH}${AAI_VPNB_NODES_PATH}?vpn-id=${vpn_id}
Should Be Equal As Strings ${resp.status_code} 200
[Return] ${resp.json()}
Get Example VPN Binding
[Documentation] Return Example VPN Binding
${resp}= Run A&AI Get Request ${AAI_VPNB_API_IMPL_INDEX_PATH}${AAI_VPNB_EXAMPLES_PATH}
Should Be Equal As Strings ${resp.status_code} 200
[Return] ${resp.json()}
Confirm No VPN Binding
[Documentation] Confirm No VPN Binding
[Arguments] ${vpn_id}
${resp}= Run A&AI Get Request ${AAI_VPNB_API_IMPL_INDEX_PATH}${AAI_VPNB_ROOT_PATH}/${vpn_id}
Should Be Equal As Strings ${resp.status_code} 404
# Not applicable to VPN Binding as it appears in all known API versions
# Confirm API Not Implemented VPN Binding
# [Documentation] Confirm latest API version where VPN Binding is not implemented
# [Arguments] ${vpn_id}
# ${resp}= Run A&AI Get Request ${AAI_VPNB_API_NA_INDEX_PATH}${AAI_VPNB_ROOT_PATH}/${vpn_id}
# Should Be Equal As Strings ${resp.status_code} 400
Add VPN Binding Relationship
[Documentation] Adds Relationship to existing VPN Binding in AAI
[Arguments] ${vpn_id} ${related_class_name} ${related_object_url}
${put_resp}= Add Relationship ${AAI_VPNB_API_IMPL_INDEX_PATH}${AAI_VPNB_ROOT_PATH}/${vpn_id} ${related_class_name} ${related_object_url}
Get VPN Binding RelationshipList
[Documentation] Return relationship-list from VPN Binding
[Arguments] ${vpn_id}
${resp}= Get RelationshipList ${AAI_VPNB_API_IMPL_INDEX_PATH}${AAI_VPNB_ROOT_PATH}/${vpn_id}
[Return] ${resp}
Get VPN Binding With RelationshipList
[Documentation] Return VPN Binding with relationship-list
[Arguments] ${vpn_id}
${resp}= Get Object With Depth ${AAI_VPNB_API_IMPL_INDEX_PATH}${AAI_VPNB_ROOT_PATH}/${vpn_id}
[Return] ${resp}