hpe3par_sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,421 @@
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 WSAPIVersionSupport
14
+ WSAPI_MIN_SUPPORTED_VERSION = '1.5.0'.freeze
15
+ WSAPI_MIN_VERSION_VLUN_QUERY_SUPPORT = '1.4.2'.freeze
16
+ WSAPI_MIN_VERSION_COMPRESSION_SUPPORT = '1.6.0'.freeze
17
+
18
+ end
19
+
20
+ ##
21
+ # This class enumerates the RAID types supported by HPE 3PAR.
22
+ class CPGRAIDType
23
+ R0 = 1
24
+ R1 = 2
25
+ R5 = 3
26
+ R6 = 4
27
+ end
28
+
29
+ ##
30
+ # This class enumerates the High Availability settings for a CPG.
31
+ class CPGHA
32
+ PORT = 1
33
+ CAGE = 2
34
+ MAG = 3
35
+ end
36
+
37
+ class RaidTypeSetSizeMap
38
+ R0 = [1]
39
+ R1 = [2, 3, 4]
40
+ R5 = [3, 4, 5, 6, 7, 8, 9]
41
+ R6 = [6, 8, 10, 12, 16]
42
+ end
43
+
44
+ ##
45
+ # This class enumerates the Chunklet position preference for a CPG.
46
+ class CPGChunkletPosPref
47
+ FIRST = 1
48
+ LAST = 2
49
+ end
50
+
51
+ ##
52
+ # This class enumerates the Detailed state values for a CPG.
53
+ class CPGDetailedState
54
+ SA_LIMIT_REACHED = 1
55
+ SD_LIMIT_REACHED = 2
56
+ SA_GROW_FAILED = 3
57
+ SD_GROW_FAILED = 4
58
+ SA_WARN_REACHED = 5
59
+ SD_WARN_REACHED = 6
60
+ INVALID = 7
61
+ end
62
+
63
+ ##
64
+ # This class enumerates the Disk type values for a CPG.
65
+ class CPGDiskType
66
+ FC = 1
67
+ NL = 2
68
+ SSD = 3
69
+ end
70
+
71
+ ##
72
+ # This class enumerates the State values for a CPG.
73
+ class CPGState
74
+ NORMAL = 1
75
+ DEGRADED = 2
76
+ FAILED = 3
77
+ UNKNOWN = 99
78
+ end
79
+
80
+ ##
81
+ # This class enumerates the Compression state values for a Volume.
82
+ class VolumeCompressionState
83
+ YES = 1
84
+ NO = 2
85
+ OFF = 3
86
+ NA = 4
87
+ end
88
+
89
+ ##
90
+ # This class enumerates the Provisioning type values for a Volume.
91
+ class VolumeProvisioningType
92
+ FULL = 1
93
+ TPVV = 2
94
+ SNP = 3
95
+ PEER = 4
96
+ UNKNOWN = 5
97
+ TDVV = 6
98
+ DDS = 7
99
+ end
100
+
101
+ ##
102
+ # This class enumerates the Copy type values for a Volume.
103
+ class VolumeCopyType
104
+ BASE_VOLUME = 1
105
+ PHYSICAL_COPY = 2
106
+ VIRTUAL_COPY = 3
107
+ end
108
+
109
+ ##
110
+ # This class enumerates the De-duplication state values for a Volume.
111
+ class VolumeDeduplicationState
112
+ YES = 1
113
+ NO = 2
114
+ NA = 3
115
+ end
116
+
117
+ ##
118
+ # This class enumerates the Detailed state values for a Volume.
119
+ class VolumeDetailedState
120
+ LDS_NOT_STARTED = 1
121
+ NOT_STARTED = 2
122
+ NEEDS_CHECK = 3
123
+ NEEDS_MAINT_CHECK = 4
124
+ INTERNAL_CONSISTENCY_ERROR = 5
125
+ SNAPDATA_INVALID = 6
126
+ PRESERVED = 7
127
+ STALE = 8
128
+ COPY_FAILED = 9
129
+ DEGRADED_AVAIL = 10
130
+ DEGRADED_PERF = 11
131
+ PROMOTING = 12
132
+ COPY_TARGET = 13
133
+ RESYNC_TARGET = 14
134
+ TUNING = 15
135
+ CLOSING = 16
136
+ REMOVING = 17
137
+ REMOVING_RETRY = 18
138
+ CREATING = 19
139
+ COPY_SOURCE = 20
140
+ IMPORTING = 21
141
+ CONVERTING = 22
142
+ INVALID = 23
143
+ end
144
+
145
+ ##
146
+ # This class enumerates the Host DIF values for a Volume.
147
+ class VolumeHostDIF
148
+ PAR_HOST_DIF = 1
149
+ STD_HOST_DIF = 2
150
+ NO_HOST_DIF = 3
151
+ end
152
+
153
+ ##
154
+ # This class enumerates the Custom actions that can be applied on a Volume.
155
+ class VolumeCustomAction
156
+ STOP_PHYSICAL_COPY = 1
157
+ RESYNC_PHYSICAL_COPY = 2
158
+ GROW_VOLUME = 3
159
+ PROMOTE_VIRTUAL_COPY = 4
160
+ STOP_PROMOTE_VIRTUAL_COPY = 5
161
+ TUNE_VOLUME = 6
162
+ UPDATE_VIRTUAL_COPY = 7
163
+ SNAPSHOT_ENUM_ACTION = 8
164
+ end
165
+
166
+ ##
167
+ # This class enumerates the Tune operations that can be applied on a Volume.
168
+ class VolumeTuneOperation
169
+ USR_CPG = 1
170
+ SNP_CPG = 2
171
+ end
172
+
173
+ ##
174
+ # This class enumerates the types of a VLUN.
175
+ class VlunType
176
+ EMPTY = 1
177
+ PORT = 2
178
+ HOST = 3
179
+ MATCHED_SET = 4
180
+ HOST_SET = 5
181
+ end
182
+
183
+ ##
184
+ # This class enumerates the types of multi-pathing for a VLUN.
185
+ class VlunMultipathing
186
+ UNKNOWN = 1
187
+ ROUND_ROBIN = 2
188
+ FAILOVER = 3
189
+ end
190
+
191
+ ##
192
+ # This class enumerates the types of failed path policies.
193
+ class VLUNfailedPathPol
194
+ UNKNOWN = 1
195
+ SCSI_TEST_UNIT_READY = 2
196
+ INQUIRY = 3
197
+ READ_SECTOR0 = 4
198
+ end
199
+
200
+ ##
201
+ # This class enumerates the type of a Volume.
202
+ class VolumeConversionOperation
203
+ TPVV = 1
204
+ FPVV = 2
205
+ TDVV = 3
206
+ end
207
+
208
+ ##
209
+ # This class enumerates the types QOS targets.
210
+ class QoStargetTypeConstants
211
+ VVSET = 'vvset'.freeze
212
+ SYS = 'sys'.freeze
213
+ end
214
+
215
+ ##
216
+ # This class enumerates the various QOS target types.
217
+ class QoStargetType
218
+ VVSET = 1
219
+ SYS = 2
220
+ end
221
+
222
+ ##
223
+ # This class enumerates the various QOS priorities.
224
+ class QoSpriorityEnumeration
225
+ LOW = 1
226
+ NORMAL = 2
227
+ HIGH = 3
228
+ end
229
+
230
+ ##
231
+ # This class enumerates options which can be used
232
+ # for QoS rule creation or modification.
233
+ # Refer HPE 3PAR WSAPI 1.6 documentation
234
+ class QosZeroNoneOperation
235
+ ZERO = 1
236
+ NOLIMIT = 2
237
+ end
238
+
239
+
240
+ ##
241
+ # This class enumerates options which can be used
242
+ # for Flash Cache creation or modification.
243
+ # Refer HPE 3PAR WSAPI 1.6 documentation
244
+ class FlashCachePolicy
245
+ ENABLE = 1
246
+ DISABLE = 2
247
+ end
248
+
249
+ ##
250
+ # This class enumerates custom actions which can be used
251
+ # on a VVSet.
252
+ # Refer HPE 3PAR WSAPI 1.6 documentation
253
+ class SetCustomAction
254
+ MEM_ADD = 1
255
+ MEM_REMOVE = 2
256
+ RESYNC_PHYSICAL_COPY = 3
257
+ STOP_PHYSICAL_COPY = 4
258
+ PROMOTE_VIRTUAL_COPY = 5
259
+ STOP_PROMOTE_VIRTUAL_COPY = 6
260
+ end
261
+
262
+ ##
263
+ # This class enumerates the various types of a Task.
264
+ class TaskType
265
+ VV_COPY = 1
266
+ PHYS_COPY_RESYNC = 2
267
+ MOVE_REGIONS = 3
268
+ PROMOTE_SV = 4
269
+ REMOTE_COPY_SYNC = 5
270
+ REMOTE_COPY_REVERSE = 6
271
+ REMOTE_COPY_FAILOVER = 7
272
+ REMOTE_COPY_RECOVER = 8
273
+ REMOTE_COPY_RESTORE = 9
274
+ COMPACT_CPG = 10
275
+ COMPACT_IDS = 11
276
+ SNAPSHOT_ACCOUNTING = 12
277
+ CHECK_VV = 13
278
+ SCHEDULED_TASK = 14
279
+ SYSTEM_TASK = 15
280
+ BACKGROUND_TASK = 16
281
+ IMPORT_VV = 17
282
+ ONLINE_COPY = 18
283
+ CONVERT_VV = 19
284
+ BACKGROUND_COMMAND = 20
285
+ end
286
+
287
+ ##
288
+ # This class enumerates the priorities that a Task can have.
289
+ class TaskPriority
290
+ HIGH = 1
291
+ MEDIUM = 2
292
+ LOW = 3
293
+ end
294
+
295
+ ##
296
+ # This class enumerates the statuses that a Task can have.
297
+ class TaskStatus
298
+ DONE = 1
299
+ ACTIVE = 2
300
+ CANCELLED = 3
301
+ FAILED = 4
302
+
303
+
304
+ def self.get_string(val)
305
+ case val
306
+ when 1
307
+ return 'DONE'
308
+ when 2
309
+ return 'ACTIVE'
310
+ when 3
311
+ return 'CANCELLED'
312
+ when 4
313
+ return 'FAILED'
314
+ else
315
+ raise 'Unknown value'
316
+ end
317
+
318
+ end
319
+ end
320
+
321
+ ##
322
+ # This class enumerates the modes of a Port.
323
+ class PortMode
324
+ SUSPENDED = 1
325
+ TARGET = 2
326
+ INITIATOR = 3
327
+ PEER = 4
328
+ end
329
+
330
+ ##
331
+ # This class enumerates the link states of a Port.
332
+ class PortLinkState
333
+ CONFIG_WAIT = 1
334
+ ALPA_WAIT = 2
335
+ LOGIN_WAIT = 3
336
+ READY = 4
337
+ LOSS_SYNC = 5
338
+ ERROR_STATE = 6
339
+ XXX = 7
340
+ NONPARTICIPATE = 8
341
+ COREDUMP = 9
342
+ OFFLINE = 10
343
+ FWDEAD = 11
344
+ IDLE_FOR_RESET = 12
345
+ DHCP_IN_PROGRESS = 13
346
+ PENDING_RESET = 14
347
+ end
348
+
349
+ ##
350
+ # This class enumerates the connection types of a Port.
351
+ class PortConnType
352
+ HOST = 1
353
+ DISK = 2
354
+ FREE = 3
355
+ IPORT = 4
356
+ RCFC = 5
357
+ PEER = 6
358
+ RCIP = 7
359
+ ISCSI = 8
360
+ CNA = 9
361
+ FS = 10
362
+ end
363
+
364
+ ##
365
+ # This class enumerates the protocols that a Port can support.
366
+ class PortProtocol
367
+ FC = 1
368
+ ISCSI = 2
369
+ FCOE = 3
370
+ IP = 4
371
+ SAS = 5
372
+ end
373
+
374
+ ##
375
+ # This class enumerates the various fail over states of a Port.
376
+ class PortFailOverState
377
+ NONE = 1
378
+ FAILOVER_PENDING = 2
379
+ FAILED_OVER = 3
380
+ ACTIVE = 4
381
+ ACTIVE_DOWN = 5
382
+ ACTIVE_FAILED = 6
383
+ FAILBACK_PENDING = 7
384
+ end
385
+
386
+ ##
387
+ # This class enumerates the various personae that a Host can have.
388
+ class HostPersona
389
+ GENERIC = 1
390
+ GENERIC_ALUA = 2
391
+ GENERIC_LEGACY = 3
392
+ HPUX_LEGACY = 4
393
+ AIX_LEGACY = 5
394
+ EGENERA = 6
395
+ ONTAP_LEGACY = 7
396
+ VMWARE = 8
397
+ OPENVMS = 9
398
+ HPUX = 10
399
+ WINDOWS_SERVER = 11
400
+ end
401
+
402
+ ##
403
+ # This class enumerates the various Chap operation modes.
404
+ class ChapOperationMode
405
+ INITIATOR = 1
406
+ TARGET = 2
407
+ end
408
+
409
+ ##
410
+ # This class enumerates the various operations related to editing a Host.
411
+ class HostEditOperation
412
+ ADD = 1
413
+ REMOVE = 2
414
+ end
415
+
416
+ ##
417
+ # This class enumerates the various actions that can be applied on a Task.
418
+ class TaskAction
419
+ CANCEL_TASK = 1
420
+ end
421
+ end
@@ -0,0 +1,72 @@
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
+ require_relative 'util'
13
+
14
+ module Hpe3parSdk
15
+ class CPGManager
16
+ def initialize(http)
17
+ @http = http
18
+ end
19
+
20
+ def get_cpgs
21
+ cpg_list=[]
22
+ cpg_members = @http.get('/cpgs')[1]['members']
23
+ cpg_members.each do |cpgmember|
24
+ cpg_list.push(CPG.new(cpgmember))
25
+ end
26
+ cpg_list
27
+ end
28
+
29
+ def get_cpg(name)
30
+ if name.nil? || name.strip.empty?
31
+ raise 'CPG name cannot be nil or empty'
32
+ else
33
+ CPG.new(@http.get("/cpgs/#{name}")[1])
34
+ end
35
+ end
36
+
37
+ def create_cpg(name, optional = nil)
38
+ info = { 'name' => name }
39
+
40
+ info = Util.merge_hash(info, optional) if optional
41
+ cpgs_url = '/cpgs'
42
+ response = @http.post(cpgs_url, body: info)
43
+ response[1]
44
+ end
45
+
46
+ def modify_cpg(name, cpg_mods)
47
+ @http.put("/cpgs/#{name}", body: cpg_mods)[1]
48
+ end
49
+
50
+ def get_cpg_available_space(name)
51
+ info = { 'cpg' => name }
52
+
53
+ response = @http.post('/spacereporter', body: info)
54
+ LDLayoutCapacity.new(response[1])
55
+ end
56
+
57
+ def delete_cpg(name)
58
+ response = @http.delete("/cpgs/#{name}")
59
+ response[1]
60
+ end
61
+
62
+ def cpg_exists?(name)
63
+ begin
64
+ get_cpg(name)
65
+ return true
66
+ rescue Hpe3parSdk::HTTPNotFound => ex
67
+ return false
68
+ end
69
+ end
70
+
71
+ end
72
+ end