@@ -20,8 +20,7 @@ def test_connect_ssl(self, mock_connector):
2020 mock_connector .assert_called_with ("https://dummy:443/" , "user" , "pass" )
2121
2222
23- @mock .patch ("redfish_client.Connector" )
24- class TestRedfishSystem (TestCase ):
23+ class RedfishTestCase (TestCase ):
2524 def mock_redfish_system (self , mock_connector , data ):
2625 def mock_get (url ):
2726 res = mock .Mock ()
@@ -31,11 +30,15 @@ def mock_get(url):
3130
3231 mock_connector .get .side_effect = mock_get
3332 api_client = Root (mock_connector )
33+ api_client ._content = data .get ("/redfish/v1" , None )
3434
3535 rf = RedfishSystem ("dummy" , "user" , "pass" , "Non-SSL" , "8000" ,
3636 api_client = api_client )
3737 return rf
3838
39+
40+ @mock .patch ("redfish_client.Connector" )
41+ class TestRedfishSystem (RedfishTestCase ):
3942 def test_find_resource (self , mock_connector ):
4043 rf = self .mock_redfish_system (mock_connector , data = {
4144 "/redfish/v1/BlankResource" : {
@@ -45,6 +48,146 @@ def test_find_resource(self, mock_connector):
4548 resource = rf .find ("/redfish/v1/BlankResource" )
4649 self .assertEqual (resource .raw , {"@odata.id" : "id" })
4750
51+ def test_redfish_system (self , mock_connector ):
52+ rf = self .mock_redfish_system (mock_connector , data = {
53+ "/redfish/v1/BlankResource" : {
54+ "@odata.id" : "id"
55+ }
56+ })
57+ self .assertEqual (rf ._identifying_attrs ,
58+ {"url" : "http://dummy:8000/" })
59+ self .assertEqual (rf .info (),
60+ "RedfishSystem url=http://dummy:8000/" )
61+
62+ def test_num_servers (self , mock_connector ):
63+ rf = self .mock_redfish_system (mock_connector , data = {
64+ "/redfish/v1" : {
65+ "Systems" : {
66+ "@odata.id" :"/redfish/v1/Systems"
67+ }
68+ },
69+ "/redfish/v1/Systems" : {
70+ "@odata.id" : "/redfish/v1/Systems/" ,
71+ "Members@odata.count" : 4 ,
72+ "@odata.context" : "/redfish/v1/$metadata#ComputerSystemCollection.ComputerSystemCollection" ,
73+ "Members" : [
74+ {"@odata.id" : "/redfish/v1/Systems/1" },
75+ {"@odata.id" : "/redfish/v1/Systems/2" },
76+ {"@odata.id" : "/redfish/v1/Systems/3" },
77+ {"@odata.id" : "/redfish/v1/Systems/4" },
78+ ],
79+ "@odata.type" : "#ComputerSystemCollection.ComputerSystemCollection" ,
80+ "Members@odata.navigationLink" : "/redfish/v1/Systems/Members" ,
81+ "@odata.etag" : "W/\" e48557da1bf040a5d45d1e5aa726bf3a\" " ,
82+ "Name" : "ComputerSystemCollection" ,
83+ "Description" : "A Collection of ComputerSystem resource instances." }
84+ })
85+ self .assertEqual (rf .num_servers , 4 )
86+
87+ def test_num_chassis (self , mock_connector ):
88+ rf = self .mock_redfish_system (mock_connector , data = {
89+ "/redfish/v1" : {
90+ "Chassis" : {
91+ "@odata.id" :"/redfish/v1/Chassis"
92+ }
93+ },
94+ "/redfish/v1/Chassis" : {
95+ "@odata.id" : "/redfish/v1/Chassis/" ,
96+ "Members@odata.count" : 6 ,
97+ "@odata.context" : "/redfish/v1/$metadata#ChassisCollection.ChassisCollection" ,
98+ "Members" : [
99+ {"@odata.id" : "/redfish/v1/Chassis/Block-1" },
100+ {"@odata.id" : "/redfish/v1/Chassis/Block-2" },
101+ {"@odata.id" : "/redfish/v1/Chassis/Block-3" },
102+ {"@odata.id" : "/redfish/v1/Chassis/Rack-4" },
103+ {"@odata.id" : "/redfish/v1/Chassis/Rack-5" },
104+ {"@odata.id" : "/redfish/v1/Chassis/Sled-6" },
105+ ],
106+ "@odata.type" : "#ChassisCollection.ChassisCollection" ,
107+ "Members@odata.navigationLink" : "/redfish/v1/Chassis/Members" ,
108+ "@odata.etag" : "W/\" aef74912345d8e2ae00d008591fc5d85\" " ,
109+ "Name" : "ChassisCollection" ,
110+ "Description" : "A Collection of Chassis resource instances."
111+ },
112+ "/redfish/v1/Chassis/Block-1" : {
113+ "@odata.id" : "/redfish/v1/Chassis/Block-1" ,
114+ "ChassisType" : "Enclosure" ,
115+ },
116+ "/redfish/v1/Chassis/Block-2" : {
117+ "@odata.id" : "/redfish/v1/Chassis/Block-2" ,
118+ "ChassisType" : "Enclosure" ,
119+ },
120+ "/redfish/v1/Chassis/Block-3" : {
121+ "@odata.id" : "/redfish/v1/Chassis/Block-3" ,
122+ "ChassisType" : "Enclosure" ,
123+ },
124+ "/redfish/v1/Chassis/Rack-4" : {
125+ "@odata.id" : "/redfish/v1/Chassis/Rack-4" ,
126+ "ChassisType" : "Rack" ,
127+ },
128+ "/redfish/v1/Chassis/Rack-5" : {
129+ "@odata.id" : "/redfish/v1/Chassis/Rack-5" ,
130+ "ChassisType" : "Rack" ,
131+ },
132+ "/redfish/v1/Chassis/Sled-6" : {
133+ "@odata.id" : "/redfish/v1/Chassis/Sled-6" ,
134+ "ChassisType" : "Sled" ,
135+ },
136+ })
137+ self .assertEqual (rf .num_chassis , 4 )
138+
139+ def test_num_racks (self , mock_connector ):
140+ rf = self .mock_redfish_system (mock_connector , data = {
141+ "/redfish/v1" : {
142+ "Chassis" : {
143+ "@odata.id" :"/redfish/v1/Chassis"
144+ }
145+ },
146+ "/redfish/v1/Chassis" : {
147+ "@odata.id" : "/redfish/v1/Chassis/" ,
148+ "Members@odata.count" : 6 ,
149+ "@odata.context" : "/redfish/v1/$metadata#ChassisCollection.ChassisCollection" ,
150+ "Members" : [
151+ {"@odata.id" : "/redfish/v1/Chassis/Block-1" },
152+ {"@odata.id" : "/redfish/v1/Chassis/Block-2" },
153+ {"@odata.id" : "/redfish/v1/Chassis/Block-3" },
154+ {"@odata.id" : "/redfish/v1/Chassis/Rack-4" },
155+ {"@odata.id" : "/redfish/v1/Chassis/Rack-5" },
156+ {"@odata.id" : "/redfish/v1/Chassis/Sled-6" },
157+ ],
158+ "@odata.type" : "#ChassisCollection.ChassisCollection" ,
159+ "Members@odata.navigationLink" : "/redfish/v1/Chassis/Members" ,
160+ "@odata.etag" : "W/\" aef74912345d8e2ae00d008591fc5d85\" " ,
161+ "Name" : "ChassisCollection" ,
162+ "Description" : "A Collection of Chassis resource instances."
163+ },
164+ "/redfish/v1/Chassis/Block-1" : {
165+ "@odata.id" : "/redfish/v1/Chassis/Block-1" ,
166+ "ChassisType" : "Enclosure" ,
167+ },
168+ "/redfish/v1/Chassis/Block-2" : {
169+ "@odata.id" : "/redfish/v1/Chassis/Block-2" ,
170+ "ChassisType" : "Enclosure" ,
171+ },
172+ "/redfish/v1/Chassis/Block-3" : {
173+ "@odata.id" : "/redfish/v1/Chassis/Block-3" ,
174+ "ChassisType" : "Enclosure" ,
175+ },
176+ "/redfish/v1/Chassis/Rack-4" : {
177+ "@odata.id" : "/redfish/v1/Chassis/Rack-4" ,
178+ "ChassisType" : "Rack" ,
179+ },
180+ "/redfish/v1/Chassis/Rack-5" : {
181+ "@odata.id" : "/redfish/v1/Chassis/Rack-5" ,
182+ "ChassisType" : "Rack" ,
183+ },
184+ "/redfish/v1/Chassis/Sled-6" : {
185+ "@odata.id" : "/redfish/v1/Chassis/Sled-6" ,
186+ "ChassisType" : "Sled" ,
187+ },
188+ })
189+ self .assertEqual (rf .num_racks , 2 )
190+
48191 def test_get_server (self , mock_connector ):
49192 rf = self .mock_redfish_system (mock_connector , data = {
50193 "/redfish/v1/Systems/System-1-2-1-1" : {
@@ -54,6 +197,39 @@ def test_get_server(self, mock_connector):
54197 rf_server = rf .get_server ("/redfish/v1/Systems/System-1-2-1-1" )
55198 self .assertEqual (type (rf_server ), RedfishServer )
56199
200+ def test_get_chassis (self , mock_connector ):
201+ rf = self .mock_redfish_system (mock_connector , data = {
202+ "/redfish/v1/Chassis/Sled-1-2-1" : {
203+ "@odata.id" : "/redfish/v1/Chassis/Sled-1-2-1" ,
204+ }
205+ })
206+ rf_chassis = rf .get_chassis ("/redfish/v1/Chassis/Sled-1-2-1" )
207+ self .assertEqual (type (rf_chassis ), RedfishChassis )
208+
209+ def test_get_rack (self , mock_connector ):
210+ rf = self .mock_redfish_system (mock_connector , data = {
211+ "/redfish/v1/Chassis/Rack-1" : {
212+ "@odata.id" : "/redfish/v1/Chassis/Rack-1" ,
213+ "ChassisType" : "Rack" ,
214+ }
215+ })
216+ rf_rack = rf .get_rack ("/redfish/v1/Chassis/Rack-1" )
217+ self .assertEqual (type (rf_rack ), RedfishRack )
218+
219+ def test_get_rack_bad (self , mock_connector ):
220+ rf = self .mock_redfish_system (mock_connector , data = {
221+ "/redfish/v1/Chassis/Sled-1-2-1" : {
222+ "@odata.id" : "/redfish/v1/Chassis/Sled-1-2-1" ,
223+ "ChassisType" : "Sled" ,
224+ }
225+ })
226+ with self .assertRaises (InvalidValueException ,
227+ msg = "Chassis type Sled does not match that of a Rack" ):
228+ rf .get_rack ("/redfish/v1/Chassis/Sled-1-2-1" )
229+
230+
231+ @mock .patch ("redfish_client.Connector" )
232+ class TestRedfishServer (RedfishTestCase ):
57233 def test_server_simple_properties (self , mock_connector ):
58234 rf = self .mock_redfish_system (mock_connector , data = {
59235 "/redfish/v1/Systems/System-1-2-1-1" : {
@@ -157,15 +333,9 @@ def test_server_name_no_sn(self, mock_connector):
157333 rf_server = rf .get_server ("/redfish/v1/Systems/System-1-2-1-1" )
158334 self .assertEqual (rf_server .name , "Dell Inc. System" )
159335
160- def test_get_chassis (self , mock_connector ):
161- rf = self .mock_redfish_system (mock_connector , data = {
162- "/redfish/v1/Chassis/Sled-1-2-1" : {
163- "@odata.id" : "/redfish/v1/Chassis/Sled-1-2-1" ,
164- }
165- })
166- rf_chassis = rf .get_chassis ("/redfish/v1/Chassis/Sled-1-2-1" )
167- self .assertEqual (type (rf_chassis ), RedfishChassis )
168336
337+ @mock .patch ("redfish_client.Connector" )
338+ class TestRedfishChassis (RedfishTestCase ):
169339 def test_get_chassis_properties (self , mock_connector ):
170340 rf = self .mock_redfish_system (mock_connector , data = {
171341 "/redfish/v1/Chassis/Sled-1-2-1" : {
@@ -199,27 +369,6 @@ def test_get_chassis_properties(self, mock_connector):
199369 self .assertEqual (rf_chassis .uuid (), "Sled-1-2-1" )
200370 self .assertEqual (rf_chassis .num_servers , 2 )
201371
202- def test_get_rack (self , mock_connector ):
203- rf = self .mock_redfish_system (mock_connector , data = {
204- "/redfish/v1/Chassis/Rack-1" : {
205- "@odata.id" : "/redfish/v1/Chassis/Rack-1" ,
206- "ChassisType" : "Rack" ,
207- }
208- })
209- rf_rack = rf .get_rack ("/redfish/v1/Chassis/Rack-1" )
210- self .assertEqual (type (rf_rack ), RedfishRack )
211-
212- def test_get_rack_bad (self , mock_connector ):
213- rf = self .mock_redfish_system (mock_connector , data = {
214- "/redfish/v1/Chassis/Sled-1-2-1" : {
215- "@odata.id" : "/redfish/v1/Chassis/Sled-1-2-1" ,
216- "ChassisType" : "Sled" ,
217- }
218- })
219- with self .assertRaises (InvalidValueException ,
220- msg = "Chassis type Sled does not match that of a Rack" ):
221- rf .get_rack ("/redfish/v1/Chassis/Sled-1-2-1" )
222-
223372 def test_get_rack_properties (self , mock_connector ):
224373 rf = self .mock_redfish_system (mock_connector , data = {
225374 "/redfish/v1/Chassis/Rack-1" : {
0 commit comments