Update from master part 2
[osm/tests.git] / robot-systest / lib / openstack_lib.robot
index cd03eb8..bdf49aa 100644 (file)
@@ -20,9 +20,9 @@ Get Server Flavor ID
 
     Should Not Be Empty   ${server_id}
     ${rc}   ${stdout}=   Run and Return RC and Output   openstack server show ${server_id} | grep flavor | awk 'NR>1{print $1}' RS='(' FS=')'
-    log   ${stdout}
+    Log   ${stdout}
     Should Be Equal As Integers   ${rc}   ${success_return_code}
-    [Return]  ${stdout}
+    [Return]   ${stdout}
 
 
 Get Flavor Properties
@@ -30,19 +30,184 @@ Get Flavor Properties
 
     Should Not Be Empty   ${flavor_id}
     ${rc}   ${stdout}=   Run and Return RC and Output   openstack flavor show ${flavor_id} | grep properties | awk -F '|' '{print $3}'
-    log   ${stdout}
+    Log   ${stdout}
     Should Be Equal As Integers   ${rc}   ${success_return_code}
-    [Return]  ${stdout}
+    [Return]   ${stdout}
 
 
 Check NS Servers In VIM
-    [Documentation]     Check if the number of servers in Openstack by filtering by NS name is as expected.
+    [Documentation]   Check if the number of servers in Openstack by filtering by NS name is as expected.
     [Arguments]   ${ns_name}   ${number}
 
     Should Not Be Empty   ${ns_name}
     ${rc}   ${stdout}=   Run and Return RC and Output   openstack server list | grep ${ns_name} | awk '{print $4}'
-    log   ${stdout}
+    Log   ${stdout}
     Should Be Equal As Integers   ${rc}   ${success_return_code}
-    @{servers} =  Split String  ${stdout}
-    ${n_servers}=  Get Length  ${servers}
+    @{servers} =   Split String   ${stdout}
+    ${n_servers}=   Get Length   ${servers}
     Should Be Equal As Integers   ${number}   ${n_servers}
+
+
+Check If Volume Bootable
+    [Documentation]   Check the volume properties and return whether it is bootable or not.
+    [Arguments]   ${volume_id}
+
+    Should Not Be Empty   ${volume_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack volume show ${volume_id} | grep bootable | awk '{print $4}'
+    log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Get Project Quota
+    [Documentation]   Get a field (ram, cores, ports, etc.) from quota in current project.
+    [Arguments]   ${field}
+
+    Should Not Be Empty   ${field}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack quota show -f yaml | yq '.[] | select(.Resource=="${field}") | .Limit'
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Get Server Property
+    [Documentation]   Get a field (flavor, image, volumes_attached, etc.) from a server.
+    [Arguments]   ${server_id}   ${field}
+
+    Should Not Be Empty   ${server_id}
+    Should Not Be Empty   ${field}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack server show ${server_id} -c ${field} -f value
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Check VM In Server Group
+    [Documentation]   Check if a given server is included in an Openstack server group
+    [Arguments]   ${server_id}   ${server_group_name}
+
+    Should Not Be Empty   ${server_group_name}
+    Should Not Be Empty   ${server_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack server group show ${server_group_name} -c members -f value
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Should Contain   ${stdout}   ${server_id}
+
+
+Set Volume Id
+    [Documentation]   Sets the root volume ID and ordinary volume ID by checking bootable property of volumes
+    [Arguments]   ${volume_match}   ${index}
+
+    Should Not Be Empty   ${volume_match}   ${index}
+    ${bootable}=   Check If Volume Bootable   ${volume_match}[${index}]
+    Set Suite Variable   ${bootable}
+    IF   '${bootable}'=='true'
+        Set Suite Variable   ${root_vol_id}   ${volume_match}[${index}]
+        IF   ${index}==0
+            Set Suite Variable   ${ordinary_vol_id}   ${volume_match}[1]
+        ELSE
+            Set Suite Variable   ${ordinary_vol_id}   ${volume_match}[0]
+        END
+    END
+
+
+Get Persistent Volumes Attached To Vm
+    [Documentation]   Sets the root volume ID and ordinary volume ID by checking bootable property of volumes
+    [Arguments]   ${ns_id}
+
+    Variable Should Exist   ${ns_id}   msg=NS is not available
+    ${vnfs_list}=   Get Ns Vnf List   ${ns_id}
+    ${vim_id}=   Get VNF VIM ID   ${vnfs_list}[0]
+    ${volumes_attached}=   Get Server Property   ${vim_id}   volumes_attached
+    log   ${volumes_attached}
+    ${stdout}=   Get Regexp Matches   ${volumes_attached}   '([0-9a-f\-]+)'   1
+    log   ${stdout}
+    [Return]   ${stdout}
+
+
+Check If Volume Exists
+    [Documentation]   Checks if a volume id exists
+    [Arguments]   ${volume_id}
+
+    Should Not Be Empty   ${volume_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack volume list | grep ${volume_id} | wc -l
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Delete Volume
+    [Documentation]   Delete a volume by its identifier
+    [Arguments]   ${volume_id}
+
+    Should Not Be Empty   ${volume_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack volume delete ${volume_id}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Get Subnet
+    [Documentation]   Get subnet information in JSON format
+    [Arguments]   ${subnet_id}
+
+    Should Not Be Empty   ${subnet_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack subnet show ${subnet_id} -f json
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Stop Server
+    [Documentation]   Stop a server
+    [Arguments]   ${server_id}
+
+    Should Not Be Empty   ${server_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack server stop ${server_id}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Halt Server
+    [Documentation]   Reset a server
+    [Arguments]   ${server_id}
+
+    Should Not Be Empty   ${server_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack server set --state error ${server_id}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Delete Server
+    [Documentation]   Delete a server
+    [Arguments]   ${server_id}
+
+    Should Not Be Empty   ${server_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack server delete ${server_id}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Create Flavor
+    [Documentation]   Create a Flavor
+    [Arguments]   ${flavor_name}   ${cpu}=1   ${ram}=1024   ${disk}=10
+
+    Should Not Be Empty   ${flavor_name}
+    ${rc}   ${flavor_id}=   Run and Return RC and Output   openstack flavor create ${flavor_name} --ram ${ram} --disk ${disk} --vcpus ${cpu} -f yaml | yq '.id' | tr -d \\"
+    Log   ${flavor_id}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${flavor_id}
+
+
+Delete Flavor
+    [Documentation]   Delete a Flavor
+    [Arguments]   ${flavor_id}
+
+    Should Not Be Empty   ${flavor_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack flavor delete ${flavor_id}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}