This is an automated email from the ASF dual-hosted git repository. tomaz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/libcloud.git
commit d3df881afc3f44886ed8db41e0d7391a78657722 Author: Eis <[email protected]> AuthorDate: Mon Jul 6 18:11:49 2020 +0300 Added region argument in get_size_price and change ec2 driver accordingly --- libcloud/compute/drivers/ec2.py | 10 ++++++---- libcloud/pricing.py | 7 +++++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/libcloud/compute/drivers/ec2.py b/libcloud/compute/drivers/ec2.py index b8f4815..259f797 100644 --- a/libcloud/compute/drivers/ec2.py +++ b/libcloud/compute/drivers/ec2.py @@ -1695,12 +1695,13 @@ class BaseEC2NodeDriver(NodeDriver): # we are only interested in pure size price so linux price = get_size_price(driver_type='compute', driver_name='ec2_linux', - size_id=instance_type) + size_id=instance_type, + region=self.region_name) if price is None: # it is a weird bare metal instance attributes['price'] = None else: - attributes['price'] = price[self.region_name] + attributes['price'] = price except KeyError: attributes['price'] = None # pricing not available sizes.append(NodeSize(driver=self, **attributes)) @@ -6207,11 +6208,12 @@ class OutscaleNodeDriver(BaseEC2NodeDriver): attributes = copy.deepcopy(attributes) price = get_size_price(driver_type='compute', driver_name='ec2_linux', - size_id=instance_type) + size_id=instance_type, + region=self.region_name) if price is None: attributes['price'] = None else: - attributes['price'] = price[self.region_name] + attributes['price'] = price attributes.update({'price': price}) sizes.append(NodeSize(driver=self, **attributes)) return sizes diff --git a/libcloud/pricing.py b/libcloud/pricing.py index a9d4701..695c1c6 100644 --- a/libcloud/pricing.py +++ b/libcloud/pricing.py @@ -127,7 +127,7 @@ def set_pricing(driver_type, driver_name, pricing): PRICING_DATA[driver_type][driver_name] = pricing -def get_size_price(driver_type, driver_name, size_id): +def get_size_price(driver_type, driver_name, size_id, region=None): """ Return price for the provided size. @@ -147,7 +147,10 @@ def get_size_price(driver_type, driver_name, size_id): pricing = get_pricing(driver_type=driver_type, driver_name=driver_name) try: - price = float(pricing[size_id]) + if region is None: + price = float(pricing[size_id]) + else: + price = float(pricing[size_id][region]) except KeyError: # Price not available price = None
