1414 itemCategory[id, name, categoryCode]
1515 '''
1616
17- ITEM_MASK = '''id, keyName, description'''
17+ ITEM_MASK = '''id, keyName, description, itemCategory, categories '''
1818
1919PACKAGE_MASK = '''id, name, keyName, isActive'''
2020
@@ -196,8 +196,7 @@ def verify_quote(self, quote_id, extra, quantity=1):
196196 :param int quantity: Quantity to override default
197197 """
198198
199- container = self .generate_order_template (quote_id , extra ,
200- quantity = quantity )
199+ container = self .generate_order_template (quote_id , extra , quantity = quantity )
201200 return self .order_svc .verifyOrder (container )
202201
203202 def order_quote (self , quote_id , extra , quantity = 1 ):
@@ -209,8 +208,7 @@ def order_quote(self, quote_id, extra, quantity=1):
209208 :param int quantity: Quantity to override default
210209 """
211210
212- container = self .generate_order_template (quote_id , extra ,
213- quantity = quantity )
211+ container = self .generate_order_template (quote_id , extra , quantity = quantity )
214212 return self .order_svc .placeOrder (container )
215213
216214 def get_package_by_key (self , package_keyname , mask = None ):
@@ -221,17 +219,13 @@ def get_package_by_key(self, package_keyname, mask=None):
221219 :param package_keyname: string representing the package key name we are interested in.
222220 :param string mask: Mask to specify the properties we want to retrieve
223221 """
224- _filter = {
225- 'keyName' : {
226- 'operation' : package_keyname ,
227- },
228- }
222+ _filter = {'keyName' : {'operation' : package_keyname }}
229223
230224 packages = self .package_svc .getAllObjects (mask = mask , filter = _filter )
231225 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 ()
235229
236230 def list_categories (self , package_keyname , ** kwargs ):
237231 """List the categories for the given package.
@@ -246,9 +240,6 @@ def list_categories(self, package_keyname, **kwargs):
246240 get_kwargs ['filter' ] = kwargs ['filter' ]
247241
248242 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-
252243 categories = self .package_svc .getConfiguration (id = package ['id' ], ** get_kwargs )
253244 return categories
254245
@@ -266,9 +257,6 @@ def list_items(self, package_keyname, **kwargs):
266257 get_kwargs ['filter' ] = kwargs ['filter' ]
267258
268259 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-
272260 items = self .package_svc .getItems (id = package ['id' ], ** get_kwargs )
273261 return items
274262
@@ -302,11 +290,7 @@ def list_presets(self, package_keyname, **kwargs):
302290 get_kwargs ['filter' ] = kwargs ['filter' ]
303291
304292 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 )
310294 active_presets = self .package_svc .getActivePresets (id = package ['id' ], ** get_kwargs )
311295 return active_presets + acc_presets
312296
@@ -452,8 +436,6 @@ def generate_order(self, package_keyname, location, item_keynames, complex_type=
452436 extras = extras or {}
453437
454438 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 ))
457439
458440 # if there was extra data given for the order, add it to the order
459441 # 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=
476458 price_ids = self .get_price_id_list (package_keyname , item_keynames )
477459 order ['prices' ] = [{'id' : price_id } for price_id in price_ids ]
478460 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