John Griffith [Sat, 21 Dec 2013 00:33:23 +0000 (17:33 -0700)]
Add qos_specs support to solidfire driver
We've added a new qos_specs object to Cinder that allows creation
and management of qos settings separate from volume-types.
Now instead of embedding the qos info in the extra-specs of the
volume-type we associate the desired qos-spec to a volume-type.
This change implements the capability of the SolidFire driver to
take advantage of that feature.
Mike Perez [Mon, 2 Dec 2013 21:42:52 +0000 (13:42 -0800)]
Adjust RBD delete log level
Set notice of volume no longer existing in RBD backend when attempting
to delete to log INFO level. Also move a comment next to related code.
This is a follow-up to suggestions from 3de7da12d1098ef777305099e5f4a039e536bf99.
Sergio Cazzolato [Fri, 29 Nov 2013 05:38:44 +0000 (00:38 -0500)]
Use assertAlmostEqual instead of failUnlessAlmostEqual in unit tests
The method failUnlessAlmostEqual has been deprecated since python 2.7.
http://docs.python.org/2/library/unittest.html#deprecated-aliases
Also in Python 3, a deprecated warning is raised when using
failUnlessAlmostEqual therefore we should use assertAlmostEqual instead.
Andres Buraschi [Thu, 28 Nov 2013 14:35:07 +0000 (11:35 -0300)]
Fixing check order for empty body in get_body()
Cinder API logged the following debug message for each request with
empty body:
"Unrecognized Content-Type provided in request get_body"
Check order was fixed in get_body function to follow the correct flow
and display the right message (empty body).
Sushil Kumar [Thu, 28 Nov 2013 07:42:52 +0000 (07:42 +0000)]
Updates .gitignore
To ignore swap files from getting into repository
currently the implemented ignore is *.swp
however vim adds more swap files if .swp exists,
so improving this with .*.sw?
Rushi Agrawal [Tue, 26 Nov 2013 06:18:38 +0000 (11:48 +0530)]
Fix suppressed exceptions for migration downgrade
In SQLAlchemy migration versions 009, 010 and 020, we missed
reraising exceptions while logging errors in case of a downgrade.
We don't want exceptions to pass silently. This patch fixes that.
john-griffith [Wed, 27 Nov 2013 23:38:22 +0000 (16:38 -0700)]
Parse out '@' in volume['host'] to do discovery
The backup method of getting iscsi info is to use
iscsiadm discovery, however currently that method
just uses volume['host'] which in the case of
multi-backend will use "host@backend-name".
This will cause the discovery to fail of course, so
this change just parses out the '@' symbol if it's present
and avoids the problem in the first place.
This also beefs up the error logging and exception catching
a bit.
Parsing out the '@' symbol all the time should be safe as
the accepted valid chars for hostnames are digits, a-z and
hyphens.
john-griffith [Wed, 27 Nov 2013 21:02:48 +0000 (14:02 -0700)]
Handle NotFound exception in snapshots API code
Passing tests in the gate leave unhandled trace/error messages
for a VolumeNotFound issue.
These are caused by the test_volumes_snapshots_negative test
which requests a non-existent volume and the tests pass however
the log files are a bit messed up due to the unhandled exception.
This change just adds a try/catch block around the volume get calls
in the snapshot modules and raises HTTPNotFound as appropriate.
Avishay Traeger [Tue, 26 Nov 2013 19:10:22 +0000 (21:10 +0200)]
Fix Storwize terminate_connection with no host
Nova may pass a connector to Cinder with no 'host' field, which was
causing a KeyError in the Storwize driver. This patch resolves this case
by doing the following:
1. If the volume is mapped to only 1 host, unmap it
2. If the volume was not mapped or mapped to multiple hosts, print a
warning but don't raise an exception
Make volume_glance_metadata_create compat with DB2
As DB2 does not support SQL insert via raw number type if
table column data type is "CLOB" ("TEXT" in sqlalchemy), we need
to convert numerical values to string before insert operations.
This problem was discovered through the
test_volume_create_get_update_delete_from_image test case in
tempest.api.volume.test_volumes_get. The test case fails with
a DBError without this change in place.
Eric Harney [Tue, 19 Nov 2013 23:01:55 +0000 (18:01 -0500)]
GlusterFS: Ensure Cinder can write to shares
Ensure the Cinder user can write to the GlusterFS share. This
is required for snapshot functionality, and means the admin
does not have to set this permission manually.
zhangyanzi [Mon, 25 Nov 2013 11:33:49 +0000 (19:33 +0800)]
The param 'readonly' is incorrect checked
In the function os-update_readonly_flag, the param 'readonly' is incorrect
checked, without the param in request, i think it should raise exception
with message like "Must specify readonly in request."
zhangyanzi [Fri, 22 Nov 2013 08:41:39 +0000 (16:41 +0800)]
Ensure 'status' in update_snapshot_status
The function os-update_snapshot_status doesn't check whether the param
"status" is in request body. It throws 500 error. We should catch the
KeyError and return 400 (HTTPBadRequest) instead.
huangtianhua [Fri, 22 Nov 2013 09:02:32 +0000 (17:02 +0800)]
Initialize and terminate connection raise 500 err
Initialize and terminate connection should check whether "connector" is
in request body. It throws 500 error if "connector" is not present. We
should catch the KeyError and transfer it to 400 (HTTPBadRequest)
instead of.
Zhiteng Huang [Thu, 21 Nov 2013 09:02:23 +0000 (17:02 +0800)]
Pull latest service module from Oslo
Get latest service module from Oslo to prepare for multi-process API service implementation.
Below are the commits included in this pull.
Changes being pulled into in service module are:
* e7bc8c9 2013-11-20 | Merge "os._exit in _start_child may cause unexpected exception"
* 96a2d4e 2013-11-07 | os._exit in _start_child may cause unexpected exception
* 1771a77 2013-11-05 | Adjust import order according to PEP8 imports rule
* 3110c0f 2013-10-17 | Use multiprocessing.Event to ensure services have started
* b5fba9e 2013-09-18 | Move comment in service.py to correct location
* 11cc74f 2013-08-26 | Fixes issue with SUGHUP in services on Windows
* 825ace5 2013-06-17 | Add service restart function in oslo-incubator
* c935d1c 2013-07-16 | Merge "Allow launchers to be stopped multiple times"
* dc8aa79 2013-07-08 | Allow launchers to be stopped multiple times
* 1a2df89 2013-06-25 | Enable H302 hacking check
* 52e857a 2013-06-19 | Ignore any exceptions from rpc.cleanup().
* 5518ad3 2013-05-16 | Add graceful service shutdown support to Launcher
And these dependent modules
- cinder/openstack/common/eventlet_backdoor.py
* 1dcc747 2013-07-15 | Fix stylistic problems with help text
* 1a2df89 2013-06-25 | Enable H302 hacking check
* c7c55b2 2013-06-20 | Improve usability when backdoor_port is nonzero
- cinder/openstack/common/gettextutils.py
* 3970d46 2013-11-02 | Fix typos in oslo
* 88db9c8 2013-10-03 | When translating if no locale is given use default locale
- cinder/openstack/common/jsonutils.py
* 3d7504b 2013-09-23 | Ensure that Message objects will be sent via RPC in unicode format
* 1807d32 2013-08-22 | jsonutils: make types py3 compatible
* bdef862 2013-08-22 | jsonutils: do not require xmlrpclib
* ded9bd6 2013-08-04 | Make dependency on netaddr optional
* 7b7566b 2013-06-25 | Add netaddr.IPAddress support to to_primitive()
- cinder/openstack/common/local.py
* cb2a2b6 2013-06-28 | Modify local.py to not be dependent on Eventlet
* 547ab34 2013-03-11 | Fix Copyright Headers - Rename LLC to Foundation
- cinder/openstack/common/log.py
* a82e889 2013-11-14 | Merge "Do not name variables as builtins"
* 2251cb5 2013-11-13 | Do not name variables as builtins
* 25c5854 2013-11-13 | Adds admin_password as key to be sanitized when logging
* cbfded9 2013-11-11 | Default iso8601 logging to WARN
* 76b0cd1 2013-11-04 | Add mask password impl from other projects
- cinder/openstack/common/loopingcall.py
* 1a2df89 2013-06-25 | Enable H302 hacking check
- cinder/openstack/common/threadgroup.py
* 9d3c34b 2013-10-25 | Add a link method to Thread
* 1a2df89 2013-06-25 | Enable H302 hacking check
- cinder/openstack/common/timeutils.py
* f3b5f17 2013-11-12 | Add helper method total_seconds in timeutils.py
* 53ebd30 2013-10-18 | python3: use six.text_types for unicode()
* 3bc6f79 2013-09-19 | Fix timeutils.set_override_time not defaulting to current wall time
* af76064 2013-08-29 | Optimize timeutils.utcnow_ts()
* df3f2ba 2013-07-26 | BaseException.message is deprecated since Python 2.6
* d28fa69 2013-06-27 | python3: Add python3 compatibility.
scott-dangelo [Fri, 22 Nov 2013 16:28:07 +0000 (16:28 +0000)]
Add greenthread.sleep() to parent wait()
Add an eventlet.greenthread.sleep() to wait() to keep
cinder-volume parent from looping after catching SIGTERM
and hogging the CPU. This was already added to the running
state but is missing from the SIGTERM caught state when
the parent waits to reap the child.
Xavier Queralt [Fri, 22 Nov 2013 09:39:37 +0000 (10:39 +0100)]
Pass the size when fetching image in xenapi driver
In commit 6e287c0f2bb7d4994d50f1763f412277e4dac6f7 the fetch_to_raw
method was changed to accept the volume size so it can fail when the
image doesn't fit in the destination volume. In this commit we also
updated all the volume drivers to pass the volume size to that method so
it could perform the check. The xenapi driver missed that change.
This commit updates the xenapi driver to pass the volume size when
fetching the image to enable the introduced check.
Jon Bernard [Fri, 15 Nov 2013 22:38:31 +0000 (17:38 -0500)]
Remove dead code from test_get_volume_stats()
The _emulate_vgs_execute() routine is never called because the function
that calls it (get_all_volume_groups) is overridden to return fake
output without executing vgs.
Jon Bernard [Tue, 19 Nov 2013 17:06:52 +0000 (12:06 -0500)]
Remove suffixes from LVM brick test vgs output
When fake_execute() is called to retrieve volume group information, the
--nosuffix flag is passed but ignored. This patch honors the nosuffix
flag and removes the unit suffix from the volume group sizes in the
returned output.
John Griffith [Mon, 11 Nov 2013 21:57:44 +0000 (14:57 -0700)]
Subclass vendor specific exceptions.
Up until now drivers have been able to define their
own custom exception classes. In most cases these are
inherited from either a native python exception class
or at best the base cinder exception class.
The problem with this is that it makes it very difficult
for higher layers (such as volume manager) to do any intelligent
exception handling and the base Cinder.exception class is too broad.
This change takes the first step in cleaning this up. We create
new exception classes for all drivers to inherit from:
VolumeDriverException
VolumeBackendAPIException
BackupDriverException
This still allows the freedom to create custom exceptions for a
particular driver, however it also gives us a common exception
class to catch and check in higher levels. Further refinement
and standardization will be helpful going forward but this
should give us a good start.
Jay S. Bryant [Sat, 16 Nov 2013 01:01:58 +0000 (19:01 -0600)]
Add default quota class into DB during migration
For some time now use_default_quota_class has been the
default setting for Cinder. Cinder, however, has not been putting
any defaults for the default quota class into the database. This
resulted in any command that queried for the default quotas to cause
the message "Deprecated: Default quota for resource: <resource> is set
by the default quota flag: <quota flag>, it is now deprecated. Please use
the default quota class for default quota."
This commit resolves this issue by setting the default value for volumes,
snapshots and gigabytes in the quota_class table at migration time if there
is not already a class_name of 'default' in the quota_classes table.
The test "test_get_dss_rp" in test_vmware_vmdk.py is not testing
the positive case as intended. Rather, it tests the negative case
(no datastores) which is already covered by
"test_get_dss_rp_without_datastores".
Navneet Singh [Sun, 17 Nov 2013 21:08:07 +0000 (02:38 +0530)]
NetApp fix free space as zero during 1st vol stats update
NetApp clustered ontap drivers report space as zero
till first 60 seconds of driver start. This is causing
discomfort for some performance sensitive deployements.
This was due to async nature of the NetApp stats collection job.
Job is changed to sync at driver start to improve customer
experience.