Added VMI network configuraton testcase

Testcase added:
   1.Configure VMI Static IP Address Via Different User Roles And Verify
   2.Delete VMI Static IP Address Via Different User Roles And Verify
   3.Update VMI Static IP Address Via Different User Roles And Verify
   4.Read VMI Network Configuration Via Different User Roles And Verify

Change-Id: If92643e8da08da5e14cbf5e96a43163c4d9a1bbd
Signed-off-by: Anves Kumar rayankula <anvesr77@in.ibm.com>
diff --git a/openpower/ext_interfaces/test_vmi.robot b/openpower/ext_interfaces/test_vmi.robot
index 9a92d38..00d95ef 100644
--- a/openpower/ext_interfaces/test_vmi.robot
+++ b/openpower/ext_interfaces/test_vmi.robot
@@ -5,6 +5,7 @@
 Resource         ../../lib/resource.robot
 Resource         ../../lib/bmc_redfish_resource.robot
 Resource         ../../lib/openbmc_ffdc.robot
+Resource         ../../lib/bmc_redfish_utils.robot
 Library          ../../lib/bmc_network_utils.py
 
 Suite Setup       Suite Setup Execution
@@ -13,6 +14,14 @@
 
 *** Variables ***
 
+# users           User Name               password
+@{ADMIN}          admin_user              TestPwd123
+@{OPERATOR}       operator_user           TestPwd123
+@{ReadOnly}       readonly_user           TestPwd123
+@{NoAccess}       noaccess_user           TestPwd123
+&{USERS}          Administrator=${ADMIN}  Operator=${OPERATOR}  ReadOnly=${ReadOnly}
+...               NoAccess=${NoAccess}
+
 ${test_ipv4}              10.10.20.30
 ${test_gateway}           0.0.0.0
 ${test_netmask}           255.255.252.0
@@ -58,7 +67,7 @@
 
     Delete VMI IPv4 Address  IPv4StaticAddresses  valid_status_code=${HTTP_ACCEPTED}
     ${default}=  Set Variable  0.0.0.0
-    Verify VMI Network Interface Details  ${default}  Static  ${default}  ${default}  ${True}
+    Verify VMI Network Interface Details  ${default}  Static  ${default}  ${default}
 
 
 Verify User Cannot Delete ReadOnly Property IPv4Addresses
@@ -96,7 +105,7 @@
     ${active_channel_config}=  Get Active Channel Config
     Redfish.Patch  /redfish/v1/Systems/hypervisor/EthernetInterfaces/${active_channel_config['${CHANNEL_NUMBER}']['name']}
     ...  body={'IPv4StaticAddresses':${ips}}  valid_status_codes=[${HTTP_ACCEPTED}]
-    Verify VMI Network Interface Details   ${ip1["Address"]}  Static  ${ip1["Gateway"]}  ${ip1["SubnetMask"]}  ${True}
+    Verify VMI Network Interface Details   ${ip1["Address"]}  Static  ${ip1["Gateway"]}  ${ip1["SubnetMask"]}
 
 
 Modify IP Addresses On VMI Interface And Verify
@@ -106,9 +115,9 @@
     [Teardown]   Run keywords  Delete VMI IPv4 Address  IPv4Addresses
     ...  AND  Test Teardown Execution
 
-    # ip        gateway       netmask          del_curr_ip    host_reboot        valid_status_code
-    10.5.5.10   0.0.0.0     255.255.252.0       ${False}       ${True}            ${HTTP_ACCEPTED}
-    10.5.5.11   0.0.0.0     255.255.252.0       ${False}       ${True}            ${HTTP_ACCEPTED}
+    # ip        gateway       netmask        valid_status_code
+    10.5.5.10   0.0.0.0     255.255.252.0    ${HTTP_ACCEPTED}
+    10.5.5.11   0.0.0.0     255.255.252.0    ${HTTP_ACCEPTED}
 
 Switch Between IP Origins On VMI And Verify Details
     [Documentation]  Switch between IP origins on VMI and verify details.
@@ -125,13 +134,13 @@
     # Verifying persistency of dynamic address.
     Set VMI IPv4 Origin  ${True}  ${HTTP_ACCEPTED}
     ${default}=  Set Variable  0.0.0.0
-    Verify VMI Network Interface Details  ${default}  DHCP  ${default}  ${default}  ${True}
-    Verify VMI Network Interface Details  ${default}  DHCP  ${default}  ${default}  ${True}
+    Verify VMI Network Interface Details  ${default}  DHCP  ${default}  ${default}
+    Verify VMI Network Interface Details  ${default}  DHCP  ${default}  ${default}
 
     # Verifying persistency of static address.
     Switch VMI IPv4 Origin And Verify Details  ${True}
-    Verify Assigning Static IPv4 Address To VMI  ${VMI_IP}  ${VMI_GATEWAY}  ${VMI_NETMASK}  ${False}
-    Verify VMI Network Interface Details  ${VMI_IP}  Static  ${VMI_GATEWAY}  ${VMI_NETMASK}  ${True}
+    Verify Assigning Static IPv4 Address To VMI  ${test_ipv4}  ${test_gateway}  ${test_netmask}
+    Verify VMI Network Interface Details  ${test_ipv4}  ${test_gateway}  ${test_netmask}
 
 
 Delete VMI Static IP Address And Verify
@@ -204,6 +213,61 @@
     Verify VMI Network Interface Details  ${test_ipv4}  Static   ${test_gateway}  ${test_netmask}
 
 
+Verify To Configure VMI Static IP Address With Different User Roles
+    [Documentation]  Verify to configure vmi static ip address with different user roles.
+    [Tags]  Verify_To_Configure_VMI_Static_IP_Address_With_Different_User_Roles
+    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
+    [Template]  Config VMI Static IP Address Using Different Users
+    [Teardown]  Delete BMC Users Using Redfish
+
+    # username     password    ip_address    gateway          nemask           valid_status_code
+    admin_user     TestPwd123  ${test_ipv4}  ${test_gateway}  ${test_netmask}  ${HTTP_ACCEPTED}
+    operator_user  TestPwd123  ${test_ipv4}  ${test_gateway}  ${test_netmask}  ${HTTP_FORBIDDEN}
+    readonly_user  TestPwd123  ${test_ipv4}  ${test_gateway}  ${test_netmask}  ${HTTP_FORBIDDEN}
+    noaccess_user  TestPwd123  ${test_ipv4}  ${test_gateway}  ${test_netmask}  ${HTTP_FORBIDDEN}
+
+
+Verify To Delete VMI Static IP Address With Different User Roles
+    [Documentation]  Verify to delete vmi static IP address with different user roles.
+    [Tags]  Verify_To_Delete_VMI_Static_IP_Address_With_Different_User_Roles
+    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
+    [Template]  Delete VMI Static IP Address Using Different Users
+    [Teardown]  Delete BMC Users Using Redfish
+
+    # username     password     valid_status_code
+    admin_user     TestPwd123   ${HTTP_ACCEPTED}
+    operator_user  TestPwd123   ${HTTP_FORBIDDEN}
+    readonly_user  TestPwd123   ${HTTP_FORBIDDEN}
+    noaccess_user  TestPwd123   ${HTTP_FORBIDDEN}
+
+
+Verify To Update VMI Static IP Address With Different User Roles
+    [Documentation]  Verify to update vmi static IP address with different user roles.
+    [Tags]  Verify_To_Update_VMI_Static_IP_Address_With_Different_User_Roles_And_Verify
+    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
+    [Template]  Config VMI Static IP Address Using Different Users
+    [Teardown]  Delete BMC Users Using Redfish
+
+    # username     password     ip_address  gateway  nemask       valid_status_code
+    admin_user     TestPwd123   10.5.10.20  0.0.0.0  255.255.0.0  ${HTTP_ACCEPTED}
+    operator_user  TestPwd123   10.5.10.30  0.0.0.0  255.255.0.0  ${HTTP_FORBIDDEN}
+    readonly_user  TestPwd123   10.5.20.40  0.0.0.0  255.255.0.0  ${HTTP_FORBIDDEN}
+    noaccess_user  TestPwd123   10.5.30.50  0.0.0.0  255.255.0.0  ${HTTP_FORBIDDEN}
+
+
+Verify To Read VMI Network Configuration With Different User Roles
+    [Documentation]  Verify to read vmi network configuration with different user roles.
+    [Tags]  Verify_To_Read_VMI_Network_Configuration_Via_Different_User_Roles
+    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
+    [Template]  Read VMI Static IP Address Using Different Users
+    [Teardown]  Delete BMC Users Using Redfish
+
+    # username     password     valid_status_code
+    admin_user     TestPwd123   ${HTTP_OK}
+    operator_user  TestPwd123   ${HTTP_OK}
+    readonly_user  TestPwd123   ${HTTP_OK}
+    noaccess_user  TestPwd123   ${HTTP_FORBIDDEN}
+
 
 *** Keywords ***
 
@@ -258,7 +322,7 @@
     ...  IPv4_AddressOrigin=${ip_resp["IPv4Addresses"][0]["AddressOrigin"]}  Name=${ip_resp["Name"]}
     ...  IPv4_Gateway=${ip_resp["IPv4Addresses"][0]["Gateway"]}
     ...  InterfaceEnabled=${${ip_resp["InterfaceEnabled"]}}
-    ...  IPv4_SubnetMask=${ip_resp["IPv4Addresses"][0]["SubnetMask"]}  MACAddress=${ip_resp["MACAddress"]}
+    ...  IPv4_SubnetMask=${ip_resp["IPv4Addresses"][0]["SubnetMask"]}
     ...  IPv4StaticAddresses=${${static_exists}}
 
     [Return]  &{vmi_ip}
@@ -406,3 +470,61 @@
 
     [Return]  ${origin}
 
+
+Delete VMI Static IP Address Using Different Users
+    [Documentation]  Update user role and delete vmi static IP address.
+    [Arguments]  ${username}  ${password}  ${valid_status_code}
+    [Teardown]  Run Keywords  Redfish.Login  AND
+    ...  Verify Assigning Static IPv4 Address To VMI  ${test_ipv4}  ${test_gateway}
+    ...  ${test_netmask}  ${HTTP_ACCEPTED}  AND  Redfish.Logout
+
+    # Description of argument(s):
+    # username            The host username.
+    # password            The host password.
+    # valid_status_code   The expected valid status code.
+
+    Redfish.Login  ${username}  ${password}
+    Delete VMI IPv4 Address  delete_param=IPv4StaticAddresses  valid_status_code=${valid_status_code}
+    Redfish.Logout
+
+
+Config VMI Static IP Address Using Different Users
+   [Documentation]  Update user role and update vmi static ip address.
+   [Arguments]  ${username}  ${password}  ${ip}  ${gateway}  ${netmask}
+   ...  ${valid_status_code}
+
+    # Description of argument(s):
+    # username            The host username.
+    # password            The host password.
+    # ip                  IP address to be added (e.g. "10.7.7.7").
+    # subnet_mask         Subnet mask for the IP to be added
+    #                     (e.g. "255.255.0.0").
+    # gateway             Gateway for the IP to be added (e.g. "10.7.7.1").
+    # valid_status_code   The expected valid status code.
+
+    Redfish.Login  ${username}  ${password}
+    Verify Assigning Static IPv4 Address To VMI  ${ip}  ${gateway}  ${netmask}  ${valid_status_code}
+    Redfish.Logout
+
+
+Read VMI Static IP Address Using Different Users
+   [Documentation]  Update user role and read vmi static ip address.
+   [Arguments]  ${username}  ${password}  ${valid_status_code}
+
+    # Description of argument(s):
+    # username            The host username.
+    # password            The host password.
+    # valid_status_code   The expected valid status code.
+
+    Redfish.Login  ${username}  ${password}
+    Redfish.Get
+    ...  /redfish/v1/Systems/hypervisor/EthernetInterfaces/${active_channel_config['${CHANNEL_NUMBER}']['name']}
+    ...  valid_status_codes=[${valid_status_code}]
+    Redfish.Logout
+
+
+Delete BMC Users Using Redfish
+   [Documentation]  Delete BMC users via redfish.
+
+   Redfish.Login
+   Delete BMC Users Via Redfish  users=${USERS}