2 Documentation Operations on pnfs in AAI for BBS use case,
3 ... using earliest API version where it is implemented
4 ... and latest API version where it is not implemented
6 Resource ../json_templater.robot
7 Resource aai_interface.robot
8 Resource csit-api-version-properties.robot
9 Resource csit-relationship-list.robot
10 Resource csit-subobject.robot
11 Library OperatingSystem
16 ${AAI_PNF_CONTAINER_PATH}= /pnfs
17 ${AAI_PNF_SUBOBJECT_PATH}= /pnf
18 ${AAI_PNF_UNIQUE_KEY}= pnf-name
19 ${AAI_PNF_CSIT_BODY}= robot/assets/templates/aai/csit-pnf.template
20 ${AAI_PNF_ROOT_PATH}= ${AAI_NETWORK_PATH}${AAI_PNF_CONTAINER_PATH}${AAI_PNF_SUBOBJECT_PATH}
21 ${AAI_PNF_API_NA_INDEX_PATH}= ${AAI_UNSUPPORTED_INDEX_PATH}
22 ${AAI_PNF_API_IMPL_INDEX_PATH}= ${AAI_DUBLIN_INDEX_PATH}
23 # ${AAI_PNF_API_IMPL_INDEX_PATH}= ${AAI_CASABLANCA_INDEX_PATH}
26 Create Pnf If Not Exists
27 [Documentation] Creates Pnf in AAI if it doesn't exist
28 [Arguments] ${pnf_name} ${pnf_id}
29 ${get_resp}= Get SubObject ${AAI_PNF_API_IMPL_INDEX_PATH}${AAI_NETWORK_PATH} ${AAI_PNF_CONTAINER_PATH} ${AAI_PNF_SUBOBJECT_PATH} ${AAI_PNF_UNIQUE_KEY} ${pnf_name}
30 Return From Keyword If '${get_resp.status_code}' == '200'
31 Create Pnf ${pnf_name} ${pnf_id}
34 [Documentation] Creates Pnf in AAI
35 [Arguments] ${pnf_name} ${pnf_id}
36 ${arguments}= Create Dictionary pnf_name=${pnf_name} pnf_id=${pnf_id}
37 ${put_resp}= Create SubObject ${AAI_PNF_API_IMPL_INDEX_PATH}${AAI_NETWORK_PATH} ${AAI_PNF_CONTAINER_PATH} ${AAI_PNF_SUBOBJECT_PATH} ${pnf_name} ${AAI_PNF_CSIT_BODY} ${arguments}
40 [Documentation] Removes Pnf from AAI if it exists
41 [Arguments] ${pnf_name}
42 ${get_resp}= Get SubObject ${AAI_PNF_API_IMPL_INDEX_PATH}${AAI_NETWORK_PATH} ${AAI_PNF_CONTAINER_PATH} ${AAI_PNF_SUBOBJECT_PATH} ${AAI_PNF_UNIQUE_KEY} ${pnf_name}
43 Run Keyword If '${get_resp.status_code}' == '200' Delete Pnf ${pnf_name} ${get_resp.json()}
46 [Documentation] Removes Pnf from AAI
47 [Arguments] ${pnf_name} ${json}
48 ${del_resp}= Delete SubObject ${AAI_PNF_API_IMPL_INDEX_PATH}${AAI_NETWORK_PATH} ${AAI_PNF_CONTAINER_PATH} ${AAI_PNF_SUBOBJECT_PATH} ${pnf_name} ${json}
51 [Documentation] Return Pnf
52 [Arguments] ${pnf_name}
53 ${get_resp}= Get SubObject ${AAI_PNF_API_IMPL_INDEX_PATH}${AAI_NETWORK_PATH} ${AAI_PNF_CONTAINER_PATH} ${AAI_PNF_SUBOBJECT_PATH} ${AAI_PNF_UNIQUE_KEY} ${pnf_name}
54 Should Be Equal As Strings ${get_resp.status_code} 200
55 [Return] ${get_resp.json()}
58 [Documentation] Return Valid Pnf URL
59 [Arguments] ${pnf_name}
60 ${resp}= Get Valid SubObject URL ${AAI_PNF_API_IMPL_INDEX_PATH}${AAI_NETWORK_PATH} ${AAI_PNF_CONTAINER_PATH} ${AAI_PNF_SUBOBJECT_PATH} ${pnf_name}
64 [Documentation] Return Nodes query Pnf
65 [Arguments] ${pnf_name}
66 ${get_resp}= Confirm Nodes Query SubObjects ${AAI_PNF_API_IMPL_INDEX_PATH} ${AAI_PNF_CONTAINER_PATH} ${AAI_PNF_UNIQUE_KEY} ${pnf_name}
67 [Return] ${get_resp.json()}
70 [Documentation] Return Example Pnf
71 ${get_resp}= Confirm Examples Query SubObjects ${AAI_PNF_API_IMPL_INDEX_PATH} ${AAI_PNF_CONTAINER_PATH}
72 [Return] ${get_resp.json()}
75 [Documentation] Confirm No Pnf
76 [Arguments] ${pnf_name}
77 ${get_resp}= Get SubObject ${AAI_PNF_API_IMPL_INDEX_PATH}${AAI_NETWORK_PATH} ${AAI_PNF_CONTAINER_PATH} ${AAI_PNF_SUBOBJECT_PATH} ${AAI_PNF_UNIQUE_KEY} ${pnf_name}
78 Should Be Equal As Strings ${get_resp.status_code} 404
80 Confirm API Not Implemented Pnf
81 [Documentation] Confirm latest API version where Pnf is not implemented
82 [Arguments] ${pnf_name}
83 ${resp}= Confirm API Not Implemented SubObject ${AAI_PNF_API_NA_INDEX_PATH}${AAI_NETWORK_PATH} ${AAI_PNF_CONTAINER_PATH} ${AAI_PNF_SUBOBJECT_PATH} ${pnf_name}
86 [Documentation] Adds Relationship to existing Pnf in AAI
87 [Arguments] ${pnf_name} ${related_class_name} ${related_object_url}
88 ${put_resp}= Add Relationship ${AAI_PNF_API_IMPL_INDEX_PATH}${AAI_PNF_ROOT_PATH}/${pnf_name} ${related_class_name} ${related_object_url}
90 Get Pnf RelationshipList
91 [Documentation] Return relationship-list from Pnf
92 [Arguments] ${pnf_name}
93 ${resp}= Get RelationshipList ${AAI_PNF_API_IMPL_INDEX_PATH}${AAI_PNF_ROOT_PATH}/${pnf_name}
96 Get Pnf With RelationshipList
97 [Documentation] Return Pnf with relationship-list
98 [Arguments] ${pnf_name}
99 ${resp}= Get Object With Depth ${AAI_PNF_API_IMPL_INDEX_PATH}${AAI_PNF_ROOT_PATH}/${pnf_name}