14
14
itemCategory[id, name, categoryCode]
15
15
'''
16
16
17
- ITEM_MASK = '''id, keyName, description'''
17
+ ITEM_MASK = '''id, keyName, description, itemCategory, categories '''
18
18
19
19
PACKAGE_MASK = '''id, name, keyName, isActive'''
20
20
@@ -196,8 +196,7 @@ def verify_quote(self, quote_id, extra, quantity=1):
196
196
:param int quantity: Quantity to override default
197
197
"""
198
198
199
- container = self .generate_order_template (quote_id , extra ,
200
- quantity = quantity )
199
+ container = self .generate_order_template (quote_id , extra , quantity = quantity )
201
200
return self .order_svc .verifyOrder (container )
202
201
203
202
def order_quote (self , quote_id , extra , quantity = 1 ):
@@ -209,8 +208,7 @@ def order_quote(self, quote_id, extra, quantity=1):
209
208
:param int quantity: Quantity to override default
210
209
"""
211
210
212
- container = self .generate_order_template (quote_id , extra ,
213
- quantity = quantity )
211
+ container = self .generate_order_template (quote_id , extra , quantity = quantity )
214
212
return self .order_svc .placeOrder (container )
215
213
216
214
def get_package_by_key (self , package_keyname , mask = None ):
@@ -221,17 +219,13 @@ def get_package_by_key(self, package_keyname, mask=None):
221
219
:param package_keyname: string representing the package key name we are interested in.
222
220
:param string mask: Mask to specify the properties we want to retrieve
223
221
"""
224
- _filter = {
225
- 'keyName' : {
226
- 'operation' : package_keyname ,
227
- },
228
- }
222
+ _filter = {'keyName' : {'operation' : package_keyname }}
229
223
230
224
packages = self .package_svc .getAllObjects (mask = mask , filter = _filter )
231
225
if len (packages ) == 0 :
232
- return None
233
- else :
234
- return packages .pop ()
226
+ raise exceptions . SoftLayerError ( "Package {} does not exist" . format ( package_keyname ))
227
+
228
+ return packages .pop ()
235
229
236
230
def list_categories (self , package_keyname , ** kwargs ):
237
231
"""List the categories for the given package.
@@ -246,9 +240,6 @@ def list_categories(self, package_keyname, **kwargs):
246
240
get_kwargs ['filter' ] = kwargs ['filter' ]
247
241
248
242
package = self .get_package_by_key (package_keyname , mask = 'id' )
249
- if not package :
250
- raise exceptions .SoftLayerError ("Package {} does not exist" .format (package_keyname ))
251
-
252
243
categories = self .package_svc .getConfiguration (id = package ['id' ], ** get_kwargs )
253
244
return categories
254
245
@@ -266,9 +257,6 @@ def list_items(self, package_keyname, **kwargs):
266
257
get_kwargs ['filter' ] = kwargs ['filter' ]
267
258
268
259
package = self .get_package_by_key (package_keyname , mask = 'id' )
269
- if not package :
270
- raise exceptions .SoftLayerError ("Package {} does not exist" .format (package_keyname ))
271
-
272
260
items = self .package_svc .getItems (id = package ['id' ], ** get_kwargs )
273
261
return items
274
262
@@ -302,11 +290,7 @@ def list_presets(self, package_keyname, **kwargs):
302
290
get_kwargs ['filter' ] = kwargs ['filter' ]
303
291
304
292
package = self .get_package_by_key (package_keyname , mask = 'id' )
305
- if not package :
306
- raise exceptions .SoftLayerError ("Package {} does not exist" .format (package_keyname ))
307
-
308
- acc_presets = self .package_svc .getAccountRestrictedActivePresets (
309
- id = package ['id' ], ** get_kwargs )
293
+ acc_presets = self .package_svc .getAccountRestrictedActivePresets (id = package ['id' ], ** get_kwargs )
310
294
active_presets = self .package_svc .getActivePresets (id = package ['id' ], ** get_kwargs )
311
295
return active_presets + acc_presets
312
296
@@ -452,8 +436,6 @@ def generate_order(self, package_keyname, location, item_keynames, complex_type=
452
436
extras = extras or {}
453
437
454
438
package = self .get_package_by_key (package_keyname , mask = 'id' )
455
- if not package :
456
- raise exceptions .SoftLayerError ("Package {} does not exist" .format (package_keyname ))
457
439
458
440
# if there was extra data given for the order, add it to the order
459
441
# example: VSIs require hostname and domain set on the order, so
@@ -476,3 +458,16 @@ def generate_order(self, package_keyname, location, item_keynames, complex_type=
476
458
price_ids = self .get_price_id_list (package_keyname , item_keynames )
477
459
order ['prices' ] = [{'id' : price_id } for price_id in price_ids ]
478
460
return order
461
+
462
+ def package_locations (self , package_keyname ):
463
+ """List datacenter locations for a package keyname
464
+
465
+ :param str package_keyname: The package for which to get the items.
466
+ :returns: List of locations a package is orderable in
467
+ """
468
+ mask = "mask[description, keyname, locations]"
469
+
470
+ package = self .get_package_by_key (package_keyname , mask = 'id' )
471
+
472
+ regions = self .package_svc .getRegions (id = package ['id' ], mask = mask )
473
+ return regions
0 commit comments