blob: a8ad9f5c72342d17705743055cacb15d940f7713 [file] [log] [blame]
Anves Kumar rayankula5a57faf2020-05-19 05:47:44 -05001*** Settings ***
2Documentation DHCP Network to test suite functionality.
3
4Resource ../lib/openbmc_ffdc.robot
5Resource ../lib/bmc_network_utils.robot
6Library ../lib/ipmi_utils.py
7Library ../lib/bmc_network_utils.py
8
9Suite Setup Suite Setup Execution
10Suite Teardown Redfish.Logout
11
Anves Kumar rayankula7a68d892020-07-10 00:30:13 -050012*** Variables ***
13
14&{dhcp_enable_dict} DHCPEnabled=${True}
15&{dhcp_disable_dict} DHCPEnabled=${False}
16
17&{dns_enable_dict} UseDNSServers=${True}
18&{dns_disable_dict} UseDNSServers=${False}
19
20&{ntp_enable_dict} UseNTPServers=${True}
21&{ntp_disable_dict} UseNTPServers=${False}
22
23&{domain_name_enable_dict} UseDomainName=${True}
24&{domain_name_disable_dict} UseDomainName=${False}
25
26&{enable_multiple_properties} UseDomainName=${True}
27... UseNTPServers=${True}
28... UseDNSServers=${True}
29
30&{disable_multiple_properties} UseDomainName=${False}
31... UseNTPServers=${False}
32... UseDNSServers=${False}
33
Anves Kumar rayankula5a57faf2020-05-19 05:47:44 -050034*** Test Cases ***
35
Anves Kumar rayankula7a68d892020-07-10 00:30:13 -050036Set Network Property via Redfish And Verify
37 [Documentation] Set network property via Redfish and verify.
38 [Tags] Set_Network_Property_via_Redfish_And_Verify
39 [Template] Apply Ethernet Config
Anves Kumar rayankula5a57faf2020-05-19 05:47:44 -050040
Anves Kumar rayankula7a68d892020-07-10 00:30:13 -050041 # property
42 ${dhcp_enable_dict}
43 ${dhcp_disable_dict}
44 ${dns_enable_dict}
45 ${dns_disable_dict}
46 ${domain_name_enable_dict}
47 ${domain_name_disable_dict}
48 ${ntp_enable_dict}
49 ${ntp_disable_dict}
50 ${enable_multiple_properties}
51 ${disable_multiple_properties}
Prashanth Kattif312d202020-05-28 10:56:10 -050052
53
Anves Kumar rayankula5a57faf2020-05-19 05:47:44 -050054*** Keywords ***
55
56Suite Setup Execution
57 [Documentation] Suite Setup Execution.
58
59 Redfish.Login
60
61 # This keyword should login to host OS.
62 Run Inband IPMI Standard Command
63 ... lan set ${CHANNEL_NUMBER} ipsrc static login_host=${1}
64
65 ${host_name} ${ip_address}= Get Host Name IP host=${OPENBMC_HOST}
66
67 Set Suite Variable ${ip_address}
68
69 @{network_configurations}= Get Network Configuration
70 FOR ${network_configuration} IN @{network_configurations}
71 Run Keyword If '${network_configuration['Address']}' == '${ip_address}'
72 ... Set Suite Variable ${subnet_mask} ${network_configuration['SubnetMask']}
73 END
74
75 ${initial_lan_config}= Get LAN Print Dict ${CHANNEL_NUMBER} ipmi_cmd_type=inband
76 Set Suite Variable ${initial_lan_config}
77
78
79Set IPMI Inband Network Configuration
80 [Documentation] Run sequence of standard in-band IPMI command and set
81 ... the IP configuration.
82 [Arguments] ${ip} ${netmask} ${gateway}
83
84 # Description of argument(s):
85 # ip The IP address to be set using ipmitool-inband.
86 # netmask The Netmask to be set using ipmitool-inband.
87 # gateway The Gateway address to be set using ipmitool-inband.
88 # login Indicates that this keyword should login to host OS.
89
90 Run Inband IPMI Standard Command
91 ... lan set ${CHANNEL_NUMBER} ipaddr ${ip} login_host=${0}
92 Run Inband IPMI Standard Command
93 ... lan set ${CHANNEL_NUMBER} netmask ${netmask} login_host=${0}
94 Run Inband IPMI Standard Command
95 ... lan set ${CHANNEL_NUMBER} defgw ipaddr ${gateway} login_host=${0}
96
97
98Restore Configuration
99 [Documentation] Restore the configuration to its pre-test state.
100
101 ${length}= Get Length ${initial_lan_config}
102 Return From Keyword If ${length} == ${0}
103
104 Set IPMI Inband Network Configuration ${ip_address} ${subnet_mask}
105 ... ${initial_lan_config['Default Gateway IP']}
106
Anves Kumar rayankula8115e1e2020-07-03 01:22:09 -0500107
108Apply Ethernet Config
Anves Kumar rayankula7a68d892020-07-10 00:30:13 -0500109 [Documentation] Set the given Ethernet config property.
110 [Arguments] ${property}
111 [Teardown] Run Keywords Restore Configuration AND
112 ... Set Global Variable ${TEST_STATUS} ${KEYWORD STATUS} AND FFDC On Test Case Fail
Anves Kumar rayankula8115e1e2020-07-03 01:22:09 -0500113
Anves Kumar rayankula7a68d892020-07-10 00:30:13 -0500114 # Description of argument(s):
115 # property Ethernet property to be set..
Anves Kumar rayankula8115e1e2020-07-03 01:22:09 -0500116
Anves Kumar rayankula7a68d892020-07-10 00:30:13 -0500117 ${active_channel_config}= Get Active Channel Config
118 Redfish.Patch
119 ... /redfish/v1/Managers/bmc/EthernetInterfaces/${active_channel_config['${CHANNEL_NUMBER}']['name']}/
120 ... body={"DHCPv4":${property}} valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
Anves Kumar rayankula8115e1e2020-07-03 01:22:09 -0500121
Anves Kumar rayankula7a68d892020-07-10 00:30:13 -0500122 ${resp}= Redfish.Get
123 ... /redfish/v1/Managers/bmc/EthernetInterfaces/${active_channel_config['${CHANNEL_NUMBER}']['name']}
124 Verify Ethernet Config Property ${property} ${resp.dict["DHCPv4"]}
125
126
127Verify Ethernet Config Property
128 [Documentation] verify ethernet config properties.
129 [Arguments] ${property} ${response_data}
130
131 # Description of argument(s):
132 # ${property} DHCP Properties in dictionary.
133 # Example:
134 # property value
135 # DHCPEnabled :False
136 # UseDomainName :True
137 # UseNTPServers :True
138 # UseDNSServers :True
139 # ${response_data} DHCP Response data in dictionary.
140 # Example:
141 # property value
142 # DHCPEnabled :False
143 # UseDomainName :True
144 # UseNTPServers :True
145 # UseDNSServers :True
146
147 ${key_map}= Get Dictionary Items ${property}
148 FOR ${key} ${value} IN @{key_map}
149 Should Be Equal As Strings ${response_data['${key}']} ${value}
150 END
Anves Kumar rayankula8115e1e2020-07-03 01:22:09 -0500151