NetApp direct to filer drivers for iscsi and nfs.

The drivers are designed to work with 7 mode and cluster storage systems.
The drivers are designed to communicate with the NetApp storage controllers
directly without requiring any intermediate management softwares in place using
the NetApp api. Hence these represent the direct to filer versions of NetApp drivers.
This also contains conventional nfs driver for cluster systems which requires
NetApp management software as middle layer. Implementation for cloning support
and basic volume type scheduler support in driver added. All NetApp drivers
shifted into separate NetApp package. NetApp api refactored into a separate file
other than drivers.

blueprint netapp-direct-volume-drivers
blueprint netapp-cluster-nfs-driver

Change-Id: If3f5389d1f98eba899c4928a8ae1c1d3430bd847
Relax various version constraints.

The current 3rd-party module requirements for cinder are still from the
nova git import. Usually, having an upper bound for requirements makes
only sense where API-incompatible changes are expected (like WebOb). For
the others it is better the only require a minimum version because
usually distributions differ on the shipped versions of these Python
modules. For instance, openSUSE has newer versions for almost all of
those and running the testsuite there works flawlessly.

Change-Id: I4614a2ea87084f927a557b9fb85dcd10ae9dfeff
Snapshot support for XenAPINFS

Related to blueprint xenapinfs-snapshots

Add support for snapshots, by implementing it with deep copies. Each
snapshot is a copy of the volume. Snapshot object has a new,
provider_location key, to store volume parameters.

Change-Id: Iea06246319ce82d5fcfe417419156ec83ef0a895
Move iscsi flags back to driver.py

During the lvm class create the iscsi flags were moved.
This is NOT correct, the flags belong with the ISCSI class
and should have been left in driver.py where ISCSIDriver
is defined.

Moving these breaks the inheritance structure for all those that
inherit from ISCSIDriver.

Change-Id: I1fda9158d9f8f01005875b87265d2dd87bcbc67f
Merge "Relax various version constraints."
Merge "Move iscsi flags back to driver.py"
New cinder.conf.sample format

Based on recent changes in Nova, this provides a cleaner/simpler looking config file:

- Move help message before each option, rather than after.
- Print types like "string value" instead of "(StrOpt)"
- Use fewer pound symbols

Switch to a new format that looks much more like a normal config file.

Change-Id: I69f9b7b84215a2a69bdb0c4af9d5e1cb1e105a45
Check for configured IPV6 before running tests

Some folks don't/can't have IPV6 configured on their systems,
the new IPV6 tests in test_wsgi require that you do, so
let's add a check and skip if there are no IPV6 configured interfaces.

Change-Id: I7cbdcbc3ad4cc4690634f6464d6e28d9f4dfd791
Merge "Check for configured IPV6 before running tests"
Add LUN# to provider_location in Nexenta driver.

Fixes bug 1088411. Lets Nexenta driver work with any iscsi_helper.

Change-Id: Ib70ed94fa472c7281de077f0f36575216741678f
Merge "Snapshot support for XenAPINFS"
Fix sheepdog volume creation

SheepdogDriver uses an undefined method _sizestr.  This patch removes
it.

Change-Id: Id157df5c4d69148257060926dbac7b5bc2804ee0
Fixes: bug #1100655.
Add capability to update volume metadata.

This addresses some cleanup and bugs with volume metadata updates
on the cinder side.  Mostly this implements v1/volume_metadata api
and adds things like propery checks to cinder.volume.api.update_volume_meta.

NOTE: This is only for api V1, a seperate patch will be provided for
V2 once this lands.

The remainder of the bp will be implemented in a cinderclient patch to follow.
Implement cinder side of blueprint update-vol-metadata

Also fixes bug: 1096018

Change-Id: Ie11931f657d3dcd69680fe5fcae435ff89549d97
Clean up IPV6 config checks in test_wsgi.

Two tests in test_wsgi require a configured IPV6 interface.
We added a check/skip for this but it wasn't very graceful and
didn't work on OS-X or platforms other than Linux.

This patch implements the checks a bit cleaner using the skip_if
decorator, and combines the linux/path check and configured interface
check.

Change-Id: I950fdfeb8135912faf5dcaabe52fb87abd73dd1e
Fix error for extra specs update with empty body.

Fixes: bug #1090320
Change-Id: Ia2792d477f7670ecb2eb0c9c10dcbf1cf5b2389e
ensure zeros are written out when clearing volumes

Note O_DIRECT is _not_ used when copying from /dev/zero
and there are issues with enabling that (see 444cd542).
Therefore we arrange to have dd issue an fdatasync()
to ensure the data is persisted, lest it be discarded
from the write cache when the device is unprovisioned.

* cinder/volume/drivers/lvm.py (_copy_volume): Add 'conv=fdatasync'
to the dd option list if O_DIRECT isn't used when clearing
(which it won't as descrived above).

Fixes bug: 1100363
Change-Id: I76789557754ebaeb6d52bb34548a2ef17808fbf6
Improve error message for missing NFS share config

If FLAGS.nfs_share_config is not defined, the error will reference
the name of the config option to set.

If the nfs_share_config path doesn't exist, the error will reference
the path that was configured.

This will hopefully simplify troubleshooting of NFS configuration.

Change-Id: Ica6a60a63330554dc880f36962f3a081926ce5cf
Fix NFS volume creation

NfsDriver uses an undefined method _sizestr.  This patch removes it.

Change-Id: I7cd4d04f404a00c22021f3971eb9f9593c657896
Clean up QTree when deleting volume on NetApp storage box.

Previously, deleting a Cinder volume would leave a QTree on NetApp
storage box. This commit fixes the issue.

Fixes bug 1099414

Change-Id: I95f1d6b802f4abfad421d34f1c000b75fb72c41e
Merge "Add capability to update volume metadata."