Merge "osc-lib: parseractions"
This commit is contained in:
		@@ -152,13 +152,13 @@ the plugin commands:
 | 
			
		||||
.. code-block:: python
 | 
			
		||||
 | 
			
		||||
    # osc-lib interfaces available to plugins:
 | 
			
		||||
    from osc_lib.cli import parseractions
 | 
			
		||||
    from osc_lib import exceptions
 | 
			
		||||
    from osc_lib import logs
 | 
			
		||||
    from osc_lib import utils
 | 
			
		||||
 | 
			
		||||
    # OSC common interfaces available to plugins:
 | 
			
		||||
    from openstackclient.common import command
 | 
			
		||||
    from openstackclient.common import parseractions
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    class DeleteMypluginobject(command.Command):
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,3 @@
 | 
			
		||||
#   Copyright 2013 OpenStack Foundation
 | 
			
		||||
#
 | 
			
		||||
#   Licensed under the Apache License, Version 2.0 (the "License"); you may
 | 
			
		||||
#   not use this file except in compliance with the License. You may obtain
 | 
			
		||||
#   a copy of the License at
 | 
			
		||||
@@ -13,154 +11,15 @@
 | 
			
		||||
#   under the License.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
"""argparse Custom Actions"""
 | 
			
		||||
# NOTE(dtroyer): This file is deprecated in Jun 2016, remove after 4.x release
 | 
			
		||||
#                or Jun 2017.
 | 
			
		||||
 | 
			
		||||
import argparse
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
from osc_lib.cli.parseractions import *  # noqa
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class KeyValueAction(argparse.Action):
 | 
			
		||||
    """A custom action to parse arguments as key=value pairs
 | 
			
		||||
 | 
			
		||||
    Ensures that ``dest`` is a dict
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    def __call__(self, parser, namespace, values, option_string=None):
 | 
			
		||||
        # Make sure we have an empty dict rather than None
 | 
			
		||||
        if getattr(namespace, self.dest, None) is None:
 | 
			
		||||
            setattr(namespace, self.dest, {})
 | 
			
		||||
 | 
			
		||||
        # Add value if an assignment else remove it
 | 
			
		||||
        if '=' in values:
 | 
			
		||||
            getattr(namespace, self.dest, {}).update([values.split('=', 1)])
 | 
			
		||||
        else:
 | 
			
		||||
            msg = _("Expected 'key=value' type, "
 | 
			
		||||
                    "but got: %s") % (str(values))
 | 
			
		||||
            raise argparse.ArgumentTypeError(msg)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MultiKeyValueAction(argparse.Action):
 | 
			
		||||
    """A custom action to parse arguments as key1=value1,key2=value2 pairs
 | 
			
		||||
 | 
			
		||||
    Ensure that ``dest`` is a list. The list will finally contain multiple
 | 
			
		||||
    dicts, with key=value pairs in them.
 | 
			
		||||
 | 
			
		||||
    NOTE: The arguments string should be a comma separated key-value pairs.
 | 
			
		||||
    And comma(',') and equal('=') may not be used in the key or value.
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    def __init__(self, option_strings, dest, nargs=None,
 | 
			
		||||
                 required_keys=None, optional_keys=None, **kwargs):
 | 
			
		||||
        """Initialize the action object, and parse customized options
 | 
			
		||||
 | 
			
		||||
        Required keys and optional keys can be specified when initializing
 | 
			
		||||
        the action to enable the key validation. If none of them specified,
 | 
			
		||||
        the key validation will be skipped.
 | 
			
		||||
 | 
			
		||||
        :param required_keys: a list of required keys
 | 
			
		||||
        :param optional_keys: a list of optional keys
 | 
			
		||||
        """
 | 
			
		||||
        if nargs:
 | 
			
		||||
            raise ValueError("Parameter 'nargs' is not allowed, but got %s"
 | 
			
		||||
                             % nargs)
 | 
			
		||||
 | 
			
		||||
        super(MultiKeyValueAction, self).__init__(option_strings,
 | 
			
		||||
                                                  dest, **kwargs)
 | 
			
		||||
 | 
			
		||||
        # required_keys: A list of keys that is required. None by default.
 | 
			
		||||
        if required_keys and not isinstance(required_keys, list):
 | 
			
		||||
            raise TypeError("'required_keys' must be a list")
 | 
			
		||||
        self.required_keys = set(required_keys or [])
 | 
			
		||||
 | 
			
		||||
        # optional_keys: A list of keys that is optional. None by default.
 | 
			
		||||
        if optional_keys and not isinstance(optional_keys, list):
 | 
			
		||||
            raise TypeError("'optional_keys' must be a list")
 | 
			
		||||
        self.optional_keys = set(optional_keys or [])
 | 
			
		||||
 | 
			
		||||
    def __call__(self, parser, namespace, values, metavar=None):
 | 
			
		||||
        # Make sure we have an empty list rather than None
 | 
			
		||||
        if getattr(namespace, self.dest, None) is None:
 | 
			
		||||
            setattr(namespace, self.dest, [])
 | 
			
		||||
 | 
			
		||||
        params = {}
 | 
			
		||||
        for kv in values.split(','):
 | 
			
		||||
            # Add value if an assignment else raise ArgumentTypeError
 | 
			
		||||
            if '=' in kv:
 | 
			
		||||
                params.update([kv.split('=', 1)])
 | 
			
		||||
            else:
 | 
			
		||||
                msg = _("Expected key=value pairs separated by comma, "
 | 
			
		||||
                        "but got: %s") % (str(kv))
 | 
			
		||||
                raise argparse.ArgumentTypeError(msg)
 | 
			
		||||
 | 
			
		||||
        # Check key validation
 | 
			
		||||
        valid_keys = self.required_keys | self.optional_keys
 | 
			
		||||
        if valid_keys:
 | 
			
		||||
            invalid_keys = [k for k in params if k not in valid_keys]
 | 
			
		||||
            if invalid_keys:
 | 
			
		||||
                msg = _("Invalid keys %(invalid_keys)s specified.\n"
 | 
			
		||||
                        "Valid keys are: %(valid_keys)s.")
 | 
			
		||||
                raise argparse.ArgumentTypeError(
 | 
			
		||||
                    msg % {'invalid_keys': ', '.join(invalid_keys),
 | 
			
		||||
                           'valid_keys': ', '.join(valid_keys)}
 | 
			
		||||
                )
 | 
			
		||||
 | 
			
		||||
        if self.required_keys:
 | 
			
		||||
            missing_keys = [k for k in self.required_keys if k not in params]
 | 
			
		||||
            if missing_keys:
 | 
			
		||||
                msg = _("Missing required keys %(missing_keys)s.\n"
 | 
			
		||||
                        "Required keys are: %(required_keys)s.")
 | 
			
		||||
                raise argparse.ArgumentTypeError(
 | 
			
		||||
                    msg % {'missing_keys': ', '.join(missing_keys),
 | 
			
		||||
                           'required_keys': ', '.join(self.required_keys)}
 | 
			
		||||
                )
 | 
			
		||||
 | 
			
		||||
        # Update the dest dict
 | 
			
		||||
        getattr(namespace, self.dest, []).append(params)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class RangeAction(argparse.Action):
 | 
			
		||||
    """A custom action to parse a single value or a range of values
 | 
			
		||||
 | 
			
		||||
    Parses single integer values or a range of integer values delimited
 | 
			
		||||
    by a colon and returns a tuple of integers:
 | 
			
		||||
    '4' sets ``dest`` to (4, 4)
 | 
			
		||||
    '6:9' sets ``dest`` to (6, 9)
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    def __call__(self, parser, namespace, values, option_string=None):
 | 
			
		||||
        range = values.split(':')
 | 
			
		||||
        if len(range) == 0:
 | 
			
		||||
            # Nothing passed, return a zero default
 | 
			
		||||
            setattr(namespace, self.dest, (0, 0))
 | 
			
		||||
        elif len(range) == 1:
 | 
			
		||||
            # Only a single value is present
 | 
			
		||||
            setattr(namespace, self.dest, (int(range[0]), int(range[0])))
 | 
			
		||||
        elif len(range) == 2:
 | 
			
		||||
            # Range of two values
 | 
			
		||||
            if int(range[0]) <= int(range[1]):
 | 
			
		||||
                setattr(namespace, self.dest, (int(range[0]), int(range[1])))
 | 
			
		||||
            else:
 | 
			
		||||
                msg = (_("Invalid range, %(range0)s is not "
 | 
			
		||||
                         "less than %(range1)s")
 | 
			
		||||
                       % {'range0': range[0], 'range1': range[1]})
 | 
			
		||||
                raise argparse.ArgumentError(self, msg)
 | 
			
		||||
        else:
 | 
			
		||||
            # Too many values
 | 
			
		||||
            msg = _("Invalid range, too many values")
 | 
			
		||||
            raise argparse.ArgumentError(self, msg)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class NonNegativeAction(argparse.Action):
 | 
			
		||||
    """A custom action to check whether the value is non-negative or not
 | 
			
		||||
 | 
			
		||||
    Ensures the value is >= 0.
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    def __call__(self, parser, namespace, values, option_string=None):
 | 
			
		||||
        if int(values) >= 0:
 | 
			
		||||
            setattr(namespace, self.dest, values)
 | 
			
		||||
        else:
 | 
			
		||||
            msg = (_("%s expected a non-negative integer")
 | 
			
		||||
                   % (str(option_string)))
 | 
			
		||||
            raise argparse.ArgumentTypeError(msg)
 | 
			
		||||
sys.stderr.write(
 | 
			
		||||
    "WARNING: %s is deprecated and will be removed after Jun 2017. "
 | 
			
		||||
    "Please use osc_lib.cli.parseractions\n" % __name__
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -16,11 +16,11 @@
 | 
			
		||||
 | 
			
		||||
"""Compute v2 Aggregate action implementations"""
 | 
			
		||||
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
import six
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -17,11 +17,11 @@
 | 
			
		||||
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
import six
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -15,12 +15,12 @@
 | 
			
		||||
 | 
			
		||||
"""Flavor action implementations"""
 | 
			
		||||
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import exceptions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
import six
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
from openstackclient.identity import common as identity_common
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,6 +21,7 @@ import io
 | 
			
		||||
import os
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import exceptions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
import six
 | 
			
		||||
@@ -31,7 +32,6 @@ except ImportError:
 | 
			
		||||
    from novaclient.v1_1 import servers
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
from openstackclient.identity import common as identity_common
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -16,11 +16,11 @@
 | 
			
		||||
"""Identity v2 Project action implementations"""
 | 
			
		||||
 | 
			
		||||
from keystoneauth1 import exceptions as ks_exc
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
import six
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -16,11 +16,11 @@
 | 
			
		||||
"""Project action implementations"""
 | 
			
		||||
 | 
			
		||||
from keystoneauth1 import exceptions as ks_exc
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
import six
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
from openstackclient.identity import common
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,6 @@
 | 
			
		||||
import argparse
 | 
			
		||||
import io
 | 
			
		||||
import os
 | 
			
		||||
import six
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
if os.name == "nt":
 | 
			
		||||
@@ -27,11 +26,12 @@ else:
 | 
			
		||||
    msvcrt = None
 | 
			
		||||
 | 
			
		||||
from glanceclient.common import utils as gc_utils
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
import six
 | 
			
		||||
 | 
			
		||||
from openstackclient.api import utils as api_utils
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -18,13 +18,13 @@
 | 
			
		||||
import argparse
 | 
			
		||||
 | 
			
		||||
from glanceclient.common import utils as gc_utils
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import exceptions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
import six
 | 
			
		||||
 | 
			
		||||
from openstackclient.api import utils as api_utils
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
from openstackclient.identity import common
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -16,11 +16,11 @@
 | 
			
		||||
import argparse
 | 
			
		||||
import logging
 | 
			
		||||
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import exceptions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
from openstackclient.identity import common as identity_common
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -17,10 +17,10 @@ import argparse
 | 
			
		||||
import json
 | 
			
		||||
import logging
 | 
			
		||||
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
from openstackclient.identity import common as identity_common
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -20,11 +20,11 @@ try:
 | 
			
		||||
except ImportError:
 | 
			
		||||
    from novaclient.v1_1 import security_group_rules as compute_secgroup_rules
 | 
			
		||||
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import exceptions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
import six
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
from openstackclient.identity import common as identity_common
 | 
			
		||||
from openstackclient.network import common
 | 
			
		||||
 
 | 
			
		||||
@@ -15,11 +15,11 @@
 | 
			
		||||
 | 
			
		||||
import copy
 | 
			
		||||
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import exceptions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
from openstackclient.identity import common as identity_common
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,10 +13,10 @@
 | 
			
		||||
 | 
			
		||||
"""Subnet pool action implementations"""
 | 
			
		||||
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
from openstackclient.identity import common as identity_common
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,11 +13,11 @@
 | 
			
		||||
 | 
			
		||||
"""Account v1 action implementations"""
 | 
			
		||||
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
import six
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class SetAccount(command.Command):
 | 
			
		||||
 
 | 
			
		||||
@@ -16,11 +16,11 @@
 | 
			
		||||
"""Container v1 action implementations"""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
import six
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CreateContainer(command.Lister):
 | 
			
		||||
 
 | 
			
		||||
@@ -16,11 +16,11 @@
 | 
			
		||||
"""Object v1 action implementations"""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
import six
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CreateObject(command.Lister):
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,9 @@
 | 
			
		||||
#   under the License.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# NOTE(dtroyer): This file is deprecated in Jun 2016, remove after 4.x release
 | 
			
		||||
#                or Jun 2017.
 | 
			
		||||
 | 
			
		||||
import argparse
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
 
 | 
			
		||||
@@ -15,11 +15,11 @@
 | 
			
		||||
 | 
			
		||||
"""Volume v1 QoS action implementations"""
 | 
			
		||||
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
import six
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -17,11 +17,11 @@
 | 
			
		||||
 | 
			
		||||
import copy
 | 
			
		||||
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
import six
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -17,11 +17,11 @@
 | 
			
		||||
 | 
			
		||||
import argparse
 | 
			
		||||
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
import six
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -15,11 +15,11 @@
 | 
			
		||||
 | 
			
		||||
"""Volume v1 Type action implementations"""
 | 
			
		||||
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
import six
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -15,11 +15,11 @@
 | 
			
		||||
 | 
			
		||||
"""Volume v2 QoS action implementations"""
 | 
			
		||||
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
import six
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -16,11 +16,11 @@
 | 
			
		||||
 | 
			
		||||
import copy
 | 
			
		||||
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
import six
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -16,11 +16,11 @@
 | 
			
		||||
 | 
			
		||||
import copy
 | 
			
		||||
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
import six
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
from openstackclient.identity import common as identity_common
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -14,12 +14,12 @@
 | 
			
		||||
 | 
			
		||||
"""Volume v2 Type action implementations"""
 | 
			
		||||
 | 
			
		||||
from osc_lib.cli import parseractions
 | 
			
		||||
from osc_lib import exceptions
 | 
			
		||||
from osc_lib import utils
 | 
			
		||||
import six
 | 
			
		||||
 | 
			
		||||
from openstackclient.common import command
 | 
			
		||||
from openstackclient.common import parseractions
 | 
			
		||||
from openstackclient.i18n import _
 | 
			
		||||
from openstackclient.identity import common as identity_common
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user