You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by to...@apache.org on 2013/08/01 20:30:26 UTC
[14/22] git commit: Allow user to use a custom pricing file by
placing a file to ~/.libcloud/pricing.json.
Allow user to use a custom pricing file by placing a file to ~/.libcloud/pricing.json.
Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/5fa1610c
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/5fa1610c
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/5fa1610c
Branch: refs/heads/0.13.x
Commit: 5fa1610cdad7400303af8d6cdfb4d19d6bb81d59
Parents: be1bdc0
Author: Tomaz Muraus <to...@tomaz.me>
Authored: Fri Jun 14 21:50:50 2013 -0700
Committer: Tomaz Muraus <to...@apache.org>
Committed: Thu Aug 1 20:28:49 2013 +0200
----------------------------------------------------------------------
libcloud/pricing.py | 43 ++++++++++++++++++++++++++++---------------
1 file changed, 28 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/libcloud/blob/5fa1610c/libcloud/pricing.py
----------------------------------------------------------------------
diff --git a/libcloud/pricing.py b/libcloud/pricing.py
index 3ed32d2..db3b674 100644
--- a/libcloud/pricing.py
+++ b/libcloud/pricing.py
@@ -25,27 +25,26 @@ except ImportError:
import os.path
from os.path import join as pjoin
-PRICING_FILE_PATH = 'data/pricing.json'
+CURRENT_DIRECTORY = os.path.dirname(os.path.abspath(__file__))
+DEFAULT_PRICING_FILE_PATH = pjoin(CURRENT_DIRECTORY, 'data/pricing.json')
+CUSTOM_PRICING_FILE_PATH = os.path.expanduser('~/.libcloud/pricing.json')
-PRICING_DATA = {}
+# Pricing data cache
+PRICING_DATA = {
+ 'compute': {},
+ 'storage': {}
+}
VALID_PRICING_DRIVER_TYPES = ['compute', 'storage']
-def clear_pricing_data():
- PRICING_DATA.clear()
- PRICING_DATA.update({
- 'compute': {},
- 'storage': {},
- })
-clear_pricing_data()
-
-
def get_pricing_file_path(file_path=None):
- pricing_directory = os.path.dirname(os.path.abspath(__file__))
- pricing_file_path = pjoin(pricing_directory, PRICING_FILE_PATH)
+ if os.path.exists(CUSTOM_PRICING_FILE_PATH) and \
+ os.path.isfile(CUSTOM_PRICING_FILE_PATH):
+ # Custom pricing file is available, use it
+ return CUSTOM_PRICING_FILE_PATH
- return pricing_file_path
+ return DEFAULT_PRICING_FILE_PATH
def get_pricing(driver_type, driver_name, pricing_file_path=None):
@@ -58,6 +57,10 @@ def get_pricing(driver_type, driver_name, pricing_file_path=None):
@type driver_name: C{str}
@param driver_name: Driver name
+ @type pricing_file_path: C{str}
+ @param pricing_file_path: Custom path to a price file. If not provided
+ it uses a default path.
+
@rtype: C{dict}
@return: Dictionary with pricing where a key name is size ID and
the value is a price.
@@ -126,12 +129,22 @@ def get_size_price(driver_type, driver_name, size_id):
def invalidate_pricing_cache():
"""
- Invalidate the cache for all the drivers.
+ Invalidate pricing cache for all the drivers.
"""
PRICING_DATA['compute'] = {}
PRICING_DATA['storage'] = {}
+def clear_pricing_data():
+ """
+ Invalidate pricing cache for all the drivers.
+
+ Note: This method does the same thing as invalidate_pricing_cache and is
+ here for backward compatibility reasons.
+ """
+ invalidate_pricing_cache()
+
+
def invalidate_module_pricing_cache(driver_type, driver_name):
"""
Invalidate the cache for the specified driver.