dotcloud environment loader
Python
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
fixtures
MANIFEST.in
README.rst
setup.py
spot.py
test_spot.py

README.rst

SPOT - DotCloud environment loader

Why?

When working with DotCloud you will more than likely have a developement environment locally that offers the services your application requires which are specified in the build file.

Locally one very rarely bother changing the parameters of the services from their defaults settings but on DotCloud your application must read the environment file.

Hence you end up with a fair amount of boilerplate code in your application which figures out wether it is running locally or on DotCloud and instantiates the services for you to use accordingly.

Not anymore ... if you don't want to ;)

How?

Enters SPOT (named after the French earth observation satellite). SPOT knows wether your code is running locally or on DotCloud, exposes each service parameters under the name you gave it in your build file.

For example if your build file contains a python service named www and a redis_ service named cache:

www:
    type: python
cache:
    type: redis

Then when you instantiate a spot.Dotcloud() object it will expose the cache services:

>>> import spot
>>> dotcloud = spot.Dotcloud()
>>> isinstance(dotcloud.cache, spot.Redis)
True

When running locally:

>>> dotcloud.cache.host
u'localhost'

But on DotCloud:

>>> dotcloud.cache.host
u'SOMETHING.dotcloud.com'

If you have installed the packages allowing Python to handle the services e.g. redis_ (and hiredis), the spot.Dotcloud instance also expose a connection to the server you can use out of the box:

>>> type(dotcloud.cache.server)
<class 'redis.client.StrictRedis'>

Next?

At this stage only the Redis_ and MongoDB services are managed. I will add more as I require them ... or you can contribute and submit new services definition via pull request ;)