summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/api/auth_plugin.py61
-rw-r--r--openstackclient/compute/v2/hypervisor.py2
-rw-r--r--openstackclient/compute/v2/server.py86
-rw-r--r--openstackclient/network/v2/address_scope.py10
-rw-r--r--openstackclient/network/v2/floating_ip.py2
-rw-r--r--openstackclient/network/v2/ip_availability.py2
-rw-r--r--openstackclient/network/v2/network.py1
-rw-r--r--openstackclient/network/v2/network_agent.py1
-rw-r--r--openstackclient/network/v2/network_auto_allocated_topology.py17
-rw-r--r--openstackclient/network/v2/network_flavor.py10
-rw-r--r--openstackclient/network/v2/network_flavor_profile.py10
-rw-r--r--openstackclient/network/v2/network_meter.py10
-rw-r--r--openstackclient/network/v2/network_meter_rule.py10
-rw-r--r--openstackclient/network/v2/network_qos_policy.py10
-rw-r--r--openstackclient/network/v2/network_qos_rule.py10
-rw-r--r--openstackclient/network/v2/network_qos_rule_type.py8
-rw-r--r--openstackclient/network/v2/network_rbac.py10
-rw-r--r--openstackclient/network/v2/network_segment.py10
-rw-r--r--openstackclient/network/v2/network_segment_range.py11
-rw-r--r--openstackclient/network/v2/port.py1
-rw-r--r--openstackclient/network/v2/router.py1
-rw-r--r--openstackclient/network/v2/security_group.py3
-rw-r--r--openstackclient/network/v2/security_group_rule.py10
-rw-r--r--openstackclient/network/v2/subnet.py1
-rw-r--r--openstackclient/network/v2/subnet_pool.py1
-rw-r--r--openstackclient/shell.py9
-rw-r--r--openstackclient/tests/functional/common/test_args.py26
-rw-r--r--openstackclient/tests/functional/network/v2/test_floating_ip.py120
-rw-r--r--openstackclient/tests/unit/common/test_clientmanager.py8
-rw-r--r--openstackclient/tests/unit/compute/v2/fakes.py2
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server.py54
-rw-r--r--openstackclient/tests/unit/network/v2/fakes.py2
-rw-r--r--openstackclient/tests/unit/test_shell.py22
33 files changed, 330 insertions, 211 deletions
diff --git a/openstackclient/api/auth_plugin.py b/openstackclient/api/auth_plugin.py
deleted file mode 100644
index a106b1eb..00000000
--- a/openstackclient/api/auth_plugin.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-#
-
-"""Authentication Plugin Library"""
-
-from keystoneauth1 import loading
-from keystoneauth1 import token_endpoint
-
-from openstackclient.i18n import _
-
-
-class TokenEndpoint(loading.BaseLoader):
- """Auth plugin to handle traditional token/endpoint usage
-
- Keystoneauth contains a Token plugin class that now correctly
- handles the token/endpoint auth compatible with OSC. However,
- the AdminToken loader deprecates the 'url' argument, which breaks
- OSC compatibility, so make one that works.
- """
-
- @property
- def plugin_class(self):
- return token_endpoint.Token
-
- def load_from_options(self, url, token, **kwargs):
- """A plugin for static authentication with an existing token
-
- :param string url: Service endpoint
- :param string token: Existing token
- """
-
- return super(TokenEndpoint, self).load_from_options(
- endpoint=url,
- token=token,
- )
-
- def get_options(self):
- """Return the legacy options"""
-
- options = [
- loading.Opt(
- 'url',
- help=_('Specific service endpoint to use'),
- ),
- loading.Opt(
- 'token',
- secret=True,
- help=_('Authentication token to use'),
- ),
- ]
- return options
diff --git a/openstackclient/compute/v2/hypervisor.py b/openstackclient/compute/v2/hypervisor.py
index 406aa917..0d367fee 100644
--- a/openstackclient/compute/v2/hypervisor.py
+++ b/openstackclient/compute/v2/hypervisor.py
@@ -112,7 +112,7 @@ class ShowHypervisor(command.ShowOne):
# example: 17:37:14 up 2:33, 3 users,
# load average: 0.33, 0.36, 0.34
m = re.match(
- "\s*(.+)\sup\s+(.+),\s+(.+)\susers?,\s+load average:\s(.+)",
+ r"\s*(.+)\sup\s+(.+),\s+(.+)\susers?,\s+load average:\s(.+)",
uptime['uptime'])
if m:
hypervisor["host_time"] = m.group(1)
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index 493fd5ad..538c9c4f 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -79,37 +79,37 @@ def _format_servers_list_power_state(state):
def _get_ip_address(addresses, address_type, ip_address_family):
- # Old style addresses
- if address_type in addresses:
- for addy in addresses[address_type]:
+ # Old style addresses
+ if address_type in addresses:
+ for addy in addresses[address_type]:
+ if int(addy['version']) in ip_address_family:
+ return addy['addr']
+
+ # New style addresses
+ new_address_type = address_type
+ if address_type == 'public':
+ new_address_type = 'floating'
+ if address_type == 'private':
+ new_address_type = 'fixed'
+ for network in addresses:
+ for addy in addresses[network]:
+ # Case where it is list of strings
+ if isinstance(addy, six.string_types):
+ if new_address_type == 'fixed':
+ return addresses[network][0]
+ else:
+ return addresses[network][-1]
+ # Case where it is a dict
+ if 'OS-EXT-IPS:type' not in addy:
+ continue
+ if addy['OS-EXT-IPS:type'] == new_address_type:
if int(addy['version']) in ip_address_family:
return addy['addr']
-
- # New style addresses
- new_address_type = address_type
- if address_type == 'public':
- new_address_type = 'floating'
- if address_type == 'private':
- new_address_type = 'fixed'
- for network in addresses:
- for addy in addresses[network]:
- # Case where it is list of strings
- if isinstance(addy, six.string_types):
- if new_address_type == 'fixed':
- return addresses[network][0]
- else:
- return addresses[network][-1]
- # Case where it is a dict
- if 'OS-EXT-IPS:type' not in addy:
- continue
- if addy['OS-EXT-IPS:type'] == new_address_type:
- if int(addy['version']) in ip_address_family:
- return addy['addr']
- msg = _("ERROR: No %(type)s IP version %(family)s address found")
- raise exceptions.CommandError(
- msg % {"type": address_type,
- "family": ip_address_family}
- )
+ msg = _("ERROR: No %(type)s IP version %(family)s address found")
+ raise exceptions.CommandError(
+ msg % {"type": address_type,
+ "family": ip_address_family}
+ )
def _prefix_checked_value(prefix):
@@ -2811,12 +2811,32 @@ class UnshelveServer(command.Command):
nargs='+',
help=_('Server(s) to unshelve (name or ID)'),
)
+ parser.add_argument(
+ '--availability-zone',
+ default=None,
+ help=_('Name of the availability zone in which to unshelve a '
+ 'SHELVED_OFFLOADED server (supported by '
+ '--os-compute-api-version 2.77 or above)'),
+ )
return parser
def take_action(self, parsed_args):
compute_client = self.app.client_manager.compute
+ support_az = compute_client.api_version >= api_versions.APIVersion(
+ '2.77')
+ if not support_az and parsed_args.availability_zone:
+ msg = _("--os-compute-api-version 2.77 or greater is required "
+ "to support the '--availability-zone' option.")
+ raise exceptions.CommandError(msg)
+
for server in parsed_args.server:
- utils.find_resource(
- compute_client.servers,
- server,
- ).unshelve()
+ if support_az:
+ utils.find_resource(
+ compute_client.servers,
+ server
+ ).unshelve(availability_zone=parsed_args.availability_zone)
+ else:
+ utils.find_resource(
+ compute_client.servers,
+ server,
+ ).unshelve()
diff --git a/openstackclient/network/v2/address_scope.py b/openstackclient/network/v2/address_scope.py
index 71c1a9af..7efbb631 100644
--- a/openstackclient/network/v2/address_scope.py
+++ b/openstackclient/network/v2/address_scope.py
@@ -15,6 +15,7 @@
import logging
+from osc_lib.cli import format_columns
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
@@ -27,6 +28,11 @@ from openstackclient.network import sdk_utils
LOG = logging.getLogger(__name__)
+_formatters = {
+ 'location': format_columns.DictColumn,
+}
+
+
def _get_columns(item):
column_map = {
'is_shared': 'shared',
@@ -100,7 +106,7 @@ class CreateAddressScope(command.ShowOne):
attrs = _get_attrs(self.app.client_manager, parsed_args)
obj = client.create_address_scope(**attrs)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns, formatters={})
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return (display_columns, data)
@@ -289,6 +295,6 @@ class ShowAddressScope(command.ShowOne):
parsed_args.address_scope,
ignore_missing=False)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns, formatters={})
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return (display_columns, data)
diff --git a/openstackclient/network/v2/floating_ip.py b/openstackclient/network/v2/floating_ip.py
index 8ac8e107..e0aa0435 100644
--- a/openstackclient/network/v2/floating_ip.py
+++ b/openstackclient/network/v2/floating_ip.py
@@ -13,6 +13,7 @@
"""IP Floating action implementations"""
+from osc_lib.cli import format_columns
from osc_lib.command import command
from osc_lib import utils
@@ -24,6 +25,7 @@ from openstackclient.network.v2 import _tag
_formatters = {
+ 'location': format_columns.DictColumn,
'port_details': utils.format_dict,
}
diff --git a/openstackclient/network/v2/ip_availability.py b/openstackclient/network/v2/ip_availability.py
index ddc88e55..c026baa0 100644
--- a/openstackclient/network/v2/ip_availability.py
+++ b/openstackclient/network/v2/ip_availability.py
@@ -21,7 +21,9 @@ from openstackclient.i18n import _
from openstackclient.identity import common as identity_common
from openstackclient.network import sdk_utils
+
_formatters = {
+ 'location': format_columns.DictColumn,
'subnet_ip_availability': format_columns.ListDictColumn,
}
diff --git a/openstackclient/network/v2/network.py b/openstackclient/network/v2/network.py
index 63aec714..09f3556c 100644
--- a/openstackclient/network/v2/network.py
+++ b/openstackclient/network/v2/network.py
@@ -40,6 +40,7 @@ _formatters = {
'subnet_ids': format_columns.ListColumn,
'admin_state_up': AdminStateColumn,
'is_admin_state_up': AdminStateColumn,
+ 'location': format_columns.DictColumn,
'router:external': RouterExternalColumn,
'is_router_external': RouterExternalColumn,
'availability_zones': format_columns.ListColumn,
diff --git a/openstackclient/network/v2/network_agent.py b/openstackclient/network/v2/network_agent.py
index 16784854..a6ed3629 100644
--- a/openstackclient/network/v2/network_agent.py
+++ b/openstackclient/network/v2/network_agent.py
@@ -43,6 +43,7 @@ _formatters = {
'alive': AliveColumn,
'admin_state_up': AdminStateColumn,
'is_admin_state_up': AdminStateColumn,
+ 'location': format_columns.DictColumn,
'configurations': format_columns.DictColumn,
}
diff --git a/openstackclient/network/v2/network_auto_allocated_topology.py b/openstackclient/network/v2/network_auto_allocated_topology.py
index 36f39200..f6070a02 100644
--- a/openstackclient/network/v2/network_auto_allocated_topology.py
+++ b/openstackclient/network/v2/network_auto_allocated_topology.py
@@ -15,6 +15,7 @@
import logging
+from osc_lib.cli import format_columns
from osc_lib.command import command
from osc_lib import utils
@@ -25,6 +26,11 @@ from openstackclient.network import sdk_utils
LOG = logging.getLogger(__name__)
+_formatters = {
+ 'location': format_columns.DictColumn,
+}
+
+
def _get_columns(item):
column_map = {
'tenant_id': 'project_id',
@@ -93,16 +99,17 @@ class CreateAutoAllocatedTopology(command.ShowOne):
obj = client.validate_auto_allocated_topology(parsed_args.project)
columns = _format_check_resource_columns()
- data = utils.get_item_properties(_format_check_resource(obj),
- columns,
- formatters={})
-
+ data = utils.get_item_properties(
+ _format_check_resource(obj),
+ columns,
+ formatters=_formatters,
+ )
return (columns, data)
def get_topology(self, client, parsed_args):
obj = client.get_auto_allocated_topology(parsed_args.project)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns, formatters={})
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return (display_columns, data)
def take_action(self, parsed_args):
diff --git a/openstackclient/network/v2/network_flavor.py b/openstackclient/network/v2/network_flavor.py
index c9d368bf..355d04c1 100644
--- a/openstackclient/network/v2/network_flavor.py
+++ b/openstackclient/network/v2/network_flavor.py
@@ -15,6 +15,7 @@
import logging
+from osc_lib.cli import format_columns
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
@@ -27,6 +28,11 @@ from openstackclient.network import sdk_utils
LOG = logging.getLogger(__name__)
+_formatters = {
+ 'location': format_columns.DictColumn,
+}
+
+
def _get_columns(item):
column_map = {
'is_enabled': 'enabled',
@@ -136,7 +142,7 @@ class CreateNetworkFlavor(command.ShowOne):
attrs = _get_attrs(self.app.client_manager, parsed_args)
obj = client.create_flavor(**attrs)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns, formatters={})
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return (display_columns, data)
@@ -300,5 +306,5 @@ class ShowNetworkFlavor(command.ShowOne):
client = self.app.client_manager.network
obj = client.find_flavor(parsed_args.flavor, ignore_missing=False)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns)
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return display_columns, data
diff --git a/openstackclient/network/v2/network_flavor_profile.py b/openstackclient/network/v2/network_flavor_profile.py
index 6cf0c412..492fd432 100644
--- a/openstackclient/network/v2/network_flavor_profile.py
+++ b/openstackclient/network/v2/network_flavor_profile.py
@@ -13,6 +13,7 @@
import logging
+from osc_lib.cli import format_columns
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
@@ -25,6 +26,11 @@ from openstackclient.network import sdk_utils
LOG = logging.getLogger(__name__)
+_formatters = {
+ 'location': format_columns.DictColumn,
+}
+
+
def _get_columns(item):
column_map = {
'is_enabled': 'enabled',
@@ -110,7 +116,7 @@ class CreateNetworkFlavorProfile(command.ShowOne):
obj = client.create_service_profile(**attrs)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns, formatters={})
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return (display_columns, data)
@@ -246,5 +252,5 @@ class ShowNetworkFlavorProfile(command.ShowOne):
obj = client.find_service_profile(parsed_args.flavor_profile,
ignore_missing=False)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns)
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return (display_columns, data)
diff --git a/openstackclient/network/v2/network_meter.py b/openstackclient/network/v2/network_meter.py
index df0e1da1..cde7a304 100644
--- a/openstackclient/network/v2/network_meter.py
+++ b/openstackclient/network/v2/network_meter.py
@@ -15,6 +15,7 @@
import logging
+from osc_lib.cli import format_columns
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
@@ -26,6 +27,11 @@ from openstackclient.network import sdk_utils
LOG = logging.getLogger(__name__)
+_formatters = {
+ 'location': format_columns.DictColumn,
+}
+
+
def _get_columns(item):
column_map = {
'is_shared': 'shared',
@@ -102,7 +108,7 @@ class CreateMeter(command.ShowOne):
attrs = _get_attrs(self.app.client_manager, parsed_args)
obj = client.create_metering_label(**attrs)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns, formatters={})
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return (display_columns, data)
@@ -186,5 +192,5 @@ class ShowMeter(command.ShowOne):
obj = client.find_metering_label(parsed_args.meter,
ignore_missing=False)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns)
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return display_columns, data
diff --git a/openstackclient/network/v2/network_meter_rule.py b/openstackclient/network/v2/network_meter_rule.py
index 49ff9e1b..5f31255a 100644
--- a/openstackclient/network/v2/network_meter_rule.py
+++ b/openstackclient/network/v2/network_meter_rule.py
@@ -15,6 +15,7 @@
import logging
+from osc_lib.cli import format_columns
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
@@ -26,6 +27,11 @@ from openstackclient.network import sdk_utils
LOG = logging.getLogger(__name__)
+_formatters = {
+ 'location': format_columns.DictColumn,
+}
+
+
def _get_columns(item):
column_map = {
'tenant_id': 'project_id',
@@ -116,7 +122,7 @@ class CreateMeterRule(command.ShowOne):
attrs = _get_attrs(self.app.client_manager, parsed_args)
obj = client.create_metering_label_rule(**attrs)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns, formatters={})
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return (display_columns, data)
@@ -199,5 +205,5 @@ class ShowMeterRule(command.ShowOne):
obj = client.find_metering_label_rule(parsed_args.meter_rule_id,
ignore_missing=False)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns)
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return display_columns, data
diff --git a/openstackclient/network/v2/network_qos_policy.py b/openstackclient/network/v2/network_qos_policy.py
index fd5ff937..1622de4a 100644
--- a/openstackclient/network/v2/network_qos_policy.py
+++ b/openstackclient/network/v2/network_qos_policy.py
@@ -15,6 +15,7 @@
import logging
+from osc_lib.cli import format_columns
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
@@ -27,6 +28,11 @@ from openstackclient.network import sdk_utils
LOG = logging.getLogger(__name__)
+_formatters = {
+ 'location': format_columns.DictColumn,
+}
+
+
def _get_columns(item):
column_map = {
'is_shared': 'shared',
@@ -119,7 +125,7 @@ class CreateNetworkQosPolicy(command.ShowOne):
attrs = _get_attrs(self.app.client_manager, parsed_args)
obj = client.create_qos_policy(**attrs)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns, formatters={})
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return (display_columns, data)
@@ -279,5 +285,5 @@ class ShowNetworkQosPolicy(command.ShowOne):
obj = client.find_qos_policy(parsed_args.policy,
ignore_missing=False)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns)
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return (display_columns, data)
diff --git a/openstackclient/network/v2/network_qos_rule.py b/openstackclient/network/v2/network_qos_rule.py
index 28c5600a..d74beda7 100644
--- a/openstackclient/network/v2/network_qos_rule.py
+++ b/openstackclient/network/v2/network_qos_rule.py
@@ -15,6 +15,7 @@
import itertools
+from osc_lib.cli import format_columns
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
@@ -46,6 +47,11 @@ ACTION_SET = 'update'
ACTION_SHOW = 'get'
+_formatters = {
+ 'location': format_columns.DictColumn,
+}
+
+
def _get_columns(item):
column_map = {
'tenant_id': 'project_id',
@@ -208,7 +214,7 @@ class CreateNetworkQosRule(command.ShowOne):
msg = (_('Failed to create Network QoS rule: %(e)s') % {'e': e})
raise exceptions.CommandError(msg)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns)
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return display_columns, data
@@ -358,5 +364,5 @@ class ShowNetworkQosRule(command.ShowOne):
{'rule': rule_id, 'e': e})
raise exceptions.CommandError(msg)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns)
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return display_columns, data
diff --git a/openstackclient/network/v2/network_qos_rule_type.py b/openstackclient/network/v2/network_qos_rule_type.py
index 7b92c8ad..e842944c 100644
--- a/openstackclient/network/v2/network_qos_rule_type.py
+++ b/openstackclient/network/v2/network_qos_rule_type.py
@@ -13,6 +13,7 @@
# License for the specific language governing permissions and limitations
# under the License.
+from osc_lib.cli import format_columns
from osc_lib.command import command
from osc_lib import utils
@@ -20,6 +21,11 @@ from openstackclient.i18n import _
from openstackclient.network import sdk_utils
+_formatters = {
+ 'location': format_columns.DictColumn,
+}
+
+
def _get_columns(item):
column_map = {
"type": "rule_type_name",
@@ -65,5 +71,5 @@ class ShowNetworkQosRuleType(command.ShowOne):
client = self.app.client_manager.network
obj = client.get_qos_rule_type(parsed_args.rule_type)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns)
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return display_columns, data
diff --git a/openstackclient/network/v2/network_rbac.py b/openstackclient/network/v2/network_rbac.py
index 140c837e..1781193f 100644
--- a/openstackclient/network/v2/network_rbac.py
+++ b/openstackclient/network/v2/network_rbac.py
@@ -15,6 +15,7 @@
import logging
+from osc_lib.cli import format_columns
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
@@ -27,6 +28,11 @@ from openstackclient.network import sdk_utils
LOG = logging.getLogger(__name__)
+_formatters = {
+ 'location': format_columns.DictColumn,
+}
+
+
def _get_columns(item):
column_map = {
'target_tenant': 'target_project_id',
@@ -136,7 +142,7 @@ class CreateNetworkRBAC(command.ShowOne):
attrs = _get_attrs(self.app.client_manager, parsed_args)
obj = client.create_rbac_policy(**attrs)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns)
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return display_columns, data
@@ -293,5 +299,5 @@ class ShowNetworkRBAC(command.ShowOne):
obj = client.find_rbac_policy(parsed_args.rbac_policy,
ignore_missing=False)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns)
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return display_columns, data
diff --git a/openstackclient/network/v2/network_segment.py b/openstackclient/network/v2/network_segment.py
index c1a672e2..5899dc69 100644
--- a/openstackclient/network/v2/network_segment.py
+++ b/openstackclient/network/v2/network_segment.py
@@ -15,6 +15,7 @@
import logging
+from osc_lib.cli import format_columns
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
@@ -26,6 +27,11 @@ from openstackclient.network import sdk_utils
LOG = logging.getLogger(__name__)
+_formatters = {
+ 'location': format_columns.DictColumn,
+}
+
+
def _get_columns(item):
return sdk_utils.get_osc_show_columns_for_sdk_resource(item, {})
@@ -90,7 +96,7 @@ class CreateNetworkSegment(command.ShowOne):
attrs['segmentation_id'] = parsed_args.segment
obj = client.create_segment(**attrs)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns)
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return (display_columns, data)
@@ -242,5 +248,5 @@ class ShowNetworkSegment(command.ShowOne):
ignore_missing=False
)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns)
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return (display_columns, data)
diff --git a/openstackclient/network/v2/network_segment_range.py b/openstackclient/network/v2/network_segment_range.py
index 567b5b6e..f03bcc1c 100644
--- a/openstackclient/network/v2/network_segment_range.py
+++ b/openstackclient/network/v2/network_segment_range.py
@@ -19,6 +19,7 @@
import itertools
import logging
+from osc_lib.cli import format_columns
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
@@ -31,6 +32,10 @@ from openstackclient.network import sdk_utils
LOG = logging.getLogger(__name__)
+_formatters = {
+ 'location': format_columns.DictColumn,
+}
+
def _get_columns(item):
return sdk_utils.get_osc_show_columns_for_sdk_resource(item, {})
@@ -212,7 +217,7 @@ class CreateNetworkSegmentRange(command.ShowOne):
attrs['physical_network'] = parsed_args.physical_network
obj = network_client.create_network_segment_range(**attrs)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns)
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
data = _update_additional_fields_from_props(columns, props=data)
return (display_columns, data)
@@ -358,7 +363,7 @@ class ListNetworkSegmentRange(command.Lister):
parsed_args.used and _is_prop_empty(columns, props, 'used') or \
parsed_args.unused and \
not _is_prop_empty(columns, props, 'used'):
- continue
+ continue
if parsed_args.long:
props = _update_additional_fields_from_props(columns, props)
display_props += (props,)
@@ -451,6 +456,6 @@ class ShowNetworkSegmentRange(command.ShowOne):
ignore_missing=False
)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns)
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
data = _update_additional_fields_from_props(columns, props=data)
return (display_columns, data)
diff --git a/openstackclient/network/v2/port.py b/openstackclient/network/v2/port.py
index e6bfe853..4d7e5189 100644
--- a/openstackclient/network/v2/port.py
+++ b/openstackclient/network/v2/port.py
@@ -51,6 +51,7 @@ _formatters = {
'dns_assignment': format_columns.ListDictColumn,
'extra_dhcp_opts': format_columns.ListDictColumn,
'fixed_ips': format_columns.ListDictColumn,
+ 'location': format_columns.DictColumn,
'security_group_ids': format_columns.ListColumn,
'tags': format_columns.ListColumn,
}
diff --git a/openstackclient/network/v2/router.py b/openstackclient/network/v2/router.py
index 11b012e6..02da50c3 100644
--- a/openstackclient/network/v2/router.py
+++ b/openstackclient/network/v2/router.py
@@ -61,6 +61,7 @@ _formatters = {
'external_gateway_info': RouterInfoColumn,
'availability_zones': format_columns.ListColumn,
'availability_zone_hints': format_columns.ListColumn,
+ 'location': format_columns.DictColumn,
'routes': RoutesColumn,
'tags': format_columns.ListColumn,
}
diff --git a/openstackclient/network/v2/security_group.py b/openstackclient/network/v2/security_group.py
index e3894738..38b4e97a 100644
--- a/openstackclient/network/v2/security_group.py
+++ b/openstackclient/network/v2/security_group.py
@@ -16,6 +16,7 @@
import argparse
from cliff import columns as cliff_columns
+from osc_lib.cli import format_columns
from osc_lib.command import command
from osc_lib import utils
import six
@@ -77,11 +78,13 @@ class ComputeSecurityGroupRulesColumn(cliff_columns.FormattableColumn):
_formatters_network = {
+ 'location': format_columns.DictColumn,
'security_group_rules': NetworkSecurityGroupRulesColumn,
}
_formatters_compute = {
+ 'location': format_columns.DictColumn,
'rules': ComputeSecurityGroupRulesColumn,
}
diff --git a/openstackclient/network/v2/security_group_rule.py b/openstackclient/network/v2/security_group_rule.py
index dbea7473..15f099b1 100644
--- a/openstackclient/network/v2/security_group_rule.py
+++ b/openstackclient/network/v2/security_group_rule.py
@@ -16,6 +16,7 @@
import argparse
import logging
+from osc_lib.cli import format_columns
from osc_lib.cli import parseractions
from osc_lib import exceptions
from osc_lib import utils
@@ -31,6 +32,11 @@ from openstackclient.network import utils as network_utils
LOG = logging.getLogger(__name__)
+_formatters = {
+ 'location': format_columns.DictColumn,
+}
+
+
def _format_security_group_rule_show(obj):
data = network_utils.transform_compute_security_group_rule(obj)
return zip(*sorted(six.iteritems(data)))
@@ -337,7 +343,7 @@ class CreateSecurityGroupRule(common.NetworkAndComputeShowOne):
# Create and show the security group rule.
obj = client.create_security_group_rule(**attrs)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns)
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return (display_columns, data)
def take_action_compute(self, client, parsed_args):
@@ -596,7 +602,7 @@ class ShowSecurityGroupRule(common.NetworkAndComputeShowOne):
if not obj['remote_ip_prefix']:
obj['remote_ip_prefix'] = _format_remote_ip_prefix(obj)
display_columns, columns = _get_columns(obj)
- data = utils.get_item_properties(obj, columns)
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
return (display_columns, data)
def take_action_compute(self, client, parsed_args):
diff --git a/openstackclient/network/v2/subnet.py b/openstackclient/network/v2/subnet.py
index 1f0c2d94..c5368861 100644
--- a/openstackclient/network/v2/subnet.py
+++ b/openstackclient/network/v2/subnet.py
@@ -61,6 +61,7 @@ _formatters = {
'allocation_pools': AllocationPoolsColumn,
'dns_nameservers': format_columns.ListColumn,
'host_routes': HostRoutesColumn,
+ 'location': format_columns.DictColumn,
'service_types': format_columns.ListColumn,
'tags': format_columns.ListColumn,
}
diff --git a/openstackclient/network/v2/subnet_pool.py b/openstackclient/network/v2/subnet_pool.py
index 7ece263a..d5a15475 100644
--- a/openstackclient/network/v2/subnet_pool.py
+++ b/openstackclient/network/v2/subnet_pool.py
@@ -42,6 +42,7 @@ def _get_columns(item):
_formatters = {
+ 'location': format_columns.DictColumn,
'prefixes': format_columns.ListColumn,
'tags': format_columns.ListColumn,
}
diff --git a/openstackclient/shell.py b/openstackclient/shell.py
index 22d8412c..4489219f 100644
--- a/openstackclient/shell.py
+++ b/openstackclient/shell.py
@@ -58,10 +58,10 @@ class OpenStackShell(shell.OpenStackShell):
def _final_defaults(self):
super(OpenStackShell, self)._final_defaults()
- # Set the default plugin to token_endpoint if url and token are given
- if (self.options.url and self.options.token):
- # Use service token authentication
- self._auth_type = 'token_endpoint'
+ # Set the default plugin to admin_token if endpoint and token are given
+ if (self.options.endpoint and self.options.token):
+ # Use token authentication
+ self._auth_type = 'admin_token'
else:
self._auth_type = 'password'
@@ -209,5 +209,6 @@ def main(argv=None):
return OpenStackShell().run(argv)
+
if __name__ == "__main__":
sys.exit(main())
diff --git a/openstackclient/tests/functional/common/test_args.py b/openstackclient/tests/functional/common/test_args.py
index dd1fd0fb..02cad6c1 100644
--- a/openstackclient/tests/functional/common/test_args.py
+++ b/openstackclient/tests/functional/common/test_args.py
@@ -12,6 +12,8 @@
import json
+from tempest.lib import exceptions as tempest_exc
+
from openstackclient.tests.functional import base
@@ -49,19 +51,17 @@ class ArgumentTests(base.TestCase):
)
def test_auth_type_token_endpoint_opt(self):
- cmd_output = json.loads(self.openstack(
- 'configuration show -f json --os-auth-type token_endpoint',
- cloud=None,
- ))
- self.assertIsNotNone(cmd_output)
- self.assertIn(
- 'auth_type',
- cmd_output.keys(),
- )
- self.assertEqual(
- 'token_endpoint',
- cmd_output['auth_type'],
- )
+ # Make sure token_endpoint is really gone
+ try:
+ self.openstack(
+ 'configuration show -f json --os-auth-type token_endpoint',
+ cloud=None,
+ )
+ except tempest_exc.CommandFailed as e:
+ self.assertIn('--os-auth-type: invalid choice:', str(e))
+ self.assertIn('token_endpoint', str(e))
+ else:
+ self.fail('CommandFailed should be raised')
def test_auth_type_password_opt(self):
cmd_output = json.loads(self.openstack(
diff --git a/openstackclient/tests/functional/network/v2/test_floating_ip.py b/openstackclient/tests/functional/network/v2/test_floating_ip.py
index f189c2da..9d109f87 100644
--- a/openstackclient/tests/functional/network/v2/test_floating_ip.py
+++ b/openstackclient/tests/functional/network/v2/test_floating_ip.py
@@ -24,12 +24,9 @@ class FloatingIpTests(common.NetworkTests):
def setUpClass(cls):
common.NetworkTests.setUpClass()
if cls.haz_network:
+ # Create common networks that all tests share
cls.EXTERNAL_NETWORK_NAME = uuid.uuid4().hex
- cls.EXTERNAL_SUBNET_NAME = uuid.uuid4().hex
cls.PRIVATE_NETWORK_NAME = uuid.uuid4().hex
- cls.PRIVATE_SUBNET_NAME = uuid.uuid4().hex
- cls.ROUTER = uuid.uuid4().hex
- cls.PORT_NAME = uuid.uuid4().hex
# Create a network for the floating ip
json_output = json.loads(cls.openstack(
@@ -46,57 +43,11 @@ class FloatingIpTests(common.NetworkTests):
))
cls.private_network_id = json_output["id"]
- # Try random subnet range for subnet creating
- # Because we can not determine ahead of time what subnets are
- # already in use, possibly by another test running in parallel,
- # try 4 times
- for i in range(4):
- # Make a random subnet
- cls.external_subnet = ".".join(map(
- str,
- (random.randint(0, 223) for _ in range(3))
- )) + ".0/26"
- cls.private_subnet = ".".join(map(
- str,
- (random.randint(0, 223) for _ in range(3))
- )) + ".0/26"
- try:
- # Create a subnet for the network
- json_output = json.loads(cls.openstack(
- 'subnet create -f json ' +
- '--network ' + cls.EXTERNAL_NETWORK_NAME + ' ' +
- '--subnet-range ' + cls.external_subnet + ' ' +
- cls.EXTERNAL_SUBNET_NAME
- ))
- cls.external_subnet_id = json_output["id"]
- # Create a subnet for the private network
- json_output = json.loads(cls.openstack(
- 'subnet create -f json ' +
- '--network ' + cls.PRIVATE_NETWORK_NAME + ' ' +
- '--subnet-range ' + cls.private_subnet + ' ' +
- cls.PRIVATE_SUBNET_NAME
- ))
- cls.private_subnet_id = json_output["id"]
- except Exception:
- if (i == 3):
- # raise the exception at the last time
- raise
- pass
- else:
- # break and no longer retry if create successfully
- break
-
@classmethod
def tearDownClass(cls):
try:
if cls.haz_network:
del_output = cls.openstack(
- 'subnet delete ' +
- cls.EXTERNAL_SUBNET_NAME + ' ' +
- cls.PRIVATE_SUBNET_NAME
- )
- cls.assertOutput('', del_output)
- del_output = cls.openstack(
'network delete ' +
cls.EXTERNAL_NETWORK_NAME + ' ' +
cls.PRIVATE_NETWORK_NAME
@@ -114,11 +65,50 @@ class FloatingIpTests(common.NetworkTests):
# Verify setup
self.assertIsNotNone(self.external_network_id)
self.assertIsNotNone(self.private_network_id)
- self.assertIsNotNone(self.external_subnet_id)
- self.assertIsNotNone(self.private_subnet_id)
+
+ def _create_subnet(self, network_name, subnet_name):
+ subnet_id = None
+
+ # Try random subnet range for subnet creating
+ # Because we can not determine ahead of time what subnets are
+ # already in use, possibly by another test running in parallel,
+ # try 4 times
+ for i in range(4):
+ # Make a random subnet
+ subnet = ".".join(map(
+ str,
+ (random.randint(0, 223) for _ in range(3))
+ )) + ".0/26"
+ try:
+ # Create a subnet for the network
+ json_output = json.loads(self.openstack(
+ 'subnet create -f json ' +
+ '--network ' + network_name + ' ' +
+ '--subnet-range ' + subnet + ' ' +
+ subnet_name
+ ))
+ self.assertIsNotNone(json_output["id"])
+ subnet_id = json_output["id"]
+ except Exception:
+ if (i == 3):
+ # raise the exception at the last time
+ raise
+ pass
+ else:
+ # break and no longer retry if create successfully
+ break
+ return subnet_id
def test_floating_ip_delete(self):
"""Test create, delete multiple"""
+
+ # Subnets must exist even if not directly referenced here
+ ext_subnet_id = self._create_subnet(
+ self.EXTERNAL_NETWORK_NAME,
+ "ext-test-delete"
+ )
+ self.addCleanup(self.openstack, 'subnet delete ' + ext_subnet_id)
+
json_output = json.loads(self.openstack(
'floating ip create -f json ' +
'--description aaaa ' +
@@ -151,6 +141,14 @@ class FloatingIpTests(common.NetworkTests):
def test_floating_ip_list(self):
"""Test create defaults, list filters, delete"""
+
+ # Subnets must exist even if not directly referenced here
+ ext_subnet_id = self._create_subnet(
+ self.EXTERNAL_NETWORK_NAME,
+ "ext-test-delete"
+ )
+ self.addCleanup(self.openstack, 'subnet delete ' + ext_subnet_id)
+
json_output = json.loads(self.openstack(
'floating ip create -f json ' +
'--description aaaa ' +
@@ -237,6 +235,22 @@ class FloatingIpTests(common.NetworkTests):
def test_floating_ip_set_and_unset_port(self):
"""Test Floating IP Set and Unset port"""
+
+ # Subnets must exist even if not directly referenced here
+ ext_subnet_id = self._create_subnet(
+ self.EXTERNAL_NETWORK_NAME,
+ "ext-test-delete"
+ )
+ self.addCleanup(self.openstack, 'subnet delete ' + ext_subnet_id)
+ priv_subnet_id = self._create_subnet(
+ self.PRIVATE_NETWORK_NAME,
+ "priv-test-delete"
+ )
+ self.addCleanup(self.openstack, 'subnet delete ' + priv_subnet_id)
+
+ self.ROUTER = uuid.uuid4().hex
+ self.PORT_NAME = uuid.uuid4().hex
+
json_output = json.loads(self.openstack(
'floating ip create -f json ' +
'--description aaaa ' +
@@ -253,7 +267,7 @@ class FloatingIpTests(common.NetworkTests):
json_output = json.loads(self.openstack(
'port create -f json ' +
'--network ' + self.PRIVATE_NETWORK_NAME + ' ' +
- '--fixed-ip subnet=' + self.PRIVATE_SUBNET_NAME + ' ' +
+ '--fixed-ip subnet=' + priv_subnet_id + ' ' +
self.PORT_NAME
))
self.assertIsNotNone(json_output["id"])
diff --git a/openstackclient/tests/unit/common/test_clientmanager.py b/openstackclient/tests/unit/common/test_clientmanager.py
index f15f9af1..a83b1318 100644
--- a/openstackclient/tests/unit/common/test_clientmanager.py
+++ b/openstackclient/tests/unit/common/test_clientmanager.py
@@ -28,19 +28,19 @@ class TestClientManager(osc_lib_test_utils.TestClientManager):
"""Allow subclasses to override the ClientManager class"""
return clientmanager.ClientManager
- def test_client_manager_token_endpoint(self):
+ def test_client_manager_admin_token(self):
token_auth = {
- 'url': fakes.AUTH_URL,
+ 'endpoint': fakes.AUTH_URL,
'token': fakes.AUTH_TOKEN,
}
client_manager = self._make_clientmanager(
auth_args=token_auth,
- auth_plugin_name='token_endpoint',
+ auth_plugin_name='admin_token',
)
self.assertEqual(
fakes.AUTH_URL,
- client_manager._cli_options.config['auth']['url'],
+ client_manager._cli_options.config['auth']['endpoint'],
)
self.assertEqual(
fakes.AUTH_TOKEN,
diff --git a/openstackclient/tests/unit/compute/v2/fakes.py b/openstackclient/tests/unit/compute/v2/fakes.py
index ee7d4983..7357e143 100644
--- a/openstackclient/tests/unit/compute/v2/fakes.py
+++ b/openstackclient/tests/unit/compute/v2/fakes.py
@@ -505,7 +505,7 @@ class FakeSecurityGroup(object):
@staticmethod
def get_security_groups(security_groups=None, count=2):
- """Get an iterable MagicMock object with a list of faked security groups.
+ """Get an iterable MagicMock with a list of faked security groups.
If security groups list is provided, then initialize the Mock object
with the list. Otherwise create one.
diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py
index 0793116a..5c98188a 100644
--- a/openstackclient/tests/unit/compute/v2/test_server.py
+++ b/openstackclient/tests/unit/compute/v2/test_server.py
@@ -109,6 +109,10 @@ class TestServer(compute_fakes.TestComputev2):
version = self.app.client_manager.compute.api_version
if version >= api_versions.APIVersion('2.73'):
method.assert_called_with(reason=None)
+ elif method_name == 'unshelve':
+ version = self.app.client_manager.compute.api_version
+ if version >= api_versions.APIVersion('2.77'):
+ method.assert_called_with(availability_zone=None)
else:
method.assert_called_with()
else:
@@ -4777,6 +4781,56 @@ class TestServerUnshelve(TestServer):
def test_unshelve_multi_servers(self):
self.run_method_with_servers('unshelve', 3)
+ def test_unshelve_server_with_specified_az(self):
+ server = compute_fakes.FakeServer.create_one_server()
+ arglist = [
+ server.id,
+ '--availability-zone', "foo-az",
+ ]
+ verifylist = [
+ ('availability_zone', "foo-az"),
+ ('server', [server.id])
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ ex = self.assertRaises(exceptions.CommandError,
+ self.cmd.take_action,
+ parsed_args)
+ self.assertIn(
+ '--os-compute-api-version 2.77 or greater is required', str(ex))
+
+
+class TestServerUnshelveV277(TestServerUnshelve):
+
+ def setUp(self):
+ super(TestServerUnshelveV277, self).setUp()
+
+ self.server = compute_fakes.FakeServer.create_one_server(
+ methods=self.methods)
+
+ # This is the return value for utils.find_resource()
+ self.servers_mock.get.return_value = self.server
+
+ # Get the command object to test
+ self.cmd = server.UnshelveServer(self.app, None)
+
+ def test_specified_az_to_unshelve_with_v277(self):
+ self.app.client_manager.compute.api_version = api_versions.APIVersion(
+ '2.77')
+
+ arglist = [
+ '--availability-zone', "foo-az",
+ self.server.id,
+ ]
+ verifylist = [
+ ('availability_zone', "foo-az"),
+ ('server', [self.server.id])
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ self.cmd.take_action(parsed_args)
+ self.servers_mock.get.assert_called_with(self.server.id)
+ self.server.unshelve.assert_called_with(availability_zone="foo-az")
+
class TestServerGeneral(TestServer):
OLD = {
diff --git a/openstackclient/tests/unit/network/v2/fakes.py b/openstackclient/tests/unit/network/v2/fakes.py
index 27a7485a..35f0b1a5 100644
--- a/openstackclient/tests/unit/network/v2/fakes.py
+++ b/openstackclient/tests/unit/network/v2/fakes.py
@@ -1344,7 +1344,7 @@ class FakeSecurityGroupRule(object):
@staticmethod
def get_security_group_rules(security_group_rules=None, count=2):
- """Get an iterable Mock object with a list of faked security group rules.
+ """Get an iterable Mock with a list of faked security group rules.
If security group rules list is provided, then initialize the Mock
object with the list. Otherwise create one.
diff --git a/openstackclient/tests/unit/test_shell.py b/openstackclient/tests/unit/test_shell.py
index 5d413e7e..31675c47 100644
--- a/openstackclient/tests/unit/test_shell.py
+++ b/openstackclient/tests/unit/test_shell.py
@@ -153,7 +153,7 @@ class TestShell(osc_lib_test_utils.TestShell):
# released in osc-lib
self.shell_class = importutils.import_class(self.shell_class_name)
- def _assert_token_endpoint_auth(self, cmd_options, default_args):
+ def _assert_admin_token_auth(self, cmd_options, default_args):
with mock.patch(
self.shell_class_name + ".initialize_app",
self.app,
@@ -172,9 +172,9 @@ class TestShell(osc_lib_test_utils.TestShell):
"token",
)
self.assertEqual(
- default_args.get("url", ''),
- _shell.options.url,
- "url",
+ default_args.get("endpoint", ''),
+ _shell.options.endpoint,
+ "endpoint",
)
def _assert_token_auth(self, cmd_options, default_args):
@@ -338,7 +338,7 @@ class TestShellTokenEndpointAuthEnv(TestShell):
super(TestShellTokenEndpointAuthEnv, self).setUp()
env = {
"OS_TOKEN": DEFAULT_TOKEN,
- "OS_URL": DEFAULT_SERVICE_URL,
+ "OS_ENDPOINT": DEFAULT_SERVICE_URL,
}
self.useFixture(osc_lib_test_utils.EnvFixture(env.copy()))
@@ -346,23 +346,23 @@ class TestShellTokenEndpointAuthEnv(TestShell):
flag = ""
kwargs = {
"token": DEFAULT_TOKEN,
- "url": DEFAULT_SERVICE_URL,
+ "endpoint": DEFAULT_SERVICE_URL,
}
- self._assert_token_endpoint_auth(flag, kwargs)
+ self._assert_admin_token_auth(flag, kwargs)
def test_only_token(self):
flag = "--os-token xyzpdq"
kwargs = {
"token": "xyzpdq",
- "url": DEFAULT_SERVICE_URL,
+ "endpoint": DEFAULT_SERVICE_URL,
}
self._assert_token_auth(flag, kwargs)
def test_only_url(self):
- flag = "--os-url http://cloud.local:555"
+ flag = "--os-endpoint http://cloud.local:555"
kwargs = {
"token": DEFAULT_TOKEN,
- "url": "http://cloud.local:555",
+ "endpoint": "http://cloud.local:555",
}
self._assert_token_auth(flag, kwargs)
@@ -371,7 +371,7 @@ class TestShellTokenEndpointAuthEnv(TestShell):
flag = ""
kwargs = {
"token": '',
- "url": '',
+ "endpoint": '',
}
self._assert_token_auth(flag, kwargs)