+
+Server Live Migrate
+ [Arguments] ${vm_instance_name}
+ [Documentation] Keyword for live migration of VM instance
+ ... additional_agrs is to select particular migration(live/shared-migration/block-migration)
+ ... if the additional_agrs is not given default migration(shared-migration) will happen
+ ${output} = OpenStackOperations.OpenStack CLI nova live-migration ${vm_instance_name}
+
+Get Hypervisor Host Of Vm
+ [Arguments] ${vm_name}
+ [Documentation] Show server with neutron request.
+ ${output} = OpenStackOperations.OpenStack CLI openstack server show -f value -c OS-EXT-SRV-ATTR:host ${vm_name}
+ [Return] ${output}
+
+Check If Migration Is Complete
+ [Arguments] ${vm_name}
+ [Documentation] Show server and verify if task_state is not migrating
+ ${output} = OpenStackOperations.OpenStack CLI openstack server show ${vm_name} | grep "OS-EXT-STS:task_state"
+ BuiltIn.Should Not Contain ${output} migrating
+
+Modify OpenStack Configuration File
+ [Arguments] ${conn_id} ${file_name} ${section} ${key} ${value}
+ [Documentation] Use crudini to modify any parameter in any Openstack configuration File
+ SSHLibrary.Switch Connection ${conn_id}
+ ${output} ${rc} = SSHLibrary.Execute Command sudo crudini --verbose --set --inplace ${file_name} ${section} ${key} ${value} return_rc=True return_stdout=True
+ BuiltIn.Log ${output}
+ BuiltIn.Should Be True '${rc}' == '0'
+
+Restart DevStack Service
+ [Arguments] ${conn_id} ${service_name}
+ [Documentation] Restart the Openstack Service
+ SSHLibrary.Switch Connection ${conn_id}
+ ${output} ${rc} = SSHLibrary.Execute Command sudo systemctl restart devstack@${service_name}.service return_rc=True return_stdout=True
+ BuiltIn.Log ${output}
+ BuiltIn.Should Be True '${rc}' == '0'
+
+Get Network Segmentation Id
+ [Arguments] ${network_name}
+ [Documentation] Returns network segmentation id for the given network name.
+ ${output} = OpenStack CLI openstack network show ${network_name} | grep segmentation_id | awk '{print $4}'
+ @{list} = String.Split String ${output}
+ [Return] @{list}[0]
+
+Verify Services
+ [Documentation] Verify if the services are operational
+ Wait Until Keyword Succeeds 60 2 ClusterManagement.Check Status Of Services Is OPERATIONAL @{NETVIRT_DIAG_SERVICES}
+
+Verify Expected Default Tunnels
+ [Documentation] Verify if the default tunnels are created
+ ${output} = ODLTools.Analyze Tunnels test_name=${SUITE_NAME}.Suite Setup
+ BuiltIn.Should Contain ${output} All tunnels are up
+
+Verify Expected Default Tables On Nodes
+ [Arguments] ${node_ips}=@{OS_ALL_IPS}
+ [Documentation] Verify if Default Table Entries are programmed on all Nodes
+ ${resp} = RequestsLibrary.Get Request session ${CONFIG_NODES_API}
+ Utils.Log Content ${resp.content}
+ ${failed_node_list} = BuiltIn.Create List
+ : FOR ${node_ip} IN @{node_ips}
+ \ ${failed_table_list} = Verify Expected Default Tables ${node_ip}
+ \ ${failed_table_list_size} = BuiltIn.Get Length ${failed_table_list}
+ \ BuiltIn.Run Keyword If ${failed_table_list_size} > 0 Collections.Append To List ${failed_node_list} ${node_ip}
+ Builtin.Should Be Empty ${failed_node_list}
+
+Verify Expected Default Tables
+ [Arguments] ${ovs_ip}
+ [Documentation] Verify if Default Table Entries are programmed on specific Node
+ ${flow_dump} = Utils.Run Command On Remote System ${ovs_ip} sudo ovs-ofctl dump-flows ${INTEGRATION_BRIDGE} -OOpenFlow13
+ BuiltIn.Log ${flow_dump}
+ ${failed_table_list} = BuiltIn.Create List
+ : FOR ${table} IN @{DEFAULT_FLOW_TABLES}
+ \ ${rc} = Builtin.Run Keyword And Return Status Builtin.Should Not Match Regexp ${flow_dump} .*table=${table}.*priority=0
+ \ BuiltIn.Run Keyword If ${rc} Collections.Append To List ${failed_table_list} ${table}
+ [Return] ${failed_table_list}
+
+Get Project Id
+ [Arguments] ${project_name}
+ [Documentation] Returns project ID for the given project name.
+ ${project_id} = OpenStack CLI openstack project show ${project_name} -f value -c id
+ [Return] ${project_id}
+
+Set Instance Quota For Project
+ [Arguments] ${num_instances} ${project_id}
+ [Documentation] Set quota for the created instances using the specific project id.
+ ${output} = OpenStack CLI openstack quota set --instances ${num_instances} ${project_id}
+ [Return] ${output}