ucslib 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -44,7 +44,6 @@ class UCSDestroy
44
44
  delete_org_XML= xml_builder.to_xml.to_s
45
45
 
46
46
  #Post
47
-
48
47
  begin
49
48
  RestClient.post(@url, delete_org_XML, :content_type => 'text/xml').body
50
49
  rescue Exception => e
@@ -35,6 +35,7 @@ class UCSInventory
35
35
  xml.classId("value" => "equipmentIOCard")
36
36
  xml.classId("value" => "equipmentFanModule")
37
37
  xml.classId("value" => "equipmentPsu")
38
+ xml.classId("value" => "networkElement")
38
39
  xml.classId("value" => "processorUnit")
39
40
  xml.classId("value" => "adaptorHostIf")
40
41
  xml.classId("value" => "memoryArray")
@@ -0,0 +1,69 @@
1
+ # Author:: Murali Raju (<murali.raju@appliv.com>)
2
+ # Copyright:: Copyright (c) 2012 Murali Raju.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ class UCSManage
19
+
20
+ def initialize(tokenjson)
21
+
22
+ @cookie = "#{JSON.parse(tokenjson)['cookie']}"
23
+ ip = "#{JSON.parse(tokenjson)['ip']}"
24
+ @url = "https://#{ip}/nuova"
25
+
26
+ end
27
+
28
+ def associate_service_profile_template_to_server_pool(json)
29
+
30
+ service_profile_boot_policy = JSON.parse(json)['service_profile_boot_policy']
31
+ service_profile_host_fw_policy = JSON.parse(json)['service_profile_host_fw_policy']
32
+ service_profile_mgmt_fw_policy = JSON.parse(json)['service_profile_mgmt_fw_policy']
33
+ service_profile_uuid_pool = JSON.parse(json)['service_profile_uuid_pool']
34
+ service_profile_template_to_bind = JSON.parse(json)['service_profile_template_to_bind']
35
+ service_profile_server_pool = JSON.parse(json)['service_profile_server_pool']
36
+ org = JSON.parse(json)['org']
37
+
38
+
39
+ xml_builder = Nokogiri::XML::Builder.new do |xml|
40
+ xml.configConfMos('cookie' => "#{@cookie}", 'inHierarchical' => 'true'){
41
+ xml.inConfigs{
42
+ xml.pair('key' => "org-root/org-#{org}/ls-#{service_profile_template_to_bind}"){
43
+ xml.lsServer('agentPolicyName' => '', 'biosProfileName' => '', 'bootPolicyName' => "#{service_profile_boot_policy}",
44
+ 'descr' => '', 'dn' => "org-root/org-#{org}/ls-#{service_profile_template_to_bind}",
45
+ 'dynamicConPolicyName' => '', 'extIPState' => 'none', 'hostFwPolicyName' => "#{service_profile_host_fw_policy}",
46
+ 'identPoolName' => "#{service_profile_uuid_pool}", 'localDiskPolicyName' => 'default', 'maintPolicyName' => 'default',
47
+ 'mgmtAccessPolicyName' => '', 'mgmtFwPolicyName' => "#{service_profile_mgmt_fw_policy}", 'powerPolicyName' => 'default',
48
+ 'scrubPolicyName' => '', 'solPolicyName' => 'default', 'srcTemplName' => '',
49
+ 'statsPolicyName' => 'default', 'status' => 'created,modified', 'usrLbl' => '', 'uuid' => '0', 'vconProfileName' => ''){
50
+ xml.lsRequirement('name' => "#{service_profile_server_pool}", 'qualifier' => '', 'restrictMigration' => 'no', 'rn' => 'pn-req')
51
+ }
52
+ }
53
+ }
54
+ }
55
+ end
56
+
57
+ #Create XML
58
+
59
+ associate_service_profile_template_to_server_pool_xml = xml_builder.to_xml.to_s
60
+
61
+ #Post
62
+ begin
63
+ RestClient.post(@url, associate_service_profile_template_to_server_pool_xml, :content_type => 'text/xml').body
64
+ rescue Exception => e
65
+ raise "Error #{e}"
66
+ end
67
+
68
+ end
69
+ end
@@ -0,0 +1,36 @@
1
+ # Author:: Murali Raju (<murali.raju@appliv.com>)
2
+ # Copyright:: Copyright (c) 2012 Murali Raju.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require 'nokogiri'
19
+
20
+ class UCSParser
21
+ class Nokogiri::XML::Node
22
+ TYPENAMES = {1=>'element',2=>'attribute',3=>'text',4=>'cdata',8=>'comment'}
23
+ def to_hash
24
+ {kind:TYPENAMES[node_type],name:name}.tap do |h|
25
+ h.merge! nshref:namespace.href, nsprefix:namespace.prefix if namespace
26
+ h.merge! text:text
27
+ h.merge! attr:attribute_nodes.map(&:to_hash) if element?
28
+ h.merge! kids:children.map(&:to_hash) if element?
29
+ end
30
+ end
31
+ end
32
+ class Nokogiri::XML::Document
33
+ def to_hash; root.to_hash; end
34
+ end
35
+
36
+ end
@@ -25,6 +25,34 @@ class UCSProvision
25
25
 
26
26
  end
27
27
 
28
+ def set_org(json)
29
+
30
+ org = JSON.parse(json)['org']
31
+ description = JSON.parse(json)['description']
32
+
33
+ xml_builder = Nokogiri::XML::Builder.new do |xml|
34
+ xml.configConfMos('cookie' => "#{@cookie}", 'inHierarchical' => 'true') {
35
+ xml.inConfigs{
36
+ xml.pair('key' => "org-root/org-#{org}") {
37
+ xml.orgOrg('descr' => "#{description}", 'dn' => "org-root/org-#{org}", 'name' => "#{org}", 'status' => 'created')
38
+ }
39
+ }
40
+ }
41
+ end
42
+
43
+ #Create xml
44
+ set_org_xml= xml_builder.to_xml.to_s
45
+
46
+ #Post
47
+
48
+ begin
49
+ RestClient.post(@url, set_org_xml, :content_type => 'text/xml').body
50
+ rescue Exception => e
51
+ raise "Error #{e}"
52
+ end
53
+
54
+ end
55
+
28
56
  def set_power_policy(json)
29
57
 
30
58
  power_policy = "#{JSON.parse(json)['power_policy']}"
@@ -39,11 +67,11 @@ class UCSProvision
39
67
  }
40
68
  end
41
69
 
42
- set_power_policy_XML = xml_builder.to_xml.to_s
70
+ set_power_policy_xml = xml_builder.to_xml.to_s
43
71
 
44
72
  #Post
45
73
  begin
46
- RestClient.post(@url, set_power_policy_XML, :content_type => 'text/xml').body
74
+ RestClient.post(@url, set_power_policy_xml, :content_type => 'text/xml').body
47
75
  rescue Exception => e
48
76
  raise "Error #{e}"
49
77
  end
@@ -65,12 +93,12 @@ class UCSProvision
65
93
  }
66
94
  end
67
95
 
68
- set_chassis_discovery_policy_XML = xml_builder.to_xml.to_s
96
+ set_chassis_discovery_policy_xml = xml_builder.to_xml.to_s
69
97
 
70
98
  #Post
71
99
 
72
100
  begin
73
- RestClient.post(@url, set_chassis_discovery_policy_XML, :content_type => 'text/xml').body
101
+ RestClient.post(@url, set_chassis_discovery_policy_xml, :content_type => 'text/xml').body
74
102
  rescue Exception => e
75
103
  raise "Error #{e}"
76
104
  end
@@ -93,19 +121,19 @@ class UCSProvision
93
121
  }
94
122
  end
95
123
 
96
- set_time_zone_XML = xml_builder.to_xml.to_s
124
+ set_time_zone_xml = xml_builder.to_xml.to_s
97
125
 
98
126
  #Post
99
127
 
100
128
  begin
101
- RestClient.post(@url, set_time_zone_XML, :content_type => 'text/xml').body
129
+ RestClient.post(@url, set_time_zone_xml, :content_type => 'text/xml').body
102
130
  rescue Exception => e
103
131
  raise "Error #{e}"
104
132
  end
105
133
 
106
134
  end
107
135
 
108
- def set_ntp(json)
136
+ def set_ntp_server(json)
109
137
 
110
138
  ntp_server = "#{JSON.parse(json)['ntp_server']}"
111
139
 
@@ -119,19 +147,50 @@ class UCSProvision
119
147
  }
120
148
  end
121
149
 
122
- set_ntp_XML = xml_builder.to_xml.to_s
150
+ set_ntp_xml = xml_builder.to_xml.to_s
123
151
 
124
152
  #Post
125
153
 
126
154
  begin
127
- RestClient.post(@url, set_ntp_XML, :content_type => 'text/xml').body
155
+ RestClient.post(@url, set_ntp_xml, :content_type => 'text/xml').body
128
156
  rescue Exception => e
129
157
  raise "Error #{e}"
130
158
  end
131
159
 
132
160
  end
133
161
 
134
- def create_server_port(json)
162
+
163
+ def set_local_disk_policy(json)
164
+
165
+ local_disk_policy = JSON.parse(json)['local_disk_policy']
166
+ org = JSON.parse(json)['org']
167
+
168
+ xml_builder = Nokogiri::XML::Builder.new do |xml|
169
+ xml.configConfMos('cookie' => "#{@cookie}", 'inHierarchical' => 'true'){
170
+ xml.inConfigs{
171
+ xml.pair('key' => "org-root/org-#{org}/local-disk-config-#{org}-localdisk"){
172
+ xml.storageLocalDiskConfigPolicy('descr' => '', 'dn' => "org-root/org-#{org}/local-disk-config-#{org}-localdisk",
173
+ 'mode' => "#{local_disk_policy}", 'name' => "#{org}-localdisk", 'protectConfig' => 'yes',
174
+ 'status' => 'created')
175
+ }
176
+ }
177
+ }
178
+ end
179
+
180
+ #Create xml
181
+ set_local_disk_policy_xml = xml_builder.to_xml.to_s
182
+
183
+ #Post
184
+ begin
185
+ RestClient.post(@url, set_local_disk_policy_xml, :content_type => 'text/xml').body
186
+ rescue Exception => e
187
+ raise "Error #{e}"
188
+ end
189
+
190
+ end
191
+
192
+
193
+ def set_server_port(json)
135
194
 
136
195
  switch = JSON.parse(json)['switch']
137
196
  port = JSON.parse(json)['port']
@@ -152,20 +211,20 @@ class UCSProvision
152
211
  }
153
212
  end
154
213
 
155
- #Create XML
156
- create_server_port_XML = xml_builder.to_xml.to_s
214
+ #Create xml
215
+ set_server_port_xml = xml_builder.to_xml.to_s
157
216
 
158
217
  #Post
159
218
 
160
219
  begin
161
- RestClient.post(@url, create_server_port_XML, :content_type => 'text/xml').body
220
+ RestClient.post(@url, set_server_port_xml, :content_type => 'text/xml').body
162
221
  rescue Exception => e
163
222
  raise "Error #{e}"
164
223
  end
165
224
 
166
225
  end
167
226
 
168
- def create_network_uplink_port(json)
227
+ def set_network_uplink_port(json)
169
228
 
170
229
  switch = JSON.parse(json)['switch']
171
230
  port = JSON.parse(json)['port']
@@ -186,13 +245,13 @@ class UCSProvision
186
245
  }
187
246
  end
188
247
 
189
- #Create XML
190
- create_network_uplink_XML = xml_builder.to_xml.to_s
248
+ #Create xml
249
+ set_network_uplink_xml = xml_builder.to_xml.to_s
191
250
 
192
251
  #Post
193
252
 
194
253
  begin
195
- RestClient.post(@url, create_network_uplink_XML, :content_type => 'text/xml').body
254
+ RestClient.post(@url, set_network_uplink_xml, :content_type => 'text/xml').body
196
255
  rescue Exception => e
197
256
  raise "Error #{e}"
198
257
  end
@@ -200,7 +259,7 @@ class UCSProvision
200
259
  end
201
260
 
202
261
 
203
- def create_fc_uplink_port(json)
262
+ def set_fc_uplink_port(json)
204
263
 
205
264
  switch = JSON.parse(json)['switch']
206
265
  port = JSON.parse(json)['port']
@@ -217,12 +276,12 @@ class UCSProvision
217
276
  }
218
277
  end
219
278
 
220
- #Create XML
221
- create_fc_uplink_XML = xml_builder.to_xml.to_s
279
+ #Create xml
280
+ set_fc_uplink_xml = xml_builder.to_xml.to_s
222
281
 
223
282
  #Post
224
283
  begin
225
- RestClient.post(@url, create_fc_uplink_XML, :content_type => 'text/xml').body
284
+ RestClient.post(@url, set_fc_uplink_xml, :content_type => 'text/xml').body
226
285
  rescue Exception => e
227
286
  raise "Error #{e}"
228
287
  end
@@ -230,7 +289,7 @@ class UCSProvision
230
289
  end
231
290
 
232
291
 
233
- def create_port_channel(json)
292
+ def set_port_channel(json)
234
293
  #Parse uplink modules on Expansion Module 2. Minimum 2 ports are required for creating a port channel.
235
294
  #As of this implementation, it is assumed that Northboutn uplinks are created using the Expansion Module and not the fixed module
236
295
 
@@ -241,7 +300,7 @@ class UCSProvision
241
300
  name = JSON.parse(json)['name']
242
301
 
243
302
 
244
- #Create XML
303
+ #Create xml
245
304
  xml_builder = Nokogiri::XML::Builder.new do |xml|
246
305
  xml.configConfMos('cookie' => "#{@cookie}", 'inHierarchical' => 'true'){
247
306
  xml.inConfigs{
@@ -260,75 +319,19 @@ class UCSProvision
260
319
  }
261
320
  end
262
321
 
263
- #Create XML
264
- create_port_channel_XML = xml_builder.to_xml.to_s
322
+ #Create xml
323
+ set_port_channel_xml = xml_builder.to_xml.to_s
265
324
 
266
325
  #Post
267
326
  begin
268
- RestClient.post(@url, create_port_channel_XML, :content_type => 'text/xml').body
327
+ RestClient.post(@url, set_port_channel_xml, :content_type => 'text/xml').body
269
328
  rescue Exception => e
270
329
  raise "Error #{e}"
271
330
  end
272
331
 
273
332
  end
274
333
 
275
- def create_org(json)
276
-
277
- org = JSON.parse(json)['org']
278
-
279
- xml_builder = Nokogiri::XML::Builder.new do |xml|
280
- xml.configConfMos('cookie' => "#{@cookie}", 'inHierarchical' => 'true') {
281
- xml.inConfigs{
282
- xml.pair('key' => "org-root/org-#{org}") {
283
- xml.orgOrg('descr' => "#{org} org", 'dn' => "org-root/org-#{org}", 'name' => "#{org}", 'status' => 'created')
284
- }
285
- }
286
- }
287
- end
288
-
289
- #Create XML
290
- create_org_XML= xml_builder.to_xml.to_s
291
-
292
- #Post
293
-
294
- begin
295
- RestClient.post(@url, create_org_XML, :content_type => 'text/xml').body
296
- rescue Exception => e
297
- raise "Error #{e}"
298
- end
299
-
300
- end
301
-
302
- def set_local_disk_policy(json)
303
-
304
- local_disk_policy = JSON.parse(json)['local_disk_policy']
305
- org = JSON.parse(json)['org']
306
-
307
- xml_builder = Nokogiri::XML::Builder.new do |xml|
308
- xml.configConfMos('cookie' => "#{@cookie}", 'inHierarchical' => 'true'){
309
- xml.inConfigs{
310
- xml.pair('key' => "org-root/org-#{org}/local-disk-config-#{org}-localdisk"){
311
- xml.storageLocalDiskConfigPolicy('descr' => '', 'dn' => "org-root/org-#{org}/local-disk-config-#{org}-localdisk",
312
- 'mode' => "#{local_disk_policy}", 'name' => "#{org}-localdisk", 'protectConfig' => 'yes',
313
- 'status' => 'created')
314
- }
315
- }
316
- }
317
- end
318
-
319
- #Create XML
320
- set_local_disk_policy_XML = xml_builder.to_xml.to_s
321
-
322
- #Post
323
- begin
324
- RestClient.post(@url, set_local_disk_policy_XML, :content_type => 'text/xml').body
325
- rescue Exception => e
326
- raise "Error #{e}"
327
- end
328
-
329
- end
330
-
331
- def create_local_boot_policy(json)
334
+ def set_local_boot_policy(json)
332
335
 
333
336
  name = JSON.parse(json)['name']
334
337
  description = JSON.parse(json)['description']
@@ -351,19 +354,19 @@ class UCSProvision
351
354
  }
352
355
  end
353
356
 
354
- #Create XML
355
- create_local_boot_policy_XML = xml_builder.to_xml.to_s
357
+ #Create xml
358
+ set_local_boot_policy_xml = xml_builder.to_xml.to_s
356
359
 
357
360
  #Post
358
361
  begin
359
- RestClient.post(@url, create_local_boot_policy_XML, :content_type => 'text/xml').body
362
+ RestClient.post(@url, set_local_boot_policy_xml, :content_type => 'text/xml').body
360
363
  rescue Exception => e
361
364
  raise "Error #{e}"
362
365
  end
363
366
 
364
367
  end
365
368
 
366
- def create_pxe_boot_policy(json)
369
+ def set_pxe_boot_policy(json)
367
370
 
368
371
  name = JSON.parse(json)['name']
369
372
  description = JSON.parse(json)['description']
@@ -393,25 +396,25 @@ class UCSProvision
393
396
  }
394
397
  end
395
398
 
396
- #Create XML
397
- create_pxe_boot_policy_XML = xml_builder.to_xml.to_s
399
+ #Create xml
400
+ set_pxe_boot_policy_xml = xml_builder.to_xml.to_s
398
401
 
399
402
  #Post
400
403
  begin
401
- RestClient.post(@url, create_pxe_boot_policy_XML, :content_type => 'text/xml').body
404
+ RestClient.post(@url, set_pxe_boot_policy_xml, :content_type => 'text/xml').body
402
405
  rescue Exception => e
403
406
  raise "Error #{e}"
404
407
  end
405
408
 
406
409
  end
407
410
 
408
- def create_san_boot_policy(json)
411
+ def set_san_boot_policy(json)
409
412
 
410
413
  name = JSON.parse(json)['name']
411
414
  description = JSON.parse(json)['description']
412
415
  org = JSON.parse(json)['org']
413
- vnic_a = JSON.parse(json)['vnic_a']
414
- vnic_b = JSON.parse(json)['vnic_b']
416
+ vnic_a = JSON.parse(json)['vhba_a']
417
+ vnic_b = JSON.parse(json)['vhba_b']
415
418
  target_a_1 = JSON.parse(json)['target_a_1']
416
419
  target_a_2 = JSON.parse(json)['target_a_2']
417
420
  target_b_1 = JSON.parse(json)['target_b_1']
@@ -439,12 +442,12 @@ class UCSProvision
439
442
  }
440
443
  end
441
444
 
442
- #Create XML
443
- create_san_boot_policy_XML = xml_builder.to_xml.to_s
445
+ #Create xml
446
+ set_san_boot_policy_xml = xml_builder.to_xml.to_s
444
447
 
445
448
  #Post
446
449
  begin
447
- RestClient.post(@url, create_san_boot_policy_XML, :content_type => 'text/xml').body
450
+ RestClient.post(@url, set_san_boot_policy_xml, :content_type => 'text/xml').body
448
451
  rescue Exception => e
449
452
  raise "Error #{e}"
450
453
  end
@@ -452,21 +455,23 @@ class UCSProvision
452
455
  end
453
456
 
454
457
 
455
- def create_host_firmware_package(json)
458
+ def set_mgmt_firmware_package(json)
459
+
460
+ mgmt_firmware_pkg_name = JSON.parse(json)['mgmt_firmware_pkg_name']
461
+ mgmt_firmware_pkg_description = JSON.parse(json)['mgmt_firmware_pkg_description']
462
+ hardware_model = JSON.parse(json)['hardware_model'].to_s
463
+ hardware_type = JSON.parse(json)['hardware_type']
464
+ hardware_vendor = JSON.parse(json)['hardware_vendor'].to_s
465
+ firmware_version = JSON.parse(json)['firmware_version'].to_s
466
+ org = JSON.parse(json)['org']
467
+
456
468
 
457
- host_firmware_pkg_name = JSON.parse(json)['host_firmware_pkg_name']
458
- hardware_model = JSON.parse(json)['hardware_model']
459
- hardware_type = JSON.parse(json)['hardware_type']
460
- hardware_vendor = JSON.parse(json)['hardware_vendor']
461
- firmware_version = JSON.parse(json)['firmware_version']
462
- org = JSON.parse(json)['org']
463
-
464
469
  xml_builder = Nokogiri::XML::Builder.new do |xml|
465
470
  xml.configConfMos('cookie' => "#{@cookie}", 'inHierarchical' => 'true'){
466
471
  xml.inConfigs{
467
- xml.pair('key' => "org-root/org-#{org}/fw-host-pack-#{host_firmware_pkg_name}"){
468
- xml.firmwareComputeHostPack('descr' => '', 'dn' => "org-root/org-#{org}/fw-host-pack-#{host_firmware_pkg_name}",
469
- 'ignoreCompCheck' => 'yes', 'mode' => 'staged', 'name' => "#{host_firmware_pkg_name}", 'stageSize' => '0',
472
+ xml.pair('key' => "org-root/org-#{org}/fw-mgmt-pack-#{mgmt_firmware_pkg_name}"){
473
+ xml.firmwareComputeMgmtPack('descr' => "#{mgmt_firmware_pkg_description}", 'dn' => "org-root/org-#{org}/fw-mgmt-pack-#{mgmt_firmware_pkg_name}",
474
+ 'ignoreCompCheck' => 'yes', 'mode' => 'staged', 'name' => "#{mgmt_firmware_pkg_name}", 'stageSize' => '0',
470
475
  'status' => 'created', 'updateTrigger' => 'immediate'){
471
476
  xml.firmwarePackItem('hwModel' => "#{hardware_model}", 'hwVendor' => "#{hardware_vendor}",
472
477
  'rn' => "pack-image-#{hardware_vendor}|#{hardware_model}|#{hardware_type}",
@@ -478,22 +483,84 @@ class UCSProvision
478
483
  end
479
484
 
480
485
 
486
+ #Create xml
481
487
 
482
- #Create XML
488
+ set_mgmt_firmware_packagexml = xml_builder.to_xml.to_s
483
489
 
484
- create_host_firmware_packageXML = xml_builder.to_xml.to_s
490
+ #Post
491
+
492
+ begin
493
+ RestClient.post(@url, set_mgmt_firmware_packagexml, :content_type => 'text/xml').body
494
+ rescue Exception => e
495
+ raise "Error #{e}"
496
+ end
497
+
498
+ end
499
+
500
+ def set_host_firmware_package(json)
501
+
502
+ host_firmware_pkg_name = JSON.parse(json)['host_firmware_pkg_name']
503
+ host_firmware_pkg_description = JSON.parse(json)['host_firmware_pkg_description']
504
+ hardware_model = JSON.parse(json)['hardware_model'].to_s
505
+ hardware_type = JSON.parse(json)['hardware_type']
506
+ hardware_vendor = JSON.parse(json)['hardware_vendor'].to_s
507
+ firmware_version = JSON.parse(json)['firmware_version'].to_s
508
+ org = JSON.parse(json)['org']
509
+ flag = JSON.parse(json)['flag']
510
+
511
+ unless flag == 'update'
512
+
513
+ xml_builder = Nokogiri::XML::Builder.new do |xml|
514
+ xml.configConfMos('cookie' => "#{@cookie}", 'inHierarchical' => 'true'){
515
+ xml.inConfigs{
516
+ xml.pair('key' => "org-root/org-#{org}/fw-host-pack-#{host_firmware_pkg_name}"){
517
+ xml.firmwareComputeHostPack('descr' => "#{host_firmware_pkg_description}", 'dn' => "org-root/org-#{org}/fw-host-pack-#{host_firmware_pkg_name}",
518
+ 'ignoreCompCheck' => 'yes', 'mode' => 'staged', 'name' => "#{host_firmware_pkg_name}", 'stageSize' => '0',
519
+ 'status' => 'created', 'updateTrigger' => 'immediate'){
520
+ xml.firmwarePackItem('hwModel' => "#{hardware_model}", 'hwVendor' => "#{hardware_vendor}",
521
+ 'rn' => "pack-image-#{hardware_vendor}|#{hardware_model}|#{hardware_type}",
522
+ 'type' => "#{hardware_type}", 'version' => "#{firmware_version}")
523
+ }
524
+ }
525
+ }
526
+ }
527
+ end
528
+
529
+ else
530
+
531
+ xml_builder = Nokogiri::XML::Builder.new do |xml|
532
+ xml.configConfMos('cookie' => "#{@cookie}", 'inHierarchical' => 'false'){
533
+ xml.inConfigs{
534
+ xml.pair('key' => "org-root/org-#{org}/fw-host-pack-#{host_firmware_pkg_name}"){
535
+ xml.firmwareComputeHostPack('descr' => "#{host_firmware_pkg_description}", 'dn' => "org-root/org-#{org}/fw-host-pack-#{host_firmware_pkg_name}",
536
+ 'ignoreCompCheck' => 'yes', 'mode' => 'staged', 'stageSize' => '0', 'updateTrigger' => 'immediate'){
537
+ xml.firmwarePackItem('hwModel' => "#{hardware_model}", 'hwVendor' => "#{hardware_vendor}",
538
+ 'rn' => "pack-image-#{hardware_vendor}|#{hardware_model}|#{hardware_type}",
539
+ 'type' => "#{hardware_type}", 'version' => "#{firmware_version}")
540
+ }
541
+ }
542
+ }
543
+ }
544
+ end
545
+
546
+ end
547
+
548
+
549
+ #Create xml
550
+
551
+ set_host_firmware_packagexml = xml_builder.to_xml.to_s
485
552
 
486
553
  #Post
487
554
 
488
555
  begin
489
- RestClient.post(@url, create_host_firmware_packageXML, :content_type => 'text/xml').body
556
+ RestClient.post(@url, set_host_firmware_packagexml, :content_type => 'text/xml').body
490
557
  rescue Exception => e
491
558
  raise "Error #{e}"
492
559
  end
493
560
 
494
561
  end
495
562
 
496
- def create_management_ip_pool(json)
563
+ def set_management_ip_pool(json)
497
564
 
498
565
  start_ip = JSON.parse(json)['start_ip']
499
566
  end_ip = JSON.parse(json)['end_ip']
@@ -511,19 +578,19 @@ class UCSProvision
511
578
  }
512
579
  end
513
580
 
514
- #Create XML
515
- create_management_ip_pool_XML = xml_builder.to_xml.to_s
581
+ #Create xml
582
+ set_management_ip_pool_xml = xml_builder.to_xml.to_s
516
583
 
517
584
  #Post
518
585
  begin
519
- RestClient.post(@url, create_management_ip_pool_XML, :content_type => 'text/xml').body
586
+ RestClient.post(@url, set_management_ip_pool_xml, :content_type => 'text/xml').body
520
587
  rescue Exception => e
521
588
  raise "Error #{e}"
522
589
  end
523
590
 
524
591
  end
525
592
 
526
- def create_vlan(json)
593
+ def set_vlan(json)
527
594
 
528
595
  vlan_id = JSON.parse(json)['vlan_id']
529
596
  vlan_name = JSON.parse(json)['vlan_name']
@@ -539,19 +606,19 @@ class UCSProvision
539
606
  }
540
607
  end
541
608
 
542
- #Create XML
543
- create_vlan_XML = xml_builder.to_xml.to_s
609
+ #Create xml
610
+ set_vlan_xml = xml_builder.to_xml.to_s
544
611
 
545
612
  #Post
546
613
  begin
547
- RestClient.post(@url, create_vlan_XML, :content_type => 'text/xml').body
614
+ RestClient.post(@url, set_vlan_xml, :content_type => 'text/xml').body
548
615
  rescue Exception => e
549
616
  raise "Error #{e}"
550
617
  end
551
618
 
552
619
  end
553
620
 
554
- def create_mac_pool(json)
621
+ def set_mac_pool(json)
555
622
 
556
623
  mac_pool_name = JSON.parse(json)['mac_pool_name']
557
624
  mac_pool_start = JSON.parse(json)['mac_pool_start']
@@ -584,19 +651,19 @@ class UCSProvision
584
651
 
585
652
  end
586
653
 
587
- #Create XML
588
- create_mac_pool_XML = xml_builder.to_xml.to_s
654
+ #Create xml
655
+ set_mac_pool_xml = xml_builder.to_xml.to_s
589
656
 
590
657
  #Post
591
658
  begin
592
- RestClient.post(@url, create_mac_pool_XML, :content_type => 'text/xml').body
659
+ RestClient.post(@url, set_mac_pool_xml, :content_type => 'text/xml').body
593
660
  rescue Exception => e
594
661
  raise "Error #{e}"
595
662
  end
596
663
 
597
664
  end
598
665
 
599
- def create_vnic_template(json)
666
+ def set_vnic_template(json)
600
667
 
601
668
  vnic_template_name = JSON.parse(json)['vnic_template_name']
602
669
  vnic_template_mac_pool = JSON.parse(json)['vnic_template_mac_pool']
@@ -628,12 +695,12 @@ class UCSProvision
628
695
  }
629
696
  end
630
697
 
631
- #Create XML
632
- create_vnic_template_XML = xml_builder.to_xml.to_s
698
+ #Create xml
699
+ set_vnic_template_xml = xml_builder.to_xml.to_s
633
700
 
634
701
  #Post
635
702
  begin
636
- RestClient.post(@url, create_vnic_template_XML, :content_type => 'text/xml').body
703
+ RestClient.post(@url, set_vnic_template_xml, :content_type => 'text/xml').body
637
704
  rescue Exception => e
638
705
  raise "Error #{e}"
639
706
  end
@@ -641,7 +708,7 @@ class UCSProvision
641
708
  end
642
709
 
643
710
 
644
- def create_vsan(json)
711
+ def set_vsan(json)
645
712
 
646
713
  vsan_id = JSON.parse(json)['vsan_id']
647
714
  vsan_fcoe_id = JSON.parse(json)['vsan_fcoe_id']
@@ -658,19 +725,19 @@ class UCSProvision
658
725
  }
659
726
  end
660
727
 
661
- #Create XML
662
- create_vsan_XML = xml_builder.to_xml.to_s
728
+ #Create xml
729
+ set_vsan_xml = xml_builder.to_xml.to_s
663
730
 
664
731
  #Post
665
732
  begin
666
- RestClient.post(@url, create_vsan_XML, :content_type => 'text/xml').body
733
+ RestClient.post(@url, set_vsan_xml, :content_type => 'text/xml').body
667
734
  rescue Exception => e
668
735
  raise "Error #{e}"
669
736
  end
670
737
 
671
738
  end
672
739
 
673
- def create_wwnn_pool(json)
740
+ def set_wwnn_pool(json)
674
741
 
675
742
  wwnn_name = JSON.parse(json)['wwnn_name']
676
743
  wwnn_from = JSON.parse(json)['wwnn_from']
@@ -690,19 +757,19 @@ class UCSProvision
690
757
  }
691
758
  }
692
759
  end
693
- #Create XML
694
- create_wwnn_pool_XML = xml_builder.to_xml.to_s
760
+ #Create xml
761
+ set_wwnn_pool_xml = xml_builder.to_xml.to_s
695
762
 
696
763
  #Post
697
764
  begin
698
- RestClient.post(@url, create_wwnn_pool_XML, :content_type => 'text/xml').body
765
+ RestClient.post(@url, set_wwnn_pool_xml, :content_type => 'text/xml').body
699
766
  rescue Exception => e
700
767
  raise "Error #{e}"
701
768
  end
702
769
 
703
770
  end
704
771
 
705
- def create_wwpn_pool(json)
772
+ def set_wwpn_pool(json)
706
773
 
707
774
  wwpn_name = JSON.parse(json)['wwpn_name']
708
775
  wwpn_from = JSON.parse(json)['wwpn_from']
@@ -724,32 +791,33 @@ class UCSProvision
724
791
  end
725
792
 
726
793
 
727
- #Create XML
728
- create_wwpn_pool_XML = xml_builder.to_xml.to_s
794
+ #Create xml
795
+ set_wwpn_pool_xml = xml_builder.to_xml.to_s
729
796
 
730
797
  #Post
731
798
  begin
732
- RestClient.post(@url, create_wwpn_pool_XML, :content_type => 'text/xml').body
799
+ RestClient.post(@url, set_wwpn_pool_xml, :content_type => 'text/xml').body
733
800
  rescue Exception => e
734
801
  raise "Error #{e}"
735
802
  end
736
803
 
737
804
  end
738
805
 
739
- def create_vhba_template(json)
806
+ def set_vhba_template(json)
740
807
 
741
- vbha_template_name = JSON.parse(json)['vbha_template_name']
808
+ vhba_template_name = JSON.parse(json)['vhba_template_name']
742
809
  wwpn_pool = JSON.parse(json)['wwpn_pool']
743
810
  switch = JSON.parse(json)['switch']
744
811
  vsan_name = JSON.parse(json)['vsan_name']
745
812
  org = JSON.parse(json)['org']
813
+ description = JSON.parse(json)['description']
746
814
 
747
815
  xml_builder = Nokogiri::XML::Builder.new do |xml|
748
816
  xml.configConfMos('cookie' => "#{@cookie}", 'inHierarchical' => 'true'){
749
817
  xml.inConfigs{
750
- xml.pair('key' => "org-root/org-#{org}/san-conn-templ-#{vbha_template_name}"){
751
- xml.vnicSanConnTempl('descr' => '', 'dn' => "org-root/org-#{org}/san-conn-templ-#{vbha_template_name}",
752
- 'identPoolName' => "#{wwpn_pool}", 'maxDataFieldSize' => '2048', 'name' => "#{vbha_template_name}",
818
+ xml.pair('key' => "org-root/org-#{org}/san-conn-templ-#{vhba_template_name}"){
819
+ xml.vnicSanConnTempl('descr' => "#{description}", 'dn' => "org-root/org-#{org}/san-conn-templ-#{vhba_template_name}",
820
+ 'identPoolName' => "#{wwpn_pool}", 'maxDataFieldSize' => '2048', 'name' => "#{vhba_template_name}",
753
821
  'pinToGroupName' => '', 'qosPolicyName' => '', 'statsPolicyName' => 'default', 'status' => 'created',
754
822
  'switchId' => "#{switch}", 'templType' => 'updating-template'){
755
823
  xml.vnicFcIf('name' => "#{vsan_name}", 'rn' => 'if-default')
@@ -758,19 +826,20 @@ class UCSProvision
758
826
  }
759
827
  }
760
828
  end
761
- #Create XML
762
- create_vhba_template_XML = xml_builder.to_xml.to_s
829
+
830
+ #Create xml
831
+ set_vhba_template_xml = xml_builder.to_xml.to_s
763
832
 
764
833
  #Post
765
834
  begin
766
- RestClient.post(@url, create_vhba_template_XML, :content_type => 'text/xml').body
835
+ RestClient.post(@url, set_vhba_template_xml, :content_type => 'text/xml').body
767
836
  rescue Exception => e
768
837
  raise "Error #{e}"
769
838
  end
770
839
 
771
840
  end
772
841
 
773
- def create_uuid_pool(json)
842
+ def set_uuid_pool(json)
774
843
 
775
844
  uuid_pool_name = JSON.parse(json)['uuid_pool_name']
776
845
  uuid_from = JSON.parse(json)['uuid_from']
@@ -791,19 +860,19 @@ class UCSProvision
791
860
  }
792
861
  end
793
862
 
794
- #Create XML
795
- create_uuid_pool_XML = xml_builder.to_xml.to_s
863
+ #Create xml
864
+ set_uuid_pool_xml = xml_builder.to_xml.to_s
796
865
 
797
866
  #Post
798
867
  begin
799
- RestClient.post(@url, create_uuid_pool_XML, :content_type => 'text/xml').body
868
+ RestClient.post(@url, set_uuid_pool_xml, :content_type => 'text/xml').body
800
869
  rescue Exception => e
801
870
  raise "Error #{e}"
802
871
  end
803
872
 
804
873
  end
805
874
 
806
- def create_service_profile_template(json)
875
+ def set_service_profile_template(json)
807
876
 
808
877
  service_profile_template_name = JSON.parse(json)['service_profile_template_name']
809
878
  service_profile_template_boot_policy = JSON.parse(json)['service_profile_template_boot_policy']
@@ -863,19 +932,19 @@ class UCSProvision
863
932
  }
864
933
  end
865
934
 
866
- #Create Template XML
867
- create_service_profile_template_XML = xml_builder.to_xml.to_s
935
+ #Create Template xml
936
+ set_service_profile_template_xml = xml_builder.to_xml.to_s
868
937
 
869
938
  #Post create Service Profile Template
870
939
  begin
871
- RestClient.post(@url, create_service_profile_template_XML, :content_type => 'text/xml').body
940
+ RestClient.post(@url, set_service_profile_template_xml, :content_type => 'text/xml').body
872
941
  rescue Exception => e
873
942
  raise "Error #{e}"
874
943
  end
875
944
 
876
945
  end
877
946
 
878
- def create_service_profiles_from_template(json)
947
+ def set_service_profiles_from_template(json)
879
948
 
880
949
  service_profile_template_name = JSON.parse(json)['service_profile_template_name'].to_s
881
950
  org = JSON.parse(json)['org'].to_s
@@ -891,12 +960,12 @@ class UCSProvision
891
960
  end
892
961
 
893
962
 
894
- #Create Template XML
895
- create_service_profiles_from_template_XML = xml_builder.to_xml.to_s
963
+ #Create Template xml
964
+ set_service_profiles_from_template_xml = xml_builder.to_xml.to_s
896
965
 
897
966
  #Post create Service Profiles from Template
898
967
  begin
899
- RestClient.post(@url, create_service_profiles_from_template_XML, :content_type => 'text/xml').body
968
+ RestClient.post(@url, set_service_profiles_from_template_xml, :content_type => 'text/xml').body
900
969
  rescue Exception => e
901
970
  raise "Error #{e}"
902
971
  end
@@ -905,7 +974,7 @@ class UCSProvision
905
974
 
906
975
 
907
976
 
908
- def create_service_profiles(json)
977
+ def set_service_profiles(json)
909
978
 
910
979
  service_profile_names = JSON.parse(json)['service_profile_names'].to_s.split(',')
911
980
  service_profile_boot_policy = JSON.parse(json)['service_profile_boot_policy'].to_s
@@ -928,7 +997,7 @@ class UCSProvision
928
997
 
929
998
  xml_builder = Nokogiri::XML::Builder.new do |xml|
930
999
  xml.configConfMos('cookie' => "#{@cookie}", 'inHierarchical' => 'true'){
931
- xml.inConfigs{@service_profile_names.each do |service_profile_name|
1000
+ xml.inConfigs{service_profile_names.each do |service_profile_name|
932
1001
  xml.pair('key' => "org-root/org-#{org}/ls-#{service_profile_name}"){
933
1002
  xml.lsServer('agentPolicyName' => '', 'biosProfileName' => '', 'bootPolicyName' => "#{service_profile_boot_policy}",
934
1003
  'descr' => '', 'dn' => "org-root/org-#{org}/ls-#{service_profile_name}",
@@ -937,14 +1006,14 @@ class UCSProvision
937
1006
  'mgmtAccessPolicyName' => '', 'mgmtFwPolicyName' => "#{service_profile_mgmt_fw_policy}", 'name' => "#{service_profile_name}",
938
1007
  'powerPolicyName' => 'default', 'scrubPolicyName' => '', 'solPolicyName' => 'default', 'srcTemplName' => "#{service_profile_template_to_bind}",
939
1008
  'statsPolicyName' => 'default', 'status' => 'created', 'usrLbl' => '', 'uuid' => '0', 'vconProfileName' => ''){
940
- @service_profile_vnics_a.each do |vnic_a|
1009
+ service_profile_vnics_a.each do |vnic_a|
941
1010
  xml.vnicEther('adaptorProfileName' => '', 'addr' => 'derived', 'adminVcon' => 'any', 'identPoolName' => '', 'mtu' => '1500',
942
1011
  'name' => "#{vnic_a}", 'nwCtrlPolicyName' => '', 'nwTemplName' => "#{service_profile_vnic_a_template}",
943
1012
  'order' => '3', 'pinToGroupName' => '', 'qosPolicyName' => '', 'rn' => "ether-#{vnic_a}",
944
1013
  'statsPolicyName' => 'default', 'status' => 'created', 'switchId' => 'A')
945
1014
  end
946
1015
 
947
- @service_profile_vnics_b.each do |vnic_b|
1016
+ service_profile_vnics_b.each do |vnic_b|
948
1017
  xml.vnicEther('adaptorProfileName' => '', 'addr' => 'derived', 'adminVcon' => 'any', 'identPoolName' => '', 'mtu' => '1500',
949
1018
  'name' => "#{vnic_b}", 'nwCtrlPolicyName' => '', 'nwTemplName' => "#{service_profile_vnic_b_template}",
950
1019
  'order' => '4', 'pinToGroupName' => '', 'qosPolicyName' => '', 'rn' => "ether-#{vnic_b}",
@@ -954,12 +1023,12 @@ class UCSProvision
954
1023
  xml.vnicFcNode('addr' => 'pool-derived', 'identPoolName' => "#{service_profile_wwnn_pool}", 'rn' => 'fc-node')
955
1024
 
956
1025
  xml.vnicFc('adaptorProfileName' => '', 'addr' => 'derived', 'adminVcon' => 'any', 'identPoolName' => '', 'maxDataFieldSize' => '2048',
957
- 'name' => "#{service_profile_vhba_a}", 'nwTemplName' => "#{service_profile_vhba_a_}",
1026
+ 'name' => "#{service_profile_vhba_a}", 'nwTemplName' => "#{service_profile_vhba_a}",
958
1027
  'order' => '1', 'persBind' => 'disabled', 'persBindClear' => 'no', 'pinToGroupName' => '', 'qosPolicyName' => '',
959
1028
  'rn' => "fc-#{service_profile_vhba_a}", 'statsPolicyName' => 'default', 'status' => 'created', 'switchId' => 'A')
960
1029
 
961
1030
  xml.vnicFc('adaptorProfileName' => '', 'addr' => 'derived', 'adminVcon' => 'any', 'identPoolName' => '', 'maxDataFieldSize' => '2048',
962
- 'name' => "#{service_profile_vhba_b}", 'nwTemplName' => "#{service_profile_vhba_b_}",
1031
+ 'name' => "#{service_profile_vhba_b}", 'nwTemplName' => "#{service_profile_vhba_b}",
963
1032
  'order' => '2', 'persBind' => 'disabled', 'persBindClear' => 'no', 'pinToGroupName' => '', 'qosPolicyName' => '',
964
1033
  'rn' => "fc-#{service_profile_vhba_b}", 'statsPolicyName' => 'default', 'status' => 'created', 'switchId' => 'B')
965
1034
 
@@ -972,18 +1041,72 @@ class UCSProvision
972
1041
  end
973
1042
 
974
1043
 
975
- #Create Template XML
976
- create_service_profiles_XML = xml_builder.to_xml.to_s
1044
+ #Create Template xml
1045
+ set_service_profiles_xml = xml_builder.to_xml.to_s
977
1046
 
978
- #Post create Service Profile Template
1047
+ #Post create Service Profiles
979
1048
  begin
980
- RestClient.post(@url, create_service_profiles_XML, :content_type => 'text/xml').body
1049
+ RestClient.post(@url, set_service_profiles_xml, :content_type => 'text/xml').body
981
1050
  rescue Exception => e
982
1051
  raise "Error #{e}"
983
1052
  end
984
1053
 
985
- end
1054
+ end
986
1055
 
1056
+ def set_server_pool(json)
1057
+ server_pool_name = JSON.parse(json)['server_pool_name'].to_s
1058
+ server_pool_description = JSON.parse(json)['server_pool_description']
1059
+ server_pool_chassis_id = JSON.parse(json)['server_pool_chassis_id'].to_i
1060
+ server_pool_blades = JSON.parse(json)['server_pool_blades'].to_s.split(',')
1061
+ org = JSON.parse(json)['org'].to_s
1062
+
1063
+ xml_builder = Nokogiri::XML::Builder.new do |xml|
1064
+ xml.configConfMos('cookie' => "#{@ucs_cookie}", 'inHierarchical' => 'true'){
1065
+ xml.inConfigs{
1066
+ xml.pair('key' => "org-root/org-#{org}/compute-pool-#{server_pool_name}"){
1067
+ xml.computePool('descr' => "#{server_pool_description}", 'dn' => "org-root/org-#{org}/compute-pool-#{server_pool_name}",
1068
+ 'name' => "#{server_pool_name}", 'status' => 'created'){
1069
+ server_pool_blades.each do |slot_id|
1070
+ xml.computePooledSlot('chassisId' => "#{server_pool_chassis_id}",
1071
+ 'rn' => "blade-#{server_pool_chassis_id}-#{slot_id}", 'slotId' => "#{slot_id}")
1072
+ end
1073
+ }
1074
+ }
1075
+ }
1076
+ }
1077
+ end
1078
+
1079
+
1080
+
1081
+ # xml_builder = Nokogiri::XML::Builder.new do |xml|
1082
+ # xml.configConfMos('cookie' => "#{@ucs_cookie}", 'inHierarchical' => 'true'){
1083
+ # xml.inConfigs{
1084
+ # xml.pair('key' => "org-root/org-#{server_pool_org}/compute-pool-#{server_pool_name}"){
1085
+ # xml.computePool('descr' => '', 'dn' => "org-root/org-#{server_pool_org}/compute-pool-#{server_pool_name}",
1086
+ # 'status' => 'created,modified'){
1087
+ # server_pool_blades.each do |slot_id|
1088
+ # xml.computePooledSlot('chassisId' => "#{server_pool_chassis_id}",
1089
+ # 'rn' => "blade-#{server_pool_chassis_id}-#{slot_id}", 'slotId' => "#{slot_id}",
1090
+ # 'status' => 'created')
1091
+ # end
1092
+ # }
1093
+ # }
1094
+ # }
1095
+ # }
1096
+ # end
1097
+
1098
+
1099
+ #Create XML
1100
+
1101
+ set_server_pool_xml = xml_builder.to_xml.to_s
1102
+
1103
+ #Post
1104
+ begin
1105
+ RestClient.post(@url, set_server_pool_xml, :content_type => 'text/xml').body
1106
+ rescue Exception => e
1107
+ raise "Error #{e}"
1108
+ end
987
1109
 
1110
+ end
988
1111
 
989
1112
  end
@@ -0,0 +1,67 @@
1
+ # Author:: Murali Raju (<murali.raju@appliv.com>)
2
+ # Copyright:: Copyright (c) 2012 Murali Raju.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ class UCSUpdate
19
+
20
+ def initialize(tokenjson)
21
+
22
+ @cookie = "#{JSON.parse(tokenjson)['cookie']}"
23
+ ip = "#{JSON.parse(tokenjson)['ip']}"
24
+ @url = "https://#{ip}/nuova"
25
+
26
+ end
27
+
28
+ def update_host_firmware_package(json)
29
+
30
+ host_firmware_pkg_name = JSON.parse(json)['host_firmware_pkg_name']
31
+ hardware_model = JSON.parse(json)['hardware_model'].to_s
32
+ hardware_type = JSON.parse(json)['hardware_type']
33
+ hardware_vendor = JSON.parse(json)['hardware_vendor'].to_s
34
+ firmware_version = JSON.parse(json)['firmware_version'].to_s
35
+ org = JSON.parse(json)['org']
36
+
37
+ xml_builder = Nokogiri::XML::Builder.new do |xml|
38
+ xml.configConfMos('cookie' => "#{@cookie}", 'inHierarchical' => 'false'){
39
+ xml.inConfigs{
40
+ xml.pair('key' => "org-root/org-#{org}/fw-host-pack-#{host_firmware_pkg_name}"){
41
+ xml.firmwareComputeHostPack('descr' => '', 'dn' => "org-root/org-#{org}/fw-host-pack-#{host_firmware_pkg_name}",
42
+ 'ignoreCompCheck' => 'yes', 'mode' => 'staged', 'stageSize' => '0', 'updateTrigger' => 'immediate'){
43
+ xml.firmwarePackItem('hwModel' => "#{hardware_model}", 'hwVendor' => "#{hardware_vendor}",
44
+ 'rn' => "pack-image-#{hardware_vendor}|#{hardware_model}|#{hardware_type}",
45
+ 'type' => "#{hardware_type}", 'version' => "#{firmware_version}")
46
+ }
47
+ }
48
+ }
49
+ }
50
+ end
51
+
52
+ #Create XML
53
+
54
+ update_host_firmware_packageXML = xml_builder.to_xml.to_s
55
+
56
+ #Post
57
+
58
+ begin
59
+ RestClient.post(@url, update_host_firmware_packageXML, :content_type => 'text/xml').body
60
+ rescue Exception => e
61
+ raise "Error #{e}"
62
+ end
63
+
64
+ end
65
+
66
+
67
+ end
@@ -16,5 +16,5 @@
16
16
  #
17
17
 
18
18
  module Ucslib
19
- VERSION = "0.1.0"
19
+ VERSION = "0.1.1"
20
20
  end
data/lib/ucslib.rb CHANGED
@@ -18,8 +18,11 @@
18
18
  require "ucslib/version"
19
19
  require "ucslib/session"
20
20
  require "ucslib/provision"
21
+ require "ucslib/parser"
22
+ require "ucslib/update"
21
23
  require "ucslib/inventory"
22
24
  require 'ucslib/destroy'
25
+ require 'ucslib/manage'
23
26
 
24
27
  require 'nokogiri'
25
28
  require 'rest-client'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ucslib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-05 00:00:00.000000000 Z
12
+ date: 2012-11-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
16
- requirement: &70295880805020 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70295880805020
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rest-client
27
- requirement: &70295880802740 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '0'
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *70295880802740
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: json
38
- requirement: &70295880796800 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,7 +53,12 @@ dependencies:
43
53
  version: '0'
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *70295880796800
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  description: Ruby Client Library for Cisco UCS Manager that can be used by DevOps
48
63
  toolchains (Chef/Puppet or others) to provide hardware deployment automation
49
64
  email:
@@ -97,8 +112,11 @@ files:
97
112
  - lib/ucslib.rb
98
113
  - lib/ucslib/destroy.rb
99
114
  - lib/ucslib/inventory.rb
115
+ - lib/ucslib/manage.rb
116
+ - lib/ucslib/parser.rb
100
117
  - lib/ucslib/provision.rb
101
118
  - lib/ucslib/session.rb
119
+ - lib/ucslib/update.rb
102
120
  - lib/ucslib/version.rb
103
121
  - ucslib.gemspec
104
122
  homepage: ''
@@ -121,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
139
  version: '0'
122
140
  requirements: []
123
141
  rubyforge_project: ucslib
124
- rubygems_version: 1.8.10
142
+ rubygems_version: 1.8.24
125
143
  signing_key:
126
144
  specification_version: 3
127
145
  summary: Ruby UCS Manager Client Library