Utilities and helper functions.
Bases: object
A pluggable backend loaded lazily based on some value.
Bases: object
Bases: exceptions.Exception
Exception to break out and stop a LoopingCall.
The poll-function passed to LoopingCall can raise this exception to break out of the loop normally. This is somewhat analogous to StopIteration.
An optional return-value can be included as the argument to the exception; this return-value will be returned by LoopingCall.wait()
Bases: object
Generic userspace on-disk ringbuffer implementation.
Read the entire ringbuffer without consuming it.
Write some amount of data to the ringbuffer, discarding the oldest data as max_size is exceeded.
Advance overriden time using a datetime.timedelta.
Advance overriden time by seconds.
Convert a string representation of a bool into a bool value
Checks that obj is of type cls, and lets PyLint infer types.
Remove the overridden time.
Convert a value or list into a list of dicts
Helper method to execute command with optional retry.
:cmd Passed to subprocess.Popen. :process_input Send to opened process. :check_exit_code Defaults to 0. Raise exception.ProcessExecutionError
unless program exits with this code.
:attempts How many times to retry cmd. :run_as_root True | False. Defaults to False. If set to True,
the command is prefixed by the command specified in the root_helper FLAG.
:raises exception.Error on receiving unknown arguments :raises exception.ProcessExecutionError
Recursively flatten a nested dictionary.
Generate a random password from the supplied symbols.
Believed to be reasonably secure (with a reasonable password length!)
Returns a list of items matching the specified path.
Takes an XPath-like expression e.g. prop1/prop2/prop3, and for each item in items, looks up items[prop1][prop2][prop3]. Like XPath, if any of the intermediate results are lists it will treat each list item individually. A ‘None’ in items or any child expressions will be ignored, this function will not throw because of None (anywhere) in items. The returned list will contain no None values.
Returns a class from a string including module and class.
Returns an object including a module or module and class.
Return True if before is older than seconds.
For our purposes, a UUID is a string in canoical form:
aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
valid the address strictly as per format xxx.xxx.xxx.xxx. where xxx is a value between 0 and 255.
Returns iso formatted utcnow.
Return a dict in which the dictionaries keys are mapped to new keys.
If the Flags.monkey_patch set as True, this functuion patches a decorator for all functions in specified modules. You can set decorators for each modules using FLAGS.monkey_patch_modules. The format is “Module path:Decorator function”. Example: ‘nova.api.ec2.cloud:nova.notifier.api.notify_decorator’
Parameters of the decorator is as follows. (See nova.notifier.api.notify_decorator)
name - name of the function function - object of the function
Turn an iso formatted time back into a datetime.
Parses the given server_string and returns a list of host and port. If it’s not a combination of host part and port, the port element is a null string. If the input is invalid expression, return a null list.
Turn a formatted time back into a datetime.
Return two dicts, one with keys the other with everything else.
Override utils.utcnow to return a constant time.
Returns formatted utcnow.
Return a dict that only contains a subset of keys.
Synchronization decorator.
Decorating a method like so: @synchronized(‘mylock’) def foo(self, *args):
...
ensures that only one thread will execute the bar method at a time.
Different methods can share the same lock: @synchronized(‘mylock’) def foo(self, *args):
...
@synchronized(‘mylock’) def bar(self, *args):
...
This way only one of either foo or bar can be executing at a time.
The external keyword argument denotes whether this lock should work across multiple processes. This means that if two different workers both run a a method decorated with @synchronized(‘mylock’, external=True), only one of them will execute at a time.
Convert a complex object into primitives.
Handy for JSON serialization. We can optionally handle instances, but since this is a recursive function, we could have cyclical data structures.
To handle cyclical data structures we could track the actual objects visited in a set, but not all objects are hashable. Instead we just track the depth of the object inspections and don’t go too deep.
Therefore, convert_instances=True is lossy ... be aware.
Overridable version of utils.utcnow.
Timestamp version of our utcnow function.
Try to turn a string into utf-8 if possible.
Code is directly from the utf8 function in http://github.com/facebook/tornado/blob/master/tornado/escape.py
Sends a vpn negotiation packet and returns the server session.
Returns False on a failure. Basic packet structure is below.
x | cli_id |
x = packet identifier 0x38 cli_id = 64 bit identifier ? = unknown, probably flags/padding
x | srv_id | cli_id |
x = packet identifier 0x40 cli_id = 64 bit identifier ? = unknown, probably flags/padding bit 9 was 1 and the rest were 0 in testing
Escapes a string so it is valid within XML or XHTML.
Code is directly from the utf8 function in http://github.com/facebook/tornado/blob/master/tornado/escape.py