]> review.fuel-infra Code Review - openstack-build/cinder-build.git/log
openstack-build/cinder-build.git
11 years agoClean up IPV6 config checks in test_wsgi.
john-griffith [Fri, 18 Jan 2013 17:07:10 +0000 (10:07 -0700)]
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

11 years agoMerge "Snapshot support for XenAPINFS"
Jenkins [Fri, 18 Jan 2013 17:35:35 +0000 (17:35 +0000)]
Merge "Snapshot support for XenAPINFS"

11 years agoMerge "Check for configured IPV6 before running tests"
Jenkins [Fri, 18 Jan 2013 01:11:37 +0000 (01:11 +0000)]
Merge "Check for configured IPV6 before running tests"

11 years agoCheck for configured IPV6 before running tests
John Griffith [Thu, 17 Jan 2013 23:30:32 +0000 (16:30 -0700)]
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

11 years agoNew cinder.conf.sample format
Eric Harney [Thu, 17 Jan 2013 21:21:54 +0000 (16:21 -0500)]
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

11 years agoMerge "Move iscsi flags back to driver.py"
Jenkins [Thu, 17 Jan 2013 18:49:10 +0000 (18:49 +0000)]
Merge "Move iscsi flags back to driver.py"

11 years agoMerge "Relax various version constraints."
Jenkins [Thu, 17 Jan 2013 15:36:54 +0000 (15:36 +0000)]
Merge "Relax various version constraints."

11 years agoMove iscsi flags back to driver.py
john-griffith [Thu, 17 Jan 2013 01:49:07 +0000 (18:49 -0700)]
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

11 years agoSnapshot support for XenAPINFS
Mate Lakat [Mon, 31 Dec 2012 15:52:18 +0000 (15:52 +0000)]
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

11 years agoMerge "support a configurable volume wiping method"
Jenkins [Wed, 16 Jan 2013 06:34:12 +0000 (06:34 +0000)]
Merge "support a configurable volume wiping method"

11 years agoMerge "Update SolidFire Volume driver"
Jenkins [Tue, 15 Jan 2013 16:58:38 +0000 (16:58 +0000)]
Merge "Update SolidFire Volume driver"

11 years agoMerge "Support for SSL in wsgi.Server"
Jenkins [Tue, 15 Jan 2013 16:53:42 +0000 (16:53 +0000)]
Merge "Support for SSL in wsgi.Server"

11 years agoMerge "Enhance wsgi to listen on ipv6 address"
Jenkins [Tue, 15 Jan 2013 16:50:29 +0000 (16:50 +0000)]
Merge "Enhance wsgi to listen on ipv6 address"

11 years agosupport a configurable volume wiping method
Pádraig Brady [Thu, 6 Sep 2012 15:36:50 +0000 (16:36 +0100)]
support a configurable volume wiping method

Add a clear_volume() method that is called from delete_method().
This is only implemented at present for the base LVM driver.
This new clear_volume() method now supports these config vars:

  volume_clear = none, zero, shred
  volume_clear_size = size_in_MiB

'zero' is the default method and unchanged from previously.
'none' is used if security isn't a concern, or there is
  independent volume scrubbing.
'shred' is for more security conscious situations where
an overwrite count is required. Currently this defaults to 3 passes.

size_in_MiB can be used to limit the cleared area to the first
part of the volume, which can greatly speed up the operation,
and can be useful with encrypted volumes for example where
overwritting the encryption keys at the start is sufficient.

Fixes bug: 1022511
Change-Id: I7312678ff5d66156578501483a1b74e2a69e19a0

11 years agoRelax various version constraints.
Sascha Peilicke [Tue, 15 Jan 2013 13:53:20 +0000 (14:53 +0100)]
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

11 years agoMerge "Upgrade WebOb to 1.2.3"
Jenkins [Tue, 15 Jan 2013 07:02:25 +0000 (07:02 +0000)]
Merge "Upgrade WebOb to 1.2.3"

11 years agoSupport for SSL in wsgi.Server
Davanum Srinivas [Sat, 12 Jan 2013 21:16:19 +0000 (16:16 -0500)]
Support for SSL in wsgi.Server

SSL are entirely optional. Support for SSL as well using code from glance. We
have some new options for configuring the SSL support. There are tests for
accessing a sample app w/o ipv6 or ssl, one with just ssl and one with
ipv6 and ssl

DocImpact

Change-Id: I9aa1db6c9563868bf68ced7c4311daa870216ced

11 years agoEnhance wsgi to listen on ipv6 address
Davanum Srinivas [Thu, 10 Jan 2013 16:26:03 +0000 (11:26 -0500)]
Enhance wsgi to listen on ipv6 address

Check if the hostname is ipv6 and set the family appropriately.
Picking up the snippet from glance.
Picked up some code from nova as well to get the test case running
properly

Change-Id: Ic79fcda2371f0907d75a142ea18b26b3e8d92e51

11 years agoFactor out LVM code.
Avishay Traeger [Wed, 9 Jan 2013 07:31:19 +0000 (09:31 +0200)]
Factor out LVM code.

Currently volume drivers inherit from VolumeDriver and ISCSIDriver,
which contain LVM-specific code. The LVM-specific functions are
generally overridden. The problem is that there is no place for
generic code for all drivers to inherit, which the LVM driver can
override. This patch basically makes the VolumeDriver and ISCSIDriver
classes mostly empty and moves the LVM-specific code to lvm.py. Also,
moved the global _iscsi_location() and _iscsi_authentication()
functions into the new LVMISCSIDriver class since nobody else used
them.

Change-Id: I067c975de97913bdc39086ad203cddef0c393c7a
Implements: blueprint factor-out-lvm-code

11 years agoImplement filter scheduler
Zhiteng Huang [Fri, 5 Oct 2012 16:08:09 +0000 (00:08 +0800)]
Implement filter scheduler

In order to do more sophisticated scheduling (e.g. schedule based on volume
type), filter scheduler is introduced. Several changes are made to make this
possible, some of them are similar to the counterpart in Nova:

- add HostState class to host_manager in order to store volume capabilities
- implement get_volume_stats() method of iSCSIDriver as an example to
demonstrate how volume backend driver reports capabilities as well as status
- add scheduler_options.py and 'scheduler_json_config_location' flag to be
allow loading json configuration file for scheduler at run time
- port common filters/weights from oslo
- add capacity weigher (scheduler/weights/capacity.py) for picking up
target volume backend by weighing free capacity of the host. The default
behavior is to spread volumes across hosts; by changing the
'capacity_weight_multiplier' to negative number, volume placing behavior will
become stacking.
- add capacity filter which filters those hosts have insufficient storage space
to serve the request.
- add 'reserved_percentage' config option to indicate how much space is
reserved. Capacity reservation is needed when volume resize is enabled.
- add 'publish_service_capabilities()' method to volume RPC API to allow
scheduler to have volume service report capabilities. This bumps volume RPC
API to version 1.2
- remove 'volume_force_update_capabilities' config option, volume status will be
report to scheduler in every checking.

The implication of this change to storage/backend driver developer:
- implementation of get_volume_stats() of the driver is now a *MUST*, filter
scheduler heavily relies on the status/capabilities reported by backend driver
to makeplacement decision.  To ensure Cinder works seamlessly on the storage
system, driver should at least report following capabilities/status:
----------------------+---------------------------+---------------------------
  Capability/Status   |      Description          |         Example
----------------------+---------------------------+---------------------------
 'volume_backend_name'| back-end name, string     | 'Example_Storage_Backend'
----------------------+---------------------------+---------------------------
  'vendor_name'       | vendor name, string       | 'OpenStackCinder'
----------------------+---------------------------+---------------------------
  'driver_version'    | version, string           |  '1.0a'
----------------------+---------------------------+---------------------------
  'storage_protocol'  | supported protocols,      | 'iSCSI', 'RBD', 'FC', 'NFS'
                      | string or list of strings | ['iSCSI', 'NFS', 'FC']
----------------------+---------------------------+---------------------------
  'total_capacity_gb' | capacity in GB, integer   |  102400
----------------------+---------------------------+---------------------------
  'free_capacity_gb'  | available capacity in GB, |  1000
                      | integer                   |
----------------------+---------------------------+---------------------------
'reserved_percentage' | reserved space in         |  0, 10
                      | percentage, integer       |
----------------------+---------------------------+---------------------------

The implication of this change to Cinder administrator:
- the default setting for filter scheduler should work well with the benefits
of:
  * being able to fully utilize capacity of backends (driver now has to report
  actul total space and space utilization and scheduler uses these info) not
  limited by the 'max_gigabytes' config option any more;
  * being able to choose placement policy between spreading & stacking for
  volume creation (by modifying the 'capacity_weight_multiplier' in
  CapacityWeigher)
- with filter scheduler, Cinder is now able to utilize the advanced features/
capabilities provided by different storage back-ends via: defining different
volume types with proper extra_specs. Volume types can be considered as sets
of back-end capabilities requirement.
 For example, a volume type which has 'storage_protocol':'FC' key/value pair
definition in its extra_spec can only be served by those back-ends who report
they support FiberChannel protocol. Another example is volume type has 'QoS'
requirement can only be served by back-ends support QoS.

Note/TODO:
* Currently scheduler makes its decision based on the status and capabilities
information reported by volume nodes, and these information is stored in memory
of scheduler process. More sophisticated way may be add on table in DB to
record status/capabilities of all volume nodes, like Nova does for compute nodes.

implement bp volume-type-scheduler

DocImpact

Change-Id: I296b3727db8de0d4cf085fac602d122a7b474842

11 years agoMerge "Revert "Implement filter scheduler""
Jenkins [Thu, 10 Jan 2013 00:35:09 +0000 (00:35 +0000)]
Merge "Revert "Implement filter scheduler""

11 years agoRevert "Implement filter scheduler"
John Griffith [Wed, 9 Jan 2013 23:55:26 +0000 (23:55 +0000)]
Revert "Implement filter scheduler"

This reverts commit 8dd2140c4c03582965d74232c7b61aef34e43661

11 years agoUpdate SolidFire Volume driver
john-griffith [Mon, 31 Dec 2012 23:16:19 +0000 (16:16 -0700)]
Update SolidFire Volume driver

Adds support for clone volumes and set QoS use volume type / extra_specs.
Also includes some minor cleanup and some hardening for known pre-release
XDB issue in SolidFire Cluster API.

Change-Id: I4b39b301b9a1f9b859a694decfee48c74d22a74a

11 years agoMerge "Implement filter scheduler"
Jenkins [Wed, 9 Jan 2013 09:59:11 +0000 (09:59 +0000)]
Merge "Implement filter scheduler"

11 years agoMerge "Provide HP 3PAR array iSCSI driver"
Jenkins [Wed, 9 Jan 2013 07:28:18 +0000 (07:28 +0000)]
Merge "Provide HP 3PAR array iSCSI driver"

11 years agoMerge "Use tempdir for lock_path in tests."
Jenkins [Wed, 9 Jan 2013 04:02:39 +0000 (04:02 +0000)]
Merge "Use tempdir for lock_path in tests."

11 years agoMerge "Enable cinder exception format checking in tests."
Jenkins [Wed, 9 Jan 2013 02:19:50 +0000 (02:19 +0000)]
Merge "Enable cinder exception format checking in tests."

11 years agoMerge "Update exceptions to pass correct kwargs."
Jenkins [Wed, 9 Jan 2013 02:12:36 +0000 (02:12 +0000)]
Merge "Update exceptions to pass correct kwargs."

11 years agoMerge "Add option to make exception format errors fatal."
Jenkins [Wed, 9 Jan 2013 02:12:33 +0000 (02:12 +0000)]
Merge "Add option to make exception format errors fatal."

11 years agoProvide HP 3PAR array iSCSI driver
Walter A. Boring IV [Tue, 18 Dec 2012 22:16:33 +0000 (14:16 -0800)]
Provide HP 3PAR array iSCSI driver

implements blueprint hp3par-volume-driver

We have the driver broken into 2 files:
hp_3par_common.py and
hp_3par_iscsi.py

The reason we do this is because we have a fibre channel driver
that will be submitted shortly after this is committed.   The
fibre channel driver and the iscsi driver share a lot of the same
code that talks to the 3PAR array for provisioning.  So,
it made sense not to have duplicate code.  The fibre channel driver
will be dependent on the fibre channel support I am actively working
on for nova/cinder grizzly release.

The driver uses a 2 mechanisms to talk to the 3PAR array:
1) a python REST client (hp3parclient) that lives in the pypi
   repository here:
   http://pypi.python.org/pypi/hp3parclient

2) SSH.  We had to pull in some of the ssh code from the base san
   driver to help fix an issue with executing commands on the 3PAR
   array.  The 3PAR has the ability to turn on CSV output for command
   results, which makes this easier to parse.  Unfortunately, there
   is no way to turn CSV mode on permanently for all ssh requests.
   So, we have to turn on the CSV output for every single ssh command
   issued.  Since we use ssh as well, we require the san_* options
   to be set.

We use a dual mechianism because the REST API that ships with the 3.1.2
firmware doesn't support all of the capabilities a cinder driver needs
to export volumes.

When a newer version of the firmware comes out that supports host
management on the 3PAR array, then we will get rid of the SSH code.

Change-Id: I9826ba1a36e27a9be05457ee9236a491dbfd0713

11 years agoFix CinderClient exception name in EMCISCSIDriver.
Dan Prince [Tue, 8 Jan 2013 19:00:09 +0000 (14:00 -0500)]
Fix CinderClient exception name in EMCISCSIDriver.

Change NovaException to CinderException in the emc driver.

Change-Id: Id84ca2a354afc6a7b795aef779a9fdd2567ce0d6

11 years agoEnable cinder exception format checking in tests.
Dan Prince [Tue, 8 Jan 2013 18:24:49 +0000 (13:24 -0500)]
Enable cinder exception format checking in tests.

Updates the Cinder test runner so that it enables
'fatal_exception_format_errors' for testing.

Includes a bunch of fixes to test exceptions as well so they
will continue to pass.

Change-Id: Idd30a810fb81e8e14490644779c3e03b6af25ff3

11 years agoUpdate exceptions to pass correct kwargs.
Dan Prince [Tue, 8 Jan 2013 18:23:15 +0000 (13:23 -0500)]
Update exceptions to pass correct kwargs.

Updates a variety of Cinder exceptions so that they pass the correct
kwargs for proper exception message formatting. Previously
these exceptions would work but have incorrect error messages
because of how CinderException handled exception formatting errors.

Change-Id: Id1d15b112cad46a698227fa172d81a9ab586e66e

11 years agoAdd option to make exception format errors fatal.
Dan Prince [Tue, 8 Jan 2013 18:20:57 +0000 (13:20 -0500)]
Add option to make exception format errors fatal.

Adds a new fatal_exception_format_errors config option which
defaults to False. This option is use to control how the base
CinderException class handles errors which can occur when it
formats error messages.

The motivation for this change is to be able to enable exception
format checking in our tests by setting fatal_exception_format_errors=True.

Change-Id: I2df952558d3f30a557cbb094f8bddcc37af9b5aa

11 years agoImplement filter scheduler
Zhiteng Huang [Fri, 5 Oct 2012 16:08:09 +0000 (00:08 +0800)]
Implement filter scheduler

In order to do more sophisticated scheduling (e.g. schedule based on volume
type), filter scheduler is introduced. Several changes are made to make this
possible, some of them are similar to the counterpart in Nova:

- add HostState class to host_manager in order to store volume capabilities
- implement get_volume_stats() method of iSCSIDriver as an example to
demonstrate how volume backend driver reports capabilities as well as status
- add scheduler_options.py and 'scheduler_json_config_location' flag to be
allow loading json configuration file for scheduler at run time
- port common filters/weights from oslo
- add capacity weigher (scheduler/weights/capacity.py) for picking up
target volume backend by weighing free capacity of the host. The default
behavior is to spread volumes across hosts; by changing the
'capacity_weight_multiplier' to negative number, volume placing behavior will
become stacking.
- add capacity filter which filters those hosts have insufficient storage space
to serve the request.
- add 'reserved_percentage' config option to indicate how much space is
reserved. Capacity reservation is needed when volume resize is enabled.
- change default scheduler to 'filter.FilterScheduler'.
- add 'publish_service_capabilities()' method to volume RPC API to allow
scheduler to have volume service report capabilities. This bumps volume RPC
API to version 1.2
- remove 'volume_force_update_capabilities' config option, volume status will be
report to scheduler in every checking.

The implication of this change to storage/backend driver developer:
- implementation of get_volume_stats() of the driver is now a *MUST*, filter
scheduler heavily relies on the status/capabilities reported by backend driver
to makeplacement decision.  To ensure Cinder works seamlessly on the storage
system, driver should at least report following capabilities/status:
----------------------+---------------------------+---------------------------
  Capability/Status   |      Description          |         Example
----------------------+---------------------------+---------------------------
 'volume_backend_name'| back-end name, string     | 'Example_Storage_Backend'
----------------------+---------------------------+---------------------------
  'vendor_name'       | vendor name, string       | 'OpenStackCinder'
----------------------+---------------------------+---------------------------
  'driver_version'    | version, string           |  '1.0a'
----------------------+---------------------------+---------------------------
  'storage_protocol'  | supported protocols,      | 'iSCSI', 'RBD', 'FC', 'NFS'
                      | string or list of strings | ['iSCSI', 'NFS', 'FC']
----------------------+---------------------------+---------------------------
  'total_capacity_gb' | capacity in GB, integer   |  102400
----------------------+---------------------------+---------------------------
  'free_capacity_gb'  | available capacity in GB, |  1000
                      | integer                   |
----------------------+---------------------------+---------------------------
'reserved_percentage' | reserved space in         |  0, 10
                      | percentage, integer       |
----------------------+---------------------------+---------------------------

The implication of this change to Cinder administrator:
- the default setting for filter scheduler should work well with the benefits
of:
  * being able to fully utilize capacity of backends (driver now has to report
  actul total space and space utilization and scheduler uses these info) not
  limited by the 'max_gigabytes' config option any more;
  * being able to choose placement policy between spreading & stacking for
  volume creation (by modifying the 'capacity_weight_multiplier' in
  CapacityWeigher)
- with filter scheduler, Cinder is now able to utilize the advanced features/
capabilities provided by different storage back-ends via: defining different
volume types with proper extra_specs. Volume types can be considered as sets
of back-end capabilities requirement.
 For example, a volume type which has 'storage_protocol':'FC' key/value pair
definition in its extra_spec can only be served by those back-ends who report
they support FiberChannel protocol. Another example is volume type has 'QoS'
requirement can only be served by back-ends support QoS.

Note/TODO:
* Currently scheduler makes its decision based on the status and capabilities
information reported by volume nodes, and these information is stored in memory
of scheduler process. More sophisticated way may be add on table in DB to
record status/capabilities of all volume nodes, like Nova does for compute nodes.

implement bp volume-type-scheduler

DocImpact

Change-Id: I8b5305bce3b24bcc85365037356a8f36d0107133

11 years agoMerge "Implement ability to Clone volumes in Cinder."
Jenkins [Tue, 8 Jan 2013 04:10:32 +0000 (04:10 +0000)]
Merge "Implement ability to Clone volumes in Cinder."

11 years agoMerge "Add service mgmt extension."
Jenkins [Mon, 7 Jan 2013 18:22:05 +0000 (18:22 +0000)]
Merge "Add service mgmt extension."

11 years agoMerge "Make WebOb version specification more flexible"
Jenkins [Mon, 7 Jan 2013 17:57:24 +0000 (17:57 +0000)]
Merge "Make WebOb version specification more flexible"

11 years agoUse tempdir for lock_path in tests.
john-griffith [Mon, 7 Jan 2013 17:08:16 +0000 (10:08 -0700)]
Use tempdir for lock_path in tests.

Commit: 2331d3336a6adf4fc13a3b187e91a5d1b1f7c723
introduced use of lockutils but wasn't setting a lock_path, in the tests.
As a result we were polluting cinder/openstack/ with cinder-xxxx lockfiles.

This patch adds a tempfile and cleanup to the test so we don't leave any
junk behind.

Change-Id: Idd9fee928ff0fcf3f8d1c30ee88c5306b88e290c

11 years agoUpgrade WebOb to 1.2.3
Doug Hellmann [Thu, 3 Jan 2013 16:09:36 +0000 (11:09 -0500)]
Upgrade WebOb to 1.2.3

The version of WebOb being used in OpenStack was more than
1 year old. This change updates to the latest stable release.

Upgrading WebOb resolves a version conflict between OpenStack
and Pecan, the web framework used by the Ceilometer team for
version 2 of the ceilometer API.

Refer to http://docs.webob.org/en/latest/news.html
for the list of changes between 1.0.8 and 1.2.3.

bug 1092227

Change-Id: I44fdd11acbf1d5245e0c9c5a6199fd53200928ed
Signed-off-by: Doug Hellmann <doug.hellmann@dreamhost.com>
11 years agoMake WebOb version specification more flexible
Doug Hellmann [Mon, 7 Jan 2013 15:52:39 +0000 (10:52 -0500)]
Make WebOb version specification more flexible

Change the WebOb version to >=1.0.8 as an temporary
measure to allow the actual version update to 1.2.3
to roll out across the projects one at a time without
breaking the integration tests.

Change-Id: I9969b02a6896f7b952301e40e96f0ef6df8f34c0
Signed-off-by: Doug Hellmann <doug.hellmann@dreamhost.com>
11 years agoFix cmds clearing in TargetAdminTestCase.
Eric Harney [Thu, 3 Jan 2013 20:08:53 +0000 (15:08 -0500)]
Fix cmds clearing in TargetAdminTestCase.

clear_cmds() should reference self.cmds rather than cmds.

Change-Id: I1d191aee6a713cf9f2b08c46bf47c1959235cc15

11 years agoAdd missing library
Chuck Short [Thu, 3 Jan 2013 15:50:57 +0000 (09:50 -0600)]
Add missing library

According to pyflakes:

cinder/api/common.py:246: undefined name 'minidom'
cinder/api/common.py:254: undefined name 'minidom'
cinder/api/common.py:272: undefined name 'minidom'
cinder/api/common.py:284: undefined name 'minidom'

Add from xml.dom import minidom

Change-Id: Iadb1586ac15c29bb1f2154324e529976f82c19f0
Signed-off-by: Chuck Short <chuck.short@canonical.com>
11 years agoMerge "Adding marker, pagination, sort key and sort direction to v2 api"
Jenkins [Thu, 3 Jan 2013 05:13:59 +0000 (05:13 +0000)]
Merge "Adding marker, pagination, sort key and sort direction to v2 api"

11 years agoMerge "Add pyflakes"
Jenkins [Thu, 3 Jan 2013 05:12:07 +0000 (05:12 +0000)]
Merge "Add pyflakes"

11 years agoMerge "Adds synchronization to attach volume."
Jenkins [Wed, 2 Jan 2013 23:48:08 +0000 (23:48 +0000)]
Merge "Adds synchronization to attach volume."

11 years agouse deleted = False, not 0 for update
Sean Dague [Wed, 2 Jan 2013 19:16:19 +0000 (14:16 -0500)]
use deleted = False, not 0 for update

Fixes bug #1095401

When running tempest on cinder on postgresql we get a number
of errors because this call was trying to set deleted = 0.
On mysql 0 == False, but on postgresql this is a type error.

Change-Id: Ice85550e8138e0656c93a8a800afdbc5935e4bcc

11 years agoImplement ability to Clone volumes in Cinder.
John Griffith [Wed, 12 Dec 2012 22:23:56 +0000 (15:23 -0700)]
Implement ability to Clone volumes in Cinder.

This implements the capability to create usable volume clones in Cinder,
for the LVM case we create a temporary snapshot to copy from so that
volumes can remain attached during cloning.  This works by passing
in a source-volume-id to the create command (similar to create-from-snapshot).

Currently we limit clone to the same Cinder node, and only for the base LVM driver.
All other drivers should raise NotImplemented, most inherit from the SANISCSIDriver,
so move the function there and raise until we have a general implementation
for SANISCSI based drivers.

Those drivers that inherit from ISCSI directly instead of SANISCSI,
add the function explicitly and raise NotImplementedError there as well.

Implements blueprint add-cloning-support-to-cinder

Change-Id: I72bf90baf22bec2d4806d00e2b827a594ed213f4

11 years agoAdd pyflakes
Chuck Short [Wed, 2 Jan 2013 14:43:53 +0000 (08:43 -0600)]
Add pyflakes

Add tox option to use pyflakes.

Change-Id: Ic77ec3f54cb89341d5b01feb3417e07f43d20c9c
Signed-off-by: Chuck Short <chuck.short@canonical.com>
11 years agoAdds synchronization to attach volume.
Rohit Karajgi [Fri, 28 Dec 2012 12:58:46 +0000 (04:58 -0800)]
Adds synchronization to attach volume.

This patch adds the following changes:
1. Move db update for volume status during attach to volume.manager
2. Add lock synchronization to volume attach operation
3. Related unit tests

Fixes Bug 1087253
Change-Id: I15242766bf4cfa4da67789c485fdf6886983eb45

11 years agoMerge "Add EMC Volume Driver in Cinder"
Jenkins [Fri, 28 Dec 2012 01:47:36 +0000 (01:47 +0000)]
Merge "Add EMC Volume Driver in Cinder"

11 years agoAdd EMC Volume Driver in Cinder
Xing Yang [Fri, 14 Dec 2012 05:05:14 +0000 (00:05 -0500)]
Add EMC Volume Driver in Cinder

Add support for EMC storage in the Cinder-Volume service.
This driver is based on the existing ISCSIDriver, with the ability to
create/delete and attach/detach volumes and create/delete snapshots, etc.
The Cinder Driver executes the volume operations by communicating with the
backend EMC storage. It uses a CIM client in python called PyWBEM to make
CIM operations over HTTP.
EMC CIM Object Manager (ECOM) is packaged with the SMI-S Provider. It is a
CIM server that allows CIM clients to make CIM operations over HTTP, using
SMI-S in the backend for EMC storage operations.
SMI-S Provider supports the SNIA Storage Management Initiative (SMI), an
ANSI standard for storage management. It supports VMAX/VMAXe and VNX
storage systems.

Implement bp: emc-volume-driver

Change-Id: Iafce98603d31d66a7297ef11c92d5e6ac6ba3737

11 years agoAdding marker, pagination, sort key and sort direction to v2 api
Mike Perez [Tue, 18 Dec 2012 08:42:49 +0000 (00:42 -0800)]
Adding marker, pagination, sort key and sort direction to v2 api

Taking a cue from quantum, use glance's pagination function.

bp api-pagination

Change-Id: Ida7ade8d9332c88679849f7c640651df7e855abb

11 years agoMerge "Make the NetAppISCSIDriver._is_clone_done() method able to handle empty respon...
Jenkins [Sat, 22 Dec 2012 07:00:09 +0000 (07:00 +0000)]
Merge "Make the NetAppISCSIDriver._is_clone_done() method able to handle empty responses. Add unit tests to exercise this case."

11 years agoFix typo in image_utils tempfile handling
Vishvananda Ishaya [Fri, 21 Dec 2012 17:33:22 +0000 (09:33 -0800)]
Fix typo in image_utils tempfile handling

Commit cbcd340 changed from NamedTemporaryFile to mkstemp, but
mkstemp returns a file descripter, not a file object. We therefore
need to close the fd using os.close(). This was tested using
devstack.

Change-Id: I808fa470a141e249fe30ee762ee94f47ecfd3f63

11 years agoMake the NetAppISCSIDriver._is_clone_done() method able to handle
Ben Swartzlander [Fri, 21 Dec 2012 05:24:46 +0000 (00:24 -0500)]
Make the NetAppISCSIDriver._is_clone_done() method able to handle
empty responses. Add unit tests to exercise this case.

bug 1090168

Change-Id: Ia51a73b8ebead7a0f3be9202794ca8549bdf3e5b

11 years agoMake sure we don't double remove tmp on exception
Vishvananda Ishaya [Thu, 20 Dec 2012 21:43:09 +0000 (13:43 -0800)]
Make sure we don't double remove tmp on exception

The fetch_to_raw code would fail if an exception is thrown during
fetch because it would attempt to delete the same file twice.

Fix this by using mkstemp and our wrapper which only deletes the
tmp file if it exists.

Change-Id: I7bb3171d3c7dc023fc743578c2ce6e804bbc49f5

11 years agoAdd service mgmt extension.
John Griffith [Tue, 18 Dec 2012 23:02:32 +0000 (23:02 +0000)]
Add service mgmt extension.

Add capability to list, enable and disable cinder services on a node.

Change-Id: I6728fee46d7b15a009bc6c329414ede8c01852b4

11 years agoAdded the lockutils, fileutils, gettextutils
Walter A. Boring IV [Tue, 11 Dec 2012 19:26:16 +0000 (11:26 -0800)]
Added the lockutils, fileutils, gettextutils

The 3par driver, for both iSCSI and Fibre Channel,
that I will commit soon, needs the lockutils to ensure thread safety in
each of the driver entry points.  The driver uses a single shared http
session for all of it's connections to the 3par drive array.
This is required for the driver because of the limitation on the
3par's WSAPI only supporting a very small number of open connections.

For example without this, the driver will have problems when 2 users try and
create a volume at the same time.   I've discovered this in my threaded
stress test tool.

Change-Id: Ic9d7295e7bcbf5c06086ddf5bd9b8b2fe771faa5

11 years agoMerge "Moving host admin extension with other extensions"
Jenkins [Wed, 19 Dec 2012 18:02:27 +0000 (18:02 +0000)]
Merge "Moving host admin extension with other extensions"

11 years agoMerge "Fixes a Windows volume driver bug on disk export"
Jenkins [Wed, 19 Dec 2012 18:02:06 +0000 (18:02 +0000)]
Merge "Fixes a Windows volume driver bug on disk export"

11 years agoFixes a Windows volume driver bug on disk export
Alessandro Pilotti [Wed, 12 Dec 2012 20:10:35 +0000 (22:10 +0200)]
Fixes a Windows volume driver bug on disk export

Fixes Bug #1089168

When a VHD created by Cinder using the iSCSI Target Server is deleted
manually, at the next startup the cinder-volume service terminates with an
exception.
This fix adds a check to verify if the disk exists.

Change-Id: I830cb8332dcef845591bd88cccef1e0e9781ffcc

11 years agoMerge "Add image metadata API extension"
Jenkins [Wed, 19 Dec 2012 05:00:51 +0000 (05:00 +0000)]
Merge "Add image metadata API extension"

11 years agoMoving host admin extension with other extensions
Mike Perez [Wed, 19 Dec 2012 04:26:29 +0000 (20:26 -0800)]
Moving host admin extension with other extensions

Think this was merged during the big api changes in g1. This allows the
extension to actually be enabled.

Change-Id: I07bb9646fd11368fe5ffd7f85617ecbf103dc788

11 years agoAllow the lvm backed drivers to use mirrrors
Vishvananda Ishaya [Mon, 17 Dec 2012 22:38:53 +0000 (14:38 -0800)]
Allow the lvm backed drivers to use mirrrors

Adds a new configuration option called lvm_mirrors. If this is
set to a value > 0, it will create the specified number of mirrors
when creating volumes. Note that lvm_mirrors + 2 pvs are required
in the volume group for lvm mirroring to work properly.

Change-Id: I7e28d11c48cdbb99e17b0930b720fbd805bf9931

11 years agoMerge "CHAP support for IBM Storwize/SVC driver."
Jenkins [Mon, 17 Dec 2012 04:13:51 +0000 (04:13 +0000)]
Merge "CHAP support for IBM Storwize/SVC driver."

11 years agoCHAP support for IBM Storwize/SVC driver.
Avishay Traeger [Thu, 29 Nov 2012 10:22:00 +0000 (12:22 +0200)]
CHAP support for IBM Storwize/SVC driver.

This implements support for CHAP authentication of hosts by the IBM
Storwize/SVC controller. A host entity was created on the controller for
each server that logs in with iSCSI. Now a randomly-generated CHAP
secret is added to the host entity on the controller (passed via the
controller CLI over SSH).

Implements blueprint add-chap-support-to-storwize-svc-driver

Change-Id: I60b5ddd0ea2e1ede3070779e5293820480aa0401

11 years agoMerge "Remove instance quota re-sync code"
Jenkins [Sat, 15 Dec 2012 04:29:12 +0000 (04:29 +0000)]
Merge "Remove instance quota re-sync code"

11 years agoMerge "Support glance servers over https"
Jenkins [Fri, 14 Dec 2012 16:24:39 +0000 (16:24 +0000)]
Merge "Support glance servers over https"

11 years agoRemove instance quota re-sync code
Eoghan Glynn [Fri, 14 Dec 2012 14:19:20 +0000 (14:19 +0000)]
Remove instance quota re-sync code

Obviously came in inadvertantly in a copy'n'paste from the
nova quotas logic.

Not relevant to volume quotas and would fail if ever called
(as instance_data_get_for_project is not part of the cinder
DB API).

Change-Id: Ib52b962b51003955430ad292084a3e3010736a2c

11 years agoAdd image metadata API extension
Nikola Dipanov [Fri, 7 Dec 2012 14:53:28 +0000 (15:53 +0100)]
Add image metadata API extension

This patch introduces an API extension that will expose the volume
metadata inherited from the image if the volume was created from an image.

This data will be used by Nova when booting from volume without any
image supplied.

In addition, the patch introduces a helper method on the volume.API
class for accessing the image metadata and also updates the policy.json
files to be aware of the new extension.

This patch is part of the blueprint improve-boot-from-volume

This patch also introduces DocImpact as it extends the cinder API

Change-Id: I64515cc02f8de863e65e96c66eb1fda1a1954ac7

11 years agoRaise NotImplemented for drivers that don't support images
Sam Morrison [Fri, 14 Dec 2012 02:49:46 +0000 (13:49 +1100)]
Raise NotImplemented for drivers that don't support images

Fixes bug #1090169

Raise NotImplementedError on copy_image_to_volume and
copy_volume_to_image on drivers that inherit from
driver.ISCSIDriver that don't support this feature yet.

Change-Id: I516d424a75dd21260f2ccc68467a8f6e6ac08e4d

11 years agoAdd *.swp to gitignore.
john-griffith [Thu, 13 Dec 2012 20:17:31 +0000 (13:17 -0700)]
Add *.swp to gitignore.

Add swap files and alphabetize the list.

Change-Id: Idaa9aec831740aa965a8d2d2486f4d9ffbb50746

11 years agoSupport glance servers over https
Sam Morrison [Tue, 11 Dec 2012 23:54:54 +0000 (10:54 +1100)]
Support glance servers over https

Fixes bug 1089147

Updated glance.py from nova's version to support glance over ssl
eg. glance_api_servers=https://glance.mydomain:9292

New Flag: glance_api_insecure
Set to True to disable certificate checking

Change-Id: I53e62900265fea2de9b0ec20bbff0c40f1b14c91

11 years agoMerge "Changing display_name to name in v2 api"
Jenkins [Wed, 12 Dec 2012 18:17:30 +0000 (18:17 +0000)]
Merge "Changing display_name to name in v2 api"

11 years agoAdd commands used by NFS volume driver to rootwrap
Carlos Goncalves [Thu, 6 Dec 2012 14:50:29 +0000 (14:50 +0000)]
Add commands used by NFS volume driver to rootwrap

Fixes bug 1087282

Change-Id: Ib873c334633b4d586c2e53bac5d1cae0dcf65be7

11 years agoChanging display_name to name in v2 api
Mike Perez [Sat, 8 Dec 2012 20:16:43 +0000 (12:16 -0800)]
Changing display_name to name in v2 api

This allows the v2 api responses to be more consistent with other
projects. This approach is making the idea compatible in v2, rather
than changing the model.

blueprint name-attr-consistency

Change-Id: I74e46b4204353d5712be788fe2138784b2a72305

11 years agoMerge "Make copy_to_volume a bit more useful."
Jenkins [Sat, 8 Dec 2012 04:21:13 +0000 (04:21 +0000)]
Merge "Make copy_to_volume a bit more useful."

11 years agoMake summary and detail view consistent with other projects
Mike Perez [Mon, 3 Dec 2012 18:38:27 +0000 (10:38 -0800)]
Make summary and detail view consistent with other projects

This introduces the v2 volume view builder for ease of response
changing.

blueprint vol-api-consistency

Change-Id: If061e069d3b09ee5de15f1cbc7a46fa29c95a4cd

11 years agocreating separate v1 and v2 stubs and general fakes
Mike Perez [Sat, 1 Dec 2012 00:23:37 +0000 (16:23 -0800)]
creating separate v1 and v2 stubs and general fakes

For now contribs will use v2, but in the future will test against all
supported versions.

Change-Id: I47c30f8c2fc8a89f92065122bf1ca6aec1ce8b2d

11 years agoMake copy_to_volume a bit more useful.
john-griffith [Tue, 4 Dec 2012 04:02:19 +0000 (21:02 -0700)]
Make copy_to_volume a bit more useful.

The current implementation of cinder.driver.copy_to_volume
does not take in to account image type and is only valid
for raw images.  This doesn't do much good for the majority
of cases, and rather than require folks to have a raw version
uploaded to Glance, let's just do a convert if needed on the fly.

This simply creates a temp file, does the conversion and then
writes the temp file directly to the volume.

Change-Id: I849b04b8aae76da068abcd2a20c1fcecca8a5caa

11 years agoDelete type call in api needs update to use ID.
John Griffith [Thu, 6 Dec 2012 20:36:23 +0000 (13:36 -0700)]
Delete type call in api needs update to use ID.

https://github.com/openstack/cinder/commit/51a438c8f3f0d13c6779602264d72cde82feab9c
Introduced UUID's for volume_type ID and also changed delete to use ID
instead of name.

That changed neglected to update the call in contrib/types_manage,
this patch fixes that.

Fixes bug 1087161

Change-Id: I839228cd656afaf68caedfe673f9191488ccc397

11 years agoConvert volume_type id from int to uuid.
john-griffith [Sun, 2 Dec 2012 07:01:49 +0000 (00:01 -0700)]
Convert volume_type id from int to uuid.

This converts the volume_type id from int to uuid.  In
addition, this also corrects an issue of deleting volume_types
by name.  Even though the client/api is taking the id, it was
converting to the name of the volume_type for the db access.

We also want to continue enforcing that the name is unique on creation
so as to avoid any confusion and for clarity in Horizon.  The api
has also been enhanced to allow you to specify the type by name
or by uuid.

This does NOT modify the things like the volume details display field
(currently shows the type 'name' not 'uuid'), these types of changes
will go in to V2 of the API.

Implements blueprint vol-type-to-uuid

Change-Id: I1c54ff2a1e0c5df5891408fc11b15176db4028c3

11 years agoMerge "Rename Config osapi_compute_link_prefix to osapi_volume_base_URL"
Jenkins [Mon, 3 Dec 2012 15:09:52 +0000 (15:09 +0000)]
Merge "Rename Config osapi_compute_link_prefix to osapi_volume_base_URL"

11 years agoMerge "Revert changes to monkey_patch."
Jenkins [Sun, 2 Dec 2012 16:10:34 +0000 (16:10 +0000)]
Merge "Revert changes to monkey_patch."

11 years agoMerge "Fix exception when size is None."
Jenkins [Fri, 30 Nov 2012 23:17:51 +0000 (23:17 +0000)]
Merge "Fix exception when size is None."

11 years agoRename Config osapi_compute_link_prefix to osapi_volume_base_URL
sathish-nagappan [Fri, 30 Nov 2012 22:53:21 +0000 (14:53 -0800)]
Rename Config osapi_compute_link_prefix to osapi_volume_base_URL

fixes Bug #1046451

Renamed the config option.

Change-Id: Ia6eb057a11828bdc216e0bddbd29855285ba938c

11 years agoFix exception when size is None.
Matthew Treinish [Thu, 29 Nov 2012 22:48:03 +0000 (17:48 -0500)]
Fix exception when size is None.

If an incoming create request has a size of None raise
an exception.

Fixes: bug 1084711
Change-Id: I5ad377073cc6853b502889ad9292b5758522ca88

11 years agoMerge "attaching volumes will set instance_uuid instantly"
Jenkins [Fri, 30 Nov 2012 17:42:58 +0000 (17:42 +0000)]
Merge "attaching volumes will set instance_uuid instantly"

11 years agoEnsure request_spec can be serialized.
Russell Bryant [Fri, 30 Nov 2012 14:19:05 +0000 (09:19 -0500)]
Ensure request_spec can be serialized.

request_spec includes some objects that must be converted to primitive
types to ensure they can be serialized by any of the rpc drivers.  In
this case, it's the volume type.  It's a sqlalchemy model.
to_primitive() will ensure that it gets converted to a dict so that it
can be serialized for messaging.

I saw this error in a smokestack log that was running tempest with qpid.
You won't see this error if you're using rabbit with the kombu driver.
We have some magic with the kombu driver that will fix these problems
automatically if they are missed.

Change-Id: I9a1b7662bca7caa2acb61d1e3879ac2654d5b32e

11 years agoattaching volumes will set instance_uuid instantly
Mike Perez [Thu, 29 Nov 2012 11:18:08 +0000 (03:18 -0800)]
attaching volumes will set instance_uuid instantly

This change allows the instance_uuid field to be set instantly when
beginning an attach action. The user will no longer have to wait for the
attachment to be complete to know what it is attaching to. If attaching
fails on the driver layer, we got error state and keep the instance_uuid
set for troubleshooting purposes.

blueprint instance-attached-field
Change-Id: Ie9860876ab865f766c0ae4cb616a45fd363931f8

11 years agoMerge "Unpin lxml requirements"
Jenkins [Wed, 28 Nov 2012 19:25:15 +0000 (19:25 +0000)]
Merge "Unpin lxml requirements"

11 years agoRevert changes to monkey_patch.
John Griffith [Wed, 28 Nov 2012 19:19:14 +0000 (12:19 -0700)]
Revert changes to monkey_patch.

As a work-around to deal with bug 1075838, we modified
monkey_patch in the Cinder binaries.  The root cause of the
issue is/was actually a bug in eventlet but this was a quick
work-around.

Since the change Change-Id: I69ba75136e32e95c6fdf108f0c4fe21a5e3bdbe6
to do this landed, the problem has also been addressed in Keystone.

So, let's revert this patch to get back the greenthread performance
that we may have lost with this change.  For now, everything should
be addressed as long as we don't implement multi api worker in Cinder,
if we do and the evenlet fix hasn't been released we'll need to turn
the modification back on for bin/cinder-api.

Change-Id: Ie845bade85dbceacd91f15e082325602d9a79c74

11 years agoMerge "Provide i18n to those messages without _()"
Jenkins [Wed, 28 Nov 2012 05:44:37 +0000 (05:44 +0000)]
Merge "Provide i18n to those messages without _()"

11 years agoMerge "Use auth_token middleware from keystoneclient."
Jenkins [Wed, 28 Nov 2012 05:21:24 +0000 (05:21 +0000)]
Merge "Use auth_token middleware from keystoneclient."

11 years agoMerge "Fix import order to make it alphabetical."
Jenkins [Wed, 28 Nov 2012 03:54:29 +0000 (03:54 +0000)]
Merge "Fix import order to make it alphabetical."

11 years agoImprove provider_location cleanup code for RBD.
Adam Gandelman [Wed, 28 Nov 2012 01:51:26 +0000 (17:51 -0800)]
Improve provider_location cleanup code for RBD.

The RBD driver does not make use of the 'provider_location' field
but the current cleanup code assumes it does.  Ensure the field
is in use before testing whether or not it needs fixing.

Fixes bug 1083818.

Change-Id: Id6ff85101f85e70575ba244c2df7aca0196cf224

11 years agoFix import order to make it alphabetical.
Matthew Treinish [Tue, 27 Nov 2012 16:01:05 +0000 (11:01 -0500)]
Fix import order to make it alphabetical.

Change-Id: I159d9f5a6d131485d6063985a4e1638878b7463e

11 years agoMerge "Fix None being passed into as_int()."
Jenkins [Tue, 27 Nov 2012 21:08:17 +0000 (21:08 +0000)]
Merge "Fix None being passed into as_int()."

11 years agoMerge "Make pep8 checks a bit stricter."
Jenkins [Tue, 27 Nov 2012 16:32:23 +0000 (16:32 +0000)]
Merge "Make pep8 checks a bit stricter."