Updates for SO Containers and change mso to so
Issue-ID: INT-621
Change-Id: Iad1ae6f08e91c46482d49b6cf1e3e41ebf0cd271
Signed-off-by: Brian Freeman <bf1936@att.com>
diff --git a/robot/resources/so_interface.robot b/robot/resources/so_interface.robot
new file mode 100644
index 0000000..70faf3b
--- /dev/null
+++ b/robot/resources/so_interface.robot
@@ -0,0 +1,113 @@
+*** Settings ***
+Documentation The main interface for interacting with MSO. It handles low level stuff like managing the http request library and MSO required fields
+Library RequestsLibrary
+Library UUID
+Library OperatingSystem
+Library Collections
+Resource global_properties.robot
+Resource ../resources/json_templater.robot
+*** Variables ***
+${MSO_HEALTH_CHECK_PATH} /manage/health
+${MSO_ENDPOINT} ${GLOBAL_MSO_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SO_IP_ADDR}:${GLOBAL_MSO_SERVER_PORT}
+${SO_APIHAND_ENDPOINT} ${GLOBAL_MSO_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SO_IP_ADDR}:${GLOBAL_MSO_APIHAND_SERVER_PORT}
+${SO_ASDCHAND_ENDPOINT} ${GLOBAL_MSO_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SO_IP_ADDR}:${GLOBAL_MSO__ASDCHAND_SERVER_PORT}
+${SO_BPMN_ENDPOINT} ${GLOBAL_MSO_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SO_IP_ADDR}:${GLOBAL_MSO_BPMN_SERVER_PORT}
+${SO_CATDB_ENDPOINT} ${GLOBAL_MSO_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SO_IP_ADDR}:${GLOBAL_MSO__CATDB_SERVER_PORT}
+${SO_OPENSTACK_ENDPOINT} ${GLOBAL_MSO_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SO_IP_ADDR}:${GLOBAL_MSO_OPENSTACK_SERVER_PORT}
+${SO_REQDB_ENDPOINT} ${GLOBAL_MSO_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SO_IP_ADDR}:${GLOBAL_MSO_REQDB_SERVER_PORT}
+${SO_SDNC_ENDPOINT} ${GLOBAL_MSO_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SO_IP_ADDR}:${GLOBAL_MSO_SDNC_SERVER_PORT}
+${SO_VFC_ENDPOINT} ${GLOBAL_MSO_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SO_IP_ADDR}:${GLOBAL_MSO_VFC_SERVER_PORT}
+
+*** Keywords ***
+Run SO Global Health Check
+ Run SO Container Health Check API_HANDLER ${SO_APIHAND_ENDPOINT}
+ Run SO Container Health Check ASDC_HANDLER ${SO_ASDCHAND_ENDPOINT}
+ Run SO Container Health Check BPMN_INFRA ${SO_BPMN_ENDPOINT}
+ Run SO Container Health Check CATALOG_DB ${SO_CATDB_ENDPOINT}
+ Run SO Container Health Check OPENSTACK_INFRA ${SO_OPENSTACK_ENDPOINT}
+ Run SO Container Health Check REQUEST_DB ${SO_REQDB_ENDPOINT}
+ Run SO Container Health Check SDNC_INFRA ${SO_SDNC_ENDPOINT}
+ Run SO Container Health Check VFC_INFRA ${SO_VFC_ENDPOINT}
+
+
+Run SO Container Health Check
+ [Documentation] Runs an MSO global health check
+ [Arguments] ${so_endpoint_label} ${so_endpoint}
+ ${auth}= Create List ${GLOBAL_MSO_USERNAME} ${GLOBAL_MSO_PASSWORD}
+ ${session}= Create Session mso ${so_endpoint}
+ ${uuid}= Generate UUID
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID}
+ ${resp}= Get Request mso ${MSO_HEALTH_CHECK_PATH} headers=${headers}
+ Should Be Equal As Strings ${resp.status_code} 200
+
+Run MSO Get ModelInvariantId
+ [Documentation] Runs an MSO Get ModelInvariantID for ClosedLoop Polieis
+ [Arguments] ${service_model_name} ${vf_module_label}=NULL
+ ${param_dict}= Create Dictionary serviceModelName ${service_model_name}
+ ${param}= Evaluate urllib.urlencode(${param_dict}) urllib
+ ${data_path}= Catenate SEPARATOR= /ecomp/mso/catalog/v2/serviceVnfs? ${param}
+ ${resp}= Run MSO Get Request ${data_path}
+ Log ${resp.json()}
+ # ${resp.json()['serviceVnfs'][0]['vfModules'][0]['vfModuleLabel'] should be 'base_vpkg'
+ ${model_invariant_id}= Set Variable NULL
+ @{ITEMS}= Copy List ${resp.json()['serviceVnfs']}
+ :FOR ${ELEMENT} IN @{ITEMS}
+ \ Log ${ELEMENT['vfModules']}
+ \ ${model_invariant_id} Set Variable If ('${vf_module_label}' in '${ELEMENT['vfModules'][0]['vfModuleLabel']}') ${ELEMENT['modelInfo']['modelInvariantUuid']} NULL
+ \ Exit For Loop If '${model_invariant_id}' != 'NULL'
+ [Return] ${model_invariant_id}
+
+Run MSO Get Request
+ [Documentation] Runs an MSO get request
+ [Arguments] ${data_path} ${accept}=application/json
+ ${auth}= Create List ${GLOBAL_MSO_USERNAME} ${GLOBAL_MSO_PASSWORD}
+ Log Creating session ${MSO_ENDPOINT}
+ ${session}= Create Session mso ${MSO_ENDPOINT} auth=${auth}
+ ${uuid}= Generate UUID
+ ${headers}= Create Dictionary Accept=${accept} Content-Type=application/json X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID}
+ ${resp}= Get Request mso ${data_path} headers=${headers}
+ Log Received response from mso ${resp.text}
+ [Return] ${resp}
+
+Poll MSO Get Request
+ [Documentation] Runs an MSO get request until a certain status is received. valid values are COMPLETE
+ [Arguments] ${data_path} ${status}
+ ${auth}= Create List ${GLOBAL_MSO_USERNAME} ${GLOBAL_MSO_PASSWORD}
+ Log Creating session ${MSO_ENDPOINT}
+ ${session}= Create Session mso ${MSO_ENDPOINT} auth=${auth}
+ ${uuid}= Generate UUID
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID}
+ #do this until it is done
+ :FOR ${i} IN RANGE 20
+ \ ${resp}= Get Request mso ${data_path} headers=${headers}
+ \ Should Not Contain ${resp.text} FAILED
+ \ Log ${resp.json()['request']['requestStatus']['requestState']}
+ \ ${exit_loop}= Evaluate "${resp.json()['request']['requestStatus']['requestState']}" == "${status}"
+ \ Exit For Loop If ${exit_loop}
+ \ Sleep 15s
+ Log Received response from mso ${resp.text}
+ [Return] ${resp}
+
+Run MSO Post request
+ [Documentation] Runs an MSO post request
+ [Arguments] ${data_path} ${data}
+ ${auth}= Create List ${GLOBAL_MSO_USERNAME} ${GLOBAL_MSO_PASSWORD}
+ Log Creating session ${MSO_ENDPOINT}
+ ${session}= Create Session mso ${MSO_ENDPOINT} auth=${auth}
+ ${uuid}= Generate UUID
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID}
+ ${resp}= Post Request mso ${data_path} data=${data} headers=${headers}
+ Log Received response from mso ${resp.text}
+ [Return] ${resp}
+
+Run MSO Delete request
+ [Documentation] Runs an MSO Delete request
+ [Arguments] ${data_path} ${data}
+ ${auth}= Create List ${GLOBAL_MSO_USERNAME} ${GLOBAL_MSO_PASSWORD}
+ Log Creating session ${MSO_ENDPOINT}
+ ${session}= Create Session mso ${MSO_ENDPOINT} auth=${auth}
+ ${uuid}= Generate UUID
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID}
+ ${resp}= Delete Request mso ${data_path} ${data} headers=${headers}
+ Log Received response from mso ${resp.text}
+ [Return] ${resp}