diff --git a/nova/utils.py b/nova/utils.py index 6ee945b03..7031c0d2e 100644 --- a/nova/utils.py +++ b/nova/utils.py @@ -45,7 +45,6 @@ from oslo_utils import importutils from oslo_utils import strutils from oslo_utils import timeutils from oslo_utils import units -import prettytable import six from six.moves import range @@ -385,23 +384,6 @@ def generate_password(length=None, symbolgroups=DEFAULT_PASSWORD_SYMBOLS): return ''.join(password) -def get_my_linklocal(interface): - try: - if_str = execute('ip', '-f', 'inet6', '-o', 'addr', 'show', interface) - condition = '\s+inet6\s+([0-9a-f:]+)/\d+\s+scope\s+link' - links = [re.search(condition, x) for x in if_str[0].split('\n')] - address = [w.group(1) for w in links if w is not None] - if address[0] is not None: - return address[0] - else: - msg = _('Link Local address is not found.:%s') % if_str - raise exception.NovaException(msg) - except Exception as ex: - msg = _("Couldn't get Link Local IP of %(interface)s" - " :%(ex)s") % {'interface': interface, 'ex': ex} - raise exception.NovaException(msg) - - # TODO(sfinucan): Replace this with the equivalent from oslo.utils def utf8(value): """Try to turn a string into utf-8 if possible. @@ -458,17 +440,6 @@ def get_shortened_ipv6_cidr(address): return str(net.cidr) -def get_ip_version(network): - """Returns the IP version of a network (IPv4 or IPv6). - - Raises AddrFormatError if invalid network. - """ - if netaddr.IPNetwork(network).version == 6: - return "IPv6" - elif netaddr.IPNetwork(network).version == 4: - return "IPv4" - - def safe_ip_format(ip): """Transform ip string to "safe" format. @@ -1296,63 +1267,3 @@ def isotime(at=None): def strtime(at): return at.strftime("%Y-%m-%dT%H:%M:%S.%f") - - -def print_dict(dct, dict_property="Property", dict_value='Value'): - """Print a `dict` as a table of two columns. - - :param dct: `dict` to print - :param dict_property: name of the first column - :param wrap: wrapping for the second column - :param dict_value: header label for the value (second) column - """ - pt = prettytable.PrettyTable([dict_property, dict_value]) - pt.align = 'l' - for k, v in sorted(dct.items()): - # convert dict to str to check length - if isinstance(v, dict): - v = six.text_type(v) - # if value has a newline, add in multiple rows - # e.g. fault with stacktrace - if v and isinstance(v, six.string_types) and r'\n' in v: - lines = v.strip().split(r'\n') - col1 = k - for line in lines: - pt.add_row([col1, line]) - col1 = '' - else: - pt.add_row([k, v]) - - if six.PY2: - print(encodeutils.safe_encode(pt.get_string())) - else: - print(encodeutils.safe_encode(pt.get_string()).decode()) - - -def validate_args(fn, *args, **kwargs): - """Check that the supplied args are sufficient for calling a function. - - >>> validate_args(lambda a: None) - Traceback (most recent call last): - ... - MissingArgs: Missing argument(s): a - >>> validate_args(lambda a, b, c, d: None, 0, c=1) - Traceback (most recent call last): - ... - MissingArgs: Missing argument(s): b, d - - :param fn: the function to check - :param arg: the positional arguments supplied - :param kwargs: the keyword arguments supplied - """ - argspec = inspect.getargspec(fn) - - num_defaults = len(argspec.defaults or []) - required_args = argspec.args[:len(argspec.args) - num_defaults] - - if six.get_method_self(fn) is not None: - required_args.pop(0) - - missing = [arg for arg in required_args if arg not in kwargs] - missing = missing[len(args):] - return missing