ucslib 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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