@@ -55,6 +55,17 @@ class VolumeType:
55
55
thin = 'ThinProvisioned'
56
56
57
57
58
+ class VolumeClass :
59
+ """Volume class types."""
60
+
61
+ supported_vol_classes = (
62
+ ['defaultclass' , 'replication' , 'csi' , 'openstack' , 'vvol' , 'datastore' ,
63
+ 'nasfs' , 'nasvdm' , 'nascluster' , 'nas' , 'management' , 'snap_mobility' ,
64
+ 'ntnx' ])
65
+ for vol_class in supported_vol_classes :
66
+ locals ()[vol_class ] = vol_class
67
+
68
+
58
69
class Volume (base_client .EntityRequest ):
59
70
"""
60
71
A class representing Volume client.
@@ -65,7 +76,8 @@ def add_mapped_sdc(self,
65
76
sdc_guid = None ,
66
77
allow_multiple_mappings = None ,
67
78
allow_ext_managed = None ,
68
- access_mode = None ):
79
+ access_mode = None ,
80
+ volume_class = VolumeClass .defaultclass ):
69
81
"""Map PowerFlex volume to SDC.
70
82
71
83
:param volume_id: str
@@ -74,6 +86,7 @@ def add_mapped_sdc(self,
74
86
:param allow_multiple_mappings: bool
75
87
:param allow_ext_managed: bool
76
88
:type access_mode: str
89
+ :param volume_class: str
77
90
:return: dict
78
91
"""
79
92
@@ -87,7 +100,8 @@ def add_mapped_sdc(self,
87
100
"guid" : sdc_guid ,
88
101
"allowMultipleMappings" : allow_multiple_mappings ,
89
102
"allowOnExtManagedVol" : allow_ext_managed ,
90
- "accessMode" : access_mode
103
+ "accessMode" : access_mode ,
104
+ "volumeClass" : volume_class
91
105
}
92
106
93
107
r , response = self .send_post_request (self .base_action_url ,
@@ -111,7 +125,8 @@ def create(self,
111
125
name = None ,
112
126
volume_type = None ,
113
127
use_rmcache = None ,
114
- compression_method = None ):
128
+ compression_method = None ,
129
+ volume_class = VolumeClass .defaultclass ):
115
130
"""Create PowerFlex volume.
116
131
117
132
:param storage_pool_id: str
@@ -123,6 +138,7 @@ def create(self,
123
138
:param compression_method: one of predefined attributes of
124
139
CompressionMethod
125
140
:type compression_method: str
141
+ :param volume_class: str
126
142
:return: dict
127
143
"""
128
144
@@ -132,39 +148,47 @@ def create(self,
132
148
'name' : name ,
133
149
'volumeType' : volume_type ,
134
150
'useRmcache' : use_rmcache ,
135
- 'compressionMethod' : compression_method
151
+ 'compressionMethod' : compression_method ,
152
+ 'volumeClass' : volume_class
136
153
}
137
154
138
155
return self ._create_entity (params )
139
156
140
- def delete (self , volume_id , remove_mode , allow_ext_managed = None ):
157
+ def delete (self , volume_id , remove_mode , allow_ext_managed = None ,
158
+ volume_class = VolumeClass .defaultclass ):
141
159
"""Remove PowerFlex volume.
142
160
143
161
:param volume_id: str
144
162
:param remove_mode: one of predefined attributes of RemoveMode
145
163
:param allow_ext_managed: bool
164
+ :param volume_class: str
146
165
:return: None
147
166
"""
148
167
149
168
params = {
150
169
"removeMode" : remove_mode ,
151
- "allowOnExtManagedVol" : allow_ext_managed
170
+ "allowOnExtManagedVol" : allow_ext_managed ,
171
+ "volumeClass" : volume_class
152
172
}
153
173
154
174
return self ._delete_entity (volume_id , params )
155
175
156
- def extend (self , volume_id , size_in_gb , allow_ext_managed = None ):
176
+ def extend (self , volume_id , size_in_gb , allow_ext_managed = None ,
177
+ volume_class = VolumeClass .defaultclass ):
157
178
"""Extend PowerFlex volume.
158
179
159
180
:param volume_id: str
160
181
:param size_in_gb: int
161
182
:param allow_ext_managed: bool
183
+ :param volume_class: str
162
184
:return: dict
163
185
"""
164
186
165
187
action = 'setVolumeSize'
166
188
167
- params = {"sizeInGB" : size_in_gb , "allowOnExtManagedVol" : allow_ext_managed }
189
+ params = {"sizeInGB" : size_in_gb ,
190
+ "allowOnExtManagedVol" : allow_ext_managed ,
191
+ "volumeClass" : volume_class }
168
192
169
193
r , response = self .send_post_request (self .base_action_url ,
170
194
action = action ,
@@ -223,7 +247,8 @@ def remove_mapped_sdc(self,
223
247
sdc_guid = None ,
224
248
all_sdcs = None ,
225
249
skip_appliance_validation = None ,
226
- allow_ext_managed = None ):
250
+ allow_ext_managed = None ,
251
+ volume_class = VolumeClass .defaultclass ):
227
252
"""Unmap PowerFlex volume from SDC.
228
253
229
254
:param volume_id: str
@@ -232,6 +257,7 @@ def remove_mapped_sdc(self,
232
257
:param all_sdcs: bool
233
258
:param skip_appliance_validation: bool
234
259
:param allow_ext_managed: bool
260
+ :param volume_class: str
235
261
:return: dict
236
262
"""
237
263
@@ -249,7 +275,8 @@ def remove_mapped_sdc(self,
249
275
"guid" : sdc_guid ,
250
276
"allSdcs" : all_sdcs ,
251
277
"skipApplianceValidation" : skip_appliance_validation ,
252
- "allowOnExtManagedVol" : allow_ext_managed
278
+ "allowOnExtManagedVol" : allow_ext_managed ,
279
+ "volumeClass" : volume_class
253
280
}
254
281
255
282
r , response = self .send_post_request (self .base_action_url ,
@@ -267,20 +294,23 @@ def remove_mapped_sdc(self,
267
294
268
295
return self .get (entity_id = volume_id )
269
296
270
- def rename (self , volume_id , name , allow_ext_managed = None ):
297
+ def rename (self , volume_id , name , allow_ext_managed = None ,
298
+ volume_class = VolumeClass .defaultclass ):
271
299
"""Rename PowerFlex volume.
272
300
273
301
:param volume_id: str
274
302
:param name: str
275
303
:param allow_ext_managed: bool
304
+ :param volume_class: str
276
305
:return: dict
277
306
"""
278
307
279
308
action = 'setVolumeName'
280
309
281
310
params = {
282
311
"newName" : name ,
283
- "allowOnExtManagedVol" : allow_ext_managed
312
+ "allowOnExtManagedVol" : allow_ext_managed ,
313
+ "volumeClass" : volume_class
284
314
}
285
315
286
316
return self ._rename_entity (action , volume_id , params )
0 commit comments