burnin: Test cross-container object move (pithos)

Refs #108
pithos: Fix copy/move snapshots

The available flag denotes that the object's mapfile exists on the storage
backend.
This flag should be kept during copy/move operations.
This commit handles this issue.
pithos: Provide tests for copy/move snapshots
cyclades: Store image version additional to UUID

Store the image's version together with the image's UUID, in order to
track the exact image (Pithos file) that has been used for a server or
volume. This is required because Pithos files retain their UUID when the
file's data or metadata are updated. The (uuid, version) tuple is
required in order to fully determine the file that has been used.
cyclades: Add Image DB model

Create a new model, named 'Image', to store basic information about
images that have been used to create servers or volumes. The images are
stored in Cyclades (in addition to Pithos where they exist) in order to
preserve information about images that may be updated or deleted from
Pithos.
cyclades: Use Image model to generate image stats

Use the newly introduced Image model in order to generate statistics
about the images that are used for servers.
cyclades: Store image info for new servers

Store the information about the image that has been used to create a
server. Also, update image mocks to provide all the required fields.
Merge pull request #117 from cstavr/feature-image-info

Store image information in Cyclades DB

Update Cyclades in order to store information about images that have
been used to create servers. Such information is needed to:
  * Record information about images that have been used to create servers
    that are retained beyond the deletion of the images from Pithos.
  * Make queries about statistics faster.
deploy: Faster template generation

Instead of massedit.edit_files() which takes a file pattern and
walks the given directory (/tmp in our case) to find matching files,
use editor.edit_file() which takes only the file to be customized as
argument.

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
cyclades: Fix backend logic wrt ConnectNetwork

Since Ganeti 2.10, networks are connected to nodegroups with mode,
link and vlan info.

As a result group_list in GetNetwork() response include four fields
per group and not three. Fix reconciliation to be aware of it.

Additionally the OpNetworkConnect() takes an extra parameter;
network_vlan. This currently is not optional. Therefore let
ConnectNetwork() RAPI method pass an empty string as vlan info.

This will change as soon as synnefo will support private networks on
top of openvswitch.

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
eventd: Remove forgotten debug statement
cyclades: Fix type error
cyclades: Fix volume type column in volume-list

Display only the ID of the volume type, and not the object's
representation.
cyclades: Accept snf-vol-$id to snf-manage cmds

Make management commands accept as argument the volume's prefixed ID.
cyclades: Display user's email in volume commands
cyclades: Fix bug in snapshot status

Because of a typo, snf-dispatcher always set the snapshot's status to
'AVAILABLE'. This commit fixes this issue.
cyclades: Fix issues in snapshot commands
plankton: Delay creation of Pithos backend pool

Delay the creation of the Pithos backend pool until an object from the
pool is actually needed. Until now, the pool was created when the
'synnefo.plankton.backend' module was imported. This caused an issue
to 'snf-dispatcher' which performs a 'fork()' in order to become a
daemon and 'objpool' which checks that the pid of the process who
creates and uses the pool is the same.
cyclades: Add setting for maximum volume size

Add 'CYCLADES_VOLUME_MAX_SIZE' setting to denote the maximum allowed
size for a Cyclades volume.
cyclades: Add option to disable snapshots API

Add 'CYCLADES_SNAPSHOTS_ENABLED' setting to denote whether Cyclades
will expose the '/snapshots' API URL of the 'volume' app.
In case this setting is set to False:
* we disable the '/snapshots' API URL
* return 501 if the 'source_snapshot_id' attribute is used in a request
  for a new volume
* Remove 'snapshot' from the supported sources of a new volume in the
  create server request

Note: Creation and handling of snapshots can still be performed via
'snf-manage' commands. The setting affects only the exposed API.