Bob-OpenStack [Mon, 24 Nov 2014 02:11:22 +0000 (18:11 -0800)]
Update volume driver for Huawei storage system
This driver is similar to the previous one, but contains
the following differences:
1. Remove smart tier support because that our product does not
support smart tier any more. 18000 does not support smart
tier, so this has no problem with 18000 series.
2. Update qos support implementation.
3. Add synchronization because that our tests show that when we
create volumes or snapshots in batch in a shell script with cli
command, our array may occur error.
Certification test result for Huawei storage drivers:
https://bugs.launchpad.net/cinder/+bug/1399038
Gloria Gu [Fri, 5 Dec 2014 01:59:10 +0000 (17:59 -0800)]
Added volume type description for volume type API
- Added the following APIs and tests for volume type
* update volume type
PUT http://<openstackhost>:8776/v2/${tenant_id}/types/${vol_type_id}
body
{
"volume_type": {
"description":"updated_desc"
}
}
** user can update description.
** if update description, descripiton can be empty spaces.
** description can not be None
** only admin can access this API
*get default volume type
GET http://<openstackhost>:8776/v2/${tenant_id}/types/default
** if default_volume_type is specified in cinder.conf and is valid,
the default volume type will be returned.
** if default_volume_type is not specified in cinder.conf or is not
valid, it will return 404 with a message saying default volume type
can not be found.
- Updated the following APIs and tests for volume type
* create volume type should take description as an option.
* list volume types or get one volume type will include description for
volume type if the description is not None.
- Upgraded the database cinder on table volume_types to include
the description. database upgrade/downgrade scripts and tests
are added.
- update API should send a notification to the message bus when
updating succeeds or fails.
- as of 12/5/2014, had to rebase with master which has volume type
access change, I also fixed the tests in that area in order to get
the unit tests pass.
Kurt Martin [Mon, 15 Dec 2014 23:14:42 +0000 (15:14 -0800)]
Fix 3PAR driver hang on SSH calls
In removing the 3PAR driver local file locks, part of the fix included
making a new SSH connection for each call in the hp3parclient as
oppose to leaving a connection open. Older hp3parclients(3.1.1 and
later) will result in the SSH calls hanging at driver initilization time.
This patch will now check against the correct minimum hp3parclient version
and remove the need for checking of the SSH args version since the minimum
hp3parclient is now greater than 3.1.1
Closes-Bug: #1402115
Anton Arefiev [Mon, 15 Dec 2014 10:33:38 +0000 (12:33 +0200)]
Delete default volume size 100M in drivers
There is check: if volume size == 0 we set default value to 100M,
it uses only in tests and it's little bit confusing.Use code only
for tests in drivers is bad practice.
Also the create volume flow already won't let user to create
a volume with size 0. So it was decided to remove this check.
Peter Pentchev [Wed, 3 Dec 2014 12:49:23 +0000 (14:49 +0200)]
Add the StorPool block storage driver.
StorPool is distributed data storage software running on standard x86
servers. StorPool aggregates the performance and capacity of all drives
into a shared pool of storage distributed among the servers. Within
this storage pool the user creates thin-provisioned volumes that are
exposed to the clients as block devices. StorPool consists of two parts
wrapped in one package - a server and a client. The StorPool server
allows a hypervisor to act as a storage node, while the StorPool client
allows a hypervisor node to access the storage pool and act as a compute
node. In OpenStack terms the StorPool solution allows each hypervisor
node to be both a storage and a compute node simultaneously.
To make full use of StorPool's native network communication protocol,
the Nova compute nodes will need to use the StorPool libvirt volume
attachment driver, nova.virt.libvirt.storpool.LibvirtStorPoolVolumeDriver.
Erlon R. Cruz [Thu, 11 Dec 2014 10:46:31 +0000 (08:46 -0200)]
Fix HNAS driver confusing error message
The error message shown when the parser finds a parser error
says, 'file not found' which causes confusion on the user when
he/she needs to debug the real cause o the problem. This patch fix
this by testing first if the file exist and then throwing a
proper error message.
Tom Swanson [Wed, 3 Dec 2014 19:24:39 +0000 (13:24 -0600)]
Add Support for Dell Storage Center
This driver implements cinder FC and iSCSI volume drivers.
The file dell_storagecenter_api.py is called to interface with the
Dell Storage Center backend via a REST interface.
Dell_storagecenter_common.py is the base class implementation with
dell_storagecenter_fc.py and dell_storagecenter_iscsi.py being providing
fc and iscsi specific support respectivly.
Rushil Chugh [Tue, 18 Nov 2014 19:37:17 +0000 (14:37 -0500)]
Ensure that lun_id is an int for NetApp Drivers
Various NetApp drivers were treating the lun_id as a string
rather than an int. This was causing attempts to mount NetApp
volumes to Hyper-V nodes to fail as they were checking an integer
type against a unicode type which would fail.
This change casts result_lun to an integer after the value has
gone through the ssh injection attack check. This way Hyper-V
is able to verify if the found LUN is the target LUN, enabling
mounting of NetApp volumes to Hyper-V.
This change also refactors initialize_connection into some helper
methods so as to enable simpler unit testing of the patchset.
Ivan Kolodyazhny [Wed, 29 Oct 2014 13:52:54 +0000 (15:52 +0200)]
DB migration tests
Refactored migration tests to use OpportunisticTestCase, removed
unused code and ``test_migrations.conf`` file.
The main feature of this approach is to create a new database with
random name for each migration test. This will avoid migration tests of
race conditions and reduce tests intersection. After this change, database
``openstack_citest`` will be used only for initial connection to the database.
``test_migrations.conf`` file not required anymore, because we create test
database for migration test, so we no longer need to keep database credentials.
Trung Trinh [Mon, 15 Dec 2014 06:23:34 +0000 (20:23 +1400)]
Correct default service_name for nova_catalog*_info config option
The default service_name in config option (nova_catalog_info and
nova_catalog_admin_info) was mistakenly put as 'nova'. Consequently,
it is impossible to invoke novaclient APIs from Cinder code without
changing the default value of those config options.
The correct service_name defined in Keystone's config file
"/etc/keystone/default_catalog.templates" is:
catalog.RegionOne.compute.name = Compute Service.
This change replaces 'nova' with 'Compute Service' for default value
of 'nova_catalog*_info' config options.
Clinton Knight [Thu, 9 Oct 2014 14:56:25 +0000 (10:56 -0400)]
FibreChannel drivers for NetApp Data ONTAP storage controllers
This patch adds FibreChannel support to NetApp's Cinder drivers
for Data ONTAP (7-mode and Cluster-mode). The drivers make full
use of Cinder's FibreChannel zone manager.
Silvan Kaiser [Wed, 26 Nov 2014 16:29:01 +0000 (17:29 +0100)]
First version of Cinder driver for Quobyte USP
Supported Operations are:
- Create Volume
- Delete Volume
- Attach Volume
- Detach Volume
- Extend Volume
- Create Snapshot
- Delete Snapshot
- List Snapshots
- Create Volume from Snapshot
- Create Volume from Image
- Create Volume from Volume (Clone)
- Create Image from Volume
The driver uses a file-based interface to access the configured
Quobyte volume. Therefore, the driver is similar to the existing
drivers NFS and GlusterFS.
Due to the similarities, I reused the snapshot code from the GlusterFS
driver. Gluster, thanks for that! I've kept the "Red Hat" copyright in
the header to credit you properly.
All driver functions are covered by unit tests. Snapshot tests were
taken over from test_glusterfs.py. New tests are written using "Mock"
instead of "mox".
John Griffith [Wed, 3 Dec 2014 17:44:49 +0000 (10:44 -0700)]
Fix use of invalid variable in tgt exists check
I added a check for tgt already exists here:
https://review.openstack.org/#/c/138173/
But, that was wrong, the err value is never going to be
set because of the exception. This should have inspected
the exception object and checked against it.
So this patch makes it do what it was supposed to do.
Gloria Gu [Wed, 10 Dec 2014 01:56:09 +0000 (17:56 -0800)]
Report better capacity info for a limitless 3par cpg
This change has the following improvement:
1. Uses getCPGAvailableSpace from hp3parclient to report
free_capapcity for a limitless cpg.
2. Uses cpg's SDUsage.usedMiB + UsrUsage.usedMiB + free_capacity
to calculate the total_capacity for a limitless cpg. This is the
best we can do for a limitless cpg.
Currently, the select_datastore method is called with an empty list of
ESX hosts. This causes the method to retrieve all the hosts in vCenter
as candidates for selecting a datastore. The reference to a retrieved
host is stored in attribute 'obj'. Some of the future bug fixes will
need to invoke this method with reference to a single ESX host. Such
invocations will fail with attribute error: 'val instance has no
attribute 'obj''. This patch fixes the attribute error.
Brianna Poulos [Fri, 29 Aug 2014 21:19:29 +0000 (17:19 -0400)]
Add support for backup encryption metadata
This modification allows the encryption key UUID field, which
has been added to the volume table, to remain valid when encrypted
volumes are backed up and then restored, which enables the restored
volume to be accessible and encrypted. This is related to patch
https://review.openstack.org/#/c/39573/, except that it uses the
backup metadata support recently added in patch
https://review.openstack.org/#/c/51900/ rather than modifying the
backup api.
Mike Mason [Thu, 4 Dec 2014 09:17:57 +0000 (09:17 +0000)]
Implementing the use of _L’x’/i18n markers
Placing the _Lx markers back into the code. No other cleaner solution has
has been implemented. Patches will be submitted in a series of sub
directories and in a fashion that is manageable.
eighth commit of this kind
This is the last run through to pick up the ones that were missed
Tom Barron [Wed, 26 Nov 2014 21:01:14 +0000 (16:01 -0500)]
Fixes intermittent NFS driver mount failure
During cinder volume driver initialization, NFS drivers often
fail to mount the NFS share backing their volumes, complaining
that the share in question is 'busy or already mounted'.
This commit introduces a retry loop around the ensure_mounted()
call inside set_nas_security_options() so that if there is contention
between volume process and backup process mounting the same share
the driver will not be stopped from loading.
Thang Pham [Fri, 20 Jun 2014 04:30:36 +0000 (00:30 -0400)]
Use pbr entry_points to setup the cinder scripts
The following patch changes how cinder scripts are
installed and unit tested. This patch moves all the
cinder scripts from bin into cinder/cmd and creates
entry_points for those scripts in setup.cfg. When
cinder is installed, these scripts will be installed
under /usr/local/bin by pbr.
DocImpact: 'host' config option for multiple-storage backends
in cinder.conf is renamed to 'backend_host' in order to avoid
a naming conflict with the 'host' to locate redis
Change-Id: If82cf0c58d765bf79dbf721ca95c10a468940cab
Implements: blueprint unit-test-cases-for-cinder-scripts
Juan Zuluaga [Thu, 13 Nov 2014 15:46:37 +0000 (10:46 -0500)]
ZFSSA iSCSI driver should support extra specs
Support for extra specs at volume creation time,
would allow more flexibility to create custom volumes.
The following scoped keys are supported:
-zfssa:volblocksize
-zfssa:sparse
-zfssa:compression
-zfssa:logbias
John Griffith [Fri, 5 Dec 2014 04:03:04 +0000 (21:03 -0700)]
Remove the cinder.conf.sample file
We removed the conf_uptodate checks however we didn't
remove the cinder.conf.sample file, but we should.
Now that we're not checking it, it's guaranteed that it will
most certainly be "wrong". So, this patch removes it, we'll
update the README.conf.sample file if/when we have an auto
published version available.
That change modified the methods to create/delete hosts in purity. The
REST API url was incorrectly pointing to /host/<host_name>/volume
instead of /host/<host_name>
This commit fixes the url and adds in unit tests to prevent this type of
regression in the future.
Xing Yang [Fri, 5 Dec 2014 22:55:28 +0000 (17:55 -0500)]
Fix a clone volume problem in VMAX driver
If the source volume contains meta members of different sizes,
create cloned volume will fail with error "ERROR_FAMILY_NOT_SUPPORTED".
This patched fixed this problem.
Anthony Lee [Thu, 4 Dec 2014 23:46:53 +0000 (15:46 -0800)]
Fix 3PAR driver attach error when host name missing
In some cases an error was being thrown by the 3PAR driver
when the 'name' property returned from queryHost was
missing. This change adds a check so that the driver
reacts properly when this occurs. Also removed an unneeded
warning output that was still in the FC driver.
This patch is related to this merged bug fix:
https://review.openstack.org/#/c/138212/
This patch fixes the volume migration related issue
in which the volume became unusable after successfull inbound
migration due to volume id usage instead of name_id.
Zhiteng Huang [Fri, 5 Dec 2014 10:01:53 +0000 (18:01 +0800)]
Allow HostState to handle empty capabilities
In some cases, where the capabilities reported from driver is
emtpy, scheduler would raise exception thus unable to correctly
handle scheduling request even when other backend candidates are
able to fulfill the request. This change does some modifications
to HostState so that it is able to handle empty capabilities.
In the long-term, OpenStack projects should use oslo.context as the base
class for their custom contexts. This enables the use of
application-agnostic tools, e.g. global logging configurations. See
http://specs.openstack.org/openstack/oslo-specs/specs/juno/app-agnostic-logging-parameters.html
This patch syncs the latest context module from oslo-incubator and use
it as the base class for Cinder RequestContext. The goal is to clean up
Cinder code, and to be ready for the first oslo.context release.
Eric Harney [Thu, 9 Oct 2014 20:26:18 +0000 (16:26 -0400)]
Remove lio_initiator_iqns
This is a holdover from the initial LIO implementation
which did not manage ACLs sufficiently. This is
unneeded now and handled by: 67dd248 LIO iSCSI initiator ACL auto-config
Jay S. Bryant [Wed, 3 Dec 2014 18:20:05 +0000 (12:20 -0600)]
Bring cinder up-to-date with new oslo libraries
New versions of the oslo libraries have been released and
this has broken Cinder in the gate. The first issue is
causing all unit tests to fail with the message:
"NoSuchOptError: no such option: fake_rabbit"
This was due to commit bcb3b23b8f6e7d01e38fdc031982558711bb7586
removing that option from oslo/messaging/_drivers/impl_rabbit.py .
We were trying to set that option in cinder/tests/conf_fixture.py .
I have removed that code.
Second, the update has made etc/cinder.conf.sample go out of date
again. I am merging the changes to bring it back up to date.
This change also disables execution of check_uptodate.sh execution
from the gate.
If a storage profile is part of a volume type, it should be used as a
requirement for datastore selection-- only datastores which satisfy the
storage profile should be used for backing VM creation. Currently in
retype API, if storage profiles in old and new volume types are same,
it is not passed as a requirement. Hence, the backing VM corresponding
to the volume might end up in a datastore which doesn't satisfy the
storage profile. This patch fixes the problem.
The change is being reverted as it broke the Brocade FC SAN lookup
functionality. The change uses configuration options from
ssh_utils that are not initialized when the Brocade driver is
run causing an exception to be thrown complaining that
CONF.ssh_hosts_key_file is used before it is initialized.
The right solution is to change the Brocade driver to use ssh_utils to
make SSH connections.
amoturi [Wed, 8 Oct 2014 04:32:28 +0000 (00:32 -0400)]
Add ability to zfssa driver to create multiple initiator groups
Currently the zfssa driver only support one initiator group. This
is causing broken scsi devices when detaching volumes from instances.
This fix adds support for configuring multiple initiator groups.
git-harry [Tue, 2 Dec 2014 17:41:20 +0000 (17:41 +0000)]
Improve testing of cinder/utils.py
This commit increases code coverage of cinder/utils.py as well as
removing any use of mox and replacing tests that are more functional in
nature with tests more focussed on testing the function in
cinder/utils.py.
Mehdi Abaakouk [Tue, 2 Dec 2014 09:04:54 +0000 (10:04 +0100)]
Fix rpc initialization of cinder-manager volume
VolumeCommands.rpc_client is a property, so when the oslo.config argparser
introspect the class VolumeCommands at module loading time, it launch the
method. But the method depends on a initialized oslo.config.cfg.CONF object,
but this one is not yet initialized.
So don't use python property, to initialize the rpc_client correctly.