pithos: Reduce astakosclient instances

Use backend astakosclient instance to query the account quotas.
Merge branch 'feature-pithos-astakosclient-instances' into develop
pithos: Simplify code for applying listing limits

Use a decorator instead
pithos: Further code refactoring in _list_objects()
Merge branch 'feature-pithos-list-limits' into develop
cyclades: Fix typo in vm state
deploy: Factor out utils from fabfile

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Huuuuge snf-deploy refactor

Introduce the concept of Roles and Components.

Roles are ns, mq, db, nfs, astakos, cyclades, pithos, cms, stats,
ganeti, master, and client.

Each role consists of various SynnefoComponents which  should define:

* commands to check installation prerequisites (check)
* packages to install (REQUIRED_PACKAGES)
* commands to prepare installation (prepare)
* configuration templates (configure)
* reload commands (restart)
* initialization commands (initialize)
* test commands (test)

SynnefoComponents are unaware of fabric environment. They
get initialized with a Host object and a Env object.

Host includes all the necessary info for the installation node
(ip, hostname, alias, fqdn..) and Env includes all the configuration info
(created after parsing config files)

After defining components, fabfile should just do the following:

@roles("somerole")
def setup_somerole_role():
  SetupSynnefoRole("SomeRole")

In case you want to run a component's specific method just run

RunComponentMethod(SomeComponent, "method_name", *args, **kwargs)

During a role setup you might have to retrieve info from other
components already installed (user token, backend id, etc.) Use
'execute' fabric method and fill env object with required info.

Make deployment re-entrant.

Check if specific component is already installed and if yes then skip it.

Currently this is done on node/component level. The component's
status on a target node is either ok or nothing.

Introduce conflicting components.

Two components might not be able/or should not coexist in the same
node, e.g. NFS and Mount. These conflicts are defined in CONFLICTS
dict in roles.py.

Sync ci and deploy conf files.

ci: Change node's password in nodes.conf

Always enable CSRF. Install CMS only if it resides on different
node than pithos, cyclades and astakos.

Add copyright headers.

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Update docs after snf-deploy refactor

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
pep8 fixes related to snf-deploy refactor

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
More pep8 fixes related to snf-deploy

Those fixes concern errors that are introduced in latest
pep8 version (and not the wheezy's one).

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
snf-ci: Alter AstakosClient to CachedAstakosClient

Kamaki changed its API and now AstakosClient has been renamed to
CachedAstakosClient whereas the AstakosClient class points to the
astakosclient package.
Fix add_rapi_user method of Master component

..which broke after applying pep8 fixes.

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Merge branch 'release-0.15' into develop

Conflicts:
	ci/utils.py
	version
deploy: Fix vncauthproxy

Add users files.

TODO: use vncauthproxy-passwd with correct conf settings

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Add vnc password setting in ci conf files

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
deploy: minor fix for vncauthproxy

/var/lib/vncauthproxy dir is created by package itself.
Thus mkdir -p to avoid error.

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
pithos: Reduce database interactions for access control.

Each frontend method calls several backend methods.
Each backend method checks whether the user has permission to access the
specific path.
This results to several identical queries to the database.
This commit introduces the following optimization:
We keep 2 dictionaries:
* one for the allowed paths for read per user and
* another for the allowed paths for write per user
The lifespan of these dictionaries is a database transaction.
The dictionaries are updated appropriately after each successful query for
permissions and after actions that affect permissions
(delete & update object permissions).
Especially in the latter case the dictionaries are reset because it was
estimated that this is less expensive than identifying the affected paths.
Merge branch 'feature-pithos-listing-performance' into develop
snf-deploy: Stamp pithos most recent database migration

This is necessary so that future migrations know where to start upgrading.