set holland backup to minute based on container IP

- modulo 60 the container ip after casting it to an int - use this as the minute for the backup time
- set backup hour to 23
- set backup days to all
- add full path of holland binary
no need to include individual container IPs when including container cidr
Merge pull request #322 from mancdaz/master-142

no need to include individual container IPs when including container cidr in haproxy memcached whitelist
Merge pull request #321 from mancdaz/master-136

set holland backup to minute based on container IP
Templated out iscsi options in the cinder.conf

This change adds templated options for iscsi within cinder. This
change was to allow use to set sensible options within the cinder.conf
file that may be required in several different senarios.
Merge pull request #329 from cloudnull/cinder-updates

Templated out iscsi options in the cinder.conf
further refined the dynamic inventory script for multiple configs
update git_install_branches to point to head of stable/juno
Merge pull request #332 from mancdaz/master-juno-stable

update git_install_branches to point to head of stable/juno
Add check to see if a user config was loaded.

Explicitly exit if no user config is laaded.
Avoids confusing "MD5" hash of "None" error message.
Merge pull request #2 from andymcc/cloundnull-inv

Add check to see if a user config was loaded.
Merge pull request #331 from cloudnull/dynamic-inventory-confd

Dynamic inventory script updates
Change cirros image_url

Currently we pull down a source tarball for cirros, which obviously
isn't bootable.  This change points to the .img file instead.
Install lxml dependency

Running tempest smoke tests fail on all the XML tests due to lxml not
being installed in keystone containers.  The lxml package is no longer
a hard dependency since lxml is only required when using the (optional)
XmlBodyMiddleware middleware.

Ideally we'd want to remove XmlBodyMiddleware middleware since it's
being removed in Kilo, however I have not seen an option to disable all
the XML tests in tempest.
Merge pull request #334 from mattt416/fix_tempest_glance_image

Change cirros image_url
Added my inital work on ansible-swift.

I have tried to put all the files in where I think they will go:

  swift_setup.yml -> etc/rpc_deploy/
  roles swift_{common,account,container,object} -> rpc_deployment/roles
  swift_intentory -> scripts/swift_inventory.py

To generate a hosts file run:

  python swift_inventory.py -s etc/rpc_deploy/swift_setup.yml -d

  NOTE: -d is dry-run so prints to screen, it will actually place
        it whereever you specify it in the swift_setup.yml file.
Debugging the generation of storage policy definitions.

I have been debugging the hosts file being generated, doing so I found a
few bugs in the swift_inventory script.
Swift_inventory script now concats policy data

The swift_inventory script now combines the required variables to
generate the storage policy definitions into a concatenated string
and stored with the host.

  extra_data=<name>:<index>:<depricated>:<type>

E.G:

  extra_data=gold:0:True:Replication

If the host is a member of more then one storage group then these
entries are concatenated together with a ';':

  extra_data=<name1>:<index1>:..:<type>;<name2>:<index2>....

The swift.conf file template now takes this into account and
is generated correctly.
Place swift.conf

The swift_common role now places the swift.conf file in /etc/swfit.
The file is generated from a template.
First version of a ring builder

This change actually does quite a bit.

  - Removes duplication in the swift yaml file, meaning you can now add
    hosts directly to a global hosts section, which then can be refenced by
    name. You can still define hosts in the other hosts areas, but this stops
    duplication.

  - Adds a bunch of extra settings to the swift yaml file to support ring
    building, including:
      * min_part_hours
      * port (for account, container and object (storage policies))
      * drives
      * repl_ip (specify a replication IP to use, if it differes from main)
      * repl_port (a different replication port.. as above)

  - Passing the server ports and the correct drives value through to templates

  - scripts/swift_rings.py:
      This script reads in the swift.yaml file and generates all required
      rings. I have gone this approach as this why there is no annoying
      ansible getting in the way. The next step is to write a rings playbook
      that runs the swift_rings.py script locally and then copies all the rings
      to every memeber of the swfit group.

      Alternativelty we could pass the script and swift yaml to each node (via
      swfit_common role) and have a simple playbook that runs the script on
      each node to build the rings.

One benefit of swfit_rings that reads in the yaml, is that we could actaully
simplfy what actaully needs to be translated into an ansible inventory. (no
ring specific settings).