Revert "Revert Add Acl enhancement"
[integration/test.git] / csit / libraries / OpenStackOperations.robot
index ae6393a9c2f61e0c447c21c814b30177e8b38be3..a1ca371ac6ffdbe3cb6e52688663dce5a6c8668e 100644 (file)
@@ -43,6 +43,16 @@ Create Network
     ${output} =    OpenStack CLI    openstack network create ${network_name} ${additional_args}
     [Return]    ${output}
 
+Create Multiple Networks
+    [Arguments]    @{name_of_networks}
+    [Documentation]    Create required number of networks and return a list of the resulting network ids
+    ${net_list_ids} =    BuiltIn.Create List    @{EMPTY}
+    : FOR    ${net}    IN    @{name_of_networks}
+    \    ${output} =    OpenStackOperations.Create Network    ${net}
+    \    ${net_id} =    Get Regexp Matches    ${output}    ${REGEX_UUID}
+    \    Collections.Append To List    ${net_list_ids}    ${net_id}
+    [Return]    @{net_list_ids}
+
 Update Network
     [Arguments]    ${network_name}    ${additional_args}=${EMPTY}
     [Documentation]    Update Network with neutron request.
@@ -75,6 +85,20 @@ Create SubNet
     [Documentation]    Create SubNet for the Network with neutron request.
     ${output} =    OpenStack CLI    openstack subnet create --network ${network_name} --subnet-range ${range_ip} ${subnet_name} ${additional_args}
 
+Create Multiple Subnets
+    [Arguments]    ${network_names}    ${subnet_names}    ${subnet_cidr}
+    [Documentation]    Create required number of subnets for previously created networks and return subnet id
+    ${number_of_networks} =    BuiltIn.Get Length    ${network_names}
+    @{subnet_id_list} =    BuiltIn.Create List    @{EMPTY}
+    : FOR    ${index}    IN RANGE    ${number_of_networks}
+    \    OpenStackOperations.Create SubNet    ${network_names[${index}]}    ${subnet_names[${index}]}    ${subnet_cidr[${index}]}
+    ${sub_list} =    OpenStackOperations.List Subnets
+    : FOR    ${index}    IN RANGE    ${number_of_networks}
+    \    BuiltIn.Should Contain    ${sub_list}    ${subnet_names[${index}]}
+    \    ${subnet_id} =    OpenStackOperations.Get Subnet Id    ${subnet_names[${index}]}
+    \    Collections.Append To List    ${subnet_id_list}    ${subnet_id}
+    [Return]    @{subnet_id_list}
+
 Update SubNet
     [Arguments]    ${subnet_name}    ${additional_args}=${EMPTY}
     [Documentation]    Update subnet with openstack subnet set request.
@@ -203,6 +227,13 @@ Get Router Id
     ${router_id} =    Collections.Get from List    ${splitted_output}    0
     [Return]    ${router_id}
 
+Get VMs OVS Port Number
+    [Arguments]    ${ip_address}    ${portname}
+    [Documentation]    Get the port number for given portname
+    ${subportid} =    OpenStackOperations.Get Sub Port Id    ${portname}
+    ${vm_port_number} =    OVSDB.Get Port Number    ${subportid}    ${ip_address}
+    [Return]    ${vm_port_number}
+
 Add New Image From Url
     [Arguments]    ${image_url}    ${image_name}
     [Documentation]    To add new qcow2 images for testing.
@@ -376,6 +407,17 @@ Get VM IPs
     OpenStackOperations.Copy DHCP Files From Control Node
     [Return]    @{vm_ips}    ${ips_and_console_log[1]}
 
+Get All VM IP Addresses
+    [Arguments]    ${conn_id}    ${vm_name}
+    [Documentation]    Show information of a given two port VM and grep for two ip address. VM name should be sent as arguments.
+    SSHLibrary.Switch Connection    ${conn_id}
+    ${cmd} =    BuiltIn.Set Variable    openstack server show ${vm_name}
+    ${output} =    OpenStackOperations.OpenStack CLI    ${cmd}
+    BuiltIn.Log    ${output}
+    ${address_output} =    OpenStackOperations.OpenStack CLI    ${cmd} | grep "addresses" | awk '{print $4$5}'
+    @{vm_ips} =    String.Get Regexp Matches    ${address_output}    ${REGEX_IPV4}
+    [Return]    @{vm_ips}
+
 Get Subnet Gateway Ip
     [Arguments]    ${subnet_name}
     [Documentation]    Show information of a subnet and grep for subnet gateway ip address
@@ -719,6 +761,7 @@ Neutron Security Group Rule Create
     ${protocol}    BuiltIn.Run Keyword If    ${Kwargs}    Collections.Pop From Dictionary    ${Kwargs}    protocol    default=${None}
     ${remote_group_id}    BuiltIn.Run Keyword If    ${Kwargs}    Collections.Pop From Dictionary    ${Kwargs}    remote_group_id    default=${None}
     ${remote_ip_prefix}    BuiltIn.Run Keyword If    ${Kwargs}    Collections.Pop From Dictionary    ${Kwargs}    remote_ip_prefix    default=${None}
+    ${remote_ip}    BuiltIn.Run Keyword If    ${Kwargs}    Collections.Pop From Dictionary    ${Kwargs}    remote_ip    default=${None}
     ${cmd} =    BuiltIn.Set Variable    openstack security group rule create ${Security_group_name}
     ${cmd} =    BuiltIn.Run Keyword If    '${description}'!='None'    BuiltIn.Catenate    ${cmd}    --description ${description}
     ...    ELSE    BuiltIn.Catenate    ${cmd}
@@ -736,6 +779,8 @@ Neutron Security Group Rule Create
     ...    ELSE    BuiltIn.Catenate    ${cmd}
     ${cmd} =    BuiltIn.Run Keyword If    '${remote_ip_prefix}'!='None'    BuiltIn.Catenate    ${cmd}    --src-ip ${remote_ip_prefix}
     ...    ELSE    BuiltIn.Catenate    ${cmd}
+    ${cmd} =    BuiltIn.Run Keyword If    '${remote_ip}'!='None'    BuiltIn.Catenate    ${cmd}    --remote-ip ${remote_ip}
+    ...    ELSE    BuiltIn.Catenate    ${cmd}
     ${output} =    OpenStack CLI    ${cmd}
     ${rule_id} =    BuiltIn.Should Match Regexp    ${output}    ${REGEX_UUID}
     [Return]    ${output}    ${rule_id}