Utilities and helper functions for all Cinder code.
This file is for utilities useful in all of Cinder, including cinder-manage, the api service, the scheduler, etc.
Code related to volume drivers and connecting to volumes should be placed in volume_utils instead.
Bases: object
Bases: str
Class that literrally does nothing.
We inherit from str in case it’s called with json.dumps.
Bases: object
Custom semaphore to workaround eventlet issues with multiprocessing.
Builds a string of elements joined by ‘or’.
Will join strings with the ‘or’ word and if a str_format is provided it will be used to format the resulted joined string. If there are no elements an empty string will be returned.
elements (String or iterable of strings.) – Elements we want to join.
str_format (String.) – String to use to format the response.
Calculate the virtual free capacity based on thin provisioning support.
total_capacity – total_capacity_gb of a host_state or pool.
free_capacity – free_capacity_gb of a host_state or pool.
provisioned_capacity – provisioned_capacity_gb of a host_state or pool.
thin_provisioning_support – thin_provisioning_support of a host_state or a pool.
max_over_subscription_ratio – max_over_subscription_ratio of a host_state or a pool
reserved_percentage – reserved_percentage of a host_state or a pool.
thin – whether volume to be provisioned is thin
the calculated virtual free capacity.
Checks that only one of the provided options is actually not-none.
Iterates over all the kwargs passed in and checks that only one of said arguments is not-none, if more than one is not-none then an exception will be raised with the names of those arguments who were not-none.
Checks that the volume metadata properties are valid.
Check the length of specified string.
value – the value of the string
name – the name of the string
min_length – the min_length of the string
max_length – the max_length of the string
Remove file locks used by Cinder.
This doesn’t take care of driver locks, those should be handled in driver’s delete_volume method.
Convert to native string.
Convert bytes and Unicode strings to native strings:
convert to bytes on Python 2: encode Unicode using encodeutils.safe_encode()
convert to Unicode on Python 3: decode bytes from UTF-8
Given a dict, return a sorted OrderedDict.
Convenience wrapper around oslo’s execute() method.
Get ‘major:minor’ number of block device.
Get the device’s ‘major:minor’ number of a block device to control I/O ratelimit of the specified path. If lookup_for_file is True and the path is a regular file, lookup a disk device which the file lies on and returns the result for the device.
This primarily exists to make unit testing easier.
This primarily exists to make unit testing easier.
Returns the file size.
Calls decorated method only if notifications are enabled.
This method gives you the most recently completed audit period.
Periods normally begin at the beginning (UTC) of the period unit (So a ‘day’ period begins at midnight UTC, a ‘month’ unit on the 1st, a ‘year’ on Jan, 1) unit string may be appended with an optional offset like so: ‘day@18’ This will begin the period at 18:00 UTC. ‘month@15’ starts a monthly period on the 15th, and year@3 begins a yearly one on March 1st.
The begin timestamp of this audit period is the same as the end of the previous.
Decorator to limit the number of concurrent operations.
This method decorator expects to have a _semaphore attribute holding an initialized semaphore in the self instance object.
We can get the appropriate semaphore with the semaphore_factory method.
Return a path to a particular device.
>>> make_dev_path('xvdc')
/dev/xvdc
>>> make_dev_path('xvdc', 1)
/dev/xvdc1
Patches decorators for all functions in a specified module.
If the CONF.monkey_patch set as True, this function patches a decorator for all functions in specified modules.
You can set decorators for each modules using CONF.monkey_patch_modules. The format is “Module path:Decorator function”. Example: ‘cinder.api.ec2.cloud:’ cinder.openstack.common.notifier.api.notify_decorator’
Parameters of the decorator are as follows. (See cinder.openstack.common.notifier.api.notify_decorator)
name – name of the function
function – object of the function
Check if oslo notifications are enabled.
Bases: tenacity.retry.retry_if_exception
Retry on ProcessExecutionError specific exit codes.
Robust file write.
Use “write to temp file and rename” model for writing the persistence file.
directory – Target directory to create a file.
filename – File name to store specified data.
data – String data.
Get a semaphore to limit concurrent operations.
The semaphore depends on the limit we want to set and the concurrent processes that need to be limited.
Temporarily chown a path.
UID of temporary owner (defaults to current user)
Check the length of each key and value of dictionary.
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.