If the CinderVolume service is restarted while an image-copy is
happening, the volume gets left in a 'downloading' state and
cannot be used or deleted. This fix adds code to init_host to
look for volumes (on this host) in such a state, and move them
to an error state. It also calls clear_download in the driver
in case the driver needs to perform an action, such as
detaching the volume.
John Griffith [Fri, 12 Apr 2013 17:11:38 +0000 (11:11 -0600)]
Add stats reporting to Nexenta Driver
Nexenta driver was never updated to report stats.
This change doesn't include support for backend_name assignment
via configs, there's some other work that will need to be
done to enable that.
Joseph Glanville [Wed, 10 Apr 2013 23:02:42 +0000 (16:02 -0700)]
iscsi: Add ability to specify or autodetect block vs fileio
When using block devices to back iSCSI logical units it is
advantageous to use blockio as it decreases latency and
increases throughput, effect is especially pronounced with
faster backing storage devices.
test_get_method_unknown_controller_action was defined twice,
checking however for different things. Rename the 2nd instance
to test_get_method_undefined_controller_action instead, otherwise
it gets overwritten later and not run. Increases test coverage
John Griffith [Fri, 12 Apr 2013 02:05:01 +0000 (20:05 -0600)]
Add capabilities reporting to ThinLVM driver
ThinLVM driver was missing the newly required capabilities reporting
and inheritance from the parent LVM driver doesn't work because the
capacity reporting methods between regular LVM and Thin LVM are not
compatible.
This patch add the basic requirements needed in the capabilities reporting
to make it usable by the filter scheduler.
The tests were failing due to an upgrade in the testing framework
(possibly due to upgrade of nose package from 1.2.1 to 1.3.0).
The actual reason was a bug in the suds client. A simple
workaround is utilised here, which sets the logging level of a
suds file to INFO instead of DEBUG.
Some 'FutureWarning' warnings from the test output were also
fixed.
John Griffith [Wed, 10 Apr 2013 05:07:52 +0000 (23:07 -0600)]
Add parsing to extra-specs key check
When using the filter scheduler which is now the default,
we can no longer pass in extra-specs like: {minIOPS:500, ....},
because the capabilities filter will reject this because there is
no host reporting minIOPS:500 capabilities.
We now need to scope the keys (ie qos:minIOPS:500....), but
that unfortunately requires a fix to the SolidFire driver.
This change add a check for the ':' in the key, and parses
on it if it's there.
Also fixes backend_name and uses VERSION var instead of
generating string in stats reporting.
Use a SSH pool to hold all SSH clients.It allows 4 SSH clients
at most to connect to the SSH server at the same time.
This patchset also enables every SSH client connect to the other
controller when they failed to connect to the current controller.
For example,failed to A,then to B,or,failed to B,then to A.
John Griffith [Fri, 12 Apr 2013 00:42:59 +0000 (18:42 -0600)]
Remove Flags usage from cinder.volume.driver
cinder.volume.driver was using a mix of FLAGS and the
new conf options for multi-backend. The result was failure
of multi-backend configrations to set the iscsi_helper
option.
This updates the driver.py file to use the OSLO.cfg and fixes the
check for iscsi_helper check in the initialize_connection call,
which was undefined.
Inconsistencies in the command line syntax between Storwize/SVC
models and firmware versions caused driver failures. This patch
makes commands compatible to fix driver crashes on the V3700 and
controllers with firmware version 6.3.
ID was being printed as %d instead of %s, causing tests to fail. This
error was previously undetected.
In addition, NetApp tests are failing due to a bug in the suds
package, which is no longer actively maintained. This patch adds skips
to the problematic tests, which should be removed once the issue is
resolved.
The code tested by test_preattach_status_volume was moved, and the
test no longer tested anything relevant (i.e., instead of checking
that the volume is 'attached', the test was changed to test for
'available' since the attach code was moved). This patch, therefore,
deletes that test.
Further, test_run_attach_detach_volume called database functions for
attaching and detaching. This patch changes those calls to call
higher-level functions which in turn call the database functions. This
gives better code coverage and gives the tests more meaning.
Don't see any reason to construct a list for request_spec['volume_id'].
And it indeed causes problems when the scheduler receives a reschedule
request with such a request_spec.
Stephen Mulcahy [Thu, 4 Apr 2013 16:10:16 +0000 (16:10 +0000)]
Allow deletion of backups where the service is None
If a backup is created while both cinder-backup and rabbitmq
are not running, backup records are created in the database with a
service entry of None.
There is no actual backup data created on the service, since the service
isn't running. This fix allows removal of these records without an error
when a delete backup request is received.
This fix also ensures backup status is set to error in the event of
an exception during a delete.
zhangchao010 [Tue, 26 Mar 2013 14:10:19 +0000 (22:10 +0800)]
Change format of some judgments
Because "not volume" will be True if volume id is 0.It can not
distinguish 0 from None.The same to some other judgments where
variable value may be 0.
This patch also does the following changes:
Deletes check storagepool in function _check_conf_file and adds
check default iscsi target IP in function initialize_connection.
Moves create host group from do_setup to initialize_connection.
Changes _get_login_info to be _update_login_info.
Removing this enables use with sqlalchemy 0.8.0
The deprecation is described upstream at:
http://docs.sqlalchemy.org/en/latest/changelog/changelog_08.html#change-ad44af79c886d1bb283042deb64f9cbe
Larry Matter [Thu, 28 Mar 2013 23:29:38 +0000 (16:29 -0700)]
REST session validity not checked in get_volume_info
The fix for bug 1157242 introduced a new bug in Coraid cinder driver
_get_volume_info that the login session is not checked for
validity/timeout. This change addressesthat issue for all
methods in the CoraidRESTClient class.
Cory Stone [Mon, 25 Mar 2013 20:09:37 +0000 (15:09 -0500)]
Add the volume and snapshot gigabytes together.
The quota sync functions were not working correctly for both
snapshots and volumes regarding gigabytes. Each would report
their own count as the total gigabytes.
Now the gigabytes sync is separate from the volume and snapshot
count syncs.
John Griffith [Sun, 24 Mar 2013 20:49:46 +0000 (20:49 +0000)]
Fixed shared gigabytes quota resource.
The shared gigabytes resource between volumes and snapshots wasn't
working properly. The issue was that on update/sync the action item
(volumes or snapshots) would update the resource usages based only on
it's own particular item.
This patch fixes that, and makes the total gigabytes truly shared
between volumesa and snapshots.
Add support to the CoraidDriver to specify a subgroup (with admin
privileges).
Coraid storage orchestration allows you to allocate portions of your
SAN to specific users/groups.
The driver should support this and not assume logging in
as "admin" (equiv to "root").
Will add another parameter to cinder.conf, "coraid_group",
and if present, the driver will authenticate using the specified group
as well as the already available coraid_user parameter.
Yug Suo [Mon, 11 Mar 2013 08:30:07 +0000 (16:30 +0800)]
Fix quota updating when admin deletes common user's volume
Add 'project_id=None' optional argument in QUOTAS related methods.
There are two problems when admin deletes volumes of common user
before fixing this bug:
Firstly, It will get tenant quotas using context.project_id which
results in getting admin's quotas not common user's.
Secondly, It will also get wrong quota usages using context.project_id
when updating common user's quota_usages.
So we could pass into QUOTAS related methods an optional argument to
specify the tenant ID to be affected. And if it's not set, then we
default to drawing the tenant ID from the context.
john-griffith [Sat, 23 Mar 2013 00:01:02 +0000 (18:01 -0600)]
Last driver sync for Folsom and Grizzly
This is the last of the updates that I've been putting
off while trying to handle the core items in Cinder.
This change fixes the ctxt ordering error in volume_types
and also fixes and also changes the internal SolidFire
metadata storage to a single dict instead of a dict of dicts.
This patch exposes a more acurate exception message
when a user has created a manual host entry on a
3PAR system that is in an incorrect 3PAR domain than
the domain that is configured for the 3PAR driver.
The bug complained that it couldn't find a VLUN, when the
actual problem was the host existed in the wrong 3PAR domain.