cinder.utils module¶
Utilities and helper functions.
- class ComparableMixin¶
Bases:
object
- DO_NOTHING¶
Class that literrally does nothing.
We inherit from str in case it’s called with json.dumps.
- class DoNothing¶
Bases:
str
Class that literrally does nothing.
We inherit from str in case it’s called with json.dumps.
- class Semaphore(limit)¶
Bases:
object
Custom semaphore to workaround eventlet issues with multiprocessing.
- as_int(obj, quiet=True)¶
- build_or_str(elements, str_format=None)¶
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.
- Parameters
elements (String or iterable of strings.) – Elements we want to join.
str_format (String.) – String to use to format the response.
- calculate_max_over_subscription_ratio(capability, global_max_over_subscription_ratio)¶
- calculate_virtual_free_capacity(total_capacity, free_capacity, provisioned_capacity, thin_provisioning_support, max_over_subscription_ratio, reserved_percentage, thin)¶
Calculate the virtual free capacity based on thin provisioning support.
- Parameters
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
- Returns
the calculated virtual free capacity.
- check_exclusive_options(**kwargs)¶
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.
- check_metadata_properties(metadata=None)¶
Checks that the volume metadata properties are valid.
- check_ssh_injection(cmd_list)¶
- check_string_length(value, name, min_length=0, max_length=None, allow_all_spaces=True)¶
Check the length of specified string.
- Parameters
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
- convert_str(text)¶
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
- create_ordereddict(adict)¶
Given a dict, return a sorted OrderedDict.
- execute(*cmd, **kwargs)¶
Convenience wrapper around oslo’s execute() method.
- get_blkdev_major_minor(path, lookup_for_file=True)¶
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.
- get_bool_param(param_string, params, default=False)¶
- get_file_gid(path)¶
This primarily exists to make unit testing easier.
- get_file_mode(path)¶
This primarily exists to make unit testing easier.
- get_file_size(path)¶
Returns the file size.
- get_log_levels(prefix)¶
- get_log_method(level_string)¶
- get_root_helper()¶
- if_notifications_enabled(f)¶
Calls decorated method only if notifications are enabled.
- is_blk_device(dev)¶
- last_completed_audit_period(unit=None)¶
This method gives you the most recently completed audit period.
- arguments:
- units: string, one of ‘hour’, ‘day’, ‘month’, ‘year’
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.
- returns: 2 tuple of datetimes (begin, end)
The begin timestamp of this audit period is the same as the end of the previous.
- limit_operations(func)¶
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.
- log_unsupported_driver_warning(driver)¶
Annoy the log about unsupported drivers.
- make_dev_path(dev, partition=None, base='/dev')¶
Return a path to a particular device.
>>> make_dev_path('xvdc') /dev/xvdc
>>> make_dev_path('xvdc', 1) /dev/xvdc1
- monkey_patch()¶
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)
- Parameters
name – name of the function
function – object of the function
- notifications_enabled(conf)¶
Check if oslo notifications are enabled.
- paths_normcase_equal(path_a, path_b)¶
- require_driver_initialized(driver)¶
Verifies if driver is initialized
If the driver is not initialized, an exception will be raised.
- Params driver
The driver instance.
- Raises
exception.DriverNotInitialized
- retry(retry_param, interval=1, retries=3, backoff_rate=2, wait_random=False, retry=<class 'tenacity.retry.retry_if_exception_type'>)¶
- class retry_if_exit_code(codes)¶
Bases:
tenacity.retry.retry_if_exception
Retry on ProcessExecutionError specific exit codes.
- robust_file_write(directory, filename, data)¶
Robust file write.
Use “write to temp file and rename” model for writing the persistence file.
- Parameters
directory – Target directory to create a file.
filename – File name to store specified data.
data – String data.
- semaphore_factory(limit, concurrent_processes)¶
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.
- service_expired_time(with_timezone=False)¶
- set_log_levels(prefix, level_string)¶
- tempdir(**kwargs)¶
- temporary_chown(path, owner_uid=None)¶
Temporarily chown a path.
- Params owner_uid
UID of temporary owner (defaults to current user)
- validate_dictionary_string_length(specs)¶
Check the length of each key and value of dictionary.