Cory Stone [Tue, 8 Jul 2014 20:01:04 +0000 (15:01 -0500)]
Remove $sqlite_db from default database connection
sqlite_db used to be a config option in the DEFAULT section. This
allowed it to be used in config template substitution. Now that it is in
the database section, the template substitution fails with a
NoSuchOptError.
The quick fix is to just hardcode the default connection option to refer
directly to 'cinder.sqlite' instead.
Tom Fifield [Tue, 24 Jun 2014 13:59:20 +0000 (21:59 +0800)]
Enhance docstring for iscsi_helper
The helptext for the iscsi_helper option did not mention the
potential to use lioadm (or fake). This patch simply amends
the text so this functionality is more discoverable.
Tom Cammann [Fri, 4 Jul 2014 08:22:46 +0000 (09:22 +0100)]
sync periodic_task fix from incubator
Set the value of time the periodic task was last run to a multiple of
the spacing value rather than the actual last time run. This ensures
tasks runs regularly but avoids synchronizing that interval with other
nodes.
This patch also removes the coalescing of tasks which are _nearby_ (0.2
seconds away).
Changes:
periodic_task
------------- 4dbd3aa Make periodic tasks run on regular spacing interval 21249f1 Fix parenthesis typo misunderstanding in periodic_task
Zhiteng Huang [Fri, 27 Jun 2014 19:38:08 +0000 (03:38 +0800)]
Restore osapi_volume_workers config option
osapi_volume_worker was introduced when enabling multi-process API
support for Cinder. However, this config option was accidentally
dropped in commit 464277220ddb800ac69562649fde62e5ca9358c4
(https://review.openstack.org/#/c/67657/20/cinder/service.py).
As a result, the value in cinder.conf wouldn't be honored. This
change restore this config option.
Yaguang Tang [Mon, 23 Jun 2014 03:59:44 +0000 (11:59 +0800)]
Fix host option isn't set when using multiple backend
When using multiple volume backend, and volume driver is
cinder.volume.drivers.block_device.BlockDeviceDriver, host
option isn't set so a call to get volumes of a host returns none,
This patch changes to use self.host instead of self.configuration.host
Commit 971a63bd9cf675a00bce1244ec101577b5c17cac added a new
parameter 'optional_args' to execute method of QuotaReserveTask
and QuotaCommitTask. So the new parameter should be needed where
those Tasks are used. This changed volume create task flow to
provide the new parameter. We need the samiliar change to get_flow
method in cinder/volume/flows/manager/manage_existing.py
This patch checks to make sure that we don't
include the initiator_target_map in the return
of terminate_connection if there are volumes
still attached for a particular host. The
FibreChannel ZoneManager doesn't remove zones
if there isn't an initiator_target_map in the
return of terminate_connection.
If the rbd driver fails to connect to Ceph the exception
was not being properly caught resulting in the volume
remaining in the 'creating' state until the corresponding
task eventually times out (on top of the time it took
for the connect to fail).
Also added config option for rados connect timeout.
DocImpact: new config option 'rados_connect_timout'
Closes-Bug: 1211839
Change-Id: I5e6eaaaf6bed3e139ff476ecf9510ebe214a83f9
John Griffith [Sun, 29 Jun 2014 15:06:31 +0000 (09:06 -0600)]
Add cinder-manage cmd to update host column
If you deploy Cinder as per the default using the docs,
you can't later decide to add backends using the
multi-backend functionality. The reason is that multi-backend
is implemented by appending a backend-name to the host entry.
So if you convert the config to multi-backend the hostname
for any volumes that you have created are no longer
associated with a valid volume-driver (ie you can no
longer perform operations including delete on these
volumes).
In addition, in the case of using a SAN attached backend if
one redeploys their cinder-volume service to another node
they'll have the same issue.
This patch adds a cinder-manage command that will go through
volumes that are located on a specified host and update
the host column on each of them.
Matt Riedemann [Fri, 27 Jun 2014 16:50:56 +0000 (09:50 -0700)]
Sync processutils from oslo with deps
The main target for the sync is to pick up the get_worker_count()
method in commit 85f178489a128a04a7ee3ed44018403caa109ef0 so that we can
set osapi_volume_workers equal to the number of CPUs on the host.
Changes:
processutils
------------ 85f1784 Move nova.utils.cpu_count() to processutils module cdcc19c Mask passwords that are included in commands 8a0f567 Remove str() from LOG.* and exceptions 51778f9 Allow passing environment variables to execute() fcf517d Update oslo log messages with translation domains af41592 Catch OSError in processutils f773ea2 Fix i18n problem in processutils module 8b2b0b7 Use hacking import_exceptions for gettextutils._ 3b71f46 Fixed misspellings of common words 12bcdb7 Remove vim header a4dab73 Correct execute() to check 0 in check_exit_code
importutils
----------- 1173e46 Remove ValueError when accessing sys.modules
jsonutils
--------- 0d7296f Add kwargs to jsonutils.load(s) functions
log
--- 109e325 Use oslo.messaging to publish log errors de4adbc pep8: fixed multiple violations eac71f5 Fix common.log.ContextFormatter for Python 3 d78b633 Fixes a simple spelling mistake 621d831 always log a traceback in the sys.excepthook 90ae24b Remove redundant default=None for config options af36c2a Fix logging setup for Python 3.4 cdcc19c Mask passwords that are included in commands
strutils
-------- 8a0f567 Remove str() from LOG.* and exceptions fd18c28 Fix safe_encode(): return bytes on Python 3 302c7c8 strutils: Allow safe_{encode,decode} to take bytes as input
timeutils
--------- 250cd88 Fixed a new pep8 error and a small typo
The following changes are included with this patch:
-> 18f2bc1 Enforce unicode json output for jsonutils.load[s]()
--> cinder/openstack/common/jsonutils.py
Zhiteng Huang [Tue, 24 Jun 2014 07:59:10 +0000 (15:59 +0800)]
Bump minimum hacking version to 0.9.2
Take advantage of newer version hacking to automate a few style checkings.
A change included this hacking update was proposed by OpenStack Proposal Bot
in earlier patch sets (before 19) but somehow it was missed in latter
proposals. (https://review.openstack.org/#/c/96206/)
Modified/New rules in 0.9.2:
Rule changes:
* Report E129 instead of E125 for visually indented line with same indent
* as next logical line.
* Report E265 for space before block comment.
* Report E713 and E714 when operators ``not in`` and ``is not`` are
recommended (taken from hacking).
* Report E131 instead of E121 / E126 if the hanging indent is not consistent
within the same continuation block. It helps when error E121 or E126 is
in the ``ignore`` list.
* Report E126 instead of E121 when the continuation line is hanging with
extra indentation, even if indentation is not a multiple of 4.
- Dropped H901,H902 as those are now in pep8 and enforced by E713 and E714
New rules:
+ H104 File contains nothing but comments
+ H305 imports not grouped correctly
+ H307 like imports should be grouped together
+ H405 multi line docstring summary not separated with an empty line
+ H904 Wrap long lines in parentheses instead of a backslash
These rules (including changed rules) are all disabled in this change if they
caues any pep8 checking failure, and will be turned on in follow-up patches
if considered useful.
Original commit message in openstack/requirements:
Hacking 0.9.1 was out for a while (hacking 0.9.0 had a minor bug in it, so its
blacklisted), and we want to start supporting projects to migrate over
to 0.9.x. Expand the upper bound to allow 0.9.x while still
supporting 0.8.x series so we keep the old version in our mirrors as to
not break anything.
Eric Harney [Thu, 10 Apr 2014 16:57:50 +0000 (12:57 -0400)]
Fix dropped exception for create_export in vol manager
If self.driver.create_export() fails, model_update is
False and this exception is therefore not logged,
causing things to break later in the execution path in
unexpected ways.
ling-yun [Wed, 25 Jun 2014 02:40:38 +0000 (10:40 +0800)]
Support Volume Num Weighter
Currently cinder support choosing volume backend according to
free_capacity and allocated_capacity. Volume Num Weighter is
that scheduler could choose volume backend based on volume number
in volume backend, which could provide another mean to help
improve volume-backends' IO balance and volumes' IO performance,
see details in ref [1] and [2].
Tom Fifield [Thu, 26 Jun 2014 06:18:59 +0000 (14:18 +0800)]
Fix docstring for snapshots API
For some reason, the snapshots controller class' introductory
docstring stated that it was the volume API controller.
This patch changes it to say:
"The Snapshots API controller for the OpenStack API."
'with session.begin()' makes some operations in one transaction.
session.begin() returns a transaction instance, then does some operations,
and will commit or rollback automatically before leaving the block.
ModelBase.save() always submit a commit, and that is not expected.
When we get a persistent object from database, we just modify the
object inside of block 'with session.begin()' and sqlalchemy will
update it, don't need method session.add() or ModelBase.save().
Tomoki Sekiyama [Wed, 25 Jun 2014 21:22:32 +0000 (17:22 -0400)]
Add cgroups related commands to rootwrap filters
Adds rootwrap filters to allow commands to create/setup cgroups and
to put commands into cgroups in order to limit bandwidth usage,
that are used in setup_blkio_cgroup() (volume/utils.py).
Joshua Harlow [Wed, 25 Jun 2014 18:24:02 +0000 (11:24 -0700)]
Use a task subclass instead of a functor + task wrapper
Instead of using a functor that activates the scheduler driver
instead incorporate and use a task subclass, this avoids the less
meaningful information that is presented when a functor is used
as well as allows for a more straightforward path for future
subclassing and derivations of work.
Thang Pham [Thu, 29 May 2014 03:07:49 +0000 (23:07 -0400)]
GlusterFS: Handle deletion of snapshot with no backing file
If a glusterfs volume is in-use, nova is called to delete a
volume snapshot. It is possible for a timeout to occur, since
cinder is polling for nova task progress. In such case, a
GlusterfsException is thrown, but nova continues to process the
snapshot delete and commits the changes. Cinder is not aware of
this, and the actual snapshot entry in cinder is prevented from
being deleted, since no backing file exists for the out-of-sync
snapshot. This patch allows a snapshot with no backing file to
be deleted from cinder and updates the volume info file.
Eiichi Aikawa [Mon, 19 May 2014 23:43:13 +0000 (08:43 +0900)]
Fixed data copy issue of volume/driver.py
I found data copy issue on __init__ of ISERDriver class.
Some settings for iser should be copied to iscsi's.
But iser_port value was copied not to iscsi_port but to iser_port.
This patch will fix this issue as to be copied to iscsi_port.
Joshua Harlow [Mon, 9 Jun 2014 23:20:31 +0000 (16:20 -0700)]
Remove check_volume_az_zone functor and associated passing
To make it easier to understand why a volume is being rejected
when its availability zone is not allowed remove the functor
that does this check and use the set of valid availability zones
as the master list of valid zones that can be used (and use this
inside the task that validates this data).
Eric Harney [Mon, 14 Apr 2014 18:27:06 +0000 (14:27 -0400)]
Minor cleanups in test_volume
Fix incorrect parameter order for mock decorators. This
just happened to work because they were used in the same way
in test_reserve_volume_success().
Remove incorrect comments. These seem to mix up 'error' versus
'error_deleting' for expected states -- but the assertEqual args
are sufficiently explanatory by themselves.
git-harry [Mon, 23 Jun 2014 14:47:34 +0000 (15:47 +0100)]
Fix retyping attached volumes requiring migration
Modifies retype method so that volume db entry only updated if the
volume isn't migrated.
The migrate_volume_completion method is made responsible for detaching
the old volume and attaching the new one. This takes the requirement
from nova because the calls need to be done in a certain order which
isn't guaranteed when performed by nova.
attach_volume now marks the migration_status as complete because it is
the final action by cinder.
Sasikanth [Mon, 23 Jun 2014 14:10:12 +0000 (19:40 +0530)]
Update _resize_volume_file() to support appropriate permissions
ibmnas driver inherits _set_rw_permissions_for_all() from nfs.py
which sets 666 to the volumes. Changes are expected to be made in
nfs.py such that it sets 600 or 660 permissions, by doing so
ibmnas driver fails performing the operation _resize_volume_file()
While creating a volume from stream-optimized image, the adapter type
in the image meta-data and the profile in the volume type extra spec
are ignored. This change fix those missing parameters.
The current create backing methods do not support specifying an adapter
type for the backing VM. These methods always create a backing VM with
a single disk and LSI logic adapter. This change adds optional parameters
to create backing methods so that a backing VM can be created without a
disk or with a specific adapter type.
When creating a volume from a snapshot on Windows, a shadow copy
volume is exported as an iSCSI disk. The issue is that this export
is readonly and cannot be mounted to instances.
As this export cannot be modified, to make the new volume usable,
the according image must be moved to a new path and imported .
Fixes cinder volume create on Windows Server 2012 R2
Windows Server 2012 R2 does not support vhd images as iSCSI disks,
requiring VHDX images. For this reason, the cinder driver fails to
create volumes. For the moment, the default format is vhd.
On WSS 2012 R2, we should use vhdx images as default.
This patch introduces vhd/vhdx related methods for both v1 and v2
wmi virtualization namespaces.
When creating a volume from an image, after the volume is created,
qemu-img is supposed to copy the downloaded image to the volume.
This fails as the disk is enabled and is not accessible.
Also, Windows does not support using dynamic vhds as iSCSI disks
and as qemu-img cannot create fixed vhd images, there must be an
intermediate conversion before importing the disk.
In order to be able to modify an iSCSI disk, it must be disabled
first.
Eric Guo [Mon, 30 Dec 2013 11:36:49 +0000 (19:36 +0800)]
Use oslo-incubator module units
There is Cinder's version units module, that looks good. Considering
consistency with other projects like Nova, Glance, Cinder would be
better to use oslo-incubator's version.
Joshua Harlow [Sat, 21 Jun 2014 01:54:55 +0000 (18:54 -0700)]
Attach log listeners to other engines
Attach the created task/flow/engine listener to
the other usages of taskflow that exist in cinder
so that those locations can also benefit from
the same logging of state and activity.
Juan Manuel Olle [Mon, 28 Apr 2014 18:09:29 +0000 (15:09 -0300)]
Adding filter options to backup list
This patch adds filter options to backup list.
Like cinder list, now cinder backup-list accept
parameters.
This blueprint is complimented with the client part
John Griffith [Wed, 11 Jun 2014 22:43:41 +0000 (22:43 +0000)]
Remove global conf settings from iscsi helper
This "intermediate" iscsi helper pulls all of it's
config settings from the global config. This is fine
if you only have a single backend, but if you do
multi-backend it puts things in a bad state where some
of the backend specific settings are picked up but
others are not (for example iscsi_ip_address).
This change modifies methods like create_export in
the volume/iscsi helper to take the drivers version
of the config settings as a parameter and use those
instead of setting off of the global values.
Long term there's a lot of cleanup surrounding our
inheritance model and especially the iscsi helpers.
We can address that going forward but here we just want
to fix the bug in the safest way possible.