3 Library RequestsLibrary
4 Library OperatingSystem
6 Library libraries/KubernetesClient.py
8 Documentation Test cases for CNF lifecycle management operations
10 ... -package being onboarded in cnf_package_onboarding_tests
13 ${SLEEP_INTERVAL_SEC}= 10
14 ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT}= 60 # Represents the maximum number of attempts that will be made before a timeout. It sleeps for SLEEP_INTERVAL_SEC seconds before retry.
15 ${BASIC_AUTH}= Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==
16 ${SERVICE_INSTANTIATION_TEMPLATE}= ${CURDIR}${/}data${/}serviceInstantiationRequest.json
17 ${CNF_RESOURCE_INSTANTIATION_TEMPLATE}= ${CURDIR}${/}data${/}cnfResourceInstantiationRequest.json
18 ${CNF_RESOURCE_DELETE_TEMPLATE}= ${CURDIR}${/}data${/}cnfResourceDeleteRequest.json
19 ${SERVICE_DELETE_TEMPLATE}= ${CURDIR}${/}data${/}serviceDeleteRequest.json
21 ${LABEL_NAME}= app.kubernetes.io/instance
22 ${MARIADB_LABEL_SELECTOR}= ${LABEL_NAME}=democnfinstance-mariadb-db-1
23 ${EXPECTED_NUM_OF_RESOURCES_AFTER_INSTANTIATION}= 1
25 ${NGINX_LABEL_SELECTOR}= ${LABEL_NAME}=democnfinstance-nginx-services-2
26 ${EXPECTED_NUM_OF_RESOURCES_AFTER_DELETE}= 0
30 Invoke Service Instantiation
31 Create Session api_handler_session http://${REPO_IP}:8080
32 ${data}= Get Binary File ${SERVICE_INSTANTIATION_TEMPLATE}
33 &{headers}= Create Dictionary Authorization=${BASIC_AUTH} Content-Type=application/json Accept=application/json
34 ${service_instantiation_request}= Post On Session api_handler_session /onap/so/infra/serviceInstantiation/v7/serviceInstances data=${data} headers=${headers}
35 Log to Console \nStatus code received: ${service_instantiation_request.status_code}
36 Log to Console Content received: ${service_instantiation_request.content}
37 Should Be Equal As Strings '${service_instantiation_request.status_code}' '202'
39 ${service_instantiation_json_response}= Evaluate json.loads(r"""${service_instantiation_request.content}""", strict=False) json
40 ${request_ID}= Set Variable ${service_instantiation_json_response}[requestReferences][requestId]
41 ${service_instance_Id}= Set Variable ${service_instantiation_json_response}[requestReferences][instanceId]
42 ${actual_request_state}= Set Variable ""
44 FOR ${INDEX} IN RANGE ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT}
45 ${orchestration_status_request}= Get On Session api_handler_session /onap/so/infra/orchestrationRequests/v7/${request_ID}
46 Log to Console Orchestration status code received: ${orchestration_status_request.status_code}
47 Log to Console Orchestration Content received: ${orchestration_status_request.content}
48 ${orchestration_json_response}= Evaluate json.loads(r"""${orchestration_status_request.content}""", strict=False) json
49 ${actual_request_state}= Set Variable ${orchestration_json_response}[request][requestStatus][requestState]
50 Log To Console Received actual repsonse status:${actual_request_state}
51 Run Keyword If '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED' Exit For Loop
52 Log to Console Will try again after ${SLEEP_INTERVAL_SEC} seconds
53 Sleep ${SLEEP_INTERVAL_SEC}s
56 Log To Console Final repsonse status received: ${actual_request_state}
57 Should Be Equal As Strings '${actual_request_state}' 'COMPLETE'
58 Set Global Variable ${service_instance_Id}
60 Invoke CNF Instantiation
61 Run Keyword If "${service_instance_Id}"!="${EMPTY}" Log to Console Service Instance ID :${service_instance_Id} received
62 ... ELSE Fail Log to Console Invalid Service Instance ID :${service_instance_Id} recieved
64 ${data}= Get Binary File ${CNF_RESOURCE_INSTANTIATION_TEMPLATE}
65 ${cnf_instantiate_request_json}= Evaluate json.loads(r'''${data}''', strict=False) json
66 Set To Dictionary ${cnf_instantiate_request_json}[requestDetails][relatedInstanceList][0][relatedInstance] instanceId=${service_instance_Id}
67 ${cnf_instantiate_request_string}= Evaluate json.dumps(${cnf_instantiate_request_json}) json
69 Create Session api_handler_session http://${REPO_IP}:8080
70 &{headers}= Create Dictionary Authorization=${BASIC_AUTH} Content-Type=application/json Accept=application/json
71 ${cnf_instantiate_request}= Post On Session api_handler_session /onap/so/infra/serviceInstantiation/v7/serviceInstances/${service_instance_Id}/cnfs data=${cnf_instantiate_request_string} headers=${headers}
72 Log to Console \nStatus code received: ${cnf_instantiate_request.status_code}
73 Log to Console Content received: ${cnf_instantiate_request.content}
74 Should Be Equal As Strings '${cnf_instantiate_request.status_code}' '202'
76 ${cnf_instantiate_json_response}= Evaluate json.loads(r"""${cnf_instantiate_request.content}""") json
77 ${request_ID}= Set Variable ${cnf_instantiate_json_response}[requestReferences][requestId]
78 ${actual_request_state}= Set Variable ""
79 ${cnf_instance_Id}= Set Variable ${cnf_instantiate_json_response}[requestReferences][instanceId]
81 FOR ${INDEX} IN RANGE ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT}
82 ${orchestration_status_request}= Get On Session api_handler_session /onap/so/infra/orchestrationRequests/v7/${request_ID}
83 Run Keyword If '${orchestration_status_request.status_code}' == '200' log to console \nexecuted with expected result
84 Log To Console ${orchestration_status_request.content}
85 ${orchestration_json_response}= Evaluate json.loads(r"""${orchestration_status_request.content}""", strict=False) json
86 ${actual_request_state}= Set Variable ${orchestration_json_response}[request][requestStatus][requestState]
87 Run Keyword If '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED' Exit For Loop
88 Log To Console Will try again after ${SLEEP_INTERVAL_SEC} seconds
89 SLEEP ${SLEEP_INTERVAL_SEC}s
92 ${service_instance_Id}= Set Variable ${orchestration_json_response}[request][instanceReferences][serviceInstanceId]
93 Log To Console Final repsonse status received: ${actual_request_state}
94 Should Be Equal As Strings '${actual_request_state}' 'COMPLETE'
96 Verify Kubernetes Resources ${EXPECTED_NUM_OF_RESOURCES_AFTER_INSTANTIATION}
97 Set Global Variable ${cnf_instance_Id}
100 Run Keyword If "${cnf_instance_Id}" != "${EMPTY}" Log to Console CNF Instance ID :${cnf_instance_Id} received
101 ... ELSE Fail Log to Console Invalid CNF Instance ID :${cnf_instance_Id} recieved
102 Run Keyword If "${service_instance_Id}" != "${EMPTY}" Log to Console CNF Instance ID :${service_instance_Id} received
103 ... ELSE Fail Log to Console Invalid CNF Instance ID :${service_instance_Id} recieved
105 Create Session api_handler_session http://${REPO_IP}:8080
106 ${data}= Get Binary File ${CNF_RESOURCE_DELETE_TEMPLATE}
107 &{headers}= Create Dictionary Authorization=${BASIC_AUTH} Content-Type=application/json Accept=application/json
108 ${cnf_delete_request}= Delete On Session api_handler_session /onap/so/infra/serviceInstantiation/v7/serviceInstances/${service_instance_Id}/cnfs/${cnf_instance_Id} data=${data} headers=${headers}
109 Log to Console \nStatus code received: ${cnf_delete_request.status_code}
110 Log to Console Content received: ${cnf_delete_request.content}
111 Should Be Equal As Strings '${cnf_delete_request.status_code}' '202'
113 ${cnf_delete_json_response}= Evaluate json.loads(r"""${cnf_delete_request.content}""") json
114 ${request_ID}= Set Variable ${cnf_delete_json_response}[requestReferences][requestId]
115 ${actual_request_state}= Set Variable ""
117 FOR ${INDEX} IN RANGE ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT}
118 ${orchestration_status_request}= Get On Session api_handler_session /onap/so/infra/orchestrationRequests/v7/${request_ID}
119 Run Keyword If '${orchestration_status_request.status_code}' == '200' log to console \nexecuted with expected result
120 Log To Console ${orchestration_status_request.content}
121 ${orchestration_json_response}= Evaluate json.loads(r"""${orchestration_status_request.content}""") json
122 ${actual_request_state}= Set Variable ${orchestration_json_response}[request][requestStatus][requestState]
123 Run Keyword If '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED' Exit For Loop
124 Log To Console Will try again after ${SLEEP_INTERVAL_SEC} seconds
125 SLEEP ${SLEEP_INTERVAL_SEC}s
128 Log To Console Final repsonse status received: ${actual_request_state}
129 Should Be Equal As Strings '${actual_request_state}' 'COMPLETE'
131 Verify Kubernetes Resources ${EXPECTED_NUM_OF_RESOURCES_AFTER_DELETE}
133 Delete Service Instance
134 Run Keyword If "${service_instance_Id}" != "${EMPTY}" Log to Console CNF Instance ID :${service_instance_Id} received
135 ... ELSE Fail Log to Console Invalid Service Instance ID :${service_instance_Id} recieved
137 Create Session api_handler_session http://${REPO_IP}:8080
138 ${data}= Get Binary File ${SERVICE_DELETE_TEMPLATE}
139 &{headers}= Create Dictionary Authorization=${BASIC_AUTH} Content-Type=application/json Accept=application/json
140 ${service_delete_request}= Delete On Session api_handler_session /onap/so/infra/serviceInstantiation/v7/serviceInstances/${service_instance_Id} data=${data} headers=${headers}
141 ${service_delete_json_response}= Evaluate json.loads(r"""${service_delete_request.content}""") json
142 Log to Console \nStatus code received: ${service_delete_request.status_code}
143 Log to Console Content received: ${service_delete_request.content}
144 Should Be Equal As Strings '${service_delete_request.status_code}' '202'
146 ${request_ID}= Set Variable ${service_delete_json_response}[requestReferences][requestId]
147 ${actual_request_state}= Set Variable ""
149 FOR ${INDEX} IN RANGE ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT}
150 ${orchestration_status_request}= Get On Session api_handler_session /onap/so/infra/orchestrationRequests/v7/${request_ID}
151 Run Keyword If '${orchestration_status_request.status_code}' == '200' log to console \nexecuted with expected result
152 Log To Console ${orchestration_status_request.content}
153 ${orchestration_json_response}= Evaluate json.loads(r"""${orchestration_status_request.content}""") json
154 ${actual_request_state}= Set Variable ${orchestration_json_response}[request][requestStatus][requestState]
155 Run Keyword If '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED' Exit For Loop
156 Log To Console Will try again after ${SLEEP_INTERVAL_SEC} seconds
157 SLEEP ${SLEEP_INTERVAL_SEC}s
160 Log To Console Final repsonse status received: ${actual_request_state}
161 Should Be Equal As Strings '${actual_request_state}' 'COMPLETE'
164 Verify Kubernetes Resources
165 [Arguments] ${expected_number_resources}
167 Create Api Client ${KIND_CLUSTER_KUBE_CONFIG_FILE}
169 Log To Console Retrieving number of services using selector '${MARIADB_LABEL_SELECTOR}'
170 ${no_of_mariadb_services}= Get Number Of Services In Namespace label_selector=${MARIADB_LABEL_SELECTOR}
171 Should Be Equal As Integers ${no_of_mariadb_services} ${expected_number_resources} Unexpected number of services received for ${MARIADB_LABEL_SELECTOR}
173 Log To Console Retrieving number of stateful set using selector '${MARIADB_LABEL_SELECTOR}'
174 ${no_of_mariadb_stateful_set}= Get Number Of Stateful Set In Namespace label_selector=${MARIADB_LABEL_SELECTOR}
175 Should Be Equal As Integers ${no_of_mariadb_stateful_set} ${expected_number_resources} Unexpected number of stateful sets received for ${MARIADB_LABEL_SELECTOR}
177 Log To Console Retrieving number of services using selector '${NGINX_LABEL_SELECTOR}'
178 ${no_of_nginx_services}= Get Number Of Services In Namespace label_selector=${NGINX_LABEL_SELECTOR}
179 Should Be Equal As Integers ${no_of_nginx_services} ${expected_number_resources} Unexpected number of services received for ${NGINX_LABEL_SELECTOR}
181 Log To Console Retrieving number of deployments using selector '${NGINX_LABEL_SELECTOR}'
182 ${no_of_nginx_deployments}= Get Number Of Deployments In Namespace label_selector=${NGINX_LABEL_SELECTOR}
183 Should Be Equal As Integers ${no_of_nginx_deployments} ${expected_number_resources} Unexpected number of deployments received for ${NGINX_LABEL_SELECTOR}