Alex O'Rourke [Fri, 20 Nov 2015 19:25:19 +0000 (11:25 -0800)]
LeftHand: Remove self.db assignment
DB access was removed in a previous patch when it was no longer
needed at the driver level. The self.db assignment was overlooked
and not removed, even though it is no longer being used.
Ryan McNair [Thu, 12 Nov 2015 15:06:32 +0000 (15:06 +0000)]
Deprecate *_multipath_enabled flag for IBM drivers
Deprecate the *_multipath_enabled from the FlashSystem and
Storwize/SVC driver. When enabled, this flag was intended to create
a single mapping between the compute node and the storage device for
FC connections. However, all available storage WWNNs were still being
mapped to the compute node, and instead enabling this flag was
causing a terminate_connection to not cleanup all LUN mappings
(because Nova did not know of all the target_wwns that were actually
mapped). This can be seen by enabling the flag, connecting a volume,
disconnecting the volume and observing the stray LUN mappings under
'/dev/disk/by-path'.
Currently we do not have a way to limit the storage WWNNs which are
mapped during a FC connection, so we will ignore the config to fix
this broken behavior, and then remove the config next release.
Gorka Eguileor [Thu, 27 Aug 2015 23:14:02 +0000 (01:14 +0200)]
Move get_by_id to CinderObject
Currently each Versioned Object needs to implement its own get_by_id,
with this patch they don't need anymore, since it will be included in
the base class CinderObject and it will work for all the objects.
This will help for other things like having a refresh method or
conditional updates in the objects.
Ryan McNair [Thu, 19 Nov 2015 19:48:37 +0000 (19:48 +0000)]
Fix swap_volume for case without migration
Fix swap_volume so that even when a volume-migration does not
occur, the volumes don't get stuck in "attaching" and "detaching".
Previously the swap_volume was changed in
https://review.openstack.org/#/c/101932 and
https://review.openstack.org/#/c/101933 to move the final
attach and detach logic to Cinder, however those changes only fix
the migration path. This change calls Cinder's "attach" and "detach"
for the non-migration path to update the volumes' states.
Alex O'Rourke [Thu, 15 Oct 2015 21:49:07 +0000 (14:49 -0700)]
Remove db access from 3PAR and LH cg functions
The HP 3PAR and HP LeftHand drivers no longer need to access the db in
order to grab snapshots and volumes for the following functions:
* delete_consistencygroup
* create_cgsnapshot
* delete_cgsnapshot
This patch removes all db access at the driver level for both 3PAR and
LeftHand drivers.
Chris Morrell [Wed, 18 Nov 2015 22:14:15 +0000 (22:14 +0000)]
Additional VAG support for SolidFire
This patch removes volumes from volume access groups, and potentially volume
access groups, when a connection is terminated. When the previously added
'sf_enable_vag' option is enabled and a volume connection is terminated, if the
volume was part of a VAG then the volume is removed from the VAG. If the volume
is the only remaining volume in the VAG then the VAG is also removed.
peter_wang [Tue, 17 Nov 2015 07:44:58 +0000 (02:44 -0500)]
VNX: Fix metadata get overriden issue
Cinder is using 'metadata' or 'volume_metadata' to return
volume metadata since versionedobjects is not fully merged,
so VNX could not get the correct existing
metadata, only append VNX specific metadata so existing
metadata get overridden.
In this fix, VNX will first try 'volume_metadata' if not exists,
try 'metadata' when getting metadata.
Chris Morrell [Mon, 16 Nov 2015 21:45:48 +0000 (21:45 +0000)]
Added VAG support to SolidFire
This patch adds VAG support to the SolidFire driver.
This includes a new config option 'sf_enable_vag'.
The driver creates a new VAG based on initiator name during
connection initialization.
By default VAG support is disabled. When enabled, the driver uses both
CHAP and VAG authentication.
Alon Marx [Thu, 12 Nov 2015 20:07:05 +0000 (22:07 +0200)]
Remove db access from XIV/DS8K CG functions
The XIV/DS8K driver no longer needs to access the db in order to
grab snapshots and volumes for the following functions:
* delete_consistencygroup
* create_cgsnapshot
* delete_cgsnapshot
A superclass exception (error) is being handled before
a sub class exception(SSLError) which is making the latter
exception clause unreachable. Corrected the order of these
exception clauses.
Victor Stinner [Thu, 5 Nov 2015 15:22:11 +0000 (16:22 +0100)]
Port HP 3PAR driver to Python 3
* Use oslo_serialization.base64.encode_as_text() to get Unicode on
Python 3.
* Replace sys.maxint with sys.maxsize, sys.maxint was removed in
Python 3.
* test_hpe3par: use list(set()) to get FCWWNs is the right order. On
Python 3, the hash function is randomized by default.
* test_hpe3par: fix client getWsApiVersion() to return a valid
version. Before, the comparison between mock.Mock and int raised a
TypeError.
* hpe_3par_common: set version to 3.0.2
* hpe_3par_iscsi: set version to 3.0.1
* tox.ini: add test_hpe3par to Python 3.4
This patch removes the deprecated HP Lefthand
CLIQ/SSH based driver. It also refactors the proxy
class, which was nothing but a wrapper for the 2
drivers. The LeftHand driver is now entirely based
off of the REST client.
Kendall Nelson [Wed, 7 Oct 2015 13:53:38 +0000 (08:53 -0500)]
Downstream Fix for Genconfig
This patch adds the opts.py file to the tree as a fix for deployers
that package cinder. The opts.py file is no longer being deleted right
away by generate_sample.sh after the cinder.sample.conf is being
generated.
This patch also introduces a pep8 check to make sure that the opts.py
file is up to date, so that it will catch when new opts get added to
Cinder without the opts.py being updated.
To support the ability to keep and check the opts file a number
of changes were needed in the check_uptodate.sh script as well as
the generate_sample.sh script:
- check_uptodate now takes --checkopts instead of --checkonly
When checkopts is used the opts.py file is generated using the
current code and the generated file is compared to the existing
file. The check fails if there are differences.
- generate_sample now has the --nosamplefile option.
When this option is used, only the opts.py file is generated.
The oslo-config-generator code is skipped so no sample file
is created.
- generate_sample also has some coding style consistency changes.
- Added the 'genopts' option to tox so users can generate
a fresh opts.py without a sample file when necessary.
Closes-Bug: 1501820
Co-Author: Jay Bryant <jsbryant@us.ibm.com>
When 3PAR iSCSI driver is configured for multipath, with multiple
ip addresses in hp3par_iscsi_ips, find_existing_vluns fails to return
more than 1 vlun. The problem with this is that every time
initialize_connection is called, the driver will not find the vlun it expects
to be there, and then it will create a new one.
This patch removes the break inside of find_existing_vluns, so that it
returns the entire list, not just the first vlun.
Victor Stinner [Wed, 7 Oct 2015 14:07:22 +0000 (16:07 +0200)]
Port EMC VNX CLI to Python 3
CreateConsistencyGroupTask, WaitMigrationsCompleteTask: sort the lun
identifier keys to have a determinist order. On Python 3, the hash
function is randomized, so set() order is undefined and changes at
each run.
Other changes:
* Replace map() with list-comprehension to get a list on Python 3.
* Replace assertTrue(str.find(pattern) > 0) with
assertIn(pattern, str) to not fail if pattern is at the beginning
on the string. On Python 3, the hash function is randomized and so
parts of the provider_location are in a random order, it can be at
the beginning.
* tests-py3.txt: add cinder.tests.unit.test_emc_vnxdirect
Victor Stinner [Sun, 8 Nov 2015 20:49:09 +0000 (21:49 +0100)]
py3: Fix error handling in prophetstor driver
* Port prophetstor driver to Python 3
* Replace "except exception as e:" with "except Exception as e:"
to handle "Fexvisor failed to join the volume ..." and "Fexvisor
failed to remove the volume ..." errors. Here, lower case
"exception" is the cinder.exception module, not an exception class.
On Python 3, "except" requires exception classes.
* tests-py3.txt: add cinder.tests.unit.test_prophetstor_dpl
Michał Dulko [Thu, 12 Nov 2015 15:46:59 +0000 (16:46 +0100)]
add "unreleased" release notes page
We need a release notes page to show notes for unreleased versions by
scanning the "current" branch. This ensures that notes files cannot be
merged if they break the releasenotes job.
Lucian Petrut [Tue, 10 Nov 2015 12:23:05 +0000 (14:23 +0200)]
Add os-win to requirements.txt
A common library abstracting Windows specific operations has been
created in order to remove duplicated code among OpenStack projects,
also being easier to maintain.
This patch adds os-win to global requirements so that the Windows
drivers may use it.
The following patch updates extend_volume API to use
volume versionedobjects. Changes were made to be
backwards compatible with older RPC clients. It only
includes changes to the core cinder code. Changes in
the drivers are left to each driver maintainer to
update.
Note that this patch DOES NOT try to use object dot
notation everywhere, since it would increase the
size of the patch. Instead, it will be done in
subsequent patches.
The following patch updates retype API to use volume
versionedobjects. Changes were made to be backwards
compatible with older RPC clients. It only includes
changes to the core cinder code. Changes in the
drivers are left to each driver maintainer to update.
Note that this patch DOES NOT try to use object dot
notation everywhere, since it would increase the
size of the patch. Instead, it will be done in
subsequent patches.
Thang Pham [Tue, 3 Nov 2015 14:15:37 +0000 (06:15 -0800)]
Update get/delete_volume API to use versionedobjects
The following patch updates get_volume and delete_volume
API to use volume versionedobjects. Changes were made to
be backwards compatible with older RPC clients. It only
includes changes to the core cinder code. Changes in the
drivers are left to each driver maintainer to update.
Note that this patch DOES NOT try to use
object dot notation everywhere, since it would
increase the size of the patch. Instead, it
will be done in subsequent patches.
Thang Pham [Tue, 27 Oct 2015 22:38:54 +0000 (15:38 -0700)]
Update create_volume API to use versionedobjects
The following patch updates create_volume API to use
volume versionedobjects. Changes were made to be
backwards compatible with older RPC clients. It
only includes changes to the core cinder code.
Changes in the drivers are left to each driver
maintainer to update.
Note that this patch DOES NOT try to use
object dot notation everywhere, since it would
increase the size of the patch. Instead, it
will be done in subsequent patches.
Co-Authored-By: Michal Dulko <michal.dulko@intel.com>
Change-Id: Ic1b0f09132f8fc500b29650abbd57f18ea8bd9dd
Partial-Implements: blueprint cinder-objects
Matt Riedemann [Tue, 10 Nov 2015 20:55:46 +0000 (12:55 -0800)]
Test for object version hash changes
Use the ObjectVersionChecker fixture from oslo.versionedobjects to check
when Cinder's registered objects have a change (new remotable method,
new field, etc) that require a version bump.
Fixes some registration problems along the way:
1. CinderObject doesn't need to be registered.
2. TestObject should be registered where it's used, not globally.
Removes deps=requirements.txt from tox.ini since it's not necessary and
prevents us from pip installing oslo.versionedobjects[fixtures].
Matt Riedemann [Tue, 10 Nov 2015 23:45:29 +0000 (15:45 -0800)]
Fix cinder objects unit test registration
The base test case was extending test code from oslo_versionedobjects
which is bad because (1) it was adding test objects from the o.vo
registry into the cinder object registry and (2) it was extending
internal private test classes from o.vo which are subject to change and
would break cinder.
This cleans up the base test case and object registration to basically
do it the same way that nova does.
It also moves the duplicate _compare() method into the base class and
fixes a bug where db obj fields that were lists were compared
incorrectly against object lists.
This will allow us to verify object version hashes using o.vo's
ObjectVersionChecker fixture in a follow on change without the
extraneous object registrations from o.vo messing with the results.