Hi all,

Now that all the compute pricing data is contained in a single JSON file
(data/pricing.json), updating it will in 95% cases only mean updating this
file. This makes it a lot easier and more simple compared to the old way
(updating variables in each driver file separately).

We should figure out the best way to distribute this JSON file and implement
some kind of auto-update functionality in the library.

There are some problems / things which we need to think about:

- where to host this file? It should probably be hosted on a SSL enabled
apache.org server
- how should this file be updated? Probably manually at first, but later one
we can build some really simple scrapers (ideally, all the providers would
expose a special API endpoint for retrieving the pricing data and then we
wouldn't need to deal with this at all).
- where should the file be saved locally? We should probably default to some
temporary folder, but user should be able to specify a custom one
- how often to check for updates? We should default to some sane period,
like every 12-86 hours, but user should be able to override this setting
- should "auto-update" functionality be enabled by default?

The whole API for this functionality could look something like this:

import libcloud.pricing

libcloud.pricing.AUTO_UPDATE = True
libcloud.pricing.DATA_PATH = "/home/my/some/path/"
libcloud.pricing.UPDATE_INTERVAL = 86 * 60 * 60

bool pricing.check_for_updates(); // returns true if new pricing data is
available, false otherwise
bool pricing.force_updates(); // if a new pricing data is available,
download it

We should also use some sane default values which would mean the user only
needs to enable it if we decide to disable it by default.

Feedback is welcome.

Thanks,
Tomaz

Reply via email to