]> review.fuel-infra Code Review - openstack-build/cinder-build.git/log
openstack-build/cinder-build.git
11 years agoCopy glance_image_metadata when cloning volumes.
John Griffith [Tue, 5 Feb 2013 00:54:56 +0000 (17:54 -0700)]
Copy glance_image_metadata when cloning volumes.

When cloning a volume we were not capturing/copying
the glance_image_metadata from the source volume.

This change implements a copy_image_metadata_from_vol_to_vol.
So now we can clone bootable volumes without going back to glance
or messing with them otherwise, they're just ready to be booted.

Fixes bug: 1115634

Change-Id: I859bb2550267c6a5142e85ec89f1c7ff885588ac

11 years agoImport Oslo's common rootwrap to Cinder
Thierry Carrez [Tue, 29 Jan 2013 13:58:07 +0000 (14:58 +0100)]
Import Oslo's common rootwrap to Cinder

Import oslo-incubator's rootwrap, which contains all the new
features and bugfixes that were pushed to nova-rootwrap earlier
in this cycle, including logging support and path search.

Implements bp: cinder-common-rootwrap

Change-Id: I68cbb788a3dda58dc146933be190146607b48801

11 years agoMerge "Skip tests if cinder is not installed"
Jenkins [Mon, 4 Feb 2013 06:28:32 +0000 (06:28 +0000)]
Merge "Skip tests if cinder is not installed"

11 years agoMerge "Fixes 'not in' operator usage"
Jenkins [Mon, 4 Feb 2013 06:28:30 +0000 (06:28 +0000)]
Merge "Fixes 'not in' operator usage"

11 years agoMerge "import tools/flakes from oslo"
Jenkins [Mon, 4 Feb 2013 05:25:36 +0000 (05:25 +0000)]
Merge "import tools/flakes from oslo"

11 years agoFixes 'not in' operator usage
Zhongyue Luo [Thu, 31 Jan 2013 06:58:50 +0000 (14:58 +0800)]
Fixes 'not in' operator usage

Change-Id: Id4c83e32f6dcb4f710c5a8d8b6f130038cf07648

11 years agoSkip tests if cinder is not installed
Chuck Short [Sun, 3 Feb 2013 01:22:18 +0000 (19:22 -0600)]
Skip tests if cinder is not installed

The test_capacity_filter_passes_infinite and test_capacity_filter_passes_unknown
tests were failing when cinder is not installed. Skip the tests like the other
tests for test_host_filters.

Change-Id: I5ebfa2dca05b6e89a12e3153598bf4699da888de
Signed-off-by: Chuck Short <chuck.short@canonical.com>
11 years agoFix the generalized copy_image_to_volume operation.
john-griffith [Fri, 1 Feb 2013 05:38:51 +0000 (22:38 -0700)]
Fix the generalized copy_image_to_volume operation.

The Generis iSCSI copy volume<->image patch
(change: Iff097629bcce9154829a7eb5aee0ea6302338b26) did
not account for the fact that the existing volume reference
passed in to the copy method would not have the updated
provider_location and iSCSI info available.

To address this, we simply just get a new ref from the DB
after creation if a copy image is requested.

Also, the list of acceptable formats was not fully inclusive,
not only that, but there's no reason to not let the qemu-convert
handle any errors here.

Change-Id: I7b1910080d285562c7f2d8afa7f65768b1089b73

11 years agoMerge "Set source volume to "in use" during clone"
Jenkins [Fri, 1 Feb 2013 01:52:39 +0000 (01:52 +0000)]
Merge "Set source volume to "in use" during clone"

11 years agoMerge "Allow volume back-end to report 'infinite' or 'unknown' as capacity"
Jenkins [Fri, 1 Feb 2013 01:04:22 +0000 (01:04 +0000)]
Merge "Allow volume back-end to report 'infinite' or 'unknown' as capacity"

11 years agoMerge "Check for non-default volume name template."
Jenkins [Thu, 31 Jan 2013 22:57:57 +0000 (22:57 +0000)]
Merge "Check for non-default volume name template."

11 years agoimport tools/flakes from oslo
Joe Gordon [Wed, 30 Jan 2013 21:33:31 +0000 (13:33 -0800)]
import tools/flakes from oslo

Change-Id: Iac52a0cc48de9f29a91545e319c144e3f935799d

11 years agoMerge "Clean up QTree when deleting volume on NetApp storage box."
Jenkins [Thu, 31 Jan 2013 07:13:20 +0000 (07:13 +0000)]
Merge "Clean up QTree when deleting volume on NetApp storage box."

11 years agoMerge "Update osapi_volume_extension default."
Jenkins [Thu, 31 Jan 2013 07:13:18 +0000 (07:13 +0000)]
Merge "Update osapi_volume_extension default."

11 years agoMerge "Fixes "is not" usage"
Jenkins [Thu, 31 Jan 2013 06:38:57 +0000 (06:38 +0000)]
Merge "Fixes "is not" usage"

11 years agoMerge "Use install_venv_common.py from oslo."
Jenkins [Thu, 31 Jan 2013 06:32:10 +0000 (06:32 +0000)]
Merge "Use install_venv_common.py from oslo."

11 years agoFixes "is not" usage
Zhongyue Luo [Thu, 31 Jan 2013 02:31:51 +0000 (10:31 +0800)]
Fixes "is not" usage

Fixes bug #1110987

Change-Id: Iafa9fc548deaf03c229cc9144d85e6c68b3101be

11 years agoMerge "Implement LVM thin provisioning support."
Jenkins [Wed, 30 Jan 2013 18:06:36 +0000 (18:06 +0000)]
Merge "Implement LVM thin provisioning support."

11 years agoPull cfg module from Oslo and update cinder-manage accordingly
Zhiteng Huang [Wed, 19 Dec 2012 06:56:11 +0000 (14:56 +0800)]
Pull cfg module from Oslo and update cinder-manage accordingly

New cfg module abandons previous disable_interspersed_args() and
recommand to use add_subparsers from argparser module instead.
This patch pull cfg module from Oslo and update the affected
cinder-manage utils.

Change-Id: I8913fafb8fdb19b3fe0a695a70c8b1e8f59c1027

11 years agoMerge "Check for installed cinder in filter tests."
Jenkins [Wed, 30 Jan 2013 05:30:07 +0000 (05:30 +0000)]
Merge "Check for installed cinder in filter tests."

11 years agoMerge "Generic iSCSI copy volume<->image."
Jenkins [Wed, 30 Jan 2013 04:31:56 +0000 (04:31 +0000)]
Merge "Generic iSCSI copy volume<->image."

11 years agoMerge "Fix typo in cinder/db/api.py"
Jenkins [Wed, 30 Jan 2013 01:53:35 +0000 (01:53 +0000)]
Merge "Fix typo in cinder/db/api.py"

11 years agoMerge "Replace CRLF with unix-style "LF""
Jenkins [Wed, 30 Jan 2013 01:42:11 +0000 (01:42 +0000)]
Merge "Replace CRLF with unix-style "LF""

11 years agoSet source volume to "in use" during clone
Walter A. Boring IV [Tue, 29 Jan 2013 19:52:46 +0000 (11:52 -0800)]
Set source volume to "in use" during clone

When we are cloning a volume, we now set the source volume's status
to 'in use'. This prevents a user from deleting the source volume while the
backend copies/clones the contents to the new volume.
When the cloning is complete, we reset the status to it's original
state.

Change-Id: Ie43345aba77df4671ed2b429645cf8d1af9b975b

11 years agoFix typo in cinder/db/api.py
Ollie Leahy [Tue, 29 Jan 2013 11:25:27 +0000 (11:25 +0000)]
Fix typo in cinder/db/api.py

The api method quota_destroy_all_by_project() calls the implementation
quota_get_all_by_project()

Change-Id: I11927e1fd29c6248ce755dfd236bf0f9adf39d94
Fixes: bug #1108766
11 years agoReplace CRLF with unix-style "LF"
Dirk Mueller [Tue, 29 Jan 2013 08:58:50 +0000 (09:58 +0100)]
Replace CRLF with unix-style "LF"

Seems to be more welcome, see e.g.
http://lists.openstack.org/pipermail/openstack-dev/2013-January/004549.html

Change-Id: I35e0fac4bbfc2fdf2dd9c56c264209e0c3a20cee

11 years agoAllow volume back-end to report 'infinite' or 'unknown' as capacity
Zhiteng Huang [Mon, 28 Jan 2013 17:12:31 +0000 (01:12 +0800)]
Allow volume back-end to report 'infinite' or 'unknown' as capacity

For some reason, some volume back-ends cannot report actual capacity
that is available or even total capacity (e.g. thin-provisioning),
Cinder should allow such capability report and make placement/schedule
decision based on these status.

In particular, we agree to use 'infinite' to mark unlimited space and
'unknown' to mark unknown/unclear space.  Host manager and CapacityFilter
are updated accordingly to allow such capacity.  For those back-ends
report 'infinite' or 'unknown' capacity, CapacityFilter will let them
pass to give them a chance to try.  Even if failure happened, the retry
mechanism should take care of the case.

Change-Id: I6871a28745111b1878a606372e6edd664f0ea10c

11 years agoWrap SolidFire size parameter in int.
john-griffith [Tue, 29 Jan 2013 03:28:14 +0000 (20:28 -0700)]
Wrap SolidFire size parameter in int.

SolidFire API requires that volume size is specified as
an int value, ensure an int is provided by wrapping in int()

Change-Id: If251ce2a7095f32aa2a59bb6cc767a4136c5f88c

11 years agoUse install_venv_common.py from oslo.
Matthew Treinish [Mon, 28 Jan 2013 18:02:50 +0000 (13:02 -0500)]
Use install_venv_common.py from oslo.

This syncs install_venv_common.py from oslo and reworks the
tools/install_venv.py script to use the new library.

Change-Id: Ia271de047cc80e462fa0850cd8d626d2da777dff

11 years agoUpdate osapi_volume_extension default.
Dan Prince [Mon, 28 Jan 2013 15:44:57 +0000 (10:44 -0500)]
Update osapi_volume_extension default.

Updates the Cinder config default for osapi_volume_extension
so that it only uses the new cinder.api.contrib.standard_extensions
loader.

Previously both the new and old extension loader path were listed
which can cause extensions to be loaded twice thus causing
log WARNINGs to appear in the Cinder API log file.

Also, regenerates the cinder.conf.sample to reflect this change.

Fixes LP Bug #1107963.

Change-Id: I4e060fc8dcc49d8285e0e7db57489d10aa6d193a

11 years agoGeneric iSCSI copy volume<->image.
Avishay Traeger [Wed, 16 Jan 2013 14:19:40 +0000 (16:19 +0200)]
Generic iSCSI copy volume<->image.

Implements a generic version of copy_volume_to_image and
copy_image_to_volume for iSCSI drivers.

Change-Id: Iff097629bcce9154829a7eb5aee0ea6302338b26
Implements: blueprint generic-iscsi-copy-vol-image

11 years agoImplement LVM thin provisioning support.
John Griffith [Fri, 11 Jan 2013 21:38:23 +0000 (14:38 -0700)]
Implement LVM thin provisioning support.

As of LVM2 version 2.02.89 the ability to do thin provisioning
was made available in LVM, this provides some cool new features
but also addresses some problems with things like terrible
LVM snapshot performance.

Currently the version of LVM in Ubuntu 12.04 does NOT support LVM thin,
however an experimental PPA from brightbox which is a backport from
Quantal has been proposed to Cannonical to be pulled in.  For some
users the experimental PPA is a better option than dealing with some of
the current issues in the standard LVM2 version of Precise (including
the dd hangs on secure delete). See BP for more info.

This change will create the thin pool if it doesn't exist
using pool_size flag, or by default using entire VG space.

Implements BP: implement-lvm-thin-provisioning

Change-Id: I8a30a1283e1992c64e8ac96841ae4a6f82f7018a

11 years agoMerge "Fix hosts extension and enable its tests"
Jenkins [Fri, 25 Jan 2013 05:50:25 +0000 (05:50 +0000)]
Merge "Fix hosts extension and enable its tests"

11 years agoMerge "Update EMC SMI-S iSCSI Driver"
Jenkins [Fri, 25 Jan 2013 02:49:44 +0000 (02:49 +0000)]
Merge "Update EMC SMI-S iSCSI Driver"

11 years agoMerge "Get updated vol status in volume.api.reserve."
Jenkins [Fri, 25 Jan 2013 00:25:10 +0000 (00:25 +0000)]
Merge "Get updated vol status in volume.api.reserve."

11 years agoCheck for installed cinder in filter tests.
John Griffith [Tue, 22 Jan 2013 04:50:20 +0000 (21:50 -0700)]
Check for installed cinder in filter tests.

Some of the filter tests require that the cinder pkg is
installed on the system, specifically cinder.egg-info/entry_points.

This change check that the egg-info directory exists in the root
cinder directory and determines whether to skip or not.

Change-Id: I36145f170e802aed5dfae8eec4684e60ad3d6f2c

11 years agoFix hosts extension and enable its tests
Zhiteng Huang [Thu, 24 Jan 2013 17:21:44 +0000 (01:21 +0800)]
Fix hosts extension and enable its tests

This patch corrects the import in hosts.py, fix the DB API
service_get_by_host_and_topic raises ServiceNotFound exception with
right parameter and move tests to the right place so that they are
enabled.

Fix LP bug: #1104231

Change-Id: I07c486f456196a3812eb5274b950ab9560a51cf3

11 years agoMerge "Add LUN# to provider_location in Nexenta driver."
Jenkins [Thu, 24 Jan 2013 07:14:29 +0000 (07:14 +0000)]
Merge "Add LUN# to provider_location in Nexenta driver."

11 years agoCheck for non-default volume name template.
John Griffith [Sun, 20 Jan 2013 22:52:52 +0000 (22:52 +0000)]
Check for non-default volume name template.

The iscsi delete methods in iscsi.py had hard-coded volume names
'volume-%s'.

If a user configured volume_name_template to
something other than default the result is failure to remove
the iscsi_target.

volume create worked appropriately and created the correct name
in the DB, so the persistence files were the only thing affected
or named incorrectly.

Fixes bug: 1101071

Change-Id: Id5575874b2cebd9b3509d739cb92abf06c503c4e

11 years agoMerge "Fix error for extra specs update with empty body."
Jenkins [Thu, 24 Jan 2013 00:44:44 +0000 (00:44 +0000)]
Merge "Fix error for extra specs update with empty body."

11 years agoMerge "Improve error message for missing NFS share config"
Jenkins [Thu, 24 Jan 2013 00:07:51 +0000 (00:07 +0000)]
Merge "Improve error message for missing NFS share config"

11 years agoMerge "ensure zeros are written out when clearing volumes"
Jenkins [Wed, 23 Jan 2013 18:55:18 +0000 (18:55 +0000)]
Merge "ensure zeros are written out when clearing volumes"

11 years agoMerge "Clean up IPV6 config checks in test_wsgi."
Jenkins [Wed, 23 Jan 2013 18:37:26 +0000 (18:37 +0000)]
Merge "Clean up IPV6 config checks in test_wsgi."

11 years agoGet updated vol status in volume.api.reserve.
John Griffith [Wed, 23 Jan 2013 04:15:40 +0000 (04:15 +0000)]
Get updated vol status in volume.api.reserve.

A race condtion was discovered where a nova volume attach
could easily be performed twice for the same volume.  Although
the cinder attach update would fail, this occured after the BDM
updates were made and in essence the attach to the compute instance
had already been issued.

This change simply forces a get from the DB of the volume-ref in the
reserve call and checks if an attach is already in progress.

Fixes bug: 1096983

Change-Id: Ie0e4156d691ee92b6981078ef0ba62f8c4cdf0c8

11 years agoUpdate EMC SMI-S iSCSI Driver
Xing Yang [Thu, 17 Jan 2013 21:33:47 +0000 (16:33 -0500)]
Update EMC SMI-S iSCSI Driver

Refactor EMC SMI-S based iSCSI driver.  There are lots of common code
that can be shared between iSCSI and FC drivers using SMI-S.  Break
the original emc.py into two files: emc_smis_common.py and
emc_smis_iscsi.py.  Also added support for get_volume_stats() and
create_cloned_volume().  get_volume_stats() will be revisited after
winston-d's changes.  copy volume<->image will be revisited after
avishay-il's changes.

Change-Id: I90dc3599ec2fd5bb86a3e988111a8aee5de7efea

11 years agoMerge "Add capability to update volume metadata."
Jenkins [Tue, 22 Jan 2013 10:53:10 +0000 (10:53 +0000)]
Merge "Add capability to update volume metadata."

11 years agoClean up QTree when deleting volume on NetApp storage box.
Rushi Agrawal [Tue, 22 Jan 2013 00:58:58 +0000 (06:28 +0530)]
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

11 years agoFix NFS volume creation
Eric Harney [Mon, 21 Jan 2013 22:57:04 +0000 (17:57 -0500)]
Fix NFS volume creation

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

Change-Id: I7cd4d04f404a00c22021f3971eb9f9593c657896

11 years agoImprove error message for missing NFS share config
Eric Harney [Mon, 21 Jan 2013 21:50:31 +0000 (16:50 -0500)]
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

11 years agoensure zeros are written out when clearing volumes
Pádraig Brady [Wed, 16 Jan 2013 16:23:48 +0000 (16:23 +0000)]
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

11 years agoFix error for extra specs update with empty body.
Avishay Traeger [Mon, 21 Jan 2013 08:19:02 +0000 (10:19 +0200)]
Fix error for extra specs update with empty body.

Fixes: bug #1090320
Change-Id: Ia2792d477f7670ecb2eb0c9c10dcbf1cf5b2389e

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 agoAdd capability to update volume metadata.
john-griffith [Wed, 16 Jan 2013 06:38:11 +0000 (23:38 -0700)]
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

11 years agoFix sheepdog volume creation
MORITA Kazutaka [Thu, 17 Jan 2013 07:40:24 +0000 (16:40 +0900)]
Fix sheepdog volume creation

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

Change-Id: Id157df5c4d69148257060926dbac7b5bc2804ee0
Fixes: bug #1100655.
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 agoAdd LUN# to provider_location in Nexenta driver.
Yuriy Taraday [Fri, 18 Jan 2013 13:44:22 +0000 (17:44 +0400)]
Add LUN# to provider_location in Nexenta driver.

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

Change-Id: Ib70ed94fa472c7281de077f0f36575216741678f

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."