@@ -267,16 +267,6 @@ def validate_entity_roles(self, entities: list, type: str):
267267
268268 return (valid_entities )
269269
270- def get_region_by_id (self , id : str ):
271- """Get data center region by UUIDv4.
272-
273- :param id: required UUIDv4 of data center
274- """
275- url = self .audience + 'core/v2/regions/' + id
276- data_center , status_symbol = get_generic_resource_by_url (setup = self , url = url )
277- return (data_center )
278- get_data_center_by_id = get_region_by_id
279-
280270 @docstring_parameters (providers = str (DC_PROVIDERS ))
281271 def find_regions (self , ** kwargs ):
282272 """Find regions for hosted router placement.
@@ -632,15 +622,9 @@ def create_edge_router(self, name: str, attributes: list = list(), link_listener
632622 "linkListener" : link_listener ,
633623 "tunnelerEnabled" : tunneler_enabled
634624 }
635- if data_center_id :
636- self .logger .warning ('data_center_id is deprecated by provider, location_code. ' )
637- data_center = self .get_data_center_by_id (id = data_center_id )
638- body ['provider' ] = data_center ['provider' ]
639- body ['locationCode' ] = data_center ['locationCode' ]
640- body ['linkListener' ] = True
641- elif provider or location_code :
625+ if provider or location_code :
642626 if provider and location_code :
643- data_centers = self .get_edge_router_data_centers (provider = provider , location_code = location_code )
627+ data_centers = self .find_regions (provider = provider , location_code = location_code )
644628 if len (data_centers ) == 1 :
645629 body ['provider' ] = provider
646630 body ['locationCode' ] = location_code
@@ -1642,18 +1626,39 @@ def get_network_domain_resource(self, resource_type: str, id: str, **kwargs):
16421626 resource = get_generic_resource_by_url (setup = self , url = url , ** params )
16431627 return (resource )
16441628
1645- def find_regions (self , ** kwargs ):
1646- """Find regions."""
1647- # data centers returns a list of dicts (data center objects)
1648- params = dict ()
1649- for param in kwargs .keys ():
1650- params [param ] = kwargs [param ]
1629+ def find_regions (self , providers : list = [], provider : str = None , location_code : str = None ):
1630+ """
1631+ Find regions.
16511632
1652- if params .get ('provider' ) and not params ['provider' ] in DC_PROVIDERS :
1653- raise RuntimeError (f"unknown cloud provider '{ params ['provider' ]} '. Need one of { str (DC_PROVIDERS )} " )
1633+ Optionally filter by provider, and optionally get exactly one region by sending both a single element for providers and a location_code
1634+
1635+ :param providers: optional list of providers from DC_PROVIDERS
1636+ :param provider: optional string matching one provider from DC_PROVIDERS
1637+ :param location_code: optional string that uniquely identifies a region for some provider
1638+ """
1639+ # regions returns a list of dicts (data center objects)
1640+
1641+ if provider :
1642+ providers .append (provider )
1643+
1644+ if providers :
1645+ for provider in providers :
1646+ if provider not in DC_PROVIDERS :
1647+ raise RuntimeError (f"unknown cloud provider '{ provider } '. Need one of { str (DC_PROVIDERS )} " )
16541648
16551649 url = self .audience + NET_RESOURCES ['regions' ].find_url
1656- regions = list ()
1657- for i in find_generic_resources (setup = self , url = url , embedded = NET_RESOURCES ['regions' ]._embedded , ** params ):
1658- regions .extend (i )
1659- return (regions )
1650+
1651+ if len (providers ) == 1 and location_code :
1652+ url = f"{ url } /{ providers [0 ]} /{ location_code } "
1653+ region , status = get_generic_resource_by_url (setup = self , url = url )
1654+ return ([region ])
1655+ else :
1656+ regions = list ()
1657+ for i in find_generic_resources (setup = self , url = url , embedded = NET_RESOURCES ['regions' ]._embedded , providers = providers ):
1658+ regions .extend (i )
1659+
1660+ if location_code and len (regions ) > 0 :
1661+ regions = [r for r in regions if r ['locationCode' ] == location_code ]
1662+ return (regions )
1663+ else :
1664+ return (regions )
0 commit comments