Yuriy Nesenenko [Mon, 28 Dec 2015 13:35:47 +0000 (15:35 +0200)]
Fix to allow RBD delete an unprotected snapshot
RBD creates snapshots and marks it as protected. Before deleting,
RBD tries to 'unprotect' a snapshot. In the case when the snapshot
was already marked as 'unprotected' RBD failed to remove it. This
patch allow RBD delete such a snapshot.
Jay S Bryant [Thu, 17 Dec 2015 17:53:45 +0000 (11:53 -0600)]
Remove the deprecated ibmnas driver
The ibmnas driver has been deprecated since the Liberty release.
In the Liberty release, NFS capabilities were added to the IBM
GPFS driver with commit: bf4ca3bcf099760ef145571b975badc80d42b2d6 .
The ability for the GPFS driver to use NFS based shares rendered
the ibmnas driver redundant.
This commit removes the ibmnas driver and its tests. The commit also
updates the opts.py file to remove reference to the ibmnas options.
hgangwx [Sat, 26 Dec 2015 12:45:17 +0000 (20:45 +0800)]
Wrong usage of "a"
Wrong usage of "a" in the mesages:
"Convert list of dicts to a indexted dict"
"Attempt to create a initiatorGroup"
"Return a empty"
"Return a object containing the parsed output"
"where volume is either a dict or a oslo_versionedobject"
"this is a update from legacy driver"
Should be:
"Convert list of dicts to an indexted dict"
"Attempt to create an initiatorGroup"
"Return an empty"
"Return an object containing the parsed output"
"where volume is either a dict or an oslo_versionedobject"
"this is an update from legacy driver"
This patch refactors the HP XP driver to be HPE XP.
This is being done because the company responsible for
this driver is now Hewlett Packard Enterprise (HPE).
The driver is now located in the cinder/volume/drivers/hpe folder.
Szymon Borkowski [Thu, 17 Dec 2015 12:18:31 +0000 (13:18 +0100)]
Quota API is now compatible with keystone API v2
Before, the quota API used to fail to perform calls with specified
keystone API v2, because the keystone client used in code was set
to v3 and all quota operations used to assume that the user would
use only keystone API v3.
Now, we use the generic client, which discovers the version of the
keystone API, so depending on that, the quota API can perform
appropriate operations.
wangxiyuan [Mon, 14 Dec 2015 08:27:48 +0000 (16:27 +0800)]
Add pagination support to Qos specs
In Liberty release, we have added pagination to backups
and snapshot. There are still some work that hasn't been
done yet.
This patch add pagination support to Qos specs.
Patrick East [Thu, 17 Dec 2015 23:28:16 +0000 (15:28 -0800)]
Enhance the stats reported from the Pure Volume Drivers
This change provides some improvements for older scheduler hints and
stats along with a few new stats that can be used for filtering and
goodness functions. These new stats include:
Latency:
usec_per_read_op - Average arrival-to-completion time, measured in
microseconds, for a host read operation.
usec_per_write_op - Average arrival-to-completion time, measured in
microseconds, for a host write operation.
queue_depth - Average number of queued I/O requests.
IOPS:
reads_per_sec - Number of read requests processed per second.
writes_per_sec - Number of write requests processed per second.
Bandwidth
input_per_sec - Number of bytes read per second.
output_per_sec - Number of bytes written per second.
Metadata:
total_hosts - Total number of Purity hosts created.
total_snapshots - Total number of snapshots (includes pending
deletion).
total_pgroups - Total number of Protection Groups (includes
pending deletion).
Note: All of these stats are for the entire array and are not specific
to the Cinder volumes, snapshots, hosts, latency, etc.
As part of the new and improved stats the drivers will respect the
cinder.conf backend “reserved_percentage” option. Previously it was set
to 0.
Last but not least there is a new config option called
“pure_automatic_max_oversubscription_ratio”. This defaults to True, and
when enabled gives the older behavior of automatically calculating the
thin provisioning ratio which was allowed for the backend. If disabled
the driver will now respect the “max_over_subscription_ratio” config
option.
Patrick East [Thu, 17 Dec 2015 00:59:51 +0000 (16:59 -0800)]
Add config option to enable reporting discard
The way for a client of Cinder (read: Nova) to know whether or not it
can and should use the discard feature for the block device attachment
is to report back discard=True in the connection info. Previously a
driver would need to be updated to provide this functionality, which is
kind of a pain with so many drivers in Cinder.
This change adds a shared boolean config option called
‘report_discard_supported’ which can be set to enable reporting this
functionality to the caller of initialize_connection.
Jacob Gregor [Fri, 18 Dec 2015 16:27:02 +0000 (10:27 -0600)]
Storwize: Split up __init__ into separate files
This patch is one in a series of patches with the aim to
bring the storwize_svc driver in line with other san based
Cinder drivers.
Currently all the iSCSI and FC code are all together in a single
file. This patch goes into the __init__.py and splits it up into
storwize_svc_iscsi.py, storwize_svc_fc.py, and storwize_svc_common.py.
This new structure is consistent with other san based drivers.
In addition, tests were also updated to reflect the changes listed
above.
Since the driver has been split into two, we need to update how
to enable each new driver. The user now needs to set different
values for volume_driver, as shown below.
Tomoki Sekiyama [Fri, 18 Dec 2015 11:38:36 +0000 (20:38 +0900)]
Fix volume upload failure with glance_api_version=2
When the volume has additional image properties, upload-to-image
using glance API version 2 will fail with the following error.
Failed validation u'type' in schema[u'additionalProperties']:
{u'type': u'string'}
This is due to non core properties passed as a dict to the key
'properties'. It is valid in Image API v1, but the additional
properties must be passed just like core properties in v2.
abhiram moturi [Sat, 19 Dec 2015 17:31:10 +0000 (17:31 +0000)]
Fix bugs caused by porting to python3
In previous python version base64.encodestring() adds '\n'.
at the end. This is removed when we use oslo encode_as_text()
This causes a regression as we manually removed the last
character earlier. This fix removes manually deleting the
last character.
Kurt Martin [Wed, 16 Dec 2015 23:37:45 +0000 (15:37 -0800)]
Disable capabilities based on 3PAR licenses
The 3PAR firmware is now reporting which licenses are enabled on the
storage array. The 3PAR drivers will now use this information to
enable/disable standard stat reporting for thin provisioning,
QoS support and replication
The root cause is that these test cases try to use 8776 port,
but the port is used by c-api if the service exists.
This patch override default port number to avoid the error.
Anthony Lee [Sat, 5 Dec 2015 00:27:14 +0000 (16:27 -0800)]
3PAR: Implement un/manage snapshot support
Implements support for managing and unmanaging snapshots to
the HPE 3PAR FC and iSCSI drivers.
This patch now allows snapshots to be removed from OpenStack
management but still left on the 3PAR backend. Snapshots on
the 3PAR backend can also be managed by OpenStack.
Alex O'Rourke [Thu, 29 Oct 2015 22:04:32 +0000 (15:04 -0700)]
3PAR: Implement v2 replication (unmanaged)
This patch implements the unmanaged side of v2 replication in the HPE
3PAR driver.
Both sync and periodic replication modes are supported. Each
replication_device entry should have a replication_mode value set
to sync|periodic.
A volume type extra_spec value of replication:mode
should also be set. If replication:mode is periodic,
replication:sync_period should be set as well. Which replication_device
entry(s) are used is determined by the value of replication:mode set for
each volume type.
cinder.conf should have the replication config group:
Shay Halsband [Thu, 19 Nov 2015 13:51:31 +0000 (15:51 +0200)]
XtremIO: fix generic glance cache with XtremIO
* Identify the apropriate error for snapshot limit from the array
and raise the right error to invalidate the cache.
* Add an optional limit to the number of snapshot taken from the
volume representing a cached image
* Add unittest for snapshot limit
vCenter 6.0 added support for a new type of datastore called VVOL
datastore. A VVOL datastore represents a storage container which
is a logical grouping of virtual volumes in an array that supports
VVOL. A virtual disk in a VVOL datastore corresponds to a virtual
volume in the array. Since VVOL datastores are treated like VMFS
or NFS datastores by vCenter APIs, the changes in the VMDK driver
to support VVOL datastores are minimal.
This patch adds the following changes in the VMDK driver to support
VVOL datastores:
* Add VVOL datastore type to the list of allowed datastore types
* Skip VVOL datastore while creating a volume from a preallocated
glance image because it involves replacing the data file of a
temporary virtual disk with the downloaded preallocated image
which VVOL cannot support.
Samuel Matzek [Wed, 18 Nov 2015 19:40:42 +0000 (13:40 -0600)]
Preserve request id in Cinder logs
Several Cinder volume drivers make calls to get the admin context.
When the admin context is retrieved the user context and its request
ID is lost and all subsequent log entries have different request IDs.
The fix is to pass the overwrite parameter in Cinder's RequestContext
__init__ method to the parent oslo class.
Michał Dulko [Wed, 16 Dec 2015 15:19:42 +0000 (16:19 +0100)]
Add volume_extensions:quotas:delete to policy.json
Aformentioned entry was missing from default policy.json file, so the
call wasn't blocked for non-admin user. It was failing on Keystone
connection and resulted in 500 HTTP error. This addition fixes the
issue.
Michał Dulko [Wed, 16 Dec 2015 12:08:01 +0000 (13:08 +0100)]
Pass volume_id in request_spec for manage_existing
In order to _set_volume_state_and_notify in scheduler.manager to work
correctly and error out volume on failure we need to pass volume_id in
the request_spec from c-api to c-sch. This commit implements that and
adds check for it in the unit tests for manage_existing flow.
Apart from that it removes unnecessary test that was setting volume to
MagicMock(return_value=None), which isn't actually testing anything
(volume() will return None, but we're never doing calls on volume
object).
Ryan McNair [Wed, 16 Dec 2015 04:10:37 +0000 (04:10 +0000)]
Modify VO so that obj.get always defaults to None
Currently, CinderObjectDictCompat.get will default to None if a field
is not in the object, however if a field is present in the object
but the value is not yet set we get an error instead of None. To be
consistent with dict.get() we should default to None if the field
is not present or not set.