python-openstackclient 8.3.0__py3-none-any.whl → 10.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openstackclient/__init__.py +2 -6
- openstackclient/api/api.py +41 -23
- openstackclient/api/compute_v2.py +44 -25
- openstackclient/api/object_store_v1.py +75 -97
- openstackclient/api/volume_v2.py +2 -1
- openstackclient/api/volume_v3.py +2 -1
- openstackclient/common/availability_zone.py +58 -42
- openstackclient/common/clientmanager.py +56 -29
- openstackclient/common/configuration.py +10 -3
- openstackclient/common/envvars.py +2 -2
- openstackclient/common/extension.py +14 -5
- openstackclient/common/limits.py +10 -5
- openstackclient/common/module.py +14 -6
- openstackclient/common/pagination.py +8 -2
- openstackclient/common/progressbar.py +7 -6
- openstackclient/common/project_cleanup.py +13 -7
- openstackclient/common/quota.py +126 -114
- openstackclient/common/versions.py +8 -2
- openstackclient/compute/client.py +7 -3
- openstackclient/compute/v2/agent.py +17 -10
- openstackclient/compute/v2/aggregate.py +36 -22
- openstackclient/compute/v2/console.py +14 -8
- openstackclient/compute/v2/console_connection.py +11 -3
- openstackclient/compute/v2/flavor.py +39 -21
- openstackclient/compute/v2/host.py +14 -6
- openstackclient/compute/v2/hypervisor.py +14 -5
- openstackclient/compute/v2/hypervisor_stats.py +10 -2
- openstackclient/compute/v2/keypair.py +29 -14
- openstackclient/compute/v2/server.py +251 -171
- openstackclient/compute/v2/server_backup.py +10 -4
- openstackclient/compute/v2/server_event.py +21 -12
- openstackclient/compute/v2/server_group.py +21 -11
- openstackclient/compute/v2/server_image.py +19 -10
- openstackclient/compute/v2/server_migration.py +24 -10
- openstackclient/compute/v2/server_share.py +274 -0
- openstackclient/compute/v2/server_volume.py +10 -4
- openstackclient/compute/v2/service.py +14 -7
- openstackclient/compute/v2/usage.py +26 -21
- openstackclient/identity/client.py +8 -3
- openstackclient/identity/common.py +103 -41
- openstackclient/identity/v2_0/catalog.py +14 -7
- openstackclient/identity/v2_0/ec2creds.py +21 -10
- openstackclient/identity/v2_0/endpoint.py +23 -11
- openstackclient/identity/v2_0/project.py +25 -14
- openstackclient/identity/v2_0/role.py +28 -14
- openstackclient/identity/v2_0/role_assignment.py +9 -3
- openstackclient/identity/v2_0/service.py +26 -12
- openstackclient/identity/v2_0/token.py +12 -5
- openstackclient/identity/v2_0/user.py +26 -15
- openstackclient/identity/v3/access_rule.py +26 -12
- openstackclient/identity/v3/application_credential.py +59 -24
- openstackclient/identity/v3/catalog.py +14 -7
- openstackclient/identity/v3/consumer.py +22 -11
- openstackclient/identity/v3/credential.py +36 -16
- openstackclient/identity/v3/domain.py +37 -18
- openstackclient/identity/v3/ec2creds.py +25 -12
- openstackclient/identity/v3/endpoint.py +42 -20
- openstackclient/identity/v3/endpoint_group.py +28 -17
- openstackclient/identity/v3/federation_protocol.py +71 -50
- openstackclient/identity/v3/group.py +55 -32
- openstackclient/identity/v3/identity_provider.py +92 -57
- openstackclient/identity/v3/implied_role.py +21 -9
- openstackclient/identity/v3/limit.py +115 -92
- openstackclient/identity/v3/mapping.py +26 -13
- openstackclient/identity/v3/policy.py +23 -12
- openstackclient/identity/v3/project.py +211 -122
- openstackclient/identity/v3/region.py +36 -16
- openstackclient/identity/v3/registered_limit.py +116 -109
- openstackclient/identity/v3/role.py +61 -31
- openstackclient/identity/v3/role_assignment.py +23 -6
- openstackclient/identity/v3/service.py +36 -16
- openstackclient/identity/v3/service_provider.py +37 -15
- openstackclient/identity/v3/tag.py +23 -17
- openstackclient/identity/v3/token.py +30 -14
- openstackclient/identity/v3/trust.py +32 -14
- openstackclient/identity/v3/unscoped_saml.py +10 -2
- openstackclient/identity/v3/user.py +49 -26
- openstackclient/image/client.py +7 -3
- openstackclient/image/v1/image.py +33 -26
- openstackclient/image/v2/cache.py +14 -9
- openstackclient/image/v2/image.py +76 -49
- openstackclient/image/v2/info.py +7 -1
- openstackclient/image/v2/metadef_namespaces.py +109 -13
- openstackclient/image/v2/metadef_objects.py +28 -15
- openstackclient/image/v2/metadef_properties.py +24 -13
- openstackclient/image/v2/metadef_resource_type_association.py +14 -7
- openstackclient/image/v2/metadef_resource_types.py +7 -1
- openstackclient/image/v2/task.py +15 -6
- openstackclient/locale/tr_TR/LC_MESSAGES/openstackclient.po +7 -192
- openstackclient/network/client.py +7 -2
- openstackclient/network/common.py +16 -241
- openstackclient/network/utils.py +36 -22
- openstackclient/network/v2/address_group.py +27 -16
- openstackclient/network/v2/address_scope.py +24 -13
- openstackclient/network/v2/bgpvpn/bgpvpn.py +463 -0
- openstackclient/network/v2/bgpvpn/constants.py +30 -0
- openstackclient/network/v2/bgpvpn/network_association.py +214 -0
- openstackclient/network/v2/bgpvpn/port_association.py +490 -0
- openstackclient/network/v2/bgpvpn/router_association.py +288 -0
- openstackclient/network/v2/default_security_group_rule.py +19 -10
- openstackclient/network/v2/floating_ip.py +110 -159
- openstackclient/network/v2/floating_ip_port_forwarding.py +30 -18
- openstackclient/network/v2/fwaas/__init__.py +0 -0
- openstackclient/network/v2/fwaas/group.py +466 -0
- openstackclient/network/v2/fwaas/policy.py +518 -0
- openstackclient/network/v2/fwaas/rule.py +574 -0
- openstackclient/network/v2/ip_availability.py +13 -5
- openstackclient/network/v2/l3_conntrack_helper.py +22 -13
- openstackclient/network/v2/local_ip.py +24 -13
- openstackclient/network/v2/local_ip_association.py +14 -7
- openstackclient/network/v2/ndp_proxy.py +20 -11
- openstackclient/network/v2/network.py +129 -196
- openstackclient/network/v2/network_agent.py +46 -25
- openstackclient/network/v2/network_auto_allocated_topology.py +22 -11
- openstackclient/network/v2/network_flavor.py +27 -16
- openstackclient/network/v2/network_flavor_profile.py +23 -12
- openstackclient/network/v2/network_meter.py +21 -10
- openstackclient/network/v2/network_meter_rule.py +21 -11
- openstackclient/network/v2/network_qos_policy.py +25 -15
- openstackclient/network/v2/network_qos_rule.py +32 -17
- openstackclient/network/v2/network_qos_rule_type.py +13 -5
- openstackclient/network/v2/network_rbac.py +23 -12
- openstackclient/network/v2/network_segment.py +20 -11
- openstackclient/network/v2/network_segment_range.py +56 -29
- openstackclient/network/v2/network_service_provider.py +7 -1
- openstackclient/network/v2/network_trunk.py +38 -22
- openstackclient/network/v2/port.py +54 -29
- openstackclient/network/v2/router.py +75 -52
- openstackclient/network/v2/security_group.py +87 -157
- openstackclient/network/v2/security_group_rule.py +100 -280
- openstackclient/network/v2/subnet.py +49 -28
- openstackclient/network/v2/subnet_pool.py +30 -17
- openstackclient/network/v2/taas/tap_flow.py +22 -11
- openstackclient/network/v2/taas/tap_mirror.py +22 -11
- openstackclient/network/v2/taas/tap_service.py +23 -12
- openstackclient/object/client.py +7 -2
- openstackclient/object/v1/account.py +13 -6
- openstackclient/object/v1/container.py +25 -15
- openstackclient/object/v1/object.py +25 -15
- openstackclient/py.typed +0 -0
- openstackclient/shell.py +46 -10
- openstackclient/tests/functional/base.py +55 -20
- openstackclient/tests/functional/common/test_extension.py +4 -0
- openstackclient/tests/functional/common/test_quota.py +3 -1
- openstackclient/tests/functional/compute/v2/common.py +14 -13
- openstackclient/tests/functional/compute/v2/test_flavor.py +3 -1
- openstackclient/tests/functional/compute/v2/test_server.py +3 -0
- openstackclient/tests/functional/identity/v2/common.py +10 -6
- openstackclient/tests/functional/identity/v2/test_role.py +4 -4
- openstackclient/tests/functional/identity/v3/common.py +25 -19
- openstackclient/tests/functional/identity/v3/test_group.py +20 -20
- openstackclient/tests/functional/identity/v3/test_idp.py +3 -1
- openstackclient/tests/functional/identity/v3/test_limit.py +47 -0
- openstackclient/tests/functional/identity/v3/test_project.py +10 -10
- openstackclient/tests/functional/identity/v3/test_role.py +18 -18
- openstackclient/tests/functional/identity/v3/test_role_assignment.py +12 -12
- openstackclient/tests/functional/identity/v3/test_user.py +8 -8
- openstackclient/tests/functional/image/base.py +1 -6
- openstackclient/tests/functional/image/v2/test_metadef_objects.py +69 -0
- openstackclient/tests/functional/network/v2/common.py +5 -2
- openstackclient/tests/functional/network/v2/test_floating_ip.py +10 -4
- openstackclient/tests/functional/network/v2/test_ip_availability.py +4 -0
- openstackclient/tests/functional/network/v2/test_network_meter_rule.py +3 -2
- openstackclient/tests/functional/network/v2/test_network_segment.py +5 -0
- openstackclient/tests/functional/network/v2/test_subnet.py +13 -9
- openstackclient/tests/functional/object/v1/common.py +4 -0
- openstackclient/tests/functional/volume/v2/common.py +4 -0
- openstackclient/tests/functional/volume/v2/test_volume_snapshot.py +27 -11
- openstackclient/tests/functional/volume/v2/test_volume_type.py +2 -2
- openstackclient/tests/functional/volume/v3/common.py +4 -0
- openstackclient/tests/functional/volume/v3/test_volume_snapshot.py +56 -138
- openstackclient/tests/functional/volume/v3/test_volume_type.py +2 -2
- openstackclient/tests/unit/common/test_availability_zone.py +35 -49
- openstackclient/tests/unit/common/test_extension.py +2 -2
- openstackclient/tests/unit/common/test_module.py +12 -7
- openstackclient/tests/unit/common/test_project_cleanup.py +3 -1
- openstackclient/tests/unit/common/test_quota.py +62 -23
- openstackclient/tests/unit/compute/v2/fakes.py +25 -0
- openstackclient/tests/unit/compute/v2/test_flavor.py +28 -2
- openstackclient/tests/unit/compute/v2/test_keypair.py +6 -6
- openstackclient/tests/unit/compute/v2/test_server.py +17 -104
- openstackclient/tests/unit/compute/v2/test_server_share.py +287 -0
- openstackclient/tests/unit/identity/v3/fakes.py +3 -0
- openstackclient/tests/unit/identity/v3/test_group.py +4 -14
- openstackclient/tests/unit/identity/v3/test_identity_provider.py +303 -299
- openstackclient/tests/unit/identity/v3/test_limit.py +197 -145
- openstackclient/tests/unit/identity/v3/test_project.py +831 -512
- openstackclient/tests/unit/identity/v3/test_protocol.py +97 -88
- openstackclient/tests/unit/identity/v3/test_registered_limit.py +355 -220
- openstackclient/tests/unit/identity/v3/test_user.py +4 -4
- openstackclient/tests/unit/image/v2/test_image.py +16 -16
- openstackclient/tests/unit/image/v2/test_metadef_namespaces.py +105 -6
- openstackclient/tests/unit/network/test_common.py +0 -155
- openstackclient/tests/unit/network/v2/bgpvpn/__init__.py +0 -0
- openstackclient/tests/unit/network/v2/bgpvpn/fakes.py +179 -0
- openstackclient/tests/unit/network/v2/bgpvpn/test_bgpvpn.py +584 -0
- openstackclient/tests/unit/network/v2/bgpvpn/test_network_association.py +285 -0
- openstackclient/tests/unit/network/v2/bgpvpn/test_port_association.py +384 -0
- openstackclient/tests/unit/network/v2/bgpvpn/test_router_association.py +297 -0
- openstackclient/tests/unit/network/v2/fwaas/__init__.py +0 -0
- openstackclient/tests/unit/network/v2/fwaas/test_group.py +897 -0
- openstackclient/tests/unit/network/v2/fwaas/test_policy.py +869 -0
- openstackclient/tests/unit/network/v2/fwaas/test_rule.py +980 -0
- openstackclient/tests/unit/network/v2/taas/{test_osc_tap_flow.py → test_tap_flow.py} +18 -25
- openstackclient/tests/unit/network/v2/taas/{test_osc_tap_mirror.py → test_tap_mirror.py} +19 -29
- openstackclient/tests/unit/network/v2/taas/{test_osc_tap_service.py → test_tap_service.py} +19 -29
- openstackclient/tests/unit/network/v2/test_address_group.py +2 -2
- openstackclient/tests/unit/network/v2/{test_floating_ip_network.py → test_floating_ip.py} +3 -2
- openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +13 -13
- openstackclient/tests/unit/network/v2/test_network_agent.py +8 -4
- openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py +3 -3
- openstackclient/tests/unit/network/v2/test_network_flavor.py +2 -2
- openstackclient/tests/unit/network/v2/test_network_qos_policy.py +1 -1
- openstackclient/tests/unit/network/v2/test_network_qos_rule.py +2 -2
- openstackclient/tests/unit/network/v2/test_network_rbac.py +1 -1
- openstackclient/tests/unit/network/v2/test_network_segment.py +1 -1
- openstackclient/tests/unit/network/v2/test_network_segment_range.py +7 -10
- openstackclient/tests/unit/network/v2/test_network_trunk.py +1 -1
- openstackclient/tests/unit/network/v2/test_router.py +8 -9
- openstackclient/tests/unit/network/v2/{test_security_group_network.py → test_security_group.py} +1 -20
- openstackclient/tests/unit/network/v2/{test_security_group_rule_network.py → test_security_group_rule.py} +7 -41
- openstackclient/tests/unit/network/v2/test_subnet.py +2 -1
- openstackclient/tests/unit/network/v2/test_subnet_pool.py +2 -1
- openstackclient/tests/unit/object/v1/fakes.py +8 -7
- openstackclient/tests/unit/object/v1/test_container.py +65 -101
- openstackclient/tests/unit/object/v1/test_container_all.py +8 -1
- openstackclient/tests/unit/object/v1/test_object.py +44 -84
- openstackclient/tests/unit/object/v1/test_object_all.py +8 -1
- openstackclient/tests/unit/test_hacking.py +108 -0
- openstackclient/tests/unit/volume/v2/fakes.py +1 -0
- openstackclient/tests/unit/volume/v2/test_consistency_group.py +8 -2
- openstackclient/tests/unit/volume/v2/test_volume.py +7 -6
- openstackclient/tests/unit/volume/v2/test_volume_backup.py +1 -5
- openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +2 -1
- openstackclient/tests/unit/volume/v2/test_volume_type.py +2 -4
- openstackclient/tests/unit/volume/v3/fakes.py +1 -0
- openstackclient/tests/unit/volume/v3/test_volume.py +94 -15
- openstackclient/tests/unit/volume/v3/test_volume_attachment.py +1 -1
- openstackclient/tests/unit/volume/v3/test_volume_backup.py +1 -5
- openstackclient/tests/unit/volume/v3/test_volume_snapshot.py +55 -1
- openstackclient/tests/unit/volume/v3/test_volume_type.py +2 -4
- openstackclient/volume/client.py +7 -3
- openstackclient/volume/v2/backup_record.py +15 -6
- openstackclient/volume/v2/consistency_group.py +37 -25
- openstackclient/volume/v2/consistency_group_snapshot.py +27 -12
- openstackclient/volume/v2/qos_specs.py +30 -19
- openstackclient/volume/v2/service.py +17 -6
- openstackclient/volume/v2/volume.py +69 -34
- openstackclient/volume/v2/volume_backend.py +19 -6
- openstackclient/volume/v2/volume_backup.py +48 -22
- openstackclient/volume/v2/volume_host.py +6 -4
- openstackclient/volume/v2/volume_snapshot.py +52 -26
- openstackclient/volume/v2/volume_transfer_request.py +33 -15
- openstackclient/volume/v2/volume_type.py +46 -27
- openstackclient/volume/v3/block_storage_cleanup.py +11 -3
- openstackclient/volume/v3/block_storage_cluster.py +19 -7
- openstackclient/volume/v3/block_storage_log_level.py +15 -6
- openstackclient/volume/v3/block_storage_manage.py +10 -4
- openstackclient/volume/v3/block_storage_resource_filter.py +17 -5
- openstackclient/volume/v3/service.py +16 -6
- openstackclient/volume/v3/volume.py +103 -46
- openstackclient/volume/v3/volume_attachment.py +43 -21
- openstackclient/volume/v3/volume_backup.py +55 -26
- openstackclient/volume/v3/volume_group.py +23 -13
- openstackclient/volume/v3/volume_group_snapshot.py +32 -13
- openstackclient/volume/v3/volume_group_type.py +26 -13
- openstackclient/volume/v3/volume_message.py +15 -7
- openstackclient/volume/v3/volume_snapshot.py +71 -34
- openstackclient/volume/v3/volume_transfer_request.py +33 -15
- openstackclient/volume/v3/volume_type.py +45 -27
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/METADATA +6 -6
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/RECORD +279 -267
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/WHEEL +1 -1
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/entry_points.txt +53 -1
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/licenses/AUTHORS +9 -0
- python_openstackclient-10.0.0.dist-info/pbr.json +1 -0
- openstackclient/api/image_v1.py +0 -69
- openstackclient/api/image_v2.py +0 -79
- openstackclient/network/v2/floating_ip_pool.py +0 -38
- openstackclient/tests/functional/image/v1/test_image.py +0 -97
- openstackclient/tests/unit/api/test_image_v1.py +0 -96
- openstackclient/tests/unit/api/test_image_v2.py +0 -96
- openstackclient/tests/unit/network/v2/test_floating_ip_compute.py +0 -248
- openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py +0 -49
- openstackclient/tests/unit/network/v2/test_floating_ip_pool_network.py +0 -39
- openstackclient/tests/unit/network/v2/test_network_compute.py +0 -404
- openstackclient/tests/unit/network/v2/test_security_group_compute.py +0 -392
- openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py +0 -555
- python_openstackclient-8.3.0.dist-info/pbr.json +0 -1
- /openstackclient/{tests/functional/image/v1 → network/v2/bgpvpn}/__init__.py +0 -0
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/licenses/LICENSE +0 -0
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/top_level.txt +0 -0
|
@@ -15,8 +15,12 @@
|
|
|
15
15
|
|
|
16
16
|
"""Identity v3 Credential action implementations"""
|
|
17
17
|
|
|
18
|
+
import argparse
|
|
19
|
+
from collections.abc import Iterable, Sequence
|
|
18
20
|
import logging
|
|
21
|
+
from typing import Any
|
|
19
22
|
|
|
23
|
+
from openstack import utils as sdk_utils
|
|
20
24
|
from osc_lib import exceptions
|
|
21
25
|
from osc_lib import utils
|
|
22
26
|
|
|
@@ -28,7 +32,7 @@ from openstackclient.identity import common
|
|
|
28
32
|
LOG = logging.getLogger(__name__)
|
|
29
33
|
|
|
30
34
|
|
|
31
|
-
def _format_credential(credential):
|
|
35
|
+
def _format_credential(credential: Any) -> tuple[tuple[str, ...], Any]:
|
|
32
36
|
columns = (
|
|
33
37
|
'blob',
|
|
34
38
|
'id',
|
|
@@ -48,7 +52,7 @@ def _format_credential(credential):
|
|
|
48
52
|
class CreateCredential(command.ShowOne):
|
|
49
53
|
_description = _("Create new credential")
|
|
50
54
|
|
|
51
|
-
def get_parser(self, prog_name):
|
|
55
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
52
56
|
parser = super().get_parser(prog_name)
|
|
53
57
|
parser.add_argument(
|
|
54
58
|
'user',
|
|
@@ -75,8 +79,12 @@ class CreateCredential(command.ShowOne):
|
|
|
75
79
|
)
|
|
76
80
|
return parser
|
|
77
81
|
|
|
78
|
-
def take_action(
|
|
79
|
-
|
|
82
|
+
def take_action(
|
|
83
|
+
self, parsed_args: argparse.Namespace
|
|
84
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
85
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
86
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
87
|
+
)
|
|
80
88
|
user_id = identity_client.find_user(
|
|
81
89
|
parsed_args.user, ignore_missing=False
|
|
82
90
|
).id
|
|
@@ -99,7 +107,7 @@ class CreateCredential(command.ShowOne):
|
|
|
99
107
|
class DeleteCredential(command.Command):
|
|
100
108
|
_description = _("Delete credential(s)")
|
|
101
109
|
|
|
102
|
-
def get_parser(self, prog_name):
|
|
110
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
103
111
|
parser = super().get_parser(prog_name)
|
|
104
112
|
parser.add_argument(
|
|
105
113
|
'credential',
|
|
@@ -109,8 +117,10 @@ class DeleteCredential(command.Command):
|
|
|
109
117
|
)
|
|
110
118
|
return parser
|
|
111
119
|
|
|
112
|
-
def take_action(self, parsed_args):
|
|
113
|
-
identity_client =
|
|
120
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
121
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
122
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
123
|
+
)
|
|
114
124
|
result = 0
|
|
115
125
|
for i in parsed_args.credential:
|
|
116
126
|
try:
|
|
@@ -137,7 +147,7 @@ class DeleteCredential(command.Command):
|
|
|
137
147
|
class ListCredential(command.Lister):
|
|
138
148
|
_description = _("List credentials")
|
|
139
149
|
|
|
140
|
-
def get_parser(self, prog_name):
|
|
150
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
141
151
|
parser = super().get_parser(prog_name)
|
|
142
152
|
parser.add_argument(
|
|
143
153
|
'--user',
|
|
@@ -152,8 +162,12 @@ class ListCredential(command.Lister):
|
|
|
152
162
|
)
|
|
153
163
|
return parser
|
|
154
164
|
|
|
155
|
-
def take_action(
|
|
156
|
-
|
|
165
|
+
def take_action(
|
|
166
|
+
self, parsed_args: argparse.Namespace
|
|
167
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
168
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
169
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
170
|
+
)
|
|
157
171
|
|
|
158
172
|
kwargs = {}
|
|
159
173
|
if parsed_args.user:
|
|
@@ -190,7 +204,7 @@ class ListCredential(command.Lister):
|
|
|
190
204
|
class SetCredential(command.Command):
|
|
191
205
|
_description = _("Set credential properties")
|
|
192
206
|
|
|
193
|
-
def get_parser(self, prog_name):
|
|
207
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
194
208
|
parser = super().get_parser(prog_name)
|
|
195
209
|
parser.add_argument(
|
|
196
210
|
'credential',
|
|
@@ -224,8 +238,10 @@ class SetCredential(command.Command):
|
|
|
224
238
|
)
|
|
225
239
|
return parser
|
|
226
240
|
|
|
227
|
-
def take_action(self, parsed_args):
|
|
228
|
-
identity_client =
|
|
241
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
242
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
243
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
244
|
+
)
|
|
229
245
|
|
|
230
246
|
user_id = identity_client.find_user(
|
|
231
247
|
parsed_args.user, ignore_missing=False
|
|
@@ -250,7 +266,7 @@ class SetCredential(command.Command):
|
|
|
250
266
|
class ShowCredential(command.ShowOne):
|
|
251
267
|
_description = _("Display credential details")
|
|
252
268
|
|
|
253
|
-
def get_parser(self, prog_name):
|
|
269
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
254
270
|
parser = super().get_parser(prog_name)
|
|
255
271
|
parser.add_argument(
|
|
256
272
|
'credential',
|
|
@@ -259,8 +275,12 @@ class ShowCredential(command.ShowOne):
|
|
|
259
275
|
)
|
|
260
276
|
return parser
|
|
261
277
|
|
|
262
|
-
def take_action(
|
|
263
|
-
|
|
278
|
+
def take_action(
|
|
279
|
+
self, parsed_args: argparse.Namespace
|
|
280
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
281
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
282
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
283
|
+
)
|
|
264
284
|
credential = identity_client.get_credential(parsed_args.credential)
|
|
265
285
|
|
|
266
286
|
return _format_credential(credential)
|
|
@@ -15,9 +15,13 @@
|
|
|
15
15
|
|
|
16
16
|
"""Identity v3 Domain action implementations"""
|
|
17
17
|
|
|
18
|
+
import argparse
|
|
19
|
+
from collections.abc import Iterable, Sequence
|
|
18
20
|
import logging
|
|
21
|
+
from typing import Any
|
|
19
22
|
|
|
20
23
|
from openstack import exceptions as sdk_exceptions
|
|
24
|
+
from openstack import utils as sdk_utils
|
|
21
25
|
from osc_lib import exceptions
|
|
22
26
|
from osc_lib import utils
|
|
23
27
|
|
|
@@ -29,7 +33,7 @@ from openstackclient.identity import common
|
|
|
29
33
|
LOG = logging.getLogger(__name__)
|
|
30
34
|
|
|
31
35
|
|
|
32
|
-
def _format_domain(domain):
|
|
36
|
+
def _format_domain(domain: Any) -> tuple[tuple[str, ...], Any]:
|
|
33
37
|
columns = (
|
|
34
38
|
'id',
|
|
35
39
|
'name',
|
|
@@ -57,7 +61,7 @@ def _format_domain(domain):
|
|
|
57
61
|
class CreateDomain(command.ShowOne):
|
|
58
62
|
_description = _("Create new domain")
|
|
59
63
|
|
|
60
|
-
def get_parser(self, prog_name):
|
|
64
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
61
65
|
parser = super().get_parser(prog_name)
|
|
62
66
|
parser.add_argument(
|
|
63
67
|
'name',
|
|
@@ -91,8 +95,12 @@ class CreateDomain(command.ShowOne):
|
|
|
91
95
|
common.add_resource_option_to_parser(parser)
|
|
92
96
|
return parser
|
|
93
97
|
|
|
94
|
-
def take_action(
|
|
95
|
-
|
|
98
|
+
def take_action(
|
|
99
|
+
self, parsed_args: argparse.Namespace
|
|
100
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
101
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
102
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
103
|
+
)
|
|
96
104
|
|
|
97
105
|
options = {}
|
|
98
106
|
if parsed_args.immutable is not None:
|
|
@@ -120,7 +128,7 @@ class CreateDomain(command.ShowOne):
|
|
|
120
128
|
class DeleteDomain(command.Command):
|
|
121
129
|
_description = _("Delete domain(s)")
|
|
122
130
|
|
|
123
|
-
def get_parser(self, prog_name):
|
|
131
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
124
132
|
parser = super().get_parser(prog_name)
|
|
125
133
|
parser.add_argument(
|
|
126
134
|
'domain',
|
|
@@ -130,8 +138,10 @@ class DeleteDomain(command.Command):
|
|
|
130
138
|
)
|
|
131
139
|
return parser
|
|
132
140
|
|
|
133
|
-
def take_action(self, parsed_args):
|
|
134
|
-
identity_client =
|
|
141
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
142
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
143
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
144
|
+
)
|
|
135
145
|
result = 0
|
|
136
146
|
for i in parsed_args.domain:
|
|
137
147
|
try:
|
|
@@ -159,7 +169,7 @@ class DeleteDomain(command.Command):
|
|
|
159
169
|
class ListDomain(command.Lister):
|
|
160
170
|
_description = _("List domains")
|
|
161
171
|
|
|
162
|
-
def get_parser(self, prog_name):
|
|
172
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
163
173
|
parser = super().get_parser(prog_name)
|
|
164
174
|
parser.add_argument(
|
|
165
175
|
'--name',
|
|
@@ -174,7 +184,12 @@ class ListDomain(command.Lister):
|
|
|
174
184
|
)
|
|
175
185
|
return parser
|
|
176
186
|
|
|
177
|
-
def take_action(
|
|
187
|
+
def take_action(
|
|
188
|
+
self, parsed_args: argparse.Namespace
|
|
189
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
190
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
191
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
192
|
+
)
|
|
178
193
|
kwargs = {}
|
|
179
194
|
if parsed_args.name:
|
|
180
195
|
kwargs['name'] = parsed_args.name
|
|
@@ -183,9 +198,7 @@ class ListDomain(command.Lister):
|
|
|
183
198
|
|
|
184
199
|
columns = ('id', 'name', 'is_enabled', 'description')
|
|
185
200
|
column_headers = ('ID', 'Name', 'Enabled', 'Description')
|
|
186
|
-
data =
|
|
187
|
-
**kwargs
|
|
188
|
-
)
|
|
201
|
+
data = identity_client.domains(**kwargs)
|
|
189
202
|
|
|
190
203
|
return (
|
|
191
204
|
column_headers,
|
|
@@ -203,7 +216,7 @@ class ListDomain(command.Lister):
|
|
|
203
216
|
class SetDomain(command.Command):
|
|
204
217
|
_description = _("Set domain properties")
|
|
205
218
|
|
|
206
|
-
def get_parser(self, prog_name):
|
|
219
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
207
220
|
parser = super().get_parser(prog_name)
|
|
208
221
|
parser.add_argument(
|
|
209
222
|
'domain',
|
|
@@ -238,8 +251,10 @@ class SetDomain(command.Command):
|
|
|
238
251
|
common.add_resource_option_to_parser(parser)
|
|
239
252
|
return parser
|
|
240
253
|
|
|
241
|
-
def take_action(self, parsed_args):
|
|
242
|
-
identity_client =
|
|
254
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
255
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
256
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
257
|
+
)
|
|
243
258
|
domain = identity_client.find_domain(
|
|
244
259
|
parsed_args.domain, ignore_missing=False
|
|
245
260
|
)
|
|
@@ -259,7 +274,7 @@ class SetDomain(command.Command):
|
|
|
259
274
|
class ShowDomain(command.ShowOne):
|
|
260
275
|
_description = _("Display domain details")
|
|
261
276
|
|
|
262
|
-
def get_parser(self, prog_name):
|
|
277
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
263
278
|
parser = super().get_parser(prog_name)
|
|
264
279
|
parser.add_argument(
|
|
265
280
|
'domain',
|
|
@@ -268,8 +283,12 @@ class ShowDomain(command.ShowOne):
|
|
|
268
283
|
)
|
|
269
284
|
return parser
|
|
270
285
|
|
|
271
|
-
def take_action(
|
|
272
|
-
|
|
286
|
+
def take_action(
|
|
287
|
+
self, parsed_args: argparse.Namespace
|
|
288
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
289
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
290
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
291
|
+
)
|
|
273
292
|
domain = identity_client.find_domain(
|
|
274
293
|
parsed_args.domain, ignore_missing=False
|
|
275
294
|
)
|
|
@@ -12,7 +12,10 @@
|
|
|
12
12
|
|
|
13
13
|
"""Identity v3 EC2 Credentials action implementations"""
|
|
14
14
|
|
|
15
|
+
import argparse
|
|
16
|
+
from collections.abc import Iterable, Sequence
|
|
15
17
|
import logging
|
|
18
|
+
from typing import Any, cast
|
|
16
19
|
|
|
17
20
|
from osc_lib import exceptions
|
|
18
21
|
from osc_lib import utils
|
|
@@ -25,7 +28,9 @@ from openstackclient.identity import common
|
|
|
25
28
|
LOG = logging.getLogger(__name__)
|
|
26
29
|
|
|
27
30
|
|
|
28
|
-
def _determine_ec2_user(
|
|
31
|
+
def _determine_ec2_user(
|
|
32
|
+
parsed_args: argparse.Namespace, client_manager: Any
|
|
33
|
+
) -> str:
|
|
29
34
|
"""Determine a user several different ways.
|
|
30
35
|
|
|
31
36
|
Assumes parsed_args has user and user_domain arguments. Attempts to find
|
|
@@ -53,13 +58,13 @@ def _determine_ec2_user(parsed_args, client_manager):
|
|
|
53
58
|
else:
|
|
54
59
|
# Get the user from the current auth
|
|
55
60
|
user = client_manager.auth_ref.user_id
|
|
56
|
-
return user
|
|
61
|
+
return cast(str, user)
|
|
57
62
|
|
|
58
63
|
|
|
59
64
|
class CreateEC2Creds(command.ShowOne):
|
|
60
65
|
_description = _("Create EC2 credentials")
|
|
61
66
|
|
|
62
|
-
def get_parser(self, prog_name):
|
|
67
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
63
68
|
parser = super().get_parser(prog_name)
|
|
64
69
|
parser.add_argument(
|
|
65
70
|
'--project',
|
|
@@ -81,7 +86,9 @@ class CreateEC2Creds(command.ShowOne):
|
|
|
81
86
|
common.add_project_domain_option_to_parser(parser)
|
|
82
87
|
return parser
|
|
83
88
|
|
|
84
|
-
def take_action(
|
|
89
|
+
def take_action(
|
|
90
|
+
self, parsed_args: argparse.Namespace
|
|
91
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
85
92
|
identity_client = self.app.client_manager.identity
|
|
86
93
|
client_manager = self.app.client_manager
|
|
87
94
|
user = _determine_ec2_user(parsed_args, client_manager)
|
|
@@ -115,13 +122,14 @@ class CreateEC2Creds(command.ShowOne):
|
|
|
115
122
|
if 'tenant_id' in info:
|
|
116
123
|
info.update({'project_id': info.pop('tenant_id')})
|
|
117
124
|
|
|
118
|
-
|
|
125
|
+
col_headers, col_data = zip(*sorted(info.items()))
|
|
126
|
+
return col_headers, col_data
|
|
119
127
|
|
|
120
128
|
|
|
121
129
|
class DeleteEC2Creds(command.Command):
|
|
122
130
|
_description = _("Delete EC2 credentials")
|
|
123
131
|
|
|
124
|
-
def get_parser(self, prog_name):
|
|
132
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
125
133
|
parser = super().get_parser(prog_name)
|
|
126
134
|
parser.add_argument(
|
|
127
135
|
'access_key',
|
|
@@ -137,7 +145,7 @@ class DeleteEC2Creds(command.Command):
|
|
|
137
145
|
common.add_user_domain_option_to_parser(parser)
|
|
138
146
|
return parser
|
|
139
147
|
|
|
140
|
-
def take_action(self, parsed_args):
|
|
148
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
141
149
|
client_manager = self.app.client_manager
|
|
142
150
|
user = _determine_ec2_user(parsed_args, client_manager)
|
|
143
151
|
result = 0
|
|
@@ -166,7 +174,7 @@ class DeleteEC2Creds(command.Command):
|
|
|
166
174
|
class ListEC2Creds(command.Lister):
|
|
167
175
|
_description = _("List EC2 credentials")
|
|
168
176
|
|
|
169
|
-
def get_parser(self, prog_name):
|
|
177
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
170
178
|
parser = super().get_parser(prog_name)
|
|
171
179
|
parser.add_argument(
|
|
172
180
|
'--user',
|
|
@@ -176,7 +184,9 @@ class ListEC2Creds(command.Lister):
|
|
|
176
184
|
common.add_user_domain_option_to_parser(parser)
|
|
177
185
|
return parser
|
|
178
186
|
|
|
179
|
-
def take_action(
|
|
187
|
+
def take_action(
|
|
188
|
+
self, parsed_args: argparse.Namespace
|
|
189
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
180
190
|
client_manager = self.app.client_manager
|
|
181
191
|
user = _determine_ec2_user(parsed_args, client_manager)
|
|
182
192
|
|
|
@@ -200,7 +210,7 @@ class ListEC2Creds(command.Lister):
|
|
|
200
210
|
class ShowEC2Creds(command.ShowOne):
|
|
201
211
|
_description = _("Display EC2 credentials details")
|
|
202
212
|
|
|
203
|
-
def get_parser(self, prog_name):
|
|
213
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
204
214
|
parser = super().get_parser(prog_name)
|
|
205
215
|
parser.add_argument(
|
|
206
216
|
'access_key',
|
|
@@ -215,7 +225,9 @@ class ShowEC2Creds(command.ShowOne):
|
|
|
215
225
|
common.add_user_domain_option_to_parser(parser)
|
|
216
226
|
return parser
|
|
217
227
|
|
|
218
|
-
def take_action(
|
|
228
|
+
def take_action(
|
|
229
|
+
self, parsed_args: argparse.Namespace
|
|
230
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
219
231
|
client_manager = self.app.client_manager
|
|
220
232
|
user = _determine_ec2_user(parsed_args, client_manager)
|
|
221
233
|
creds = client_manager.identity.ec2.get(user, parsed_args.access_key)
|
|
@@ -226,4 +238,5 @@ class ShowEC2Creds(command.ShowOne):
|
|
|
226
238
|
if 'tenant_id' in info:
|
|
227
239
|
info.update({'project_id': info.pop('tenant_id')})
|
|
228
240
|
|
|
229
|
-
|
|
241
|
+
col_headers, col_data = zip(*sorted(info.items()))
|
|
242
|
+
return col_headers, col_data
|
|
@@ -15,8 +15,12 @@
|
|
|
15
15
|
|
|
16
16
|
"""Identity v3 Endpoint action implementations"""
|
|
17
17
|
|
|
18
|
+
import argparse
|
|
19
|
+
from collections.abc import Iterable, Sequence
|
|
18
20
|
import logging
|
|
21
|
+
from typing import Any
|
|
19
22
|
|
|
23
|
+
from openstack import utils as sdk_utils
|
|
20
24
|
from osc_lib import exceptions
|
|
21
25
|
from osc_lib import utils
|
|
22
26
|
|
|
@@ -28,7 +32,9 @@ from openstackclient.identity import common
|
|
|
28
32
|
LOG = logging.getLogger(__name__)
|
|
29
33
|
|
|
30
34
|
|
|
31
|
-
def _format_endpoint(
|
|
35
|
+
def _format_endpoint(
|
|
36
|
+
endpoint: Any, service: Any
|
|
37
|
+
) -> tuple[tuple[str, ...], Any]:
|
|
32
38
|
columns = (
|
|
33
39
|
'is_enabled',
|
|
34
40
|
'id',
|
|
@@ -58,7 +64,7 @@ def _format_endpoint(endpoint, service):
|
|
|
58
64
|
class AddProjectToEndpoint(command.Command):
|
|
59
65
|
_description = _("Associate a project to an endpoint")
|
|
60
66
|
|
|
61
|
-
def get_parser(self, prog_name):
|
|
67
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
62
68
|
parser = super().get_parser(prog_name)
|
|
63
69
|
parser.add_argument(
|
|
64
70
|
'endpoint',
|
|
@@ -75,7 +81,7 @@ class AddProjectToEndpoint(command.Command):
|
|
|
75
81
|
common.add_project_domain_option_to_parser(parser)
|
|
76
82
|
return parser
|
|
77
83
|
|
|
78
|
-
def take_action(self, parsed_args):
|
|
84
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
79
85
|
client = self.app.client_manager.identity
|
|
80
86
|
|
|
81
87
|
endpoint = utils.find_resource(client.endpoints, parsed_args.endpoint)
|
|
@@ -92,7 +98,7 @@ class AddProjectToEndpoint(command.Command):
|
|
|
92
98
|
class CreateEndpoint(command.ShowOne):
|
|
93
99
|
_description = _("Create new endpoint")
|
|
94
100
|
|
|
95
|
-
def get_parser(self, prog_name):
|
|
101
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
96
102
|
parser = super().get_parser(prog_name)
|
|
97
103
|
parser.add_argument(
|
|
98
104
|
'service',
|
|
@@ -131,8 +137,12 @@ class CreateEndpoint(command.ShowOne):
|
|
|
131
137
|
)
|
|
132
138
|
return parser
|
|
133
139
|
|
|
134
|
-
def take_action(
|
|
135
|
-
|
|
140
|
+
def take_action(
|
|
141
|
+
self, parsed_args: argparse.Namespace
|
|
142
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
143
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
144
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
145
|
+
)
|
|
136
146
|
service = common.find_service_sdk(identity_client, parsed_args.service)
|
|
137
147
|
|
|
138
148
|
kwargs = {}
|
|
@@ -154,7 +164,7 @@ class CreateEndpoint(command.ShowOne):
|
|
|
154
164
|
class DeleteEndpoint(command.Command):
|
|
155
165
|
_description = _("Delete endpoint(s)")
|
|
156
166
|
|
|
157
|
-
def get_parser(self, prog_name):
|
|
167
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
158
168
|
parser = super().get_parser(prog_name)
|
|
159
169
|
parser.add_argument(
|
|
160
170
|
'endpoint',
|
|
@@ -164,8 +174,10 @@ class DeleteEndpoint(command.Command):
|
|
|
164
174
|
)
|
|
165
175
|
return parser
|
|
166
176
|
|
|
167
|
-
def take_action(self, parsed_args):
|
|
168
|
-
identity_client =
|
|
177
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
178
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
179
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
180
|
+
)
|
|
169
181
|
result = 0
|
|
170
182
|
for i in parsed_args.endpoint:
|
|
171
183
|
try:
|
|
@@ -195,7 +207,7 @@ class DeleteEndpoint(command.Command):
|
|
|
195
207
|
class ListEndpoint(command.Lister):
|
|
196
208
|
_description = _("List endpoints")
|
|
197
209
|
|
|
198
|
-
def get_parser(self, prog_name):
|
|
210
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
199
211
|
parser = super().get_parser(prog_name)
|
|
200
212
|
parser.add_argument(
|
|
201
213
|
'--service',
|
|
@@ -227,8 +239,12 @@ class ListEndpoint(command.Lister):
|
|
|
227
239
|
common.add_project_domain_option_to_parser(parser)
|
|
228
240
|
return parser
|
|
229
241
|
|
|
230
|
-
def take_action(
|
|
231
|
-
|
|
242
|
+
def take_action(
|
|
243
|
+
self, parsed_args: argparse.Namespace
|
|
244
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
245
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
246
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
247
|
+
)
|
|
232
248
|
|
|
233
249
|
endpoint = None
|
|
234
250
|
if parsed_args.endpoint:
|
|
@@ -318,7 +334,7 @@ class ListEndpoint(command.Lister):
|
|
|
318
334
|
class RemoveProjectFromEndpoint(command.Command):
|
|
319
335
|
_description = _("Dissociate a project from an endpoint")
|
|
320
336
|
|
|
321
|
-
def get_parser(self, prog_name):
|
|
337
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
322
338
|
parser = super().get_parser(prog_name)
|
|
323
339
|
parser.add_argument(
|
|
324
340
|
'endpoint',
|
|
@@ -337,7 +353,7 @@ class RemoveProjectFromEndpoint(command.Command):
|
|
|
337
353
|
common.add_project_domain_option_to_parser(parser)
|
|
338
354
|
return parser
|
|
339
355
|
|
|
340
|
-
def take_action(self, parsed_args):
|
|
356
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
341
357
|
client = self.app.client_manager.identity
|
|
342
358
|
|
|
343
359
|
endpoint = utils.find_resource(client.endpoints, parsed_args.endpoint)
|
|
@@ -354,7 +370,7 @@ class RemoveProjectFromEndpoint(command.Command):
|
|
|
354
370
|
class SetEndpoint(command.Command):
|
|
355
371
|
_description = _("Set endpoint properties")
|
|
356
372
|
|
|
357
|
-
def get_parser(self, prog_name):
|
|
373
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
358
374
|
parser = super().get_parser(prog_name)
|
|
359
375
|
parser.add_argument(
|
|
360
376
|
'endpoint',
|
|
@@ -397,8 +413,10 @@ class SetEndpoint(command.Command):
|
|
|
397
413
|
)
|
|
398
414
|
return parser
|
|
399
415
|
|
|
400
|
-
def take_action(self, parsed_args):
|
|
401
|
-
identity_client =
|
|
416
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
417
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
418
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
419
|
+
)
|
|
402
420
|
endpoint = identity_client.find_endpoint(
|
|
403
421
|
parsed_args.endpoint, ignore_missing=False
|
|
404
422
|
)
|
|
@@ -434,7 +452,7 @@ class SetEndpoint(command.Command):
|
|
|
434
452
|
class ShowEndpoint(command.ShowOne):
|
|
435
453
|
_description = _("Display endpoint details")
|
|
436
454
|
|
|
437
|
-
def get_parser(self, prog_name):
|
|
455
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
438
456
|
parser = super().get_parser(prog_name)
|
|
439
457
|
parser.add_argument(
|
|
440
458
|
'endpoint',
|
|
@@ -446,8 +464,12 @@ class ShowEndpoint(command.ShowOne):
|
|
|
446
464
|
)
|
|
447
465
|
return parser
|
|
448
466
|
|
|
449
|
-
def take_action(
|
|
450
|
-
|
|
467
|
+
def take_action(
|
|
468
|
+
self, parsed_args: argparse.Namespace
|
|
469
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
470
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
471
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
472
|
+
)
|
|
451
473
|
endpoint = identity_client.find_endpoint(
|
|
452
474
|
parsed_args.endpoint, ignore_missing=False
|
|
453
475
|
)
|