hpe3par_sdk 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +55 -0
- data/.rspec +2 -0
- data/.travis.yml +9 -0
- data/Gemfile +15 -0
- data/LICENSE +201 -0
- data/README.md +192 -0
- data/Rakefile +103 -0
- data/bin/console +25 -0
- data/bin/setup +20 -0
- data/hpe3par_sdk.gemspec +45 -0
- data/lib/Hpe3parSdk.rb +19 -0
- data/lib/Hpe3parSdk/client.rb +2647 -0
- data/lib/Hpe3parSdk/constants.rb +421 -0
- data/lib/Hpe3parSdk/cpg_manager.rb +72 -0
- data/lib/Hpe3parSdk/exceptions.rb +503 -0
- data/lib/Hpe3parSdk/flash_cache_manager.rb +54 -0
- data/lib/Hpe3parSdk/host_manager.rb +152 -0
- data/lib/Hpe3parSdk/host_set_manager.rb +128 -0
- data/lib/Hpe3parSdk/http.rb +164 -0
- data/lib/Hpe3parSdk/models.rb +1850 -0
- data/lib/Hpe3parSdk/multi_log.rb +86 -0
- data/lib/Hpe3parSdk/port_manager.rb +62 -0
- data/lib/Hpe3parSdk/qos_manager.rb +64 -0
- data/lib/Hpe3parSdk/ssh.rb +46 -0
- data/lib/Hpe3parSdk/task_manager.rb +98 -0
- data/lib/Hpe3parSdk/tcl_parser.rb +15 -0
- data/lib/Hpe3parSdk/util.rb +30 -0
- data/lib/Hpe3parSdk/version.rb +14 -0
- data/lib/Hpe3parSdk/vlun_manager.rb +119 -0
- data/lib/Hpe3parSdk/volume_manager.rb +292 -0
- data/lib/Hpe3parSdk/volume_set_manager.rb +126 -0
- data/lib/Hpe3parSdk/wsapi_version.rb +73 -0
- metadata +194 -0
@@ -0,0 +1,1850 @@
|
|
1
|
+
# (c) Copyright 2016-2017 Hewlett Packard Enterprise Development LP
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
6
|
+
#
|
7
|
+
# Unless required by applicable law or agreed to in writing, software distributed
|
8
|
+
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
9
|
+
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
10
|
+
# specific language governing permissions and limitations under the License.
|
11
|
+
|
12
|
+
module Hpe3parSdk
|
13
|
+
class VirtualVolume
|
14
|
+
|
15
|
+
# [type - Number]
|
16
|
+
# Detailed state of the VV - Hpe3parSdk::VolumeDetailedState
|
17
|
+
attr_accessor :additional_states
|
18
|
+
|
19
|
+
# [type - Space]
|
20
|
+
# Administrative space in MiB.
|
21
|
+
attr_accessor :admin_space
|
22
|
+
|
23
|
+
# [type - Number]
|
24
|
+
# The ID of the volume that is the base
|
25
|
+
# volume (at the root of the snapshot
|
26
|
+
# tree) for the volume.
|
27
|
+
attr_accessor :base_id
|
28
|
+
|
29
|
+
# [type - String]
|
30
|
+
# Comment associated with the volume.
|
31
|
+
attr_accessor :comment
|
32
|
+
|
33
|
+
# [type - CapEfficiency]
|
34
|
+
# Capacity efficiency attributes.
|
35
|
+
attr_accessor :capacity_efficiency
|
36
|
+
|
37
|
+
# [type - String]
|
38
|
+
# If the volume is a physical copy or
|
39
|
+
# virtual copy of another volume, this
|
40
|
+
# field indicates the volume that this
|
41
|
+
# volume is a copy of.
|
42
|
+
attr_accessor :copy_of
|
43
|
+
|
44
|
+
# [type - Number]
|
45
|
+
# Indicates the copy type of the volume. - Hpe3parSdk::VolumeCopyType
|
46
|
+
attr_accessor :copy_type
|
47
|
+
|
48
|
+
# [type - String]
|
49
|
+
# Time of volume creation.
|
50
|
+
attr_accessor :creation_time8601
|
51
|
+
|
52
|
+
# [type - Number]
|
53
|
+
# Time of volume creation, measured in
|
54
|
+
# seconds since 12 AM on 01/01/1970.
|
55
|
+
attr_accessor :creation_time_sec
|
56
|
+
|
57
|
+
# [type - Number]
|
58
|
+
# Volume detailed state. - Hpe3parSdk::VolumeDetailedState
|
59
|
+
attr_accessor :degraded_states
|
60
|
+
|
61
|
+
# [type - String]
|
62
|
+
# Volume domain.
|
63
|
+
attr_accessor :domain
|
64
|
+
|
65
|
+
# [type - String]
|
66
|
+
# Time of volume expiration.
|
67
|
+
attr_accessor :expiration_time8601
|
68
|
+
|
69
|
+
# [type - Number]
|
70
|
+
# Time of volume expiration.
|
71
|
+
attr_accessor :expiration_time_sec
|
72
|
+
|
73
|
+
# [type - Number]
|
74
|
+
# Volume detailed state. - Hpe3parSdk::VolumeDetailedState
|
75
|
+
attr_accessor :failed_states
|
76
|
+
|
77
|
+
# [type - Number]
|
78
|
+
# Volume compression state - Hpe3parSdk::VolumeCompressionState
|
79
|
+
attr_accessor :compression_state
|
80
|
+
|
81
|
+
# [type - Number]
|
82
|
+
# Volume deduplication state. - Hpe3parSdk::VolumeDetailedState
|
83
|
+
attr_accessor :deduplication_state
|
84
|
+
|
85
|
+
# [type - Number]
|
86
|
+
# Volume identifier.
|
87
|
+
attr_accessor :id
|
88
|
+
|
89
|
+
# [type - Array of URL links]
|
90
|
+
# Links include the URL for space
|
91
|
+
# distribution for a particular volume, and
|
92
|
+
# the self URL when querying for the
|
93
|
+
# single instance.
|
94
|
+
attr_accessor :links
|
95
|
+
|
96
|
+
# [type - String]
|
97
|
+
# Volume name.
|
98
|
+
attr_accessor :name
|
99
|
+
|
100
|
+
# [type - Number]
|
101
|
+
# ID of the parent in the snapshot tree
|
102
|
+
# (not necessarily the same as the
|
103
|
+
# CopyOf VV).
|
104
|
+
attr_accessor :parent_id
|
105
|
+
|
106
|
+
# [type - Number]
|
107
|
+
# ID of the physical parent. Valid for a
|
108
|
+
# physical copy only.
|
109
|
+
attr_accessor :phys_parent_id
|
110
|
+
|
111
|
+
# [type - Policy]
|
112
|
+
# Policies used for the volume.
|
113
|
+
attr_accessor :policies
|
114
|
+
|
115
|
+
# [type - Number]
|
116
|
+
# Volume provisioning. - Hpe3parSdk::VolumeProvisioningType
|
117
|
+
attr_accessor :provisioning_type
|
118
|
+
|
119
|
+
# [type - Boolean]
|
120
|
+
# Enables (true) or disables (false)
|
121
|
+
# read/write.
|
122
|
+
attr_accessor :read_only
|
123
|
+
|
124
|
+
# [type - String]
|
125
|
+
# Time of volume retention time
|
126
|
+
# expiration.
|
127
|
+
attr_accessor :retention_time8601
|
128
|
+
|
129
|
+
# [type - Number]
|
130
|
+
# Time of volume retention expiration.
|
131
|
+
attr_accessor :retention_time_sec
|
132
|
+
|
133
|
+
# [type - Number]
|
134
|
+
# ID of the read-only child volume in the
|
135
|
+
# snapshot tree.
|
136
|
+
attr_accessor :ro_child_id
|
137
|
+
|
138
|
+
# [type - Number]
|
139
|
+
# ID of the read/write child volume in the
|
140
|
+
# snapshot tree.
|
141
|
+
attr_accessor :rw_child_id
|
142
|
+
|
143
|
+
# [type - Number]
|
144
|
+
# Total written to volume. For TDVVs this
|
145
|
+
# includes shared data that this volume
|
146
|
+
# references.
|
147
|
+
attr_accessor :host_write_mib
|
148
|
+
|
149
|
+
# [type - Number]
|
150
|
+
# Total used space. Sum of used
|
151
|
+
# UserSpace and used Snapshot space.
|
152
|
+
attr_accessor :total_used_mib
|
153
|
+
|
154
|
+
# [type - Number]
|
155
|
+
# Total Reserved space.
|
156
|
+
attr_accessor :total_reserved_mib
|
157
|
+
|
158
|
+
# [type - Number]
|
159
|
+
# Detailed Virtual size of volume in MiB (10242
|
160
|
+
# bytes).
|
161
|
+
attr_accessor :size_mib
|
162
|
+
|
163
|
+
# [type - String]
|
164
|
+
# CPG name from which the snapshot
|
165
|
+
# (snap and admin) space is allocated.
|
166
|
+
attr_accessor :snap_cpg
|
167
|
+
|
168
|
+
# [type - Space]
|
169
|
+
# Snapshot space in MiB.
|
170
|
+
attr_accessor :snapshot_space
|
171
|
+
|
172
|
+
# [type - Number]
|
173
|
+
# Sets a snapshot space allocation limit.
|
174
|
+
# Prevents the snapshot space of the
|
175
|
+
# volume from growing beyond the
|
176
|
+
# indicated percentage of the volume
|
177
|
+
# size.
|
178
|
+
attr_accessor :ss_spc_alloc_limit_pct
|
179
|
+
|
180
|
+
# [type - Number]
|
181
|
+
# Enables a snapshot space allocation
|
182
|
+
# warning. Generates a warning alert
|
183
|
+
# when the reserved snapshot space of
|
184
|
+
# the virtual volume exceeds the
|
185
|
+
# indicated percentage of the virtual
|
186
|
+
# volume size. - Hpe3parSdk::VolumeDetailedState
|
187
|
+
attr_accessor :ss_spc_alloc_warning_pct
|
188
|
+
|
189
|
+
# [type - Number]
|
190
|
+
# State of the volume. - Hpe3parSdk::CPGState
|
191
|
+
attr_accessor :state
|
192
|
+
|
193
|
+
# [type - String]
|
194
|
+
# CPG name from which the user space
|
195
|
+
# is allocated.
|
196
|
+
attr_accessor :user_cpg
|
197
|
+
|
198
|
+
# [type - Space]
|
199
|
+
# User space in MiB.
|
200
|
+
attr_accessor :user_space
|
201
|
+
|
202
|
+
# [type - Number]
|
203
|
+
# This field sets the user space allocation
|
204
|
+
# limit. The user space of the TPVV is
|
205
|
+
# prevented from growing beyond the
|
206
|
+
# specified percentage of the volume
|
207
|
+
# size. After the size is reached, any new
|
208
|
+
# writes to the volume will fail.
|
209
|
+
attr_accessor :usr_spc_alloc_limit_pct
|
210
|
+
|
211
|
+
# [type - Number]
|
212
|
+
# This field enables a user space
|
213
|
+
# allocation warning. It specifies that a
|
214
|
+
# warning alert is generated when the
|
215
|
+
# reserved user space of the TPVV
|
216
|
+
# exceeds the specified percentage of
|
217
|
+
# the volume size.
|
218
|
+
attr_accessor :usr_spc_alloc_warning_pct
|
219
|
+
|
220
|
+
# [type - String]
|
221
|
+
# The UUID that was automatically
|
222
|
+
# assigned to the volume at creation.
|
223
|
+
attr_accessor :uuid
|
224
|
+
|
225
|
+
# [type - Number]
|
226
|
+
# The ID of the shared volume that this
|
227
|
+
# volume is associated with.
|
228
|
+
attr_accessor :shared_parent_id
|
229
|
+
|
230
|
+
# [type - Number]
|
231
|
+
# User-Defined identifier per VV for
|
232
|
+
# OpenVMS hosts.
|
233
|
+
attr_accessor :udid
|
234
|
+
|
235
|
+
# [type - String]
|
236
|
+
# Volume WWN.
|
237
|
+
attr_accessor :wwn
|
238
|
+
|
239
|
+
def initialize(object_hash)
|
240
|
+
if object_hash == nil
|
241
|
+
return
|
242
|
+
end
|
243
|
+
|
244
|
+
self.additional_states = object_hash['additionalStates']
|
245
|
+
|
246
|
+
!object_hash['adminSpace'].nil? ? self.admin_space = Space.new(object_hash['adminSpace']) : self.admin_space = nil
|
247
|
+
|
248
|
+
self.base_id = object_hash['baseId']
|
249
|
+
|
250
|
+
self.comment = object_hash['comment']
|
251
|
+
|
252
|
+
!object_hash['capacityEfficiency'].nil? ? self.capacity_efficiency = CapEfficiency.new(object_hash['capacityEfficiency']) : self.capacity_efficiency = nil
|
253
|
+
|
254
|
+
self.copy_of = object_hash['copyOf']
|
255
|
+
|
256
|
+
self.copy_type = object_hash['copyType']
|
257
|
+
|
258
|
+
self.creation_time8601 = object_hash['creationTime8601']
|
259
|
+
|
260
|
+
self.creation_time_sec = object_hash['creationTimeSec']
|
261
|
+
|
262
|
+
self.degraded_states = object_hash['degradedStates']
|
263
|
+
|
264
|
+
self.domain = object_hash['domain']
|
265
|
+
|
266
|
+
self.expiration_time8601 = object_hash['expirationTime8601']
|
267
|
+
|
268
|
+
self.expiration_time_sec = object_hash['expirationTimeSec']
|
269
|
+
|
270
|
+
self.failed_states = object_hash['failedStates']
|
271
|
+
|
272
|
+
self.compression_state = object_hash['compressionState']
|
273
|
+
|
274
|
+
self.deduplication_state = object_hash['deduplicationState']
|
275
|
+
|
276
|
+
self.id = object_hash['id']
|
277
|
+
|
278
|
+
self.links = object_hash['links']
|
279
|
+
|
280
|
+
self.name = object_hash['name']
|
281
|
+
|
282
|
+
self.parent_id = object_hash['parentId']
|
283
|
+
|
284
|
+
self.phys_parent_id = object_hash['physParentId']
|
285
|
+
|
286
|
+
!object_hash['policies'].nil? ? self.policies = Policy.new(object_hash['policies']) : self.policies = nil
|
287
|
+
|
288
|
+
self.provisioning_type = object_hash['provisioningType']
|
289
|
+
|
290
|
+
self.read_only = object_hash['readOnly']
|
291
|
+
|
292
|
+
self.retention_time8601 = object_hash['retentionTime8601']
|
293
|
+
|
294
|
+
self.retention_time_sec = object_hash['retentionTimeSec']
|
295
|
+
|
296
|
+
self.ro_child_id = object_hash['roChildId']
|
297
|
+
|
298
|
+
self.rw_child_id = object_hash['rwChildId']
|
299
|
+
|
300
|
+
self.host_write_mib = object_hash['hostWriteMiB']
|
301
|
+
|
302
|
+
self.total_used_mib = object_hash['totalUsedMiB']
|
303
|
+
|
304
|
+
self.total_reserved_mib = object_hash['totalReservedMiB']
|
305
|
+
|
306
|
+
self.size_mib = object_hash['sizeMiB']
|
307
|
+
|
308
|
+
self.snap_cpg = object_hash['snapCPG']
|
309
|
+
|
310
|
+
!object_hash['snapshotSpace'].nil? ? self.snapshot_space = Space.new(object_hash['snapshotSpace']) : self.snapshot_space = nil
|
311
|
+
|
312
|
+
self.ss_spc_alloc_limit_pct = object_hash['ssSpcAllocLimitPct']
|
313
|
+
|
314
|
+
self.ss_spc_alloc_warning_pct = object_hash['ssSpcAllocWarningPct']
|
315
|
+
|
316
|
+
self.state = object_hash['state']
|
317
|
+
|
318
|
+
self.user_cpg = object_hash['userCPG']
|
319
|
+
|
320
|
+
!object_hash['userSpace'].nil? ? self.user_space = Space.new(object_hash['userSpace']) : self.user_space = nil
|
321
|
+
|
322
|
+
self.usr_spc_alloc_limit_pct = object_hash['usrSpcAllocLimitPct']
|
323
|
+
|
324
|
+
self.usr_spc_alloc_warning_pct = object_hash['usrSpcAllocWarningPct']
|
325
|
+
|
326
|
+
self.uuid = object_hash['uuid']
|
327
|
+
|
328
|
+
self.shared_parent_id = object_hash['sharedParentID']
|
329
|
+
|
330
|
+
self.udid = object_hash['udid']
|
331
|
+
|
332
|
+
self.wwn = object_hash['wwn']
|
333
|
+
end
|
334
|
+
end
|
335
|
+
|
336
|
+
class Host
|
337
|
+
|
338
|
+
# [type - Number]
|
339
|
+
# Specifies the ID of the host.
|
340
|
+
attr_accessor :id
|
341
|
+
|
342
|
+
# [type - String]
|
343
|
+
# Specifies the name of the host.
|
344
|
+
attr_accessor :name
|
345
|
+
|
346
|
+
# [type - Hpe3parSdk::HostPersona]
|
347
|
+
# ID of the persona to assigned to the host.
|
348
|
+
attr_accessor :persona
|
349
|
+
|
350
|
+
# [type - Array of FCPath]
|
351
|
+
# A host object query response can include an array of one or more FCPaths objects
|
352
|
+
attr_accessor :fcpaths
|
353
|
+
|
354
|
+
# [type - Array of SCSIPath]
|
355
|
+
# A host object query response can include an array of one or more iSCSIPaths objects.
|
356
|
+
attr_accessor :iscsi_paths
|
357
|
+
|
358
|
+
# [type - String]
|
359
|
+
# The domain or associated with this host.
|
360
|
+
attr_accessor :domain
|
361
|
+
|
362
|
+
# [type - Descriptors]
|
363
|
+
# An optional sub-object of the host object for creation and modification
|
364
|
+
attr_accessor :descriptors
|
365
|
+
|
366
|
+
# [type - Agent]
|
367
|
+
# Agent object
|
368
|
+
attr_accessor :agent
|
369
|
+
|
370
|
+
# [type - String]
|
371
|
+
# Initiator Chap Name
|
372
|
+
attr_accessor :initiator_chap_name
|
373
|
+
|
374
|
+
# [type - Boolean]
|
375
|
+
# Flag to determine whether or not the chap initiator is enabled.
|
376
|
+
attr_accessor :initiator_chap_enabled
|
377
|
+
|
378
|
+
# [type - String]
|
379
|
+
# Target chap name.
|
380
|
+
attr_accessor :target_chap_name
|
381
|
+
|
382
|
+
# [type - Boolean]
|
383
|
+
# Flag to determine whether or not the chap target is enabled.
|
384
|
+
attr_accessor :target_chap_enabled
|
385
|
+
|
386
|
+
# [type - String]
|
387
|
+
# Encrypted CHAP secret of initiator.
|
388
|
+
attr_accessor :initiator_encrypted_chap_secret
|
389
|
+
|
390
|
+
# [type - String]
|
391
|
+
# Encrypted CHAP secret of target.
|
392
|
+
attr_accessor :target_encrypted_chap_secret
|
393
|
+
|
394
|
+
def initialize(object_hash)
|
395
|
+
if object_hash == nil
|
396
|
+
return
|
397
|
+
end
|
398
|
+
|
399
|
+
self.id = object_hash['id']
|
400
|
+
|
401
|
+
self.name = object_hash['name']
|
402
|
+
|
403
|
+
self.persona = object_hash['persona']
|
404
|
+
|
405
|
+
self.fcpaths = []
|
406
|
+
unless object_hash['FCPaths'].nil?
|
407
|
+
object_hash['FCPaths'].each do |fc_path|
|
408
|
+
self.fcpaths.push(FCPath.new(fc_path))
|
409
|
+
end
|
410
|
+
end
|
411
|
+
|
412
|
+
self.iscsi_paths = []
|
413
|
+
unless object_hash['iSCSIPaths'].nil?
|
414
|
+
object_hash['iSCSIPaths'].each do |iscsi_path|
|
415
|
+
self.iscsi_paths.push(SCSIPath.new(iscsi_path))
|
416
|
+
end
|
417
|
+
end
|
418
|
+
|
419
|
+
self.domain = object_hash['domain']
|
420
|
+
|
421
|
+
!object_hash['descriptors'].nil? ? self.descriptors = Descriptors.new(object_hash['descriptors']) : self.descriptors = nil
|
422
|
+
|
423
|
+
!object_hash['agent'].nil? ? self.agent = Agent.new(object_hash['agent']) : self.agent = nil
|
424
|
+
|
425
|
+
self.initiator_chap_name = object_hash['initiatorChapName']
|
426
|
+
|
427
|
+
self.initiator_chap_enabled = object_hash['initiatorChapEnabled']
|
428
|
+
|
429
|
+
self.target_chap_name = object_hash['targetChapName']
|
430
|
+
|
431
|
+
self.target_chap_enabled = object_hash['targetChapEnabled']
|
432
|
+
|
433
|
+
self.initiator_encrypted_chap_secret = object_hash['initiatorEncryptedChapSecret']
|
434
|
+
|
435
|
+
self.target_encrypted_chap_secret = object_hash['targetEncryptedChapSecret']
|
436
|
+
|
437
|
+
end
|
438
|
+
end
|
439
|
+
|
440
|
+
class QoSRule
|
441
|
+
|
442
|
+
# [type - Number]
|
443
|
+
# ID of the QoS target.
|
444
|
+
attr_accessor :id
|
445
|
+
|
446
|
+
# [type - Hpe3parSdk::QoStargetType]
|
447
|
+
# Type of QoS target.
|
448
|
+
attr_accessor :type
|
449
|
+
|
450
|
+
# [type - String]
|
451
|
+
# Name of the target
|
452
|
+
attr_accessor :name
|
453
|
+
|
454
|
+
# [type - String]
|
455
|
+
# Name of the domain.
|
456
|
+
attr_accessor :domain
|
457
|
+
|
458
|
+
# [type - Boolean]
|
459
|
+
# QoS state of the target.
|
460
|
+
attr_accessor :enabled
|
461
|
+
|
462
|
+
# [type - Hpe3parSdk::QoSpriorityEnumeration]
|
463
|
+
# QoS priority.
|
464
|
+
attr_accessor :priority
|
465
|
+
|
466
|
+
# [type - Number]
|
467
|
+
# Bandwidth minimum goal in kilobytes per second.
|
468
|
+
attr_accessor :bw_min_goal_kb
|
469
|
+
|
470
|
+
# [type - Number]
|
471
|
+
# Bandwidth maximum limit in kilobytes per second.
|
472
|
+
attr_accessor :bw_max_limit_kb
|
473
|
+
|
474
|
+
# [type - Number]
|
475
|
+
# I/O-per-second minimum goal.
|
476
|
+
attr_accessor :io_min_goal
|
477
|
+
|
478
|
+
# [type - Number]
|
479
|
+
# I/O-per-second maximum limit.
|
480
|
+
attr_accessor :io_max_limit
|
481
|
+
|
482
|
+
# [type - Number]
|
483
|
+
# Latency goal in milliseconds.
|
484
|
+
attr_accessor :latency_goal
|
485
|
+
|
486
|
+
# [type - Number]
|
487
|
+
# Latency goal in microseconds.
|
488
|
+
attr_accessor :latency_goal_usecs
|
489
|
+
|
490
|
+
def initialize(object_hash)
|
491
|
+
if object_hash == nil
|
492
|
+
return
|
493
|
+
end
|
494
|
+
|
495
|
+
self.id = object_hash['id']
|
496
|
+
|
497
|
+
self.type = object_hash['type']
|
498
|
+
|
499
|
+
self.name = object_hash['name']
|
500
|
+
|
501
|
+
self.domain = object_hash['domain']
|
502
|
+
|
503
|
+
self.enabled = object_hash['enabled']
|
504
|
+
|
505
|
+
self.priority = object_hash['priority']
|
506
|
+
|
507
|
+
self.bw_min_goal_kb = object_hash['bwMinGoalKB']
|
508
|
+
|
509
|
+
self.bw_max_limit_kb = object_hash['bwMaxLimitKB']
|
510
|
+
|
511
|
+
self.io_min_goal = object_hash['ioMinGoal']
|
512
|
+
|
513
|
+
self.io_max_limit = object_hash['ioMaxLimit']
|
514
|
+
|
515
|
+
self.latency_goal = object_hash['latencyGoal']
|
516
|
+
|
517
|
+
self.latency_goal_usecs = object_hash['latencyGoaluSecs']
|
518
|
+
|
519
|
+
end
|
520
|
+
end
|
521
|
+
|
522
|
+
class VLUN
|
523
|
+
|
524
|
+
# [type - Number]
|
525
|
+
# Exported LUN value.
|
526
|
+
attr_accessor :lun
|
527
|
+
|
528
|
+
# [type - String]
|
529
|
+
# Name of exported virtual volume name or VV-set name.
|
530
|
+
attr_accessor :volume_name
|
531
|
+
|
532
|
+
# [type - String]
|
533
|
+
# Host name or host set name to which the VLUN is exported.
|
534
|
+
attr_accessor :hostname
|
535
|
+
|
536
|
+
# [type - String]
|
537
|
+
# Host WWN, or iSCSI name, or SAS address; depends on port type.
|
538
|
+
attr_accessor :remote_name
|
539
|
+
|
540
|
+
# [type - PortPos]
|
541
|
+
# System port of VLUN exported to. It includes node number, slot number, and cardPort number.
|
542
|
+
attr_accessor :port_pos
|
543
|
+
|
544
|
+
# [type - Hpe3parSdk::VlunType]
|
545
|
+
# VLUN type.
|
546
|
+
attr_accessor :type
|
547
|
+
|
548
|
+
# [type - String]
|
549
|
+
# WWN of exported volume. If a VV set is exported, this value is null.
|
550
|
+
attr_accessor :volume_wwn
|
551
|
+
|
552
|
+
# [type - Hpe3parSdk::VlunMultipathing]
|
553
|
+
# Multipathing method in use.
|
554
|
+
attr_accessor :multipathing
|
555
|
+
|
556
|
+
# [type - Hpe3parSdk::VLUNfailedPathPol]
|
557
|
+
# Failed path monitoring method.
|
558
|
+
attr_accessor :failed_path_pol
|
559
|
+
|
560
|
+
# [type - Number]
|
561
|
+
# Monitoring interval in seconds after which the host checks for failed paths.
|
562
|
+
attr_accessor :failed_path_interval
|
563
|
+
|
564
|
+
# [type - String]
|
565
|
+
# The device name for this VLUN on the host.
|
566
|
+
attr_accessor :host_device_name
|
567
|
+
|
568
|
+
# [type - Boolean]
|
569
|
+
# Specified if the VLUN is an active VLUN or a VLUN template.
|
570
|
+
attr_accessor :active
|
571
|
+
|
572
|
+
def initialize(object_hash)
|
573
|
+
if object_hash == nil
|
574
|
+
return
|
575
|
+
end
|
576
|
+
|
577
|
+
self.lun = object_hash['lun']
|
578
|
+
|
579
|
+
self.volume_name = object_hash['volumeName']
|
580
|
+
|
581
|
+
self.hostname = object_hash['hostname']
|
582
|
+
|
583
|
+
self.remote_name = object_hash['remoteName']
|
584
|
+
|
585
|
+
!object_hash['portPos'].nil? ? self.port_pos = PortPos.new(object_hash['portPos']) : self.port_pos = nil
|
586
|
+
|
587
|
+
self.type = object_hash['type']
|
588
|
+
|
589
|
+
self.volume_wwn = object_hash['volumeWWN']
|
590
|
+
|
591
|
+
self.multipathing = object_hash['multipathing']
|
592
|
+
|
593
|
+
self.failed_path_pol = object_hash['failedPathPol']
|
594
|
+
|
595
|
+
self.failed_path_interval = object_hash['failedPathInterval']
|
596
|
+
|
597
|
+
self.host_device_name = object_hash['hostDeviceName']
|
598
|
+
|
599
|
+
self.active = object_hash['active']
|
600
|
+
|
601
|
+
end
|
602
|
+
end
|
603
|
+
|
604
|
+
class CPG
|
605
|
+
|
606
|
+
# [type - Number]
|
607
|
+
# Cpg ID.
|
608
|
+
attr_accessor :id
|
609
|
+
|
610
|
+
# [type - String]
|
611
|
+
# The UUID that was automatically assigned to the Cpg at creation.
|
612
|
+
attr_accessor :uuid
|
613
|
+
|
614
|
+
# [type - String]
|
615
|
+
# Cpg name.
|
616
|
+
attr_accessor :name
|
617
|
+
|
618
|
+
# [type - String]
|
619
|
+
# Domain to which the Cpg belongs.
|
620
|
+
attr_accessor :domain
|
621
|
+
|
622
|
+
# [type - Number]
|
623
|
+
# Percentage usage at which to issue an alert.
|
624
|
+
attr_accessor :warning_pct
|
625
|
+
|
626
|
+
# [type - Number]
|
627
|
+
# Number of TPVVs allocated in the Cpg.
|
628
|
+
attr_accessor :num_tpvvs
|
629
|
+
|
630
|
+
# [type - Number]
|
631
|
+
# Number of FPVVs allocated in the Cpg.
|
632
|
+
attr_accessor :num_fpvvs
|
633
|
+
|
634
|
+
# [type - Number]
|
635
|
+
# Number of TDVVs created in the Cpg.
|
636
|
+
attr_accessor :num_tdvvs
|
637
|
+
|
638
|
+
# [type - Usage]
|
639
|
+
# User data space usage.
|
640
|
+
attr_accessor :usr_usage
|
641
|
+
|
642
|
+
# [type - Usage]
|
643
|
+
# Snap-shot administration usage.
|
644
|
+
attr_accessor :sausage
|
645
|
+
|
646
|
+
# [type - Usage]
|
647
|
+
# Snap-shot data space usage.
|
648
|
+
attr_accessor :sdusage
|
649
|
+
|
650
|
+
# [type - GrowthParams]
|
651
|
+
# Snap-shot administration space autogrowth parameters.
|
652
|
+
attr_accessor :sagrowth
|
653
|
+
|
654
|
+
# [type - GrowthParams]
|
655
|
+
# Snap-shot data space auto-growth parameters.
|
656
|
+
attr_accessor :sdgrowth
|
657
|
+
|
658
|
+
# [type - Number]
|
659
|
+
# Overall state of the Cpg.- Hpe3parSdk::CPGState
|
660
|
+
attr_accessor :state
|
661
|
+
|
662
|
+
# [type - Number]
|
663
|
+
# Detailed state of the Cpg. - Hpe3parSdk::CPGState
|
664
|
+
attr_accessor :failed_states
|
665
|
+
|
666
|
+
# [type - Number]
|
667
|
+
# Detailed state of the Cpg. - Hpe3parSdk::CPGState
|
668
|
+
attr_accessor :degraded_states
|
669
|
+
|
670
|
+
# [type - Number]
|
671
|
+
# Detailed state of the Cpg. - Hpe3parSdk::CPGState
|
672
|
+
attr_accessor :additional_states
|
673
|
+
|
674
|
+
# [type - Boolean]
|
675
|
+
# Enables (true) or disables (false) Cpg deduplication capability.
|
676
|
+
attr_accessor :dedup_capable
|
677
|
+
|
678
|
+
# [type - Number]
|
679
|
+
# Shared Cpg space in MiB
|
680
|
+
attr_accessor :shared_space_MiB
|
681
|
+
|
682
|
+
# [type - Number]
|
683
|
+
# Free Cpg space in MiB
|
684
|
+
attr_accessor :free_space_MiB
|
685
|
+
|
686
|
+
# [type - Number]
|
687
|
+
# Total Cpg space in MiB
|
688
|
+
attr_accessor :total_space_MiB
|
689
|
+
|
690
|
+
# [type - Number]
|
691
|
+
# Raw shared space in MiB
|
692
|
+
attr_accessor :raw_shared_space_MiB
|
693
|
+
|
694
|
+
# [type - Number]
|
695
|
+
# Raw free space in MiB
|
696
|
+
attr_accessor :raw_free_space_MiB
|
697
|
+
|
698
|
+
# [type - Number]
|
699
|
+
# Raw total space in MiB
|
700
|
+
attr_accessor :raw_total_space_MiB
|
701
|
+
|
702
|
+
# [type - Number]
|
703
|
+
# Deduplication version used by volumes in the Cpg.
|
704
|
+
attr_accessor :tdvv_version
|
705
|
+
|
706
|
+
# [type - Number]
|
707
|
+
# Maximum size of the deduplication store Volume in the Cpg.
|
708
|
+
attr_accessor :dds_rsvd_MiB
|
709
|
+
|
710
|
+
# [type - PrivateSpace]
|
711
|
+
# Private Cpg space in MiB
|
712
|
+
attr_accessor :private_space_MiB
|
713
|
+
|
714
|
+
def initialize(object_hash)
|
715
|
+
if object_hash == nil
|
716
|
+
return
|
717
|
+
end
|
718
|
+
|
719
|
+
self.id = object_hash['id']
|
720
|
+
|
721
|
+
self.uuid = object_hash['uuid']
|
722
|
+
|
723
|
+
self.name = object_hash['name']
|
724
|
+
|
725
|
+
self.domain = object_hash['domain']
|
726
|
+
|
727
|
+
self.warning_pct = object_hash['warningPct']
|
728
|
+
|
729
|
+
self.num_tpvvs = object_hash['numTPVVs']
|
730
|
+
|
731
|
+
self.num_fpvvs = object_hash['numFPVVs']
|
732
|
+
|
733
|
+
self.num_tdvvs = object_hash['numTDVVs']
|
734
|
+
|
735
|
+
!object_hash['UsrUsage'].nil? ? self.usr_usage = Usage.new(object_hash['UsrUsage']) : self.usr_usage = nil
|
736
|
+
|
737
|
+
!object_hash['SAUsage'].nil? ? self.sausage = Usage.new(object_hash['SAUsage']) : self.sausage = nil
|
738
|
+
|
739
|
+
!object_hash['SDUsage'].nil? ? self.sdusage = Usage.new(object_hash['SDUsage']) : self.sdusage = nil
|
740
|
+
|
741
|
+
!object_hash['SAGrowth'].nil? ? self.sagrowth = GrowthParams.new(object_hash['SAGrowth']) : self.sagrowth = nil
|
742
|
+
|
743
|
+
!object_hash['SDGrowth'].nil? ? self.sdgrowth = GrowthParams.new(object_hash['SDGrowth']) : self.sdgrowth = nil
|
744
|
+
|
745
|
+
self.state = object_hash['state']
|
746
|
+
|
747
|
+
self.failed_states = object_hash['failedStates']
|
748
|
+
|
749
|
+
self.degraded_states = object_hash['degradedStates']
|
750
|
+
|
751
|
+
self.additional_states = object_hash['additionalStates']
|
752
|
+
|
753
|
+
self.dedup_capable = object_hash['dedupCapable']
|
754
|
+
|
755
|
+
self.shared_space_MiB = object_hash['sharedSpaceMiB']
|
756
|
+
|
757
|
+
self.free_space_MiB = object_hash['freeSpaceMiB']
|
758
|
+
|
759
|
+
self.total_space_MiB = object_hash['totalSpaceMiB']
|
760
|
+
|
761
|
+
self.raw_shared_space_MiB = object_hash['rawSharedSpaceMiB']
|
762
|
+
|
763
|
+
self.raw_free_space_MiB = object_hash['rawFreeSpaceMiB']
|
764
|
+
|
765
|
+
self.raw_total_space_MiB = object_hash['rawTotalSpaceMiB']
|
766
|
+
|
767
|
+
self.tdvv_version = object_hash['tdvvVersion']
|
768
|
+
|
769
|
+
self.dds_rsvd_MiB = object_hash['ddsRsvdMiB']
|
770
|
+
|
771
|
+
!object_hash['privateSpaceMiB'].nil? ? self.private_space_MiB = PrivateSpace.new(object_hash['privateSpaceMiB']) : self.private_space_MiB = nil
|
772
|
+
|
773
|
+
end
|
774
|
+
end
|
775
|
+
|
776
|
+
class FlashCache
|
777
|
+
|
778
|
+
# [type - Number 1: Simulator 2: Real]
|
779
|
+
# Encrypted CHAP secret of target.
|
780
|
+
attr_accessor :mode
|
781
|
+
|
782
|
+
# [type - Number]
|
783
|
+
# The total size of the Flash Cache on the entire system. This might differ from the sizeGib input in the create Flash Cache request if the system has more than two nodes.
|
784
|
+
attr_accessor :size_gib
|
785
|
+
|
786
|
+
# [type - Hpe3parSdk::CPGState]
|
787
|
+
# State of flash cache
|
788
|
+
attr_accessor :state
|
789
|
+
|
790
|
+
# [type - Number]
|
791
|
+
# The used size of the Flash Cache.
|
792
|
+
attr_accessor :used_size_gib
|
793
|
+
|
794
|
+
def initialize(object_hash)
|
795
|
+
if object_hash == nil
|
796
|
+
return
|
797
|
+
end
|
798
|
+
|
799
|
+
self.mode = object_hash['mode']
|
800
|
+
|
801
|
+
self.size_gib = object_hash['sizeGiB']
|
802
|
+
|
803
|
+
self.state = object_hash['state']
|
804
|
+
|
805
|
+
self.used_size_gib = object_hash['usedSizeGiB']
|
806
|
+
end
|
807
|
+
end
|
808
|
+
|
809
|
+
class HostSet
|
810
|
+
|
811
|
+
# [type - String]
|
812
|
+
# Name of the set.
|
813
|
+
attr_accessor :name
|
814
|
+
|
815
|
+
# [type - String]
|
816
|
+
# UUID of the set.
|
817
|
+
attr_accessor :uuid
|
818
|
+
|
819
|
+
# [type - Number]
|
820
|
+
# Set identifier.
|
821
|
+
attr_accessor :id
|
822
|
+
|
823
|
+
# [type - String]
|
824
|
+
# Comment for the set.
|
825
|
+
attr_accessor :comment
|
826
|
+
|
827
|
+
# [type - String]
|
828
|
+
# Set domain.
|
829
|
+
attr_accessor :domain
|
830
|
+
|
831
|
+
# [type - Array of String]
|
832
|
+
# The members of the set.
|
833
|
+
attr_accessor :setmembers
|
834
|
+
|
835
|
+
def initialize(object_hash)
|
836
|
+
if object_hash == nil
|
837
|
+
return
|
838
|
+
end
|
839
|
+
|
840
|
+
self.name = object_hash['name']
|
841
|
+
|
842
|
+
self.uuid = object_hash['uuid']
|
843
|
+
|
844
|
+
self.id = object_hash['id']
|
845
|
+
|
846
|
+
self.comment = object_hash['comment']
|
847
|
+
|
848
|
+
self.domain = object_hash['domain']
|
849
|
+
|
850
|
+
self.setmembers = object_hash['setmembers']
|
851
|
+
|
852
|
+
end
|
853
|
+
end
|
854
|
+
|
855
|
+
class Port
|
856
|
+
|
857
|
+
# [type - PortPos]
|
858
|
+
# port n:s:p.
|
859
|
+
attr_accessor :port_pos
|
860
|
+
|
861
|
+
# [type - Hpe3parSdk::PortMode]
|
862
|
+
# port mode.
|
863
|
+
attr_accessor :mode
|
864
|
+
|
865
|
+
# [type - Hpe3parSdk::PortLinkState]
|
866
|
+
# port link state.
|
867
|
+
attr_accessor :linkState
|
868
|
+
|
869
|
+
# [type - String]
|
870
|
+
# Node WWN that is unique across all ports.
|
871
|
+
attr_accessor :nodewwn
|
872
|
+
|
873
|
+
# [type - String]
|
874
|
+
# port WWN for FCoE and FC ports. Not included in JSON for other ports.
|
875
|
+
attr_accessor :portwwn
|
876
|
+
|
877
|
+
# [type - Hpe3parSdk::PortConnType]
|
878
|
+
# port connection type.
|
879
|
+
attr_accessor :type
|
880
|
+
|
881
|
+
# [type - String]
|
882
|
+
# Hardware address for RCIP and iSCSI ports. Not included in JSON for other ports.
|
883
|
+
attr_accessor :hwaddr
|
884
|
+
|
885
|
+
# [type - Hpe3parSdk::PortProtocol]
|
886
|
+
# Indicates the port protocol type.
|
887
|
+
attr_accessor :protocol
|
888
|
+
|
889
|
+
# [type - String]
|
890
|
+
# Configurable, human-readable label identifying the HBA port. Maximum length is 15 characters.
|
891
|
+
attr_accessor :label
|
892
|
+
|
893
|
+
# [type - Arry of string]
|
894
|
+
# Array of device name (cage0, host1, etc.) of the device connected to the port.
|
895
|
+
attr_accessor :device
|
896
|
+
|
897
|
+
# [type - PortPos]
|
898
|
+
# Location of failover partner port in <Node><Slot><Port> format.
|
899
|
+
attr_accessor :partner_pos
|
900
|
+
|
901
|
+
# [type - Hpe3parSdk::PortFailOverState]
|
902
|
+
# The state of the failover operation, shown for the two ports indicated in the N:S:P and Partner columns.
|
903
|
+
attr_accessor :failover_state
|
904
|
+
|
905
|
+
# [type - String]
|
906
|
+
# For RCIP and iSCSI ports only; not included in the JSON object for other ports.
|
907
|
+
attr_accessor :ip_addr
|
908
|
+
|
909
|
+
# [type - String]
|
910
|
+
# For iSCSI port only; not included in the JSON object for other ports.
|
911
|
+
attr_accessor :iscsi_name
|
912
|
+
|
913
|
+
# [type - String]
|
914
|
+
# Ethernet node MAC address.
|
915
|
+
attr_accessor :enode_macaddr
|
916
|
+
|
917
|
+
# [type - String]
|
918
|
+
# PFC mask.
|
919
|
+
attr_accessor :pfcmask
|
920
|
+
|
921
|
+
# [type - ISCSIPortInfo]
|
922
|
+
# Contains information related to iSCSI port properties.
|
923
|
+
attr_accessor :iscsi_portinfo
|
924
|
+
|
925
|
+
def initialize(object_hash)
|
926
|
+
if object_hash == nil
|
927
|
+
return
|
928
|
+
end
|
929
|
+
!object_hash['portPos'].nil? ? self.port_pos = PortPos.new(object_hash['portPos']) : self.port_pos = nil
|
930
|
+
|
931
|
+
self.mode = object_hash['mode']
|
932
|
+
|
933
|
+
self.linkState = object_hash['linkState']
|
934
|
+
|
935
|
+
self.nodewwn = object_hash['nodeWWN']
|
936
|
+
|
937
|
+
self.portwwn = object_hash['portWWN']
|
938
|
+
|
939
|
+
self.type = object_hash['type']
|
940
|
+
|
941
|
+
self.hwaddr = object_hash['HWAddr']
|
942
|
+
|
943
|
+
self.protocol = object_hash['protocol']
|
944
|
+
|
945
|
+
self.label = object_hash['label']
|
946
|
+
|
947
|
+
self.device = object_hash['device']
|
948
|
+
|
949
|
+
!object_hash['partnerPos'].nil? ? self.partner_pos = PortPos.new(object_hash['partnerPos']) : self.partner_pos = nil
|
950
|
+
|
951
|
+
self.failover_state = object_hash['failoverState']
|
952
|
+
|
953
|
+
self.ip_addr = object_hash['IPAddr']
|
954
|
+
|
955
|
+
self.iscsi_name = object_hash['iSCSIName']
|
956
|
+
|
957
|
+
self.enode_macaddr = object_hash['enodeMACAddr']
|
958
|
+
|
959
|
+
self.pfcmask = object_hash['pfcMask']
|
960
|
+
|
961
|
+
!object_hash['iSCSIPortInfo'].nil? ? self.iscsi_portinfo = ISCSIPortInfo.new(object_hash['iSCSIPortInfo']) : self.iscsi_portinfo = nil
|
962
|
+
|
963
|
+
end
|
964
|
+
|
965
|
+
end
|
966
|
+
|
967
|
+
|
968
|
+
class ISCSIPortInfo
|
969
|
+
|
970
|
+
# [type - String]
|
971
|
+
# iSCSI port only, not included in the JSON object for other ports.
|
972
|
+
attr_accessor :ip_addr
|
973
|
+
|
974
|
+
# [type - String]
|
975
|
+
# iSCSI port only, not included in the JSON object for other ports.
|
976
|
+
attr_accessor :iscsi_name
|
977
|
+
|
978
|
+
# [type - String]
|
979
|
+
# Netmask for Ethernet port.
|
980
|
+
attr_accessor :netmask
|
981
|
+
|
982
|
+
# [type - String]
|
983
|
+
# IP address of the gateway.
|
984
|
+
attr_accessor :gateway
|
985
|
+
|
986
|
+
# [type - Number]
|
987
|
+
# MTU size in bytes.
|
988
|
+
attr_accessor :mtu
|
989
|
+
|
990
|
+
# [type - Boolean]
|
991
|
+
# Send Targets Group Tag of the iSCSI target
|
992
|
+
attr_accessor :stgt
|
993
|
+
|
994
|
+
# [type - Number]
|
995
|
+
# TCP port number for the iSNS server.
|
996
|
+
attr_accessor :isns_port
|
997
|
+
|
998
|
+
# [type - String]
|
999
|
+
# iSNS server IP address.
|
1000
|
+
attr_accessor :isns_addr
|
1001
|
+
|
1002
|
+
# [type - String]
|
1003
|
+
# Data transfer rate for the iSCSI port
|
1004
|
+
attr_accessor :rate
|
1005
|
+
|
1006
|
+
# [type - Number]
|
1007
|
+
# Target portal group tag.
|
1008
|
+
attr_accessor :tpgt
|
1009
|
+
|
1010
|
+
# [type - Boolean]
|
1011
|
+
# Indicates whether the port supports VLANs.
|
1012
|
+
attr_accessor :vlans
|
1013
|
+
|
1014
|
+
def initialize(object_hash)
|
1015
|
+
if object_hash == nil
|
1016
|
+
return
|
1017
|
+
end
|
1018
|
+
|
1019
|
+
self.ip_addr = object_hash['ipAddr']
|
1020
|
+
|
1021
|
+
self.iscsi_name = object_hash['iSCSIName']
|
1022
|
+
|
1023
|
+
self.netmask = object_hash['netmask']
|
1024
|
+
|
1025
|
+
self.gateway = object_hash['gateway']
|
1026
|
+
|
1027
|
+
self.mtu = object_hash['mtu']
|
1028
|
+
|
1029
|
+
self.stgt = object_hash['stgt']
|
1030
|
+
|
1031
|
+
self.isns_port = object_hash['iSNSPort']
|
1032
|
+
|
1033
|
+
self.isns_addr = object_hash['iSNSAddr']
|
1034
|
+
|
1035
|
+
self.rate = object_hash['rate']
|
1036
|
+
|
1037
|
+
self.tpgt = object_hash['tpgt']
|
1038
|
+
|
1039
|
+
self.vlans = object_hash['vlans']
|
1040
|
+
|
1041
|
+
end
|
1042
|
+
end
|
1043
|
+
|
1044
|
+
class VolumeSet
|
1045
|
+
|
1046
|
+
# [type - String]
|
1047
|
+
# Name of the set.
|
1048
|
+
attr_accessor :name
|
1049
|
+
|
1050
|
+
# [type - String]
|
1051
|
+
# UUID of the set.
|
1052
|
+
attr_accessor :uuid
|
1053
|
+
|
1054
|
+
# [type - Number]
|
1055
|
+
# Set identifier.
|
1056
|
+
attr_accessor :id
|
1057
|
+
|
1058
|
+
# [type - String]
|
1059
|
+
# Comment for the set.
|
1060
|
+
attr_accessor :comment
|
1061
|
+
|
1062
|
+
# [type - String]
|
1063
|
+
# Set domain.
|
1064
|
+
attr_accessor :domain
|
1065
|
+
|
1066
|
+
# [type - Array of String]
|
1067
|
+
# The members of the set.
|
1068
|
+
attr_accessor :setmembers
|
1069
|
+
|
1070
|
+
# [type - Number]
|
1071
|
+
# The flashCachePolicy
|
1072
|
+
# member is valid for volumes sets
|
1073
|
+
# only. - Hpe3parSdk::FlashCachePolicy
|
1074
|
+
attr_accessor :flash_cache_policy
|
1075
|
+
|
1076
|
+
# [type - Boolean]
|
1077
|
+
# true: Enabled vvset QoS rule.
|
1078
|
+
# false: Disabled vvset QoS rules.
|
1079
|
+
attr_accessor :qos_enabled
|
1080
|
+
|
1081
|
+
def initialize(object_hash)
|
1082
|
+
if object_hash == nil
|
1083
|
+
return
|
1084
|
+
end
|
1085
|
+
|
1086
|
+
self.name = object_hash['name']
|
1087
|
+
|
1088
|
+
self.uuid = object_hash['uuid']
|
1089
|
+
|
1090
|
+
self.id = object_hash['id']
|
1091
|
+
|
1092
|
+
self.comment = object_hash['comment']
|
1093
|
+
|
1094
|
+
self.domain = object_hash['domain']
|
1095
|
+
|
1096
|
+
self.setmembers = object_hash['setmembers']
|
1097
|
+
|
1098
|
+
self.flash_cache_policy = object_hash['flashCachePolicy']
|
1099
|
+
|
1100
|
+
self.qos_enabled = object_hash['qosEnabled']
|
1101
|
+
|
1102
|
+
end
|
1103
|
+
end
|
1104
|
+
|
1105
|
+
class Space
|
1106
|
+
|
1107
|
+
# [type - Number]
|
1108
|
+
# Reserved space in MiB.
|
1109
|
+
attr_accessor :reserved_MiB
|
1110
|
+
|
1111
|
+
# [type - Number]
|
1112
|
+
# Raw reserved space in MiB.
|
1113
|
+
attr_accessor :raw_reserved_MiB
|
1114
|
+
|
1115
|
+
# [type - Number]
|
1116
|
+
# Used space in MiB.
|
1117
|
+
attr_accessor :used_MiB
|
1118
|
+
|
1119
|
+
# [type - Number]
|
1120
|
+
# Free space in MiB.
|
1121
|
+
attr_accessor :free_MiB
|
1122
|
+
|
1123
|
+
def initialize(object_hash)
|
1124
|
+
if object_hash == nil
|
1125
|
+
return
|
1126
|
+
end
|
1127
|
+
|
1128
|
+
self.reserved_MiB = object_hash['reservedMiB']
|
1129
|
+
|
1130
|
+
self.raw_reserved_MiB = object_hash['rawReservedMiB']
|
1131
|
+
|
1132
|
+
self.used_MiB = object_hash['usedMiB']
|
1133
|
+
|
1134
|
+
self.free_MiB = object_hash['freeMiB']
|
1135
|
+
|
1136
|
+
end
|
1137
|
+
end
|
1138
|
+
|
1139
|
+
|
1140
|
+
class LDLayoutCapacity
|
1141
|
+
|
1142
|
+
# [type - Number]
|
1143
|
+
# Raw free capacity in MiB.
|
1144
|
+
attr_accessor :rawfree_in_mib
|
1145
|
+
|
1146
|
+
# [type - Number]
|
1147
|
+
# LD free capacity in MiB.
|
1148
|
+
attr_accessor :usable_free_in_mib
|
1149
|
+
|
1150
|
+
# [type - Number]
|
1151
|
+
# System contains an over provisioned Virtual Size MiB.
|
1152
|
+
attr_accessor :overprovisioned_virtualsize_in_mib
|
1153
|
+
|
1154
|
+
# [type - Number]
|
1155
|
+
# System contains an over provisioned used MiB.
|
1156
|
+
attr_accessor :overprovisioned_used_in_mib
|
1157
|
+
|
1158
|
+
# [type - Number]
|
1159
|
+
# System contains an over provisioned allocated MiB.
|
1160
|
+
attr_accessor :overprovisioned_allocated_in_mib
|
1161
|
+
|
1162
|
+
# [type - Number]
|
1163
|
+
# System contains an over provisioned free MiB.
|
1164
|
+
attr_accessor :overprovisioned_free_in_mib
|
1165
|
+
|
1166
|
+
# [type - CapEfficiency]
|
1167
|
+
# Capacity efficiency attributes.
|
1168
|
+
attr_accessor :capacitefficiency
|
1169
|
+
|
1170
|
+
def initialize(object_hash)
|
1171
|
+
if object_hash == nil
|
1172
|
+
return
|
1173
|
+
end
|
1174
|
+
|
1175
|
+
self.rawfree_in_mib = object_hash['rawFreeMiB']
|
1176
|
+
|
1177
|
+
self.usable_free_in_mib = object_hash['usableFreeMiB']
|
1178
|
+
|
1179
|
+
self.overprovisioned_virtualsize_in_mib = object_hash['overProvisionedVirtualSizeMiB']
|
1180
|
+
|
1181
|
+
self.overprovisioned_used_in_mib= object_hash['overProvisionedUsedMiB']
|
1182
|
+
|
1183
|
+
self.overprovisioned_allocated_in_mib = object_hash['overProvisionedAllocatedMiB']
|
1184
|
+
|
1185
|
+
self.overprovisioned_free_in_mib = object_hash['overProvisionedFreeMiB']
|
1186
|
+
|
1187
|
+
self.capacitefficiency = CapEfficiency.new(object_hash['capacityEfficiency'])
|
1188
|
+
|
1189
|
+
end
|
1190
|
+
end
|
1191
|
+
|
1192
|
+
class CapEfficiency
|
1193
|
+
|
1194
|
+
# [type - Number]
|
1195
|
+
# The compaction ratio indicates the overall amount of storage space saved with 3PAR thin technology.
|
1196
|
+
attr_accessor :compaction
|
1197
|
+
|
1198
|
+
# [type - Number]
|
1199
|
+
# Indicates the amount of storage space saved using Compression.
|
1200
|
+
attr_accessor :compression
|
1201
|
+
|
1202
|
+
# [type - Number]
|
1203
|
+
# Indicates the amount of storage space saved using deduplication and compression together.
|
1204
|
+
attr_accessor :data_reduction
|
1205
|
+
|
1206
|
+
# [type - Number]
|
1207
|
+
# Overprovisioning ratio.
|
1208
|
+
attr_accessor :over_provisioning
|
1209
|
+
|
1210
|
+
# [type - Number]
|
1211
|
+
# The deduplication ratio indicates the amount of storage space saved with 3PAR thin deduplication.
|
1212
|
+
attr_accessor :deduplication
|
1213
|
+
|
1214
|
+
def initialize(object_hash)
|
1215
|
+
if object_hash == nil
|
1216
|
+
return
|
1217
|
+
end
|
1218
|
+
|
1219
|
+
self.compaction = object_hash['compaction']
|
1220
|
+
|
1221
|
+
self.compression = object_hash['compression']
|
1222
|
+
|
1223
|
+
self.data_reduction = object_hash['dataReduction']
|
1224
|
+
|
1225
|
+
self.over_provisioning = object_hash['overProvisioning']
|
1226
|
+
|
1227
|
+
self.deduplication = object_hash['deduplication']
|
1228
|
+
|
1229
|
+
end
|
1230
|
+
end
|
1231
|
+
|
1232
|
+
|
1233
|
+
class Policy
|
1234
|
+
|
1235
|
+
# [type - Boolean]
|
1236
|
+
# true: Stale snapshots. If there is no space for a copyon-
|
1237
|
+
# write operation, the snapshot can go stale but the
|
1238
|
+
# host write proceeds without an error.
|
1239
|
+
# false: No stale snapshots. If there is no space for a
|
1240
|
+
# copy-on-write operation, the host write fails.
|
1241
|
+
attr_accessor :stale_ss
|
1242
|
+
|
1243
|
+
# [type - Boolean]
|
1244
|
+
# true: Indicates a volume is constrained to export to
|
1245
|
+
# one host or one host cluster.
|
1246
|
+
# false: Indicates a volume exported to multiple hosts
|
1247
|
+
# for use by a cluster-aware application, or when port
|
1248
|
+
# presents VLUNs are used
|
1249
|
+
attr_accessor :one_host
|
1250
|
+
|
1251
|
+
# [type - Boolean]
|
1252
|
+
# true: Indicates that the storage system scans for
|
1253
|
+
# zeros in the incoming write data.
|
1254
|
+
# false: Indicates that the storage system does not
|
1255
|
+
# scan for zeros in the incoming write data.
|
1256
|
+
attr_accessor :zero_detect
|
1257
|
+
|
1258
|
+
# [type - Boolean]
|
1259
|
+
# true: Special volume used by the system.
|
1260
|
+
# false: Normal user volume.
|
1261
|
+
attr_accessor :system
|
1262
|
+
|
1263
|
+
# [type - Boolean]
|
1264
|
+
# This is a read-only policy and cannot be set.
|
1265
|
+
# true: Indicates that the storage system is enabled for
|
1266
|
+
# write caching, read caching, and read ahead for the
|
1267
|
+
# volume.
|
1268
|
+
# false: Indicates that the storage system is disabled
|
1269
|
+
# for write caching, read caching, and read ahead for the
|
1270
|
+
# volume.
|
1271
|
+
attr_accessor :caching
|
1272
|
+
|
1273
|
+
# [type - Boolean]
|
1274
|
+
# true: Stale snapshots. If there is no space for a copyon-
|
1275
|
+
#write operation, the snapshot can go stale but the
|
1276
|
+
#host write proceeds without an error.
|
1277
|
+
#false: No stale snapshots. If there is no space for a
|
1278
|
+
#copy-on-write operation, the host write fails.
|
1279
|
+
attr_accessor :fsvc
|
1280
|
+
|
1281
|
+
# [type - Number]
|
1282
|
+
# Type of host based DIF policy. - Hpe3parSdk::VolumeHostDIF
|
1283
|
+
attr_accessor :host_dif
|
1284
|
+
|
1285
|
+
def initialize(object_hash)
|
1286
|
+
if object_hash == nil
|
1287
|
+
return
|
1288
|
+
end
|
1289
|
+
|
1290
|
+
self.stale_ss = object_hash['staleSS']
|
1291
|
+
|
1292
|
+
self.one_host = object_hash['oneHost']
|
1293
|
+
|
1294
|
+
self.zero_detect = object_hash['zeroDetect']
|
1295
|
+
|
1296
|
+
self.system = object_hash['system']
|
1297
|
+
|
1298
|
+
self.caching = object_hash['caching']
|
1299
|
+
|
1300
|
+
self.fsvc = object_hash['fsvc']
|
1301
|
+
|
1302
|
+
self.host_dif = object_hash['hostDIF']
|
1303
|
+
|
1304
|
+
end
|
1305
|
+
end
|
1306
|
+
|
1307
|
+
class FCPath
|
1308
|
+
|
1309
|
+
# [type - String]
|
1310
|
+
# A WWN assigned to the host.
|
1311
|
+
attr_accessor :wwn
|
1312
|
+
|
1313
|
+
# [type - PortPos]
|
1314
|
+
# The portpos details.
|
1315
|
+
attr_accessor :port_pos
|
1316
|
+
|
1317
|
+
# [type - String]
|
1318
|
+
# HBA firmware version.
|
1319
|
+
attr_accessor :firmware_version
|
1320
|
+
|
1321
|
+
# [type - String]
|
1322
|
+
# HBA vendor.
|
1323
|
+
attr_accessor :vendor
|
1324
|
+
|
1325
|
+
# [type - String]
|
1326
|
+
# HBA model.
|
1327
|
+
attr_accessor :model
|
1328
|
+
|
1329
|
+
# [type - String]
|
1330
|
+
# HBA driver version.
|
1331
|
+
attr_accessor :driver_version
|
1332
|
+
|
1333
|
+
# [type - String]
|
1334
|
+
# HBA host speed.
|
1335
|
+
attr_accessor :host_speed
|
1336
|
+
|
1337
|
+
def initialize(object_hash)
|
1338
|
+
if object_hash == nil
|
1339
|
+
return
|
1340
|
+
end
|
1341
|
+
|
1342
|
+
self.wwn = object_hash['wwn']
|
1343
|
+
|
1344
|
+
!object_hash['portPos'].nil? ? self.port_pos = PortPos.new(object_hash['portPos']) : self.port_pos = nil
|
1345
|
+
|
1346
|
+
self.firmware_version = object_hash['firmwareVersion']
|
1347
|
+
|
1348
|
+
self.vendor = object_hash['vendor']
|
1349
|
+
|
1350
|
+
self.model = object_hash['model']
|
1351
|
+
|
1352
|
+
self.driver_version = object_hash['driverVersion']
|
1353
|
+
|
1354
|
+
self.host_speed = object_hash['hostSpeed']
|
1355
|
+
|
1356
|
+
end
|
1357
|
+
end
|
1358
|
+
|
1359
|
+
class SCSIPath
|
1360
|
+
|
1361
|
+
# [type - String]
|
1362
|
+
# An iSCSI name to be assigned to the host.
|
1363
|
+
attr_accessor :name
|
1364
|
+
|
1365
|
+
# [type - PortPos]
|
1366
|
+
# The portpos details.
|
1367
|
+
attr_accessor :port_pos
|
1368
|
+
|
1369
|
+
# [type - String]
|
1370
|
+
# IP address for Remote Copy.
|
1371
|
+
attr_accessor :ipaddr
|
1372
|
+
|
1373
|
+
# [type - String]
|
1374
|
+
# HBA firmware version.
|
1375
|
+
attr_accessor :firmware_version
|
1376
|
+
|
1377
|
+
# [type - String]
|
1378
|
+
# HBA vendor.
|
1379
|
+
attr_accessor :vendor
|
1380
|
+
|
1381
|
+
# [type - String]
|
1382
|
+
# HBA model.
|
1383
|
+
attr_accessor :model
|
1384
|
+
|
1385
|
+
# [type - String]
|
1386
|
+
# HBA driver version.
|
1387
|
+
attr_accessor :driver_version
|
1388
|
+
|
1389
|
+
# [type - String]
|
1390
|
+
# HBA host speed.
|
1391
|
+
attr_accessor :host_speed
|
1392
|
+
|
1393
|
+
def initialize(object_hash)
|
1394
|
+
if object_hash == nil
|
1395
|
+
return
|
1396
|
+
end
|
1397
|
+
|
1398
|
+
self.name = object_hash['name']
|
1399
|
+
|
1400
|
+
!object_hash['portPos'].nil? ? self.port_pos = PortPos.new(object_hash['portPos']) : self.port_pos = nil
|
1401
|
+
|
1402
|
+
self.ipaddr = object_hash['IPAddr']
|
1403
|
+
|
1404
|
+
self.firmware_version = object_hash['firmwareVersion']
|
1405
|
+
|
1406
|
+
self.vendor = object_hash['vendor']
|
1407
|
+
|
1408
|
+
self.model = object_hash['model']
|
1409
|
+
|
1410
|
+
self.driver_version = object_hash['driverVersion']
|
1411
|
+
|
1412
|
+
self.host_speed = object_hash['hostSpeed']
|
1413
|
+
|
1414
|
+
end
|
1415
|
+
end
|
1416
|
+
|
1417
|
+
class Descriptors
|
1418
|
+
|
1419
|
+
# [type - String]
|
1420
|
+
# The host’s location.
|
1421
|
+
attr_accessor :location
|
1422
|
+
|
1423
|
+
# [type - String]
|
1424
|
+
# The host’s IP address.
|
1425
|
+
attr_accessor :ipaddr
|
1426
|
+
|
1427
|
+
# [type - String]
|
1428
|
+
# The operating system running on the host.
|
1429
|
+
attr_accessor :os
|
1430
|
+
|
1431
|
+
# [type - String]
|
1432
|
+
# The host’s model.
|
1433
|
+
attr_accessor :model
|
1434
|
+
|
1435
|
+
# [type - String]
|
1436
|
+
# The host’s owner and contact.
|
1437
|
+
attr_accessor :contact
|
1438
|
+
|
1439
|
+
# [type - String]
|
1440
|
+
# Any additional information for the host.
|
1441
|
+
attr_accessor :comment
|
1442
|
+
|
1443
|
+
def initialize(object_hash)
|
1444
|
+
if object_hash == nil
|
1445
|
+
return
|
1446
|
+
end
|
1447
|
+
|
1448
|
+
self.location = object_hash['location']
|
1449
|
+
|
1450
|
+
self.ipaddr = object_hash['IPAddr']
|
1451
|
+
|
1452
|
+
self.os = object_hash['os']
|
1453
|
+
|
1454
|
+
self.model = object_hash['model']
|
1455
|
+
|
1456
|
+
self.contact = object_hash['contact']
|
1457
|
+
|
1458
|
+
self.comment = object_hash['comment']
|
1459
|
+
end
|
1460
|
+
end
|
1461
|
+
|
1462
|
+
class Agent
|
1463
|
+
|
1464
|
+
# [type - String]
|
1465
|
+
# The host name reported by the agent.
|
1466
|
+
attr_accessor :reported_name
|
1467
|
+
|
1468
|
+
# [type - String]
|
1469
|
+
# The host agent IP address.
|
1470
|
+
attr_accessor :ipaddr
|
1471
|
+
|
1472
|
+
# [type - String]
|
1473
|
+
# The architecture description of the host agent.
|
1474
|
+
attr_accessor :architecture
|
1475
|
+
|
1476
|
+
# [type - String]
|
1477
|
+
# Operating system of the host agent.
|
1478
|
+
attr_accessor :os
|
1479
|
+
|
1480
|
+
# [type - String]
|
1481
|
+
# The operating system version of the host agent.
|
1482
|
+
attr_accessor :os_version
|
1483
|
+
|
1484
|
+
# [type - String]
|
1485
|
+
# The operating system patch level of host agent.
|
1486
|
+
attr_accessor :os_patch
|
1487
|
+
|
1488
|
+
# [type - String]
|
1489
|
+
# The multipathing software in use by the host agent.
|
1490
|
+
attr_accessor :multi_path_software
|
1491
|
+
|
1492
|
+
# [type - String]
|
1493
|
+
# The multipathing software version.
|
1494
|
+
attr_accessor :multi_path_software_version
|
1495
|
+
|
1496
|
+
# [type - String]
|
1497
|
+
# Name of the host cluster of which the host is a member.
|
1498
|
+
attr_accessor :cluster_name
|
1499
|
+
|
1500
|
+
# [type - String]
|
1501
|
+
# Host clustering software in use on host.
|
1502
|
+
attr_accessor :cluster_software
|
1503
|
+
|
1504
|
+
# [type - String]
|
1505
|
+
# Version of the host clustering software in use.
|
1506
|
+
attr_accessor :cluster_version
|
1507
|
+
|
1508
|
+
# [type - String]
|
1509
|
+
# Identifier for the cluster.
|
1510
|
+
attr_accessor :cluster_id
|
1511
|
+
|
1512
|
+
# [type - String]
|
1513
|
+
# Identifier for the host agent.
|
1514
|
+
attr_accessor :hosted
|
1515
|
+
|
1516
|
+
def initialize(object_hash)
|
1517
|
+
if object_hash == nil
|
1518
|
+
return
|
1519
|
+
end
|
1520
|
+
|
1521
|
+
self.reported_name = object_hash['reportedName']
|
1522
|
+
|
1523
|
+
self.ipaddr = object_hash['IPAddr']
|
1524
|
+
|
1525
|
+
self.architecture = object_hash['architecture']
|
1526
|
+
|
1527
|
+
self.os = object_hash['os']
|
1528
|
+
|
1529
|
+
self.os_version = object_hash['osVersion']
|
1530
|
+
|
1531
|
+
self.os_patch = object_hash['osPatch']
|
1532
|
+
|
1533
|
+
self.multi_path_software = object_hash['multiPathSoftware']
|
1534
|
+
|
1535
|
+
self.multi_path_software_version = object_hash['multiPathSoftwareVersion']
|
1536
|
+
|
1537
|
+
self.cluster_name = object_hash['clusterName']
|
1538
|
+
|
1539
|
+
self.cluster_software = object_hash['clusterSoftware']
|
1540
|
+
|
1541
|
+
self.cluster_version = object_hash['clusterVersion']
|
1542
|
+
|
1543
|
+
self.cluster_id = object_hash['clusterId']
|
1544
|
+
|
1545
|
+
self.hosted = object_hash['hosted']
|
1546
|
+
|
1547
|
+
end
|
1548
|
+
end
|
1549
|
+
|
1550
|
+
class PortPos
|
1551
|
+
|
1552
|
+
# [type - Number]
|
1553
|
+
# System node.
|
1554
|
+
attr_accessor :node
|
1555
|
+
|
1556
|
+
# [type - Number]
|
1557
|
+
# PCI bus slot in the node.
|
1558
|
+
attr_accessor :slot
|
1559
|
+
|
1560
|
+
# [type - Number]
|
1561
|
+
# Port number on the FC card.
|
1562
|
+
attr_accessor :card_port
|
1563
|
+
|
1564
|
+
def initialize(object_hash)
|
1565
|
+
if object_hash == nil
|
1566
|
+
return
|
1567
|
+
end
|
1568
|
+
|
1569
|
+
self.node = object_hash['node']
|
1570
|
+
|
1571
|
+
self.slot = object_hash['slot']
|
1572
|
+
|
1573
|
+
self.card_port = object_hash['cardPort']
|
1574
|
+
|
1575
|
+
end
|
1576
|
+
end
|
1577
|
+
|
1578
|
+
class Usage
|
1579
|
+
|
1580
|
+
# [type - Number]
|
1581
|
+
# Total logical disk space in MiB.
|
1582
|
+
attr_accessor :total_MiB
|
1583
|
+
|
1584
|
+
# [type - Number]
|
1585
|
+
# Total physical (raw) logical disk space in MiB.
|
1586
|
+
attr_accessor :raw_total_MiB
|
1587
|
+
|
1588
|
+
# [type - Number]
|
1589
|
+
# Amount of logical disk used, in MiB.
|
1590
|
+
attr_accessor :used_MiB
|
1591
|
+
|
1592
|
+
# [type - Number]
|
1593
|
+
# Amount of physical (raw) logical disk used, in MiB.
|
1594
|
+
attr_accessor :raw_used_MiB
|
1595
|
+
|
1596
|
+
def initialize(object_hash)
|
1597
|
+
if object_hash == nil
|
1598
|
+
return
|
1599
|
+
end
|
1600
|
+
|
1601
|
+
self.total_MiB = object_hash['totalMiB']
|
1602
|
+
|
1603
|
+
self.raw_total_MiB = object_hash['rawTotalMiB']
|
1604
|
+
|
1605
|
+
self.used_MiB = object_hash['usedMiB']
|
1606
|
+
|
1607
|
+
self.raw_used_MiB = object_hash['rawUsedMiB']
|
1608
|
+
|
1609
|
+
end
|
1610
|
+
end
|
1611
|
+
|
1612
|
+
class GrowthParams
|
1613
|
+
|
1614
|
+
# [type - Number]
|
1615
|
+
# The growth increment, the amount of logical disk storage created on each auto-grow operation.
|
1616
|
+
attr_accessor :increment_MiB
|
1617
|
+
|
1618
|
+
# [type - LDLayout]
|
1619
|
+
# Logical disk types for this CPG.
|
1620
|
+
attr_accessor :ld_layout
|
1621
|
+
|
1622
|
+
# [type - Number]
|
1623
|
+
# Threshold of used logical disk space, when exceeded, results in a warning alert.
|
1624
|
+
attr_accessor :warning_MiB
|
1625
|
+
|
1626
|
+
# [type - Number]
|
1627
|
+
# The auto-grow operation is limited to the specified storage amount that sets the growth limit.
|
1628
|
+
attr_accessor :limit_MiB
|
1629
|
+
|
1630
|
+
def initialize(object_hash)
|
1631
|
+
if object_hash == nil
|
1632
|
+
return
|
1633
|
+
end
|
1634
|
+
|
1635
|
+
self.warning_MiB = object_hash['warningMiB']
|
1636
|
+
|
1637
|
+
self.limit_MiB = object_hash['limitMiB']
|
1638
|
+
|
1639
|
+
self.increment_MiB = object_hash['incrementMiB']
|
1640
|
+
|
1641
|
+
self.ld_layout = LDLayout.new(object_hash['LDLayout'])
|
1642
|
+
|
1643
|
+
end
|
1644
|
+
end
|
1645
|
+
|
1646
|
+
class PrivateSpace
|
1647
|
+
|
1648
|
+
# [type - Number]
|
1649
|
+
# Base space in MiB.
|
1650
|
+
attr_accessor :base
|
1651
|
+
|
1652
|
+
# [type - Number]
|
1653
|
+
# Raw base space in MiB.
|
1654
|
+
attr_accessor :raw_base
|
1655
|
+
|
1656
|
+
# [type - Number]
|
1657
|
+
# snapshot space in MiB.
|
1658
|
+
attr_accessor :snapshot
|
1659
|
+
|
1660
|
+
# [type - Number]
|
1661
|
+
# Raw snapshot space in MiB.
|
1662
|
+
attr_accessor :raw_snapshot
|
1663
|
+
|
1664
|
+
def initialize(object_hash)
|
1665
|
+
if object_hash == nil
|
1666
|
+
return
|
1667
|
+
end
|
1668
|
+
|
1669
|
+
self.base = object_hash['base']
|
1670
|
+
|
1671
|
+
self.raw_base = object_hash['rawBase']
|
1672
|
+
|
1673
|
+
self.snapshot = object_hash['snapshot']
|
1674
|
+
|
1675
|
+
self.raw_snapshot = object_hash['rawSnapshot']
|
1676
|
+
|
1677
|
+
end
|
1678
|
+
end
|
1679
|
+
|
1680
|
+
class LDLayout
|
1681
|
+
|
1682
|
+
# [type - Number]
|
1683
|
+
# Specifies the RAID type for the logical disk. - Hpe3parSdk::CPGRAIDType
|
1684
|
+
attr_accessor :raidtype
|
1685
|
+
|
1686
|
+
# [type - Number]
|
1687
|
+
# Specifies the set size in the number of chunklets.
|
1688
|
+
attr_accessor :set_size
|
1689
|
+
|
1690
|
+
# [type - Number]
|
1691
|
+
# Specifies that the layout must support the failure of one port pair, one cage, or one magazine. - Hpe3parSdk::CPGHA
|
1692
|
+
attr_accessor :ha
|
1693
|
+
|
1694
|
+
# [type - Number]
|
1695
|
+
# Specifies the chunklet location preference characteristics. - Hpe3parSdk::CPGChunkletPosPref
|
1696
|
+
attr_accessor :chunklet_pos_pref
|
1697
|
+
|
1698
|
+
# [type - Array of DiskPattern objects]
|
1699
|
+
# Specifies patterns for candidate disks.
|
1700
|
+
attr_accessor :disk_patterns
|
1701
|
+
|
1702
|
+
def initialize(object_hash)
|
1703
|
+
if object_hash == nil
|
1704
|
+
return
|
1705
|
+
end
|
1706
|
+
|
1707
|
+
self.raidtype = object_hash['RAIDType']
|
1708
|
+
|
1709
|
+
self.set_size = object_hash['setSize']
|
1710
|
+
|
1711
|
+
self.ha = object_hash['HA']
|
1712
|
+
|
1713
|
+
self.chunklet_pos_pref = object_hash['chunkletPosPref']
|
1714
|
+
|
1715
|
+
self.disk_patterns = []
|
1716
|
+
if !object_hash['diskPatterns'].nil?
|
1717
|
+
object_hash['diskPatterns'].each do |disk_pattern|
|
1718
|
+
self.disk_patterns.push(DiskPattern.new(disk_pattern))
|
1719
|
+
end
|
1720
|
+
end
|
1721
|
+
end
|
1722
|
+
end
|
1723
|
+
|
1724
|
+
class DiskPattern
|
1725
|
+
|
1726
|
+
# [type - String]
|
1727
|
+
# Specifies one or more nodes. Nodes are identified by one or more integers. Multiple nodes are separated with a single comma (1,2,3). A range of nodes is separated with a hyphen (0–7). The primary path of the disks must be on the specified node number.
|
1728
|
+
attr_accessor :node_list
|
1729
|
+
|
1730
|
+
# [type - String]
|
1731
|
+
# Specifies one or more PCI slots. Slots are identified by one or more integers. Multiple slots are separated with a single comma (1,2,3). A range of slots is separated with a hyphen (0–7). The primary path of the disks must be on the specified PCI slot number(s).
|
1732
|
+
attr_accessor :slot_list
|
1733
|
+
|
1734
|
+
# [type - String]
|
1735
|
+
# Specifies one or more ports. Ports are identified by one or more integers. Multiple ports are separated with a single comma (1,2,3). A range of ports is separated with a hyphen (0–4). The primary path of the disks must be on the specified port number(s).
|
1736
|
+
attr_accessor :port_list
|
1737
|
+
|
1738
|
+
# [type - String]
|
1739
|
+
# Specifies one or more drive cages. Drive cages are identified by one or more integers. Multiple drive cages are separated with a single comma (1,2,3). A range of drive cages is separated with a hyphen (0– 3). The specified drive cage(s) must contain disks.
|
1740
|
+
attr_accessor :cage_list
|
1741
|
+
|
1742
|
+
# [type - String]
|
1743
|
+
# Specifies one or more drive magazines. Drive magazines are identified by one or more integers. Multiple drive magazines are separated with a single comma (1,2,3). A range of drive magazines is separated with a hyphen (0–7). The specified magazine(s) must contain disks.
|
1744
|
+
attr_accessor :mag_list
|
1745
|
+
|
1746
|
+
# [type - String]
|
1747
|
+
# Specifies one or more disk positions within a drive magazine. Disk positions are identified by one or more integers. Multiple disk positions are separated with a single comma (1,2,3). A range of disk positions is separated with a hyphen (0–3). The specified portion(s) must contain disks.
|
1748
|
+
attr_accessor :disk_pos_list
|
1749
|
+
|
1750
|
+
# [type - String]
|
1751
|
+
# Specifies one or more physical disks. Disks are identified by one or more integers. Multiple disks are separated with a single comma (1,2,3). A range of disks is separated with a hyphen (0–3). Disks must match the specified ID(s).
|
1752
|
+
attr_accessor :disk_list
|
1753
|
+
|
1754
|
+
# [type - Number]
|
1755
|
+
# Specifies that physical disks with total chunklets greater than the number specified be selected.
|
1756
|
+
attr_accessor :total_chunklets_greater_than
|
1757
|
+
|
1758
|
+
# [type - Number]
|
1759
|
+
# Specifies that physical disks with total chunklets less than the number specified be selected.
|
1760
|
+
attr_accessor :total_chunklets_less_than
|
1761
|
+
|
1762
|
+
# [type - Number]
|
1763
|
+
# Specifies that physical disks with free chunklets less than the number specified be selected.
|
1764
|
+
attr_accessor :free_chunklets_greater_than
|
1765
|
+
|
1766
|
+
# [type - Number]
|
1767
|
+
# Specifies that physical disks with free chunklets greater than the number specified be selected.
|
1768
|
+
attr_accessor :free_chunklets_less_than
|
1769
|
+
|
1770
|
+
# [type - array of string]
|
1771
|
+
# Specifies that PDs identified by their models are selected.
|
1772
|
+
attr_accessor :disk_models
|
1773
|
+
|
1774
|
+
# [type - Number]
|
1775
|
+
# Specifies that physical disks must have the specified device type. - Hpe3parSdk::CPGDiskType
|
1776
|
+
attr_accessor :disk_type
|
1777
|
+
|
1778
|
+
# [type - Number]
|
1779
|
+
# Disks must be of the specified speed.
|
1780
|
+
attr_accessor :rpm
|
1781
|
+
|
1782
|
+
def initialize(object_hash)
|
1783
|
+
if object_hash == nil
|
1784
|
+
return
|
1785
|
+
end
|
1786
|
+
|
1787
|
+
self.node_list = object_hash['nodeList']
|
1788
|
+
|
1789
|
+
self.slot_list = object_hash['slotList']
|
1790
|
+
|
1791
|
+
self.port_list = object_hash['portList']
|
1792
|
+
|
1793
|
+
self.cage_list = object_hash['cageList']
|
1794
|
+
|
1795
|
+
self.mag_list = object_hash['magList']
|
1796
|
+
|
1797
|
+
self.disk_pos_list = object_hash['diskPosList']
|
1798
|
+
|
1799
|
+
self.disk_list = object_hash['diskList']
|
1800
|
+
|
1801
|
+
self.total_chunklets_greater_than = object_hash['totalChunkletsGreaterThan']
|
1802
|
+
|
1803
|
+
self.total_chunklets_less_than = object_hash['totalChunkletsLessThan']
|
1804
|
+
|
1805
|
+
self.free_chunklets_greater_than = object_hash['freeChunkletsGreaterThan']
|
1806
|
+
|
1807
|
+
self.free_chunklets_less_than = object_hash['freeChunkletsLessThan']
|
1808
|
+
|
1809
|
+
self.disk_models = object_hash['diskModels']
|
1810
|
+
|
1811
|
+
self.disk_type = object_hash['diskType']
|
1812
|
+
|
1813
|
+
self.rpm = object_hash['RPM']
|
1814
|
+
|
1815
|
+
end
|
1816
|
+
end
|
1817
|
+
|
1818
|
+
class Task
|
1819
|
+
|
1820
|
+
# [type - Number]
|
1821
|
+
# Task ID.
|
1822
|
+
attr_accessor :task_id
|
1823
|
+
|
1824
|
+
# [type - Number]
|
1825
|
+
# Task Status.
|
1826
|
+
attr_accessor :status
|
1827
|
+
|
1828
|
+
# [type - String]
|
1829
|
+
# Task name.
|
1830
|
+
attr_accessor :name
|
1831
|
+
|
1832
|
+
# [type - Number]
|
1833
|
+
# Task type.
|
1834
|
+
attr_accessor :type
|
1835
|
+
|
1836
|
+
def initialize(object_hash)
|
1837
|
+
if object_hash == nil
|
1838
|
+
return
|
1839
|
+
end
|
1840
|
+
|
1841
|
+
self.task_id = object_hash['id']
|
1842
|
+
|
1843
|
+
self.status = object_hash['status']
|
1844
|
+
|
1845
|
+
self.name = object_hash['name']
|
1846
|
+
|
1847
|
+
self.type = object_hash['type']
|
1848
|
+
end
|
1849
|
+
end
|
1850
|
+
end
|