python-openstackclient 9.0.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 +97 -99
- 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 +249 -169
- 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 +78 -47
- 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 +23 -11
- 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 +38 -16
- 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 +38 -16
- openstackclient/identity/v3/mapping.py +26 -13
- openstackclient/identity/v3/policy.py +23 -12
- openstackclient/identity/v3/project.py +43 -23
- openstackclient/identity/v3/region.py +36 -16
- openstackclient/identity/v3/registered_limit.py +40 -16
- 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 -6
- 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 +74 -48
- 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_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/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 +11 -7
- 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 +6 -26
- 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 +11 -96
- 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_user.py +4 -4
- openstackclient/tests/unit/image/v2/test_image.py +11 -11
- 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_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 +60 -3
- 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 +29 -17
- openstackclient/volume/v2/consistency_group_snapshot.py +25 -10
- openstackclient/volume/v2/qos_specs.py +28 -17
- openstackclient/volume/v2/service.py +17 -6
- openstackclient/volume/v2/volume.py +57 -29
- openstackclient/volume/v2/volume_backend.py +19 -6
- openstackclient/volume/v2/volume_backup.py +46 -20
- openstackclient/volume/v2/volume_host.py +6 -4
- openstackclient/volume/v2/volume_snapshot.py +50 -24
- openstackclient/volume/v2/volume_transfer_request.py +31 -13
- openstackclient/volume/v2/volume_type.py +43 -24
- 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 +89 -39
- openstackclient/volume/v3/volume_attachment.py +43 -21
- openstackclient/volume/v3/volume_backup.py +53 -24
- 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 +69 -32
- openstackclient/volume/v3/volume_transfer_request.py +31 -13
- openstackclient/volume/v3/volume_type.py +42 -24
- {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.0.0.dist-info}/METADATA +6 -6
- {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.0.0.dist-info}/RECORD +271 -260
- {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.0.0.dist-info}/WHEEL +1 -1
- {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.0.0.dist-info}/entry_points.txt +53 -1
- {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.0.0.dist-info}/licenses/AUTHORS +4 -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-9.0.0.dist-info/pbr.json +0 -1
- /openstackclient/{tests/functional/image/v1 → network/v2/bgpvpn}/__init__.py +0 -0
- {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.0.0.dist-info}/licenses/LICENSE +0 -0
- {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.0.0.dist-info}/top_level.txt +0 -0
|
@@ -15,7 +15,10 @@
|
|
|
15
15
|
|
|
16
16
|
"""Image V2 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 osc_lib import exceptions
|
|
21
24
|
from osc_lib import utils
|
|
@@ -27,7 +30,7 @@ from openstackclient.i18n import _
|
|
|
27
30
|
LOG = logging.getLogger(__name__)
|
|
28
31
|
|
|
29
32
|
|
|
30
|
-
def _format_object(md_object):
|
|
33
|
+
def _format_object(md_object: Any) -> tuple[tuple[str, ...], Any]:
|
|
31
34
|
fields_to_show = (
|
|
32
35
|
'created_at',
|
|
33
36
|
'description',
|
|
@@ -50,7 +53,7 @@ def _format_object(md_object):
|
|
|
50
53
|
class CreateMetadefObjects(command.ShowOne):
|
|
51
54
|
_description = _("Create a metadef object")
|
|
52
55
|
|
|
53
|
-
def get_parser(self, prog_name):
|
|
56
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
54
57
|
parser = super().get_parser(prog_name)
|
|
55
58
|
parser.add_argument(
|
|
56
59
|
"--namespace",
|
|
@@ -64,7 +67,9 @@ class CreateMetadefObjects(command.ShowOne):
|
|
|
64
67
|
)
|
|
65
68
|
return parser
|
|
66
69
|
|
|
67
|
-
def take_action(
|
|
70
|
+
def take_action(
|
|
71
|
+
self, parsed_args: argparse.Namespace
|
|
72
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
68
73
|
image_client = self.app.client_manager.image
|
|
69
74
|
|
|
70
75
|
namespace = image_client.get_metadef_namespace(
|
|
@@ -83,7 +88,7 @@ class CreateMetadefObjects(command.ShowOne):
|
|
|
83
88
|
class ShowMetadefObjects(command.ShowOne):
|
|
84
89
|
_description = _("Show a particular metadef object")
|
|
85
90
|
|
|
86
|
-
def get_parser(self, prog_name):
|
|
91
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
87
92
|
parser = super().get_parser(prog_name)
|
|
88
93
|
parser.add_argument(
|
|
89
94
|
"namespace",
|
|
@@ -97,7 +102,9 @@ class ShowMetadefObjects(command.ShowOne):
|
|
|
97
102
|
)
|
|
98
103
|
return parser
|
|
99
104
|
|
|
100
|
-
def take_action(
|
|
105
|
+
def take_action(
|
|
106
|
+
self, parsed_args: argparse.Namespace
|
|
107
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
101
108
|
image_client = self.app.client_manager.image
|
|
102
109
|
|
|
103
110
|
namespace = parsed_args.namespace
|
|
@@ -113,7 +120,7 @@ class ShowMetadefObjects(command.ShowOne):
|
|
|
113
120
|
class DeleteMetadefObject(command.Command):
|
|
114
121
|
_description = _("Delete metadata definitions object(s)")
|
|
115
122
|
|
|
116
|
-
def get_parser(self, prog_name):
|
|
123
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
117
124
|
parser = super().get_parser(prog_name)
|
|
118
125
|
parser.add_argument(
|
|
119
126
|
"namespace",
|
|
@@ -131,13 +138,14 @@ class DeleteMetadefObject(command.Command):
|
|
|
131
138
|
)
|
|
132
139
|
return parser
|
|
133
140
|
|
|
134
|
-
def take_action(self, parsed_args):
|
|
141
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
135
142
|
image_client = self.app.client_manager.image
|
|
136
143
|
|
|
137
144
|
namespace = parsed_args.namespace
|
|
138
145
|
|
|
139
146
|
if not parsed_args.objects:
|
|
140
|
-
|
|
147
|
+
image_client.delete_all_metadef_objects(namespace)
|
|
148
|
+
return
|
|
141
149
|
|
|
142
150
|
result = 0
|
|
143
151
|
for obj in parsed_args.objects:
|
|
@@ -166,7 +174,7 @@ class DeleteMetadefObject(command.Command):
|
|
|
166
174
|
class ListMetadefObjects(command.Lister):
|
|
167
175
|
_description = _("List metadef objects inside a specific namespace.")
|
|
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
|
"namespace",
|
|
@@ -175,7 +183,9 @@ class ListMetadefObjects(command.Lister):
|
|
|
175
183
|
)
|
|
176
184
|
return parser
|
|
177
185
|
|
|
178
|
-
def take_action(
|
|
186
|
+
def take_action(
|
|
187
|
+
self, parsed_args: argparse.Namespace
|
|
188
|
+
) -> tuple[Sequence[str], Iterable[tuple[Any, ...]]]:
|
|
179
189
|
image_client = self.app.client_manager.image
|
|
180
190
|
|
|
181
191
|
namespace = parsed_args.namespace
|
|
@@ -198,7 +208,7 @@ class ListMetadefObjects(command.Lister):
|
|
|
198
208
|
class SetMetadefObject(command.Command):
|
|
199
209
|
_description = _("Update a metadef object")
|
|
200
210
|
|
|
201
|
-
def get_parser(self, prog_name):
|
|
211
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
202
212
|
parser = super().get_parser(prog_name)
|
|
203
213
|
parser.add_argument(
|
|
204
214
|
"namespace",
|
|
@@ -216,7 +226,7 @@ class SetMetadefObject(command.Command):
|
|
|
216
226
|
)
|
|
217
227
|
return parser
|
|
218
228
|
|
|
219
|
-
def take_action(self, parsed_args):
|
|
229
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
220
230
|
image_client = self.app.client_manager.image
|
|
221
231
|
|
|
222
232
|
object = image_client.get_metadef_object(
|
|
@@ -236,7 +246,7 @@ class ShowMetadefObjectProperty(command.ShowOne):
|
|
|
236
246
|
"Describe a specific metadata definitions property inside an object."
|
|
237
247
|
)
|
|
238
248
|
|
|
239
|
-
def get_parser(self, prog_name):
|
|
249
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
240
250
|
parser = super().get_parser(prog_name)
|
|
241
251
|
parser.add_argument(
|
|
242
252
|
"namespace",
|
|
@@ -254,7 +264,9 @@ class ShowMetadefObjectProperty(command.ShowOne):
|
|
|
254
264
|
)
|
|
255
265
|
return parser
|
|
256
266
|
|
|
257
|
-
def take_action(
|
|
267
|
+
def take_action(
|
|
268
|
+
self, parsed_args: argparse.Namespace
|
|
269
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
258
270
|
image_client = self.app.client_manager.image
|
|
259
271
|
|
|
260
272
|
namespace_name = parsed_args.namespace
|
|
@@ -274,4 +286,5 @@ class ShowMetadefObjectProperty(command.ShowOne):
|
|
|
274
286
|
}
|
|
275
287
|
raise exceptions.CommandError(msg)
|
|
276
288
|
|
|
277
|
-
|
|
289
|
+
col_headers, col_data = zip(*sorted(prop.items()))
|
|
290
|
+
return col_headers, col_data
|
|
@@ -12,8 +12,11 @@
|
|
|
12
12
|
# License for the specific language governing permissions and limitations
|
|
13
13
|
# under the License.
|
|
14
14
|
|
|
15
|
+
import argparse
|
|
16
|
+
from collections.abc import Iterable, Sequence
|
|
15
17
|
import json
|
|
16
18
|
import logging
|
|
19
|
+
from typing import Any
|
|
17
20
|
|
|
18
21
|
from osc_lib import exceptions
|
|
19
22
|
from osc_lib import utils
|
|
@@ -25,7 +28,7 @@ from openstackclient.i18n import _
|
|
|
25
28
|
LOG = logging.getLogger(__name__)
|
|
26
29
|
|
|
27
30
|
|
|
28
|
-
def _format_property(prop):
|
|
31
|
+
def _format_property(prop: Any) -> dict[str, Any]:
|
|
29
32
|
prop = prop.to_dict(ignore_none=True, original_names=True)
|
|
30
33
|
return {
|
|
31
34
|
key: prop[key]
|
|
@@ -57,7 +60,7 @@ def _format_property(prop):
|
|
|
57
60
|
class CreateMetadefProperty(command.ShowOne):
|
|
58
61
|
_description = _("Create a metadef property")
|
|
59
62
|
|
|
60
|
-
def get_parser(self, prog_name):
|
|
63
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
61
64
|
parser = super().get_parser(prog_name)
|
|
62
65
|
parser.add_argument(
|
|
63
66
|
"--name",
|
|
@@ -85,7 +88,9 @@ class CreateMetadefProperty(command.ShowOne):
|
|
|
85
88
|
)
|
|
86
89
|
return parser
|
|
87
90
|
|
|
88
|
-
def take_action(
|
|
91
|
+
def take_action(
|
|
92
|
+
self, parsed_args: argparse.Namespace
|
|
93
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
89
94
|
image_client = self.app.client_manager.image
|
|
90
95
|
|
|
91
96
|
kwargs = {
|
|
@@ -108,13 +113,14 @@ class CreateMetadefProperty(command.ShowOne):
|
|
|
108
113
|
)
|
|
109
114
|
info = _format_property(data)
|
|
110
115
|
|
|
111
|
-
|
|
116
|
+
col_headers, col_data = zip(*sorted(info.items()))
|
|
117
|
+
return col_headers, col_data
|
|
112
118
|
|
|
113
119
|
|
|
114
120
|
class DeleteMetadefProperty(command.Command):
|
|
115
121
|
_description = _("Delete metadef propert(ies)")
|
|
116
122
|
|
|
117
|
-
def get_parser(self, prog_name):
|
|
123
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
118
124
|
parser = super().get_parser(prog_name)
|
|
119
125
|
parser.add_argument(
|
|
120
126
|
"namespace",
|
|
@@ -133,7 +139,7 @@ class DeleteMetadefProperty(command.Command):
|
|
|
133
139
|
)
|
|
134
140
|
return parser
|
|
135
141
|
|
|
136
|
-
def take_action(self, parsed_args):
|
|
142
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
137
143
|
image_client = self.app.client_manager.image
|
|
138
144
|
|
|
139
145
|
if not parsed_args.properties:
|
|
@@ -174,7 +180,7 @@ class DeleteMetadefProperty(command.Command):
|
|
|
174
180
|
class ListMetadefProperties(command.Lister):
|
|
175
181
|
_description = _("List metadef properties")
|
|
176
182
|
|
|
177
|
-
def get_parser(self, prog_name):
|
|
183
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
178
184
|
parser = super().get_parser(prog_name)
|
|
179
185
|
parser.add_argument(
|
|
180
186
|
"namespace",
|
|
@@ -183,7 +189,9 @@ class ListMetadefProperties(command.Lister):
|
|
|
183
189
|
)
|
|
184
190
|
return parser
|
|
185
191
|
|
|
186
|
-
def take_action(
|
|
192
|
+
def take_action(
|
|
193
|
+
self, parsed_args: argparse.Namespace
|
|
194
|
+
) -> tuple[Sequence[str], Iterable[tuple[Any, ...]]]:
|
|
187
195
|
image_client = self.app.client_manager.image
|
|
188
196
|
props = image_client.metadef_properties(parsed_args.namespace)
|
|
189
197
|
columns = ['name', 'title', 'type']
|
|
@@ -202,7 +210,7 @@ class ListMetadefProperties(command.Lister):
|
|
|
202
210
|
class SetMetadefProperty(command.Command):
|
|
203
211
|
_description = _("Update metadef namespace property")
|
|
204
212
|
|
|
205
|
-
def get_parser(self, prog_name):
|
|
213
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
206
214
|
parser = super().get_parser(prog_name)
|
|
207
215
|
parser.add_argument(
|
|
208
216
|
"--name",
|
|
@@ -230,7 +238,7 @@ class SetMetadefProperty(command.Command):
|
|
|
230
238
|
)
|
|
231
239
|
return parser
|
|
232
240
|
|
|
233
|
-
def take_action(self, parsed_args):
|
|
241
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
234
242
|
image_client = self.app.client_manager.image
|
|
235
243
|
|
|
236
244
|
# We need to pass the values for *all* attributes as kwargs to
|
|
@@ -267,7 +275,7 @@ class SetMetadefProperty(command.Command):
|
|
|
267
275
|
class ShowMetadefProperty(command.ShowOne):
|
|
268
276
|
_description = _("Show a particular metadef property")
|
|
269
277
|
|
|
270
|
-
def get_parser(self, prog_name):
|
|
278
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
271
279
|
parser = super().get_parser(prog_name)
|
|
272
280
|
parser.add_argument(
|
|
273
281
|
"namespace",
|
|
@@ -281,7 +289,9 @@ class ShowMetadefProperty(command.ShowOne):
|
|
|
281
289
|
)
|
|
282
290
|
return parser
|
|
283
291
|
|
|
284
|
-
def take_action(
|
|
292
|
+
def take_action(
|
|
293
|
+
self, parsed_args: argparse.Namespace
|
|
294
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
285
295
|
image_client = self.app.client_manager.image
|
|
286
296
|
data = image_client.get_metadef_property(
|
|
287
297
|
parsed_args.property,
|
|
@@ -289,4 +299,5 @@ class ShowMetadefProperty(command.ShowOne):
|
|
|
289
299
|
)
|
|
290
300
|
info = _format_property(data)
|
|
291
301
|
|
|
292
|
-
|
|
302
|
+
col_headers, col_data = zip(*sorted(info.items()))
|
|
303
|
+
return col_headers, col_data
|
|
@@ -10,7 +10,10 @@
|
|
|
10
10
|
# License for the specific language governing permissions and limitations
|
|
11
11
|
# under the License.
|
|
12
12
|
|
|
13
|
+
import argparse
|
|
14
|
+
from collections.abc import Iterable, Sequence
|
|
13
15
|
import logging
|
|
16
|
+
from typing import Any
|
|
14
17
|
|
|
15
18
|
from osc_lib import exceptions
|
|
16
19
|
from osc_lib import utils
|
|
@@ -21,7 +24,7 @@ from openstackclient.i18n import _
|
|
|
21
24
|
LOG = logging.getLogger(__name__)
|
|
22
25
|
|
|
23
26
|
|
|
24
|
-
def _get_columns(item):
|
|
27
|
+
def _get_columns(item: Any) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
25
28
|
hidden_columns = ['location']
|
|
26
29
|
return utils.get_osc_show_columns_for_sdk_resource(
|
|
27
30
|
item, {}, hidden_columns
|
|
@@ -31,7 +34,7 @@ def _get_columns(item):
|
|
|
31
34
|
class CreateMetadefResourceTypeAssociation(command.ShowOne):
|
|
32
35
|
_description = _("Create metadef resource type association")
|
|
33
36
|
|
|
34
|
-
def get_parser(self, prog_name):
|
|
37
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
35
38
|
parser = super().get_parser(prog_name)
|
|
36
39
|
parser.add_argument(
|
|
37
40
|
"namespace",
|
|
@@ -56,7 +59,9 @@ class CreateMetadefResourceTypeAssociation(command.ShowOne):
|
|
|
56
59
|
)
|
|
57
60
|
return parser
|
|
58
61
|
|
|
59
|
-
def take_action(
|
|
62
|
+
def take_action(
|
|
63
|
+
self, parsed_args: argparse.Namespace
|
|
64
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
60
65
|
image_client = self.app.client_manager.image
|
|
61
66
|
kwargs = {}
|
|
62
67
|
|
|
@@ -79,7 +84,7 @@ class CreateMetadefResourceTypeAssociation(command.ShowOne):
|
|
|
79
84
|
class DeleteMetadefResourceTypeAssociation(command.Command):
|
|
80
85
|
_description = _("Delete metadef resource type association")
|
|
81
86
|
|
|
82
|
-
def get_parser(self, prog_name):
|
|
87
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
83
88
|
parser = super().get_parser(prog_name)
|
|
84
89
|
parser.add_argument(
|
|
85
90
|
"metadef_namespace",
|
|
@@ -107,7 +112,7 @@ class DeleteMetadefResourceTypeAssociation(command.Command):
|
|
|
107
112
|
)
|
|
108
113
|
return parser
|
|
109
114
|
|
|
110
|
-
def take_action(self, parsed_args):
|
|
115
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
111
116
|
image_client = self.app.client_manager.image
|
|
112
117
|
|
|
113
118
|
result = 0
|
|
@@ -160,7 +165,7 @@ class DeleteMetadefResourceTypeAssociation(command.Command):
|
|
|
160
165
|
class ListMetadefResourceTypeAssociations(command.Lister):
|
|
161
166
|
_description = _("List metadef resource type associations")
|
|
162
167
|
|
|
163
|
-
def get_parser(self, prog_name):
|
|
168
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
164
169
|
parser = super().get_parser(prog_name)
|
|
165
170
|
parser.add_argument(
|
|
166
171
|
"metadef_namespace",
|
|
@@ -169,7 +174,9 @@ class ListMetadefResourceTypeAssociations(command.Lister):
|
|
|
169
174
|
)
|
|
170
175
|
return parser
|
|
171
176
|
|
|
172
|
-
def take_action(
|
|
177
|
+
def take_action(
|
|
178
|
+
self, parsed_args: argparse.Namespace
|
|
179
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
173
180
|
image_client = self.app.client_manager.image
|
|
174
181
|
data = image_client.metadef_resource_type_associations(
|
|
175
182
|
parsed_args.metadef_namespace,
|
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
|
|
13
13
|
"""Image V2 Action Implementations"""
|
|
14
14
|
|
|
15
|
+
import argparse
|
|
16
|
+
from collections.abc import Iterable, Sequence
|
|
17
|
+
from typing import Any
|
|
18
|
+
|
|
15
19
|
from osc_lib import utils
|
|
16
20
|
|
|
17
21
|
from openstackclient import command
|
|
@@ -21,7 +25,9 @@ from openstackclient.i18n import _
|
|
|
21
25
|
class ListMetadefResourceTypes(command.Lister):
|
|
22
26
|
_description = _("List metadef resource types")
|
|
23
27
|
|
|
24
|
-
def take_action(
|
|
28
|
+
def take_action(
|
|
29
|
+
self, parsed_args: argparse.Namespace
|
|
30
|
+
) -> tuple[Sequence[str], Iterable[tuple[Any, ...]]]:
|
|
25
31
|
image_client = self.app.client_manager.image
|
|
26
32
|
data = image_client.metadef_resource_types()
|
|
27
33
|
columns = ['Name']
|
openstackclient/image/v2/task.py
CHANGED
|
@@ -10,6 +10,10 @@
|
|
|
10
10
|
# License for the specific language governing permissions and limitations
|
|
11
11
|
# under the License.
|
|
12
12
|
|
|
13
|
+
import argparse
|
|
14
|
+
from collections.abc import Iterable, Sequence
|
|
15
|
+
from typing import Any
|
|
16
|
+
|
|
13
17
|
from osc_lib.cli import format_columns
|
|
14
18
|
from osc_lib import utils
|
|
15
19
|
|
|
@@ -21,7 +25,7 @@ _formatters = {
|
|
|
21
25
|
}
|
|
22
26
|
|
|
23
27
|
|
|
24
|
-
def _format_task(task):
|
|
28
|
+
def _format_task(task: Any) -> dict[str, Any]:
|
|
25
29
|
"""Format an task to make it more consistent with OSC operations."""
|
|
26
30
|
|
|
27
31
|
info = {}
|
|
@@ -63,7 +67,7 @@ def _format_task(task):
|
|
|
63
67
|
class ShowTask(command.ShowOne):
|
|
64
68
|
_description = _('Display task details')
|
|
65
69
|
|
|
66
|
-
def get_parser(self, prog_name):
|
|
70
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
67
71
|
parser = super().get_parser(prog_name)
|
|
68
72
|
|
|
69
73
|
parser.add_argument(
|
|
@@ -74,19 +78,22 @@ class ShowTask(command.ShowOne):
|
|
|
74
78
|
|
|
75
79
|
return parser
|
|
76
80
|
|
|
77
|
-
def take_action(
|
|
81
|
+
def take_action(
|
|
82
|
+
self, parsed_args: argparse.Namespace
|
|
83
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
78
84
|
image_client = self.app.client_manager.image
|
|
79
85
|
|
|
80
86
|
task = image_client.get_task(parsed_args.task)
|
|
81
87
|
info = _format_task(task)
|
|
82
88
|
|
|
83
|
-
|
|
89
|
+
col_headers, col_data = zip(*sorted(info.items()))
|
|
90
|
+
return col_headers, col_data
|
|
84
91
|
|
|
85
92
|
|
|
86
93
|
class ListTask(command.Lister):
|
|
87
94
|
_description = _('List tasks')
|
|
88
95
|
|
|
89
|
-
def get_parser(self, prog_name):
|
|
96
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
90
97
|
parser = super().get_parser(prog_name)
|
|
91
98
|
|
|
92
99
|
parser.add_argument(
|
|
@@ -146,7 +153,9 @@ class ListTask(command.Lister):
|
|
|
146
153
|
|
|
147
154
|
return parser
|
|
148
155
|
|
|
149
|
-
def take_action(
|
|
156
|
+
def take_action(
|
|
157
|
+
self, parsed_args: argparse.Namespace
|
|
158
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
150
159
|
image_client = self.app.client_manager.image
|
|
151
160
|
|
|
152
161
|
columns = ('id', 'type', 'status', 'owner_id')
|