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 2011/06/25 18:48:08 UTC

svn commit: r1139569 - in /libcloud/trunk: libcloud/data/pricing.json libcloud/pricing.py test/pricing_test.json

Author: tomaz
Date: Sat Jun 25 16:48:08 2011
New Revision: 1139569

URL: http://svn.apache.org/viewvc?rev=1139569&view=rev
Log:
1. Change the pricing format so now the pricing data is separated by the type.
This makes it possible to fill the whole module cache at once instead of a
driver at a time.

2. Also store the unix timestamp of the time when the pricing data has been
updated in the pricing.json file.

Modified:
    libcloud/trunk/libcloud/data/pricing.json
    libcloud/trunk/libcloud/pricing.py
    libcloud/trunk/test/pricing_test.json

Modified: libcloud/trunk/libcloud/data/pricing.json
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/data/pricing.json?rev=1139569&r1=1139568&r2=1139569&view=diff
==============================================================================
--- libcloud/trunk/libcloud/data/pricing.json (original)
+++ libcloud/trunk/libcloud/data/pricing.json Sat Jun 25 16:48:08 2011
@@ -1,150 +1,157 @@
 {
-    "bluebox": {
-       "1gb": 0.15,
-       "2gb": 0.25,
-       "4gb": 0.35,
-       "8gb": 0.45
+    "compute": {
+        "bluebox": {
+           "1gb": 0.15,
+           "2gb": 0.25,
+           "4gb": 0.35,
+           "8gb": 0.45
+        },
+
+        "rackspace": {
+            "1": 0.015,
+            "2": 0.030,
+            "3": 0.060,
+            "4": 0.120,
+            "5": 0.240,
+            "6": 0.480,
+            "7": 0.960
+        },
+
+        "dreamhost": {
+            "minimum": 15,
+            "maximum": 200,
+            "default": 115,
+            "low": 50,
+            "high": 150
+        },
+
+        "ec2_us_east": {
+            "t1.micro": 0.02,
+            "m1.small": 0.085,
+            "m1.large": 0.34,
+            "m1.xlarge": 0.68,
+            "c1.medium": 0.17,
+            "c1.xlarge": 0.68,
+            "m2.xlarge": 0.50,
+            "m2.2xlarge": 1.0,
+            "m2.4xlarge": 2.0,
+            "cg1.4xlarge": 2.1,
+            "cc1.4xlarge": 1.6
+        },
+
+        "ec2_us_west": {
+            "t1.micro": 0.025,
+            "m1.small": 0.095,
+            "m1.large": 0.38,
+            "m1.xlarge": 0.76,
+            "c1.medium": 0.19,
+            "c1.xlarge": 0.76,
+            "m2.xlarge": 0.57,
+            "m2.2xlarge": 1.14,
+            "m2.4xlarge": 2.28
+        },
+
+       "ec2_eu_west": {
+            "t1.micro": 0.025,
+            "m1.small": 0.095,
+            "m1.large": 0.38,
+            "m1.xlarge": 0.76,
+            "c1.medium": 0.19,
+            "c1.xlarge": 0.76,
+            "m2.xlarge": 0.57,
+            "m2.2xlarge": 1.14,
+            "m2.4xlarge": 2.28
+        },
+
+       "ec2_ap_southeast": {
+            "t1.micro": 0.025,
+            "m1.small": 0.095,
+            "m1.large": 0.38,
+            "m1.xlarge": 0.76,
+            "c1.medium": 0.19,
+            "c1.xlarge": 0.76,
+            "m2.xlarge": 0.57,
+            "m2.2xlarge": 1.14,
+            "m2.4xlarge": 2.28
+        },
+
+       "ec2_ap_northeast": {
+            "t1.micro": 0.027,
+            "m1.small": 0.10,
+            "m1.large": 0.40,
+            "m1.xlarge": 0.80,
+            "c1.medium": 0.20,
+            "c1.xlarge": 0.80,
+            "m2.xlarge": 0.60,
+            "m2.2xlarge": 1.20,
+            "m2.4xlarge": 2.39
+        },
+
+        "nimbus" : {
+            "m1.small": 0.0,
+            "m1.large": 0.0,
+            "m1.xlarge": 0.0
+        },
+
+        "cloudsigma_zrh": {
+            "micro-regular": 0.0548,
+            "micro-high-cpu": 0.381,
+            "standard-small": 0.0796,
+            "standard-large": 0.381,
+            "standard-extra-large": 0.762,
+            "high-memory-extra-large": 0.642,
+            "high-memory-double-extra-large": 1.383,
+            "high-cpu-medium": 0.211,
+            "high-cpu-extra-large": 0.780
+        },
+
+        "elastichosts": {
+           "small": 0.100,
+           "medium": 0.223,
+           "large": 0.378,
+           "extra-large": 0.579,
+           "high-cpu-medium": 0.180,
+           "high-cpu-extra-large": 0.770
+        },
+
+        "skalicloud": {
+           "small": 0.136,
+           "medium": 0.301,
+           "large": 0.505,
+           "extra-large": 0.654,
+           "high-cpu-medium": 0.249,
+           "high-cpu-extra-large": 0.936
+        },
+
+        "serverlove": {
+           "small": 0.161,
+           "medium": 0.404,
+           "large": 0.534,
+           "extra-large": 0.615,
+           "high-cpu-medium": 0.291,
+           "high-cpu-extra-large": 0.776
+        },
+
+        "gogrid": {
+            "512MB": 0.095,
+            "1GB": 0.19,
+            "2GB": 0.38,
+            "4GB": 0.76,
+            "8GB": 1.52,
+            "16GB": 3.04
+        },
+
+        "gandi": {
+            "1": 0.02
+        },
+
+        "vps_net": {
+            "1": 0.416
+        }
     },
 
-    "rackspace": {
-        "1": 0.015,
-        "2": 0.030,
-        "3": 0.060,
-        "4": 0.120,
-        "5": 0.240,
-        "6": 0.480,
-        "7": 0.960
+    "storage": {
     },
 
-    "dreamhost": {
-        "minimum": 15,
-        "maximum": 200,
-        "default": 115,
-        "low": 50,
-        "high": 150
-    },
-
-    "ec2_us_east": {
-        "t1.micro": 0.02,
-        "m1.small": 0.085,
-        "m1.large": 0.34,
-        "m1.xlarge": 0.68,
-        "c1.medium": 0.17,
-        "c1.xlarge": 0.68,
-        "m2.xlarge": 0.50,
-        "m2.2xlarge": 1.0,
-        "m2.4xlarge": 2.0,
-        "cg1.4xlarge": 2.1,
-        "cc1.4xlarge": 1.6
-    },
-
-    "ec2_us_west": {
-        "t1.micro": 0.025,
-        "m1.small": 0.095,
-        "m1.large": 0.38,
-        "m1.xlarge": 0.76,
-        "c1.medium": 0.19,
-        "c1.xlarge": 0.76,
-        "m2.xlarge": 0.57,
-        "m2.2xlarge": 1.14,
-        "m2.4xlarge": 2.28
-    },
-
-   "ec2_eu_west": {
-        "t1.micro": 0.025,
-        "m1.small": 0.095,
-        "m1.large": 0.38,
-        "m1.xlarge": 0.76,
-        "c1.medium": 0.19,
-        "c1.xlarge": 0.76,
-        "m2.xlarge": 0.57,
-        "m2.2xlarge": 1.14,
-        "m2.4xlarge": 2.28
-    },
-
-   "ec2_ap_southeast": {
-        "t1.micro": 0.025,
-        "m1.small": 0.095,
-        "m1.large": 0.38,
-        "m1.xlarge": 0.76,
-        "c1.medium": 0.19,
-        "c1.xlarge": 0.76,
-        "m2.xlarge": 0.57,
-        "m2.2xlarge": 1.14,
-        "m2.4xlarge": 2.28
-    },
-
-   "ec2_ap_northeast": {
-        "t1.micro": 0.027,
-        "m1.small": 0.10,
-        "m1.large": 0.40,
-        "m1.xlarge": 0.80,
-        "c1.medium": 0.20,
-        "c1.xlarge": 0.80,
-        "m2.xlarge": 0.60,
-        "m2.2xlarge": 1.20,
-        "m2.4xlarge": 2.39
-    },
-
-    "nimbus" : {
-        "m1.small": 0.0,
-        "m1.large": 0.0,
-        "m1.xlarge": 0.0
-    },
-
-    "cloudsigma_zrh": {
-        "micro-regular": 0.0548,
-        "micro-high-cpu": 0.381,
-        "standard-small": 0.0796,
-        "standard-large": 0.381,
-        "standard-extra-large": 0.762,
-        "high-memory-extra-large": 0.642,
-        "high-memory-double-extra-large": 1.383,
-        "high-cpu-medium": 0.211,
-        "high-cpu-extra-large": 0.780
-    },
-
-    "elastichosts": {
-       "small": 0.100,
-       "medium": 0.223,
-       "large": 0.378,
-       "extra-large": 0.579,
-       "high-cpu-medium": 0.180,
-       "high-cpu-extra-large": 0.770
-    },
-
-    "skalicloud": {
-       "small": 0.136,
-       "medium": 0.301,
-       "large": 0.505,
-       "extra-large": 0.654,
-       "high-cpu-medium": 0.249,
-       "high-cpu-extra-large": 0.936
-    },
-
-    "serverlove": {
-       "small": 0.161,
-       "medium": 0.404,
-       "large": 0.534,
-       "extra-large": 0.615,
-       "high-cpu-medium": 0.291,
-       "high-cpu-extra-large": 0.776
-    },
-
-    "gogrid": {
-        "512MB": 0.095,
-        "1GB": 0.19,
-        "2GB": 0.38,
-        "4GB": 0.76,
-        "8GB": 1.52,
-        "16GB": 3.04
-    },
-
-    "gandi": {
-        "1": 0.02
-    },
-
-    "vps_net": {
-        "1": 0.416
-    }
+    "updated": 1309019791
 }

Modified: libcloud/trunk/libcloud/pricing.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/pricing.py?rev=1139569&r1=1139568&r2=1139569&view=diff
==============================================================================
--- libcloud/trunk/libcloud/pricing.py (original)
+++ libcloud/trunk/libcloud/pricing.py Sat Jun 25 16:48:08 2011
@@ -32,6 +32,8 @@ PRICING_DATA = {
     'storage': {}
 }
 
+VALID_PRICING_DRIVER_TYPES = [ 'compute', 'storage' ]
+
 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)
@@ -52,7 +54,7 @@ def get_pricing(driver_type, driver_name
     @return: Dictionary with pricing where a key name is size ID and
              the value is a price.
     """
-    if not driver_type in [ 'compute', 'storage' ]:
+    if not driver_type in VALID_PRICING_DRIVER_TYPES:
         raise AttributeError('Invalid driver type: %s', driver_type)
 
     if driver_name in PRICING_DATA[driver_type]:
@@ -64,10 +66,15 @@ def get_pricing(driver_type, driver_name
     with open(pricing_file_path) as fp:
         content = fp.read()
 
-    pricing = json.loads(content)[driver_name]
+    pricing_data = json.loads(content)
+    size_pricing = pricing_data[driver_type][driver_name]
 
-    PRICING_DATA[driver_type][driver_name] = pricing
-    return pricing
+    for driver_type in VALID_PRICING_DRIVER_TYPES:
+        pricing = pricing_data.get(driver_type, None)
+        if pricing:
+            PRICING_DATA[driver_type] = pricing
+
+    return size_pricing
 
 def set_pricing(driver_type, driver_name, pricing):
     """

Modified: libcloud/trunk/test/pricing_test.json
URL: http://svn.apache.org/viewvc/libcloud/trunk/test/pricing_test.json?rev=1139569&r1=1139568&r2=1139569&view=diff
==============================================================================
--- libcloud/trunk/test/pricing_test.json (original)
+++ libcloud/trunk/test/pricing_test.json Sat Jun 25 16:48:08 2011
@@ -1,6 +1,10 @@
 {
-    "foo": {
-        "1": 1.00,
-        "2": 2.00
-    }
+    "compute": {
+        "foo": {
+            "1": 1.00,
+            "2": 2.00
+        }
+    },
+
+    "updated": 1309019791
 }