tacker.common.utils module¶
Utilities and helper functions.
- class tacker.common.utils.CooperativeReader(fd)¶
Bases:
object
An eventlet thread friendly class for reading in image data.
When accessing data either through the iterator or the read method we perform a sleep to allow a co-operative yield. When there is more than one image being uploaded/downloaded this prevents eventlet thread starvation, ie allows all threads to be scheduled periodically rather than having the same thread be continuously active.
- read(length=None)¶
Return the requested amount of bytes.
Fetching the next chunk of the underlying iterator when needed. This is replaced with cooperative_read in __init__ if the underlying fd already supports read().
- class tacker.common.utils.LimitingReader(data, limit, exception_class=<class 'tacker.common.exceptions.CSARFileSizeLimitExceeded'>)¶
Bases:
object
Limit Reader to read data past to configured allowed amount.
Reader designed to fail when reading image data past the configured allowable amount.
- read(i)¶
- class tacker.common.utils.MemoryUnit¶
Bases:
object
- UNIT_SIZE_DEFAULT = 'B'¶
- UNIT_SIZE_DICT = {'B': 1, 'GB': 1000000000, 'GiB': 1073741824, 'KiB': 1024, 'MB': 1000000, 'MiB': 1048576, 'TB': 1000000000000, 'TiB': 1099511627776, 'kB': 1000}¶
- static convert_unit_size_to_num(size, unit=None)¶
Convert given size to a number representing given unit.
If unit is None, convert to a number representing UNIT_SIZE_DEFAULT :param size: unit size e.g. 1 TB :param unit: unit to be converted to e.g GB :return: converted number e.g. 1000 for 1 TB size and unit GB
- static validate_unit(unit)¶
- tacker.common.utils.change_memory_unit(mem, to)¶
Change the memory value(mem) based on the unit(‘to’) specified.
If the unit is not specified in ‘mem’, by default, it is considered as “MB”. And this method returns only integer.
- tacker.common.utils.chunkiter(fp, chunk_size=65536)¶
Convert iterator to a file-like object.
Return an iterator to a file-like obj which yields fixed size chunks
- Parameters:
fp – a file-like object
chunk_size – maximum size of chunk
- tacker.common.utils.chunkreadable(iter, chunk_size=65536)¶
Wrap a readable iterator.
Wrap a readable iterator with a reader yielding chunks of a preferred size, otherwise leave iterator unchanged.
- Parameters:
iter – an iter which may also be readable
chunk_size – maximum size of chunk
- tacker.common.utils.convert_camelcase_to_snakecase(request_data)¶
Converts dict keys or list of dict keys from camelCase to snake_case.
Returns a dict with keys or list with dict keys, in snake_case. This method takes care only keys in a dict or dicts in a list. For simple list with string items, the elements which are actual values are ignored during conversion. And property value is not converted when key is additionalParams.
- Parameters:
request_data – dict with keys or list with items, in camelCase.
- tacker.common.utils.convert_snakecase_to_camelcase(request_data)¶
Converts dict keys or list of dict keys from snake_case to camelCase.
Returns a dict with keys or list with dict key, in camelCase. This method takes care only keys in a dict or dicts in a list. For simple list with string items, the elements which are actual values are ignored during conversion. Also, Snake case is a notation method that uses underscores to connect words. For that reason, if the initial word of the key in dict starts with ‘_’, this function ignore to convert the key. And property value is not converted when key is additional_params.
- Parameters:
request_data – dict with keys or list with items, in snake_case.
- Example:
Before:
[ {"vnf_lcm_op_occ_id" : "uuid"}, { "_links" : { "vnf_lcm_op_occ": {"href": "resource_link"} } } ]
After:
[ {"vnfLcmOpOccId": "uuid"}, { "_links": { "vnfLcmOpOcc": {"href": "resource_link"} } } ]
- tacker.common.utils.convert_string_to_snakecase(name)¶
Converts a string from camelCase to snake_case.
- tacker.common.utils.cooperative_iter(iter)¶
Prevent eventlet thread starvation during iteration
Return an iterator which schedules after each iteration. This can prevent eventlet thread starvation.
- Parameters:
iter – an iterator to wrap
- tacker.common.utils.cooperative_read(fd)¶
Prevent eventlet thread starvationafter each read operation.
Wrap a file descriptor’s read with a partial function which schedules after each read. This can prevent eventlet thread starvation.
- Parameters:
fd – a file descriptor to wrap
- tacker.common.utils.deep_update(orig_dict, new_dict)¶
- tacker.common.utils.deepgetattr(obj, attr)¶
Recurses through an attribute chain to get the ultimate value.
- tacker.common.utils.dict2tuple(d)¶
- tacker.common.utils.expects_func_args(*args)¶
- tacker.common.utils.find_config_file(options, config_file)¶
Return the first config file found.
We search for the paste config file in the following order: * If –config-file option is used, use that * Search for the configuration files via common cfg directories :retval Full path to config file, or None if no config file found
- tacker.common.utils.flatten_dict(data, prefix='')¶
- tacker.common.utils.get_auth_url_v3(auth_url)¶
- tacker.common.utils.get_hostname()¶
- tacker.common.utils.is_url(url)¶
- tacker.common.utils.is_valid_area(area)¶
Verify that the area attribute is valid.
Area attribute is an area-region pair. The value of this attribute should be a string in the format of “area@region”.
- tacker.common.utils.is_valid_ipv4(address)¶
Verify that address represents a valid IPv4 address.
- tacker.common.utils.is_valid_url(url)¶
- tacker.common.utils.is_valid_vlan_tag(vlan)¶
- tacker.common.utils.json_merge_patch(target, patch)¶
- tacker.common.utils.load_class_by_alias_or_classname(namespace, name)¶
Load class using stevedore alias or the class name.
Load class using the stevedore driver manager :param namespace: namespace where the alias is defined :param name: alias or class name of the class to be loaded :returns: class if calls can be loaded :raises ImportError: if class cannot be loaded
- tacker.common.utils.log_opt_values(log)¶
- tacker.common.utils.none_from_string(orig_str)¶
- tacker.common.utils.proj_root()¶
Return tacker’s project root dir.
It’s assumed abspath(__file__) is equals to ${PROJ_ROOT}/tacker/common. The result is like as “/opt/stack/tacker”.
- tacker.common.utils.str_to_bool(value)¶
Convert string to Bool
- tacker.common.utils.str_to_bytes(value)¶
Convert string to bytes
- tacker.common.utils.str_to_num(value)¶
Convert a string representation of a number into a numeric type.
- tacker.common.utils.subprocess_popen(args, stdin=None, stdout=None, stderr=None, shell=False, env=None)¶