X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Flibraries%2FDaeximKeywords.robot;h=f52f619bcd2a5a7a9d653bb91423707b1e39ab5a;hb=666b3019d40b612cfae2cdab2832d342e6e13706;hp=2df02cf1cafa05ed2f0bf2bdf06e503547d0ae15;hpb=9634f7daf93e0554390fee8e8e158b2d3ad2fdd7;p=integration%2Ftest.git diff --git a/csit/libraries/DaeximKeywords.robot b/csit/libraries/DaeximKeywords.robot index 2df02cf1ca..f52f619bcd 100644 --- a/csit/libraries/DaeximKeywords.robot +++ b/csit/libraries/DaeximKeywords.robot @@ -1,106 +1,147 @@ *** Settings *** Library OperatingSystem Library SSHLibrary +Library Collections +Library RequestsLibrary Resource ClusterManagement.robot -Resource ../variables/Variables.robot Resource ../variables/daexim/DaeximVariables.robot -Variables ../variables/Variables.py Resource ../variables/Variables.robot -Resource Utils.robot +Resource SSHKeywords.robot *** Keywords *** -Verify Backup Files +Verify Export Files [Arguments] ${host_index} [Documentation] Verify if the backedup files are present in the controller ${host_index} Builtin.Convert To Integer ${host_index} - ${cfg} ${rc} ClusterManagement.Run Bash Command On Member ls -lart ${WORKSPACE}/${BUNDLEFOLDER}/daexim/${BKP_DATA_FILE} ${host_index} - Builtin.Run Keyword If "${rc}" != "0" Builtin.Fail Return code is not equal to zero on this command - ... ELSE Builtin.Log ${cfg} - ${mdl} ${rc} ClusterManagement.Run Bash Command On Member ls -lart ${WORKSPACE}/${BUNDLEFOLDER}/daexim/${MODELS_FILE} ${host_index} - Builtin.Run Keyword If "${rc}" != "0" Builtin.Fail Return code is not equal to zero on this command - ... ELSE Builtin.Log ${mdl} - ${opr} ${rc} ClusterManagement.Run Bash Command On Member ls -lart ${WORKSPACE}/${BUNDLEFOLDER}/daexim/${BKP_OPER_FILE} ${host_index} - Builtin.Run Keyword If "${rc}" != "0" Builtin.Fail Return code is not equal to zero on this command - ... ELSE Builtin.Log ${opr} - -Cleanup The Backup Files + ${cfg} ClusterManagement.Run Bash Command On Member ls -lart ${WORKSPACE}/${BUNDLEFOLDER}/daexim/${EXP_DATA_FILE} ${host_index} + Builtin.Log ${cfg} + Builtin.Should Match Regexp ${cfg} .*${EXP_DATA_FILE} + ${mdl} ClusterManagement.Run Bash Command On Member ls -lart ${WORKSPACE}/${BUNDLEFOLDER}/daexim/${MODELS_FILE} ${host_index} + Builtin.Log ${mdl} + Builtin.Should Match Regexp ${mdl} .*${MODELS_FILE} + ${opr} ClusterManagement.Run Bash Command On Member ls -lart ${WORKSPACE}/${BUNDLEFOLDER}/daexim/${EXP_OPER_FILE} ${host_index} + Builtin.Log ${opr} + Builtin.Should Match Regexp ${opr} .*${EXP_OPER_FILE} + +Verify Export Files Not Present [Arguments] ${host_index} - [Documentation] Verify if the backup directory exists and delete the files if needed + [Documentation] Verify if the backedup files are not present in the controller ${host_index} Builtin.Convert To Integer ${host_index} - ${output} ${rc} ClusterManagement.Run Bash Command On Member sudo rm -rf ${WORKSPACE}/${BUNDLEFOLDER}/daexim ${host_index} - Builtin.Run Keyword If "${rc}" != "0" Fail Return code is not equal to zero on this command - ... ELSE Builtin.Log ${output} + ${cfg} ClusterManagement.Run Bash Command On Member ls -lart ${WORKSPACE}/${BUNDLEFOLDER}/daexim/${EXP_DATA_FILE} ${host_index} + Builtin.Log ${cfg} + Builtin.Should Not Match Regexp ${cfg} .*${EXP_DATA_FILE} + ${mdl} ClusterManagement.Run Bash Command On Member ls -lart ${WORKSPACE}/${BUNDLEFOLDER}/daexim/${MODELS_FILE} ${host_index} + Builtin.Log ${mdl} + Builtin.Should Not Match Regexp ${mdl} .*${MODELS_FILE} + ${opr} ClusterManagement.Run Bash Command On Member ls -lart ${WORKSPACE}/${BUNDLEFOLDER}/daexim/${EXP_OPER_FILE} ${host_index} + Builtin.Log ${opr} + Builtin.Should Not Match Regexp ${opr} .*${EXP_OPER_FILE} -Verify Backup Status +Cleanup The Export Files + [Arguments] ${host_index} + [Documentation] Verify if the export directory exists and delete the files if needed + ${host_index} Builtin.Convert To Integer ${host_index} + Builtin.Run Keyword And Ignore Error ClusterManagement.Delete And Check Member List Or All ${TOPOLOGY_URL} ${host_index} + ${output1} Builtin.Run Keyword and IgnoreError ClusterManagement.Run Bash Command On Member sudo rm -rf ${WORKSPACE}/${BUNDLEFOLDER}/daexim;clear ${host_index} + ${output2} Builtin.Run Keyword and IgnoreError ClusterManagement.Run Bash Command On Member rm -rf ${WORKSPACE}/${BUNDLEFOLDER}/daexim;clear ${host_index} + ${output} ClusterManagement.Run Bash Command On Member ls -lart ${WORKSPACE}/${BUNDLEFOLDER} ${host_index} + Builtin.Log ${output} + Builtin.Should Not Match Regexp ${output} daexim + +Verify Export Status [Arguments] ${status} ${controller_index} - [Documentation] Verify backup status is as expected - ${response_json} ClusterManagement.Post As Json To Member ${STATUS_BACKUP_URL} ${EMPTY} ${controller_index} + [Documentation] Verify export status is as expected + ${response_json} ClusterManagement.Post As Json To Member ${STATUS_EXPORT_URL} ${EMPTY} ${controller_index} Builtin.Log ${response_json} ${response_json} Builtin.Convert To String ${response_json} - Verify Backup Status Message ${status} ${response_json} + Verify Export Status Message ${status} ${response_json} -Verify Scheduled Backup Timestamp +Verify Scheduled Export Timestamp [Arguments] ${controller_index} ${time} - [Documentation] Verify backup timestamp is as expected - ${response_json} ClusterManagement.Post As Json To Member ${STATUS_BACKUP_URL} ${EMPTY} ${controller_index} + [Documentation] Verify export timestamp is as expected + ${response_json} ClusterManagement.Post As Json To Member ${STATUS_EXPORT_URL} ${EMPTY} ${controller_index} Builtin.Log ${response_json} ${response_json} Builtin.Convert To String ${response_json} Builtin.Should Match Regexp ${response_json} .*"run-at": "${time}" -Verify Backup Status Message +Verify Export Status Message [Arguments] ${status} ${output} - [Documentation] Verify backup restconf response message is as expected + [Documentation] Verify export restconf response message is as expected Builtin.Should Match Regexp ${output} "status": "${status}" - Builtin.Run Keyword If "${status}" == "initial" or "${status}" == "scheduled" Verify Json Files Not Present ${output} + Builtin.Run Keyword If "${status}" == "initial" or "${status}" == "scheduled" or "${status}" == "skipped" Verify Json Files Not Present ${output} ... ELSE Verify Json Files Present ${output} Verify Json Files Present - [Arguments] ${output} ${config_json}=${BKP_DATA_FILE} ${models_json}=${MODELS_FILE} ${operational_json}=${BKP_OPER_FILE} - [Documentation] Verify if the json files are generated after a backup/export + [Arguments] ${output} ${config_json}=${EXP_DATA_FILE} ${models_json}=${MODELS_FILE} ${operational_json}=${EXP_OPER_FILE} + [Documentation] Verify if the json files are generated after a export/export Builtin.Should Match Regexp ${output} .*${config_json} Builtin.Should Match Regexp ${output} .*${models_json} Builtin.Should Match Regexp ${output} .*${operational_json} Builtin.Log Found all Json Files Verify Json Files Not Present - [Arguments] ${output} ${config_json}=${BKP_DATA_FILE} ${models_json}=${MODELS_FILE} ${operational_json}=${BKP_OPER_FILE} + [Arguments] ${output} ${config_json}=${EXP_DATA_FILE} ${models_json}=${MODELS_FILE} ${operational_json}=${EXP_OPER_FILE} [Documentation] Verify if the json files are not present under the daexim folder Builtin.Should Not Match Regexp ${output} .*${config_json} Builtin.Should Not Match Regexp ${output} .*${models_json} Builtin.Should Not Match Regexp ${output} .*${operational_json} Builtin.Log Did not Find all Json Files -Schedule Backup - [Arguments] ${controller_index} ${TIME}=500 ${exclude}=${FALSE} ${MODULE}=${EMPTY} ${STORE}=${EMPTY} - ${file} Builtin.Set Variable If ${exclude} ${BACKUP_EXCLUDE_FILE} ${BACKUP_FILE} - ${JSON1} OperatingSystem.Get File ${file} - ${JSON2} Builtin.Replace Variables ${JSON1} - Cleanup The Backup Files ${controller_index} - ${response_json} ClusterManagement.Post As Json To Member ${SCHEDULE_BACKUP_URL} ${JSON2} ${controller_index} +Schedule Export + [Arguments] ${controller_index} ${time}=500 ${exclude}=${FALSE} ${module}=${EMPTY} ${store}=${EMPTY} ${flag}=false + ... ${include}=${FALSE} + [Documentation] Schedule Export job + ${file} = Builtin.Run Keyword If ${include} Builtin.Set Variable ${EXPORT_INCLUDE_FILE} + ... ELSE Builtin.Set Variable If ${exclude} ${EXPORT_EXCLUDE_FILE} ${EXPORT_FILE} + ${json} OperatingSystem.Get File ${file} + ${json} Builtin.Replace Variables ${json} + Cleanup The Export Files ${controller_index} + ${response_json} ClusterManagement.Post As Json To Member ${SCHEDULE_EXPORT_URL} ${json} ${controller_index} + Builtin.Log ${response_json} -Schedule Exclude Backup +Schedule Exclude Export [Arguments] ${controller_index} ${store} ${module} - [Documentation] Schedules a backup with exclude option. Returns the file that has the excluded backup. + [Documentation] Schedules a export with exclude option. Returns the file that has the excluded export. ${controller_index} Builtin.Convert To Integer ${controller_index} ${host} ClusterManagement.Resolve IP Address For Member ${controller_index} - Schedule Backup ${controller_index} 500 ${TRUE} ${module} ${store} - Builtin.Wait Until Keyword Succeeds 10 sec 5 sec Verify Backup Status complete ${controller_index} - Verify Backup Files ${controller_index} - Copy Backup Directory To Test VM ${host} - ${backup_file} Builtin.Set Variable If '${store}' == 'operational' ${BKP_OPER_FILE} ${BKP_DATA_FILE} - ${file_path} OperatingSystem.Join Path ${BKP_DIR}${host} ${backup_file} + Schedule Export ${controller_index} 500 ${TRUE} ${module} ${store} + Builtin.Wait Until Keyword Succeeds 10 sec 5 sec Verify Export Status complete ${controller_index} + Verify Export Files ${controller_index} + Copy Export Directory To Test VM ${host} + ${export_file} Builtin.Set Variable If '${store}' == 'operational' ${EXP_OPER_FILE} ${EXP_DATA_FILE} + ${file_path} OperatingSystem.Join Path ${EXP_DIR}${host} ${export_file} [Return] ${file_path} -Cancel Backup +Schedule Include Export + [Arguments] ${controller_index} ${store} ${module}=${EMPTY} ${exclude}=${FALSE} + [Documentation] Schedules a export with include option. Returns the file that has the included export. + ${controller_index} Builtin.Convert To Integer ${controller_index} + ${host} ClusterManagement.Resolve IP Address For Member ${controller_index} + ${time} Builtin.Set Variable 500 + ${file} = Builtin.Set Variable If ${exclude} ${EXPORT_INCEXCLUDE_FILE} ${EXPORT_INCLUDE_FILE} + ${json} OperatingSystem.Get File ${file} + ${json} Builtin.Replace Variables ${json} + Cleanup The Export Files ${controller_index} + ${response_json} ClusterManagement.Post As Json To Member ${SCHEDULE_EXPORT_URL} ${json} ${controller_index} + Builtin.Log ${response_json} + Builtin.Wait Until Keyword Succeeds 10 sec 5 sec Verify Export Status complete ${controller_index} + Verify Export Files ${controller_index} + Copy Export Directory To Test VM ${host} + ${export_file} Builtin.Set Variable If '${store}' == 'operational' ${EXP_OPER_FILE} ${EXP_DATA_FILE} + ${file_path} OperatingSystem.Join Path ${EXP_DIR}${host} ${export_file} + [Return] ${file_path} + +Cancel Export [Arguments] ${controller_index} [Documentation] Cancel the export job - ClusterManagement.Post As Json To Member ${CANCEL_BACKUP_URL} ${EMPTY} ${controller_index} + ${response_json} ClusterManagement.Post As Json To Member ${CANCEL_EXPORT_URL} ${EMPTY} ${controller_index} + Builtin.Log ${response_json} Return ConnnectionID [Arguments] ${system}=${ODL_SYSTEM_IP} ${prompt}=${DEFAULT_LINUX_PROMPT} ${prompt_timeout}=${DEFAULT_TIMEOUT} ${user}=${ODL_SYSTEM_USER} ${password}=${ODL_SYSTEM_PASSWORD} [Documentation] Returns the connection of any host. Defaults to controller ${conn_id} SSHLibrary.Open Connection ${system} prompt=${prompt} timeout=${prompt_timeout} - Utils.Flexible SSH Login ${user} ${password} + SSHKeywords.Flexible SSH Login ${user} ${password} [Return] ${conn_id} Cleanup Directory @@ -109,10 +150,10 @@ Cleanup Directory OperatingSystem.Empty Directory ${dir} OperatingSystem.Remove Directory ${dir} -Copy Backup Directory To Test VM +Copy Export Directory To Test VM [Arguments] ${host} [Documentation] This keyword copies the daexim folder genereated in the controller to robot vm. This is done to editing if needed on the json files - ${new_dir} Builtin.Set Variable ${BKP_DIR}${host} + ${new_dir} Builtin.Set Variable ${EXP_DIR}${host} ${directory_exist} Builtin.Run Keyword And Return Status OperatingSystem.Directory Should Exist ${new_dir} Builtin.Run Keyword If ${directory_exist} Cleanup Directory ${new_dir} ${connections} Return ConnnectionID ${host} @@ -122,5 +163,77 @@ Copy Backup Directory To Test VM SSHLibrary.Close Connection ${output} OperatingSystem.List Files In Directory ${new_dir} Builtin.Log ${output} - ${fl} OperatingSystem.Get File ${new_dir}/${BKP_DATA_FILE} + ${fl} OperatingSystem.Get File ${new_dir}/${EXP_DATA_FILE} Builtin.Log ${fl} + +Copy Config Data To Controller + [Arguments] ${host_index} + [Documentation] This keyword copies the daexim folder under variables folder to the Controller + ${host_index} Builtin.Convert To Integer ${host_index} + ${host} ClusterManagement.Resolve IP Address For Member ${host_index} + ${connections} Return ConnnectionID ${host} + SSHLibrary.Switch Connection ${connections} + SSHLibrary.Put Directory ${CURDIR}/${DAEXIM_DATA_DIRECTORY} ${WORKSPACE}/${BUNDLEFOLDER}/ mode=664 + SSHLibrary.Close Connection + +Mount Netconf Endpoint + [Arguments] ${endpoint} ${host_index} + [Documentation] Mount a netconf endpoint + ${ENDPOINT} Builtin.Set Variable ${endpoint} + ${json} OperatingSystem.Get File ${CURDIR}/${NETCONF_PAYLOAD_JSON} + ${json} Builtin.Replace Variables ${json} + Builtin.Log ${json} + ${resp} ClusterManagement.Put As Json To Member ${NETCONF_MOUNT_URL}${endpoint} ${json} ${host_index} + Builtin.Log ${resp} + +Fetch Status Information From Netconf Endpoint + [Arguments] ${endpoint} ${host_index} + [Documentation] This keyword fetches netconf endpoint information + ${resp} ClusterManagement.Get From Member ${NTCF_TPLG_OPR_URL}${endpoint} ${host_index} + ${output1} Builtin.Set Variable ${resp} + ${output} RequestsLibrary.To Json ${output1} + Builtin.Log ${output} + ${status} Collections.Get From Dictionary ${output['node'][0]} netconf-node-topology:connection-status + [Return] ${status} ${output} + +Verify Status Information + [Arguments] ${endpoint} ${host_index} ${itr}=50 + [Documentation] Verify if a netconf endpoint status is connected by running in a loop + FOR ${i} IN RANGE ${itr} + ${sts} ${op} Fetch Status Information From Netconf Endpoint ${endpoint} ${host_index} + Builtin.Log ${i} + Builtin.Exit For Loop If "${sts}" == "${NTCF_OPR_STATUS}" + END + [Return] ${sts} ${op} + +Verify Netconf Mount + [Arguments] ${endpoint} ${host_index} + [Documentation] Verify if a netconf endpoint is mounted + ${sts1} ${output} Verify Status Information ${endpoint} ${host_index} + ${ep} Collections.Get From Dictionary ${output['node'][0]} node-id + ${port} Collections.Get From Dictionary ${output['node'][0]} netconf-node-topology:port + ${port} Builtin.Convert To String ${port} + Builtin.Should Be Equal ${endpoint} ${ep} + Builtin.Should Be Equal ${port} ${NETCONF_PORT} + +Schedule Import + [Arguments] ${host_index} ${result}=true ${reason}=${EMPTY} ${mdlflag}=${MDL_DEF_FLAG} ${strflag}=${STR_DEF_FLAG} + [Documentation] Schedule an Import API + ${modelflag} Builtin.Set Variable ${mdlflag} + ${storeflag} Builtin.Set Variable ${strflag} + ${json} OperatingSystem.Get File ${CURDIR}/${IMPORT_PAYLOAD} + ${json} Builtin.Replace Variables ${json} + Builtin.Log ${json} + ${resp} Builtin.Wait Until Keyword Succeeds 120 seconds 10 seconds ClusterManagement.Post As Json To Member ${IMPORT_URL} ${json} + ... ${host_index} + Builtin.Log ${resp} + Builtin.Should Match Regexp ${resp} .*"result": ${result} + Builtin.Run Keyword If "${reason}" != "${EMPTY}" Builtin.Should Match Regexp ${response_json} .*"reason":"${reason} + +Cleanup Cluster Export Files + [Arguments] ${member_index_list}=${EMPTY} + [Documentation] This keyword cleansup export files of a cluster + ${index_list} = List Indices Or All given_list=${member_index_list} + FOR ${index} IN @{index_list} # usually: 1, 2, 3. + DaeximKeywords.Cleanup The Export Files ${index} + END