+
+Copy Config Data To Controller
+ [Documentation] This keyword copies the daexim folder under variables folder to the Controller
+ [Arguments] ${host_index}
+ ${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
+ [Documentation] Mount a netconf endpoint
+ [Arguments] ${endpoint} ${host_index}
+ ${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_NODE_URL}=${endpoint} ${json} ${host_index}
+ Builtin.Log ${resp}
+
+Fetch Status Information From Netconf Endpoint
+ [Documentation] This keyword fetches netconf endpoint information
+ [Arguments] ${endpoint} ${host_index}
+ ${resp} ClusterManagement.Get From Member ${NETCONF_NODE_URL}=${endpoint} ${host_index}
+ ${output1} Builtin.Set Variable ${resp}
+ ${output} RequestsLibrary.To Json ${output1}
+ Builtin.Log ${output}
+ ${status} Collections.Get From Dictionary
+ ... ${output['network-topology:node'][0]}
+ ... netconf-node-topology:connection-status
+ RETURN ${status} ${output}
+
+Verify Status Information
+ [Documentation] Verify if a netconf endpoint status is connected by running in a loop
+ [Arguments] ${endpoint} ${host_index} ${itr}=50
+ FOR ${i} IN RANGE ${itr}
+ ${sts} ${op} Fetch Status Information From Netconf Endpoint ${endpoint} ${host_index}
+ Builtin.Log ${i}
+ IF "${sts}" == "${NTCF_OPR_STATUS}" BREAK
+ END
+ RETURN ${sts} ${op}
+
+Verify Netconf Mount
+ [Documentation] Verify if a netconf endpoint is mounted
+ [Arguments] ${endpoint} ${host_index}
+ ${sts1} ${output} Verify Status Information ${endpoint} ${host_index}
+ ${ep} Collections.Get From Dictionary ${output['network-topology:node'][0]} node-id
+ ${port} Collections.Get From Dictionary ${output['network-topology: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
+ [Documentation] Schedule an Import API
+ [Arguments] ${host_index} ${result}=true ${reason}=${EMPTY} ${mdlflag}=${MDL_DEF_FLAG} ${strflag}=${STR_DEF_FLAG}
+ ${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}
+ IF "${reason}" != "${EMPTY}"
+ Builtin.Should Match Regexp ${response_json} .*"reason":"${reason}
+ END
+
+Cleanup Cluster Export Files
+ [Documentation] This keyword cleansup export files of a cluster
+ [Arguments] ${member_index_list}=${EMPTY}
+ ${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