summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-06-14 04:22:03 +0000
committerGerrit Code Review <review@openstack.org>2016-06-14 04:22:03 +0000
commit287fe3610af6297b654dc30ee587aa0f7eecaeaa (patch)
tree6b91a34be273f921f59e8032ae8bb2ca546c8d20
parent5c402c1da23cde8b566e406b4e56bd2be2e1a729 (diff)
parentbe192676bd2f2beeea0ec4265d5f78a8cf9af637 (diff)
downloadpython-openstackclient-287fe3610af6297b654dc30ee587aa0f7eecaeaa.tar.gz
Merge "osc-lib: parseractions"
-rw-r--r--doc/source/plugins.rst2
-rw-r--r--openstackclient/common/parseractions.py157
-rw-r--r--openstackclient/compute/v2/aggregate.py2
-rw-r--r--openstackclient/compute/v2/console.py2
-rw-r--r--openstackclient/compute/v2/flavor.py2
-rw-r--r--openstackclient/compute/v2/server.py2
-rw-r--r--openstackclient/identity/v2_0/project.py2
-rw-r--r--openstackclient/identity/v3/project.py2
-rw-r--r--openstackclient/image/v1/image.py4
-rw-r--r--openstackclient/image/v2/image.py2
-rw-r--r--openstackclient/network/v2/port.py2
-rw-r--r--openstackclient/network/v2/router.py2
-rw-r--r--openstackclient/network/v2/security_group_rule.py2
-rw-r--r--openstackclient/network/v2/subnet.py2
-rw-r--r--openstackclient/network/v2/subnet_pool.py2
-rw-r--r--openstackclient/object/v1/account.py2
-rw-r--r--openstackclient/object/v1/container.py2
-rw-r--r--openstackclient/object/v1/object.py2
-rw-r--r--openstackclient/tests/common/test_parseractions.py3
-rw-r--r--openstackclient/volume/v1/qos_specs.py2
-rw-r--r--openstackclient/volume/v1/snapshot.py2
-rw-r--r--openstackclient/volume/v1/volume.py2
-rw-r--r--openstackclient/volume/v1/volume_type.py2
-rw-r--r--openstackclient/volume/v2/qos_specs.py2
-rw-r--r--openstackclient/volume/v2/snapshot.py2
-rw-r--r--openstackclient/volume/v2/volume.py2
-rw-r--r--openstackclient/volume/v2/volume_type.py2
27 files changed, 37 insertions, 175 deletions
diff --git a/doc/source/plugins.rst b/doc/source/plugins.rst
index 62c0aedc..8640efbc 100644
--- a/doc/source/plugins.rst
+++ b/doc/source/plugins.rst
@@ -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):
diff --git a/openstackclient/common/parseractions.py b/openstackclient/common/parseractions.py
index 1e92dc46..fa5148ec 100644
--- a/openstackclient/common/parseractions.py
+++ b/openstackclient/common/parseractions.py
@@ -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"""
-
-import argparse
-
-from openstackclient.i18n import _
-
-
-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)
+# NOTE(dtroyer): This file is deprecated in Jun 2016, remove after 4.x release
+# or Jun 2017.
+import sys
-class NonNegativeAction(argparse.Action):
- """A custom action to check whether the value is non-negative or not
+from osc_lib.cli.parseractions import * # noqa
- 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__
+)
diff --git a/openstackclient/compute/v2/aggregate.py b/openstackclient/compute/v2/aggregate.py
index 69227b0c..9e44615d 100644
--- a/openstackclient/compute/v2/aggregate.py
+++ b/openstackclient/compute/v2/aggregate.py
@@ -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 _
diff --git a/openstackclient/compute/v2/console.py b/openstackclient/compute/v2/console.py
index ee168016..ff7f1af6 100644
--- a/openstackclient/compute/v2/console.py
+++ b/openstackclient/compute/v2/console.py
@@ -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 _
diff --git a/openstackclient/compute/v2/flavor.py b/openstackclient/compute/v2/flavor.py
index 7cca37e5..439818eb 100644
--- a/openstackclient/compute/v2/flavor.py
+++ b/openstackclient/compute/v2/flavor.py
@@ -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
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index 7e810898..99429c5a 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -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
diff --git a/openstackclient/identity/v2_0/project.py b/openstackclient/identity/v2_0/project.py
index 688849fa..b03f8381 100644
--- a/openstackclient/identity/v2_0/project.py
+++ b/openstackclient/identity/v2_0/project.py
@@ -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 _
diff --git a/openstackclient/identity/v3/project.py b/openstackclient/identity/v3/project.py
index 2d504950..843767aa 100644
--- a/openstackclient/identity/v3/project.py
+++ b/openstackclient/identity/v3/project.py
@@ -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
diff --git a/openstackclient/image/v1/image.py b/openstackclient/image/v1/image.py
index 73fbe290..f137f262 100644
--- a/openstackclient/image/v1/image.py
+++ b/openstackclient/image/v1/image.py
@@ -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 _
diff --git a/openstackclient/image/v2/image.py b/openstackclient/image/v2/image.py
index 668e4ed9..7d663a6c 100644
--- a/openstackclient/image/v2/image.py
+++ b/openstackclient/image/v2/image.py
@@ -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
diff --git a/openstackclient/network/v2/port.py b/openstackclient/network/v2/port.py
index 643207d9..a040f20f 100644
--- a/openstackclient/network/v2/port.py
+++ b/openstackclient/network/v2/port.py
@@ -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
diff --git a/openstackclient/network/v2/router.py b/openstackclient/network/v2/router.py
index eab8b22c..db3a90e1 100644
--- a/openstackclient/network/v2/router.py
+++ b/openstackclient/network/v2/router.py
@@ -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
diff --git a/openstackclient/network/v2/security_group_rule.py b/openstackclient/network/v2/security_group_rule.py
index 0132ef4e..7c810786 100644
--- a/openstackclient/network/v2/security_group_rule.py
+++ b/openstackclient/network/v2/security_group_rule.py
@@ -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
diff --git a/openstackclient/network/v2/subnet.py b/openstackclient/network/v2/subnet.py
index 2b12ee03..6bdb9a54 100644
--- a/openstackclient/network/v2/subnet.py
+++ b/openstackclient/network/v2/subnet.py
@@ -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
diff --git a/openstackclient/network/v2/subnet_pool.py b/openstackclient/network/v2/subnet_pool.py
index 23993300..7e0bb2c0 100644
--- a/openstackclient/network/v2/subnet_pool.py
+++ b/openstackclient/network/v2/subnet_pool.py
@@ -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
diff --git a/openstackclient/object/v1/account.py b/openstackclient/object/v1/account.py
index 189f086b..8ef34687 100644
--- a/openstackclient/object/v1/account.py
+++ b/openstackclient/object/v1/account.py
@@ -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):
diff --git a/openstackclient/object/v1/container.py b/openstackclient/object/v1/container.py
index b3c6af74..f26b64a1 100644
--- a/openstackclient/object/v1/container.py
+++ b/openstackclient/object/v1/container.py
@@ -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):
diff --git a/openstackclient/object/v1/object.py b/openstackclient/object/v1/object.py
index 9141c1da..820780ff 100644
--- a/openstackclient/object/v1/object.py
+++ b/openstackclient/object/v1/object.py
@@ -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):
diff --git a/openstackclient/tests/common/test_parseractions.py b/openstackclient/tests/common/test_parseractions.py
index 894b224c..60d4a8cf 100644
--- a/openstackclient/tests/common/test_parseractions.py
+++ b/openstackclient/tests/common/test_parseractions.py
@@ -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
diff --git a/openstackclient/volume/v1/qos_specs.py b/openstackclient/volume/v1/qos_specs.py
index 70f68269..d26d9af4 100644
--- a/openstackclient/volume/v1/qos_specs.py
+++ b/openstackclient/volume/v1/qos_specs.py
@@ -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 _
diff --git a/openstackclient/volume/v1/snapshot.py b/openstackclient/volume/v1/snapshot.py
index af0b5229..c931eeff 100644
--- a/openstackclient/volume/v1/snapshot.py
+++ b/openstackclient/volume/v1/snapshot.py
@@ -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 _
diff --git a/openstackclient/volume/v1/volume.py b/openstackclient/volume/v1/volume.py
index 359d931e..a302ab38 100644
--- a/openstackclient/volume/v1/volume.py
+++ b/openstackclient/volume/v1/volume.py
@@ -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 _
diff --git a/openstackclient/volume/v1/volume_type.py b/openstackclient/volume/v1/volume_type.py
index e4d22abb..fb937530 100644
--- a/openstackclient/volume/v1/volume_type.py
+++ b/openstackclient/volume/v1/volume_type.py
@@ -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 _
diff --git a/openstackclient/volume/v2/qos_specs.py b/openstackclient/volume/v2/qos_specs.py
index c4473117..43772b55 100644
--- a/openstackclient/volume/v2/qos_specs.py
+++ b/openstackclient/volume/v2/qos_specs.py
@@ -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 _
diff --git a/openstackclient/volume/v2/snapshot.py b/openstackclient/volume/v2/snapshot.py
index 99b7462b..39af1bd2 100644
--- a/openstackclient/volume/v2/snapshot.py
+++ b/openstackclient/volume/v2/snapshot.py
@@ -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 _
diff --git a/openstackclient/volume/v2/volume.py b/openstackclient/volume/v2/volume.py
index c6262d17..c6175c4b 100644
--- a/openstackclient/volume/v2/volume.py
+++ b/openstackclient/volume/v2/volume.py
@@ -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
diff --git a/openstackclient/volume/v2/volume_type.py b/openstackclient/volume/v2/volume_type.py
index 0896ecff..edea91fd 100644
--- a/openstackclient/volume/v2/volume_type.py
+++ b/openstackclient/volume/v2/volume_type.py
@@ -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