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
|
@@ -13,9 +13,11 @@
|
|
|
13
13
|
|
|
14
14
|
"""Volume v3 Type action implementations"""
|
|
15
15
|
|
|
16
|
+
import argparse
|
|
17
|
+
from collections.abc import Iterable, MutableMapping, Sequence
|
|
16
18
|
import functools
|
|
17
19
|
import logging
|
|
18
|
-
|
|
20
|
+
from typing import Any
|
|
19
21
|
|
|
20
22
|
from cinderclient import api_versions
|
|
21
23
|
from cliff import columns as cliff_columns
|
|
@@ -32,7 +34,7 @@ from openstackclient.identity import common as identity_common
|
|
|
32
34
|
LOG = logging.getLogger(__name__)
|
|
33
35
|
|
|
34
36
|
|
|
35
|
-
class EncryptionInfoColumn(cliff_columns.FormattableColumn[
|
|
37
|
+
class EncryptionInfoColumn(cliff_columns.FormattableColumn[Any]):
|
|
36
38
|
"""Formattable column for encryption info column.
|
|
37
39
|
|
|
38
40
|
Unlike the parent FormattableColumn class, the initializer of the
|
|
@@ -43,26 +45,30 @@ class EncryptionInfoColumn(cliff_columns.FormattableColumn[ty.Any]):
|
|
|
43
45
|
``functools.partial(EncryptionInfoColumn encryption_data)``.
|
|
44
46
|
"""
|
|
45
47
|
|
|
46
|
-
def __init__(
|
|
48
|
+
def __init__(
|
|
49
|
+
self, value: Any, encryption_data: dict[str, Any] | None = None
|
|
50
|
+
) -> None:
|
|
47
51
|
super().__init__(value)
|
|
48
52
|
self._encryption_data = encryption_data or {}
|
|
49
53
|
|
|
50
|
-
def _get_encryption_info(self):
|
|
54
|
+
def _get_encryption_info(self) -> Any:
|
|
51
55
|
type_id = self._value
|
|
52
56
|
return self._encryption_data.get(type_id)
|
|
53
57
|
|
|
54
|
-
def human_readable(self):
|
|
58
|
+
def human_readable(self) -> str:
|
|
55
59
|
encryption_info = self._get_encryption_info()
|
|
56
60
|
if encryption_info:
|
|
57
61
|
return utils.format_dict(encryption_info)
|
|
58
62
|
else:
|
|
59
63
|
return '-'
|
|
60
64
|
|
|
61
|
-
def machine_readable(self):
|
|
65
|
+
def machine_readable(self) -> Any:
|
|
62
66
|
return self._get_encryption_info()
|
|
63
67
|
|
|
64
68
|
|
|
65
|
-
def _create_encryption_type(
|
|
69
|
+
def _create_encryption_type(
|
|
70
|
+
volume_client: Any, volume_type: Any, parsed_args: argparse.Namespace
|
|
71
|
+
) -> Any:
|
|
66
72
|
if not parsed_args.encryption_provider:
|
|
67
73
|
msg = _(
|
|
68
74
|
"'--encryption-provider' should be specified while "
|
|
@@ -85,7 +91,9 @@ def _create_encryption_type(volume_client, volume_type, parsed_args):
|
|
|
85
91
|
return encryption
|
|
86
92
|
|
|
87
93
|
|
|
88
|
-
def _set_encryption_type(
|
|
94
|
+
def _set_encryption_type(
|
|
95
|
+
volume_client: Any, volume_type: Any, parsed_args: argparse.Namespace
|
|
96
|
+
) -> None:
|
|
89
97
|
# update the existing encryption type
|
|
90
98
|
body = {}
|
|
91
99
|
for attr in ['provider', 'cipher', 'key_size', 'control_location']:
|
|
@@ -109,7 +117,7 @@ def _set_encryption_type(volume_client, volume_type, parsed_args):
|
|
|
109
117
|
class CreateVolumeType(command.ShowOne):
|
|
110
118
|
_description = _("Create new volume type")
|
|
111
119
|
|
|
112
|
-
def get_parser(self, prog_name):
|
|
120
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
113
121
|
parser = super().get_parser(prog_name)
|
|
114
122
|
parser.add_argument(
|
|
115
123
|
"name",
|
|
@@ -243,7 +251,9 @@ class CreateVolumeType(command.ShowOne):
|
|
|
243
251
|
)
|
|
244
252
|
return parser
|
|
245
253
|
|
|
246
|
-
def take_action(
|
|
254
|
+
def take_action(
|
|
255
|
+
self, parsed_args: argparse.Namespace
|
|
256
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
247
257
|
identity_client = self.app.client_manager.identity
|
|
248
258
|
volume_client = self.app.client_manager.volume
|
|
249
259
|
|
|
@@ -325,13 +335,14 @@ class CreateVolumeType(command.ShowOne):
|
|
|
325
335
|
|
|
326
336
|
volume_type._info.pop("os-volume-type-access:is_public", None)
|
|
327
337
|
|
|
328
|
-
|
|
338
|
+
col_headers, col_data = zip(*sorted(volume_type._info.items()))
|
|
339
|
+
return col_headers, col_data
|
|
329
340
|
|
|
330
341
|
|
|
331
342
|
class DeleteVolumeType(command.Command):
|
|
332
343
|
_description = _("Delete volume type(s)")
|
|
333
344
|
|
|
334
|
-
def get_parser(self, prog_name):
|
|
345
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
335
346
|
parser = super().get_parser(prog_name)
|
|
336
347
|
parser.add_argument(
|
|
337
348
|
"volume_types",
|
|
@@ -341,7 +352,7 @@ class DeleteVolumeType(command.Command):
|
|
|
341
352
|
)
|
|
342
353
|
return parser
|
|
343
354
|
|
|
344
|
-
def take_action(self, parsed_args):
|
|
355
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
345
356
|
volume_client = self.app.client_manager.volume
|
|
346
357
|
result = 0
|
|
347
358
|
|
|
@@ -373,7 +384,7 @@ class DeleteVolumeType(command.Command):
|
|
|
373
384
|
class ListVolumeType(command.Lister):
|
|
374
385
|
_description = _("List volume types")
|
|
375
386
|
|
|
376
|
-
def get_parser(self, prog_name):
|
|
387
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
377
388
|
parser = super().get_parser(prog_name)
|
|
378
389
|
parser.add_argument(
|
|
379
390
|
'--long',
|
|
@@ -467,7 +478,9 @@ class ListVolumeType(command.Lister):
|
|
|
467
478
|
)
|
|
468
479
|
return parser
|
|
469
480
|
|
|
470
|
-
def take_action(
|
|
481
|
+
def take_action(
|
|
482
|
+
self, parsed_args: argparse.Namespace
|
|
483
|
+
) -> tuple[Sequence[str], Iterable[tuple[Any, ...]]]:
|
|
471
484
|
volume_client = self.app.client_manager.volume
|
|
472
485
|
|
|
473
486
|
if parsed_args.long:
|
|
@@ -522,7 +535,9 @@ class ListVolumeType(command.Lister):
|
|
|
522
535
|
is_public=parsed_args.is_public,
|
|
523
536
|
)
|
|
524
537
|
|
|
525
|
-
formatters = {
|
|
538
|
+
formatters: MutableMapping[str, Any] = {
|
|
539
|
+
'Extra Specs': format_columns.DictColumn
|
|
540
|
+
}
|
|
526
541
|
|
|
527
542
|
if parsed_args.encryption_type:
|
|
528
543
|
encryption = {}
|
|
@@ -549,7 +564,7 @@ class ListVolumeType(command.Lister):
|
|
|
549
564
|
_EncryptionInfoColumn = functools.partial(
|
|
550
565
|
EncryptionInfoColumn, encryption_data=encryption
|
|
551
566
|
)
|
|
552
|
-
formatters['id'] = _EncryptionInfoColumn
|
|
567
|
+
formatters['id'] = _EncryptionInfoColumn
|
|
553
568
|
|
|
554
569
|
return (
|
|
555
570
|
column_headers,
|
|
@@ -567,7 +582,7 @@ class ListVolumeType(command.Lister):
|
|
|
567
582
|
class SetVolumeType(command.Command):
|
|
568
583
|
_description = _("Set volume type properties")
|
|
569
584
|
|
|
570
|
-
def get_parser(self, prog_name):
|
|
585
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
571
586
|
parser = super().get_parser(prog_name)
|
|
572
587
|
parser.add_argument(
|
|
573
588
|
'volume_type',
|
|
@@ -706,7 +721,7 @@ class SetVolumeType(command.Command):
|
|
|
706
721
|
)
|
|
707
722
|
return parser
|
|
708
723
|
|
|
709
|
-
def take_action(self, parsed_args):
|
|
724
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
710
725
|
volume_client = self.app.client_manager.volume
|
|
711
726
|
identity_client = self.app.client_manager.identity
|
|
712
727
|
|
|
@@ -802,7 +817,7 @@ class SetVolumeType(command.Command):
|
|
|
802
817
|
class ShowVolumeType(command.ShowOne):
|
|
803
818
|
_description = _("Display volume type details")
|
|
804
819
|
|
|
805
|
-
def get_parser(self, prog_name):
|
|
820
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
806
821
|
parser = super().get_parser(prog_name)
|
|
807
822
|
parser.add_argument(
|
|
808
823
|
"volume_type",
|
|
@@ -819,7 +834,9 @@ class ShowVolumeType(command.ShowOne):
|
|
|
819
834
|
)
|
|
820
835
|
return parser
|
|
821
836
|
|
|
822
|
-
def take_action(
|
|
837
|
+
def take_action(
|
|
838
|
+
self, parsed_args: argparse.Namespace
|
|
839
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
823
840
|
volume_client = self.app.client_manager.volume
|
|
824
841
|
volume_type = utils.find_resource(
|
|
825
842
|
volume_client.volume_types, parsed_args.volume_type
|
|
@@ -867,13 +884,14 @@ class ShowVolumeType(command.ShowOne):
|
|
|
867
884
|
e,
|
|
868
885
|
)
|
|
869
886
|
volume_type._info.pop("os-volume-type-access:is_public", None)
|
|
870
|
-
|
|
887
|
+
col_headers, col_data = zip(*sorted(volume_type._info.items()))
|
|
888
|
+
return col_headers, col_data
|
|
871
889
|
|
|
872
890
|
|
|
873
891
|
class UnsetVolumeType(command.Command):
|
|
874
892
|
_description = _("Unset volume type properties")
|
|
875
893
|
|
|
876
|
-
def get_parser(self, prog_name):
|
|
894
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
877
895
|
parser = super().get_parser(prog_name)
|
|
878
896
|
parser.add_argument(
|
|
879
897
|
'volume_type',
|
|
@@ -908,7 +926,7 @@ class UnsetVolumeType(command.Command):
|
|
|
908
926
|
)
|
|
909
927
|
return parser
|
|
910
928
|
|
|
911
|
-
def take_action(self, parsed_args):
|
|
929
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
912
930
|
volume_client = self.app.client_manager.volume
|
|
913
931
|
identity_client = self.app.client_manager.identity
|
|
914
932
|
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-openstackclient
|
|
3
|
-
Version:
|
|
3
|
+
Version: 10.0.0
|
|
4
4
|
Summary: OpenStack Command-line Client
|
|
5
5
|
Author-email: OpenStack <openstack-discuss@lists.openstack.org>
|
|
6
|
-
License: Apache-2.0
|
|
6
|
+
License-Expression: Apache-2.0
|
|
7
7
|
Project-URL: Homepage, https://docs.openstack.org/python-openstackclient/
|
|
8
8
|
Project-URL: Repository, https://opendev.org/openstack/python-openstackclient/
|
|
9
9
|
Classifier: Environment :: OpenStack
|
|
10
10
|
Classifier: Intended Audience :: Information Technology
|
|
11
11
|
Classifier: Intended Audience :: System Administrators
|
|
12
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
|
13
12
|
Classifier: Operating System :: POSIX :: Linux
|
|
14
13
|
Classifier: Programming Language :: Python
|
|
15
14
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -17,16 +16,17 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
+
Classifier: Typing :: Typed
|
|
20
21
|
Requires-Python: >=3.10
|
|
21
22
|
Description-Content-Type: text/x-rst
|
|
22
23
|
License-File: LICENSE
|
|
23
24
|
License-File: AUTHORS
|
|
24
|
-
Requires-Dist: pbr!=2.1.0,>=2.0.0
|
|
25
25
|
Requires-Dist: cryptography>=2.7
|
|
26
26
|
Requires-Dist: cliff>=4.13.0
|
|
27
27
|
Requires-Dist: iso8601>=0.1.11
|
|
28
|
-
Requires-Dist: openstacksdk>=4.
|
|
29
|
-
Requires-Dist: osc-lib>=
|
|
28
|
+
Requires-Dist: openstacksdk>=4.12.0
|
|
29
|
+
Requires-Dist: osc-lib>=4.6.0
|
|
30
30
|
Requires-Dist: oslo.i18n>=3.15.3
|
|
31
31
|
Requires-Dist: python-keystoneclient>=3.22.0
|
|
32
32
|
Requires-Dist: python-cinderclient>=3.3.0
|