Enable DHCP Via Redfish And Verify
Change-Id: I295876fd4d6d55d3046559a7fa8802ee05edb8bd
Signed-off-by: Anves Kumar rayankula <anvesr77@in.ibm.com>
diff --git a/network/test_bmc_dhcp_conf.robot b/network/test_bmc_dhcp_conf.robot
new file mode 100644
index 0000000..5ebbc5e
--- /dev/null
+++ b/network/test_bmc_dhcp_conf.robot
@@ -0,0 +1,81 @@
+*** Settings ***
+Documentation DHCP Network to test suite functionality.
+
+Resource ../lib/openbmc_ffdc.robot
+Resource ../lib/bmc_network_utils.robot
+Library ../lib/ipmi_utils.py
+Library ../lib/bmc_network_utils.py
+
+Suite Setup Suite Setup Execution
+Suite Teardown Redfish.Logout
+
+*** Test Cases ***
+
+Enable DHCP Via Redfish And Verify
+ [Documentation] Enable DHCP via Redfish and verify.
+ [Tags] Enable_DHCP_Via_Redfish_And_Verify
+ [Teardown] Run Keywords Restore Configuration
+ ... AND FFDC On Test Case Fail
+
+ ${active_channel_config}= Get Active Channel Config
+ Redfish.Patch
+ ... /redfish/v1/Managers/bmc/EthernetInterfaces/${active_channel_config['${CHANNEL_NUMBER}']['name']}/
+ ... body={"DHCPv4":{"DHCPEnabled":${True}}}
+
+ ${resp}= Redfish.Get ${REDFISH_NW_ETH0_URI}
+ Should Be Equal As Strings ${resp.dict["DHCPv4"]["DHCPEnabled"]} ${True}
+
+
+*** Keywords ***
+
+Suite Setup Execution
+ [Documentation] Suite Setup Execution.
+
+ Redfish.Login
+
+ # This keyword should login to host OS.
+ Run Inband IPMI Standard Command
+ ... lan set ${CHANNEL_NUMBER} ipsrc static login_host=${1}
+
+ ${host_name} ${ip_address}= Get Host Name IP host=${OPENBMC_HOST}
+
+ Set Suite Variable ${ip_address}
+
+ @{network_configurations}= Get Network Configuration
+ FOR ${network_configuration} IN @{network_configurations}
+ Run Keyword If '${network_configuration['Address']}' == '${ip_address}'
+ ... Set Suite Variable ${subnet_mask} ${network_configuration['SubnetMask']}
+ END
+
+ ${initial_lan_config}= Get LAN Print Dict ${CHANNEL_NUMBER} ipmi_cmd_type=inband
+ Set Suite Variable ${initial_lan_config}
+
+
+Set IPMI Inband Network Configuration
+ [Documentation] Run sequence of standard in-band IPMI command and set
+ ... the IP configuration.
+ [Arguments] ${ip} ${netmask} ${gateway}
+
+ # Description of argument(s):
+ # ip The IP address to be set using ipmitool-inband.
+ # netmask The Netmask to be set using ipmitool-inband.
+ # gateway The Gateway address to be set using ipmitool-inband.
+ # login Indicates that this keyword should login to host OS.
+
+ Run Inband IPMI Standard Command
+ ... lan set ${CHANNEL_NUMBER} ipaddr ${ip} login_host=${0}
+ Run Inband IPMI Standard Command
+ ... lan set ${CHANNEL_NUMBER} netmask ${netmask} login_host=${0}
+ Run Inband IPMI Standard Command
+ ... lan set ${CHANNEL_NUMBER} defgw ipaddr ${gateway} login_host=${0}
+
+
+Restore Configuration
+ [Documentation] Restore the configuration to its pre-test state.
+
+ ${length}= Get Length ${initial_lan_config}
+ Return From Keyword If ${length} == ${0}
+
+ Set IPMI Inband Network Configuration ${ip_address} ${subnet_mask}
+ ... ${initial_lan_config['Default Gateway IP']}
+