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,8 +13,10 @@
|
|
|
13
13
|
|
|
14
14
|
"""Meter Rule Implementations"""
|
|
15
15
|
|
|
16
|
+
import argparse
|
|
16
17
|
import logging
|
|
17
|
-
import
|
|
18
|
+
from collections.abc import Iterable, Sequence
|
|
19
|
+
from typing import Any
|
|
18
20
|
|
|
19
21
|
from osc_lib import exceptions
|
|
20
22
|
from osc_lib import utils
|
|
@@ -27,15 +29,17 @@ from openstackclient.network import common
|
|
|
27
29
|
LOG = logging.getLogger(__name__)
|
|
28
30
|
|
|
29
31
|
|
|
30
|
-
def _get_columns(item):
|
|
32
|
+
def _get_columns(item: Any) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
31
33
|
hidden_columns = ['location', 'tenant_id']
|
|
32
34
|
return utils.get_osc_show_columns_for_sdk_resource(
|
|
33
35
|
item, {}, hidden_columns
|
|
34
36
|
)
|
|
35
37
|
|
|
36
38
|
|
|
37
|
-
def _get_attrs(
|
|
38
|
-
|
|
39
|
+
def _get_attrs(
|
|
40
|
+
client_manager: Any, parsed_args: argparse.Namespace
|
|
41
|
+
) -> dict[str, Any]:
|
|
42
|
+
attrs: dict[str, Any] = {}
|
|
39
43
|
|
|
40
44
|
if parsed_args.exclude:
|
|
41
45
|
attrs['excluded'] = True
|
|
@@ -68,7 +72,7 @@ def _get_attrs(client_manager, parsed_args):
|
|
|
68
72
|
class CreateMeterRule(command.ShowOne, common.NeutronCommandWithExtraArgs):
|
|
69
73
|
_description = _("Create a new meter rule")
|
|
70
74
|
|
|
71
|
-
def get_parser(self, prog_name):
|
|
75
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
72
76
|
parser = super().get_parser(prog_name)
|
|
73
77
|
|
|
74
78
|
parser.add_argument(
|
|
@@ -125,7 +129,9 @@ class CreateMeterRule(command.ShowOne, common.NeutronCommandWithExtraArgs):
|
|
|
125
129
|
|
|
126
130
|
return parser
|
|
127
131
|
|
|
128
|
-
def take_action(
|
|
132
|
+
def take_action(
|
|
133
|
+
self, parsed_args: argparse.Namespace
|
|
134
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
129
135
|
client = self.app.client_manager.network
|
|
130
136
|
_meter = client.find_metering_label(
|
|
131
137
|
parsed_args.meter, ignore_missing=False
|
|
@@ -145,7 +151,7 @@ class CreateMeterRule(command.ShowOne, common.NeutronCommandWithExtraArgs):
|
|
|
145
151
|
class DeleteMeterRule(command.Command):
|
|
146
152
|
_description = _("Delete meter rule(s)")
|
|
147
153
|
|
|
148
|
-
def get_parser(self, prog_name):
|
|
154
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
149
155
|
parser = super().get_parser(prog_name)
|
|
150
156
|
|
|
151
157
|
parser.add_argument(
|
|
@@ -157,7 +163,7 @@ class DeleteMeterRule(command.Command):
|
|
|
157
163
|
|
|
158
164
|
return parser
|
|
159
165
|
|
|
160
|
-
def take_action(self, parsed_args):
|
|
166
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
161
167
|
client = self.app.client_manager.network
|
|
162
168
|
result = 0
|
|
163
169
|
|
|
@@ -183,7 +189,9 @@ class DeleteMeterRule(command.Command):
|
|
|
183
189
|
class ListMeterRule(command.Lister):
|
|
184
190
|
_description = _("List meter rules")
|
|
185
191
|
|
|
186
|
-
def take_action(
|
|
192
|
+
def take_action(
|
|
193
|
+
self, parsed_args: argparse.Namespace
|
|
194
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
187
195
|
client = self.app.client_manager.network
|
|
188
196
|
|
|
189
197
|
columns = (
|
|
@@ -218,7 +226,7 @@ class ListMeterRule(command.Lister):
|
|
|
218
226
|
class ShowMeterRule(command.ShowOne):
|
|
219
227
|
_description = _("Display meter rules details")
|
|
220
228
|
|
|
221
|
-
def get_parser(self, prog_name):
|
|
229
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
222
230
|
parser = super().get_parser(prog_name)
|
|
223
231
|
parser.add_argument(
|
|
224
232
|
'meter_rule_id',
|
|
@@ -227,7 +235,9 @@ class ShowMeterRule(command.ShowOne):
|
|
|
227
235
|
)
|
|
228
236
|
return parser
|
|
229
237
|
|
|
230
|
-
def take_action(
|
|
238
|
+
def take_action(
|
|
239
|
+
self, parsed_args: argparse.Namespace
|
|
240
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
231
241
|
client = self.app.client_manager.network
|
|
232
242
|
obj = client.find_metering_label_rule(
|
|
233
243
|
parsed_args.meter_rule_id, ignore_missing=False
|
|
@@ -13,8 +13,10 @@
|
|
|
13
13
|
# License for the specific language governing permissions and limitations
|
|
14
14
|
# under the License.
|
|
15
15
|
|
|
16
|
+
import argparse
|
|
17
|
+
from collections.abc import Iterable, Sequence
|
|
16
18
|
import logging
|
|
17
|
-
|
|
19
|
+
from typing import Any
|
|
18
20
|
|
|
19
21
|
from cliff import columns as cliff_columns
|
|
20
22
|
from osc_lib import exceptions
|
|
@@ -28,8 +30,8 @@ from openstackclient.network import common
|
|
|
28
30
|
LOG = logging.getLogger(__name__)
|
|
29
31
|
|
|
30
32
|
|
|
31
|
-
class RulesColumn(cliff_columns.FormattableColumn[
|
|
32
|
-
def human_readable(self):
|
|
33
|
+
class RulesColumn(cliff_columns.FormattableColumn[Any]):
|
|
34
|
+
def human_readable(self) -> str:
|
|
33
35
|
return '\n'.join(str(v) for v in self._value)
|
|
34
36
|
|
|
35
37
|
|
|
@@ -38,7 +40,7 @@ _formatters = {
|
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
|
|
41
|
-
def _get_columns(item):
|
|
43
|
+
def _get_columns(item: Any) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
42
44
|
column_map = {
|
|
43
45
|
'is_shared': 'shared',
|
|
44
46
|
}
|
|
@@ -48,7 +50,9 @@ def _get_columns(item):
|
|
|
48
50
|
)
|
|
49
51
|
|
|
50
52
|
|
|
51
|
-
def _get_attrs(
|
|
53
|
+
def _get_attrs(
|
|
54
|
+
client_manager: Any, parsed_args: argparse.Namespace
|
|
55
|
+
) -> dict[str, Any]:
|
|
52
56
|
attrs = {}
|
|
53
57
|
if 'name' in parsed_args and parsed_args.name is not None:
|
|
54
58
|
attrs['name'] = parsed_args.name
|
|
@@ -85,7 +89,7 @@ class CreateNetworkQosPolicy(
|
|
|
85
89
|
):
|
|
86
90
|
_description = _("Create a QoS policy")
|
|
87
91
|
|
|
88
|
-
def get_parser(self, prog_name):
|
|
92
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
89
93
|
parser = super().get_parser(prog_name)
|
|
90
94
|
parser.add_argument(
|
|
91
95
|
'name', metavar='<name>', help=_("Name of QoS policy to create")
|
|
@@ -129,7 +133,9 @@ class CreateNetworkQosPolicy(
|
|
|
129
133
|
)
|
|
130
134
|
return parser
|
|
131
135
|
|
|
132
|
-
def take_action(
|
|
136
|
+
def take_action(
|
|
137
|
+
self, parsed_args: argparse.Namespace
|
|
138
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
133
139
|
client = self.app.client_manager.network
|
|
134
140
|
attrs = _get_attrs(self.app.client_manager, parsed_args)
|
|
135
141
|
attrs.update(
|
|
@@ -144,7 +150,7 @@ class CreateNetworkQosPolicy(
|
|
|
144
150
|
class DeleteNetworkQosPolicy(command.Command):
|
|
145
151
|
_description = _("Delete Qos Policy(s)")
|
|
146
152
|
|
|
147
|
-
def get_parser(self, prog_name):
|
|
153
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
148
154
|
parser = super().get_parser(prog_name)
|
|
149
155
|
parser.add_argument(
|
|
150
156
|
'policy',
|
|
@@ -154,7 +160,7 @@ class DeleteNetworkQosPolicy(command.Command):
|
|
|
154
160
|
)
|
|
155
161
|
return parser
|
|
156
162
|
|
|
157
|
-
def take_action(self, parsed_args):
|
|
163
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
158
164
|
client = self.app.client_manager.network
|
|
159
165
|
result = 0
|
|
160
166
|
|
|
@@ -185,7 +191,7 @@ class DeleteNetworkQosPolicy(command.Command):
|
|
|
185
191
|
class ListNetworkQosPolicy(command.Lister):
|
|
186
192
|
_description = _("List QoS policies")
|
|
187
193
|
|
|
188
|
-
def get_parser(self, prog_name):
|
|
194
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
189
195
|
parser = super().get_parser(prog_name)
|
|
190
196
|
parser.add_argument(
|
|
191
197
|
'--project',
|
|
@@ -209,7 +215,9 @@ class ListNetworkQosPolicy(command.Lister):
|
|
|
209
215
|
)
|
|
210
216
|
return parser
|
|
211
217
|
|
|
212
|
-
def take_action(
|
|
218
|
+
def take_action(
|
|
219
|
+
self, parsed_args: argparse.Namespace
|
|
220
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
213
221
|
client = self.app.client_manager.network
|
|
214
222
|
columns = (
|
|
215
223
|
'id',
|
|
@@ -245,7 +253,7 @@ class ListNetworkQosPolicy(command.Lister):
|
|
|
245
253
|
class SetNetworkQosPolicy(common.NeutronCommandWithExtraArgs):
|
|
246
254
|
_description = _("Set QoS policy properties")
|
|
247
255
|
|
|
248
|
-
def get_parser(self, prog_name):
|
|
256
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
249
257
|
parser = super().get_parser(prog_name)
|
|
250
258
|
parser.add_argument(
|
|
251
259
|
'policy',
|
|
@@ -284,7 +292,7 @@ class SetNetworkQosPolicy(common.NeutronCommandWithExtraArgs):
|
|
|
284
292
|
)
|
|
285
293
|
return parser
|
|
286
294
|
|
|
287
|
-
def take_action(self, parsed_args):
|
|
295
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
288
296
|
client = self.app.client_manager.network
|
|
289
297
|
obj = client.find_qos_policy(parsed_args.policy, ignore_missing=False)
|
|
290
298
|
attrs = _get_attrs(self.app.client_manager, parsed_args)
|
|
@@ -297,7 +305,7 @@ class SetNetworkQosPolicy(common.NeutronCommandWithExtraArgs):
|
|
|
297
305
|
class ShowNetworkQosPolicy(command.ShowOne):
|
|
298
306
|
_description = _("Display QoS policy details")
|
|
299
307
|
|
|
300
|
-
def get_parser(self, prog_name):
|
|
308
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
301
309
|
parser = super().get_parser(prog_name)
|
|
302
310
|
parser.add_argument(
|
|
303
311
|
'policy',
|
|
@@ -306,7 +314,9 @@ class ShowNetworkQosPolicy(command.ShowOne):
|
|
|
306
314
|
)
|
|
307
315
|
return parser
|
|
308
316
|
|
|
309
|
-
def take_action(
|
|
317
|
+
def take_action(
|
|
318
|
+
self, parsed_args: argparse.Namespace
|
|
319
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
310
320
|
client = self.app.client_manager.network
|
|
311
321
|
obj = client.find_qos_policy(parsed_args.policy, ignore_missing=False)
|
|
312
322
|
display_columns, columns = _get_columns(obj)
|
|
@@ -13,7 +13,10 @@
|
|
|
13
13
|
# License for the specific language governing permissions and limitations
|
|
14
14
|
# under the License.
|
|
15
15
|
|
|
16
|
+
import argparse
|
|
17
|
+
from collections.abc import Iterable, Sequence
|
|
16
18
|
import itertools
|
|
19
|
+
from typing import Any, cast
|
|
17
20
|
|
|
18
21
|
from osc_lib import exceptions
|
|
19
22
|
from osc_lib import utils
|
|
@@ -72,14 +75,16 @@ ACTION_SET = 'update'
|
|
|
72
75
|
ACTION_SHOW = 'get'
|
|
73
76
|
|
|
74
77
|
|
|
75
|
-
def _get_columns(item):
|
|
78
|
+
def _get_columns(item: Any) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
76
79
|
hidden_columns = ['location', 'name', 'tenant_id']
|
|
77
80
|
return utils.get_osc_show_columns_for_sdk_resource(
|
|
78
81
|
item, {}, hidden_columns
|
|
79
82
|
)
|
|
80
83
|
|
|
81
84
|
|
|
82
|
-
def _check_type_parameters(
|
|
85
|
+
def _check_type_parameters(
|
|
86
|
+
attrs: dict[str, Any], type: str, is_create: bool
|
|
87
|
+
) -> None:
|
|
83
88
|
req_params = MANDATORY_PARAMETERS[type]
|
|
84
89
|
opt_params = OPTIONAL_PARAMETERS[type]
|
|
85
90
|
type_params = req_params | opt_params
|
|
@@ -102,7 +107,11 @@ def _check_type_parameters(attrs, type, is_create):
|
|
|
102
107
|
raise exceptions.CommandError(msg)
|
|
103
108
|
|
|
104
109
|
|
|
105
|
-
def _get_attrs(
|
|
110
|
+
def _get_attrs(
|
|
111
|
+
network_client: Any,
|
|
112
|
+
parsed_args: argparse.Namespace,
|
|
113
|
+
is_create: bool = False,
|
|
114
|
+
) -> dict[str, Any]:
|
|
106
115
|
attrs = {}
|
|
107
116
|
qos = network_client.find_qos_policy(
|
|
108
117
|
parsed_args.qos_policy, ignore_missing=False
|
|
@@ -148,19 +157,19 @@ def _get_attrs(network_client, parsed_args, is_create=False):
|
|
|
148
157
|
return attrs
|
|
149
158
|
|
|
150
159
|
|
|
151
|
-
def _rule_action_call(client, action, rule_type):
|
|
160
|
+
def _rule_action_call(client: Any, action: str, rule_type: str) -> Any:
|
|
152
161
|
rule_type = rule_type.replace('-', '_')
|
|
153
162
|
func_name = f'{action}_qos_{rule_type}_rule'
|
|
154
163
|
return getattr(client, func_name)
|
|
155
164
|
|
|
156
165
|
|
|
157
|
-
def _find_rule_type(qos, rule_id):
|
|
166
|
+
def _find_rule_type(qos: Any, rule_id: str) -> str | None:
|
|
158
167
|
for rule in (r for r in qos.rules if r['id'] == rule_id):
|
|
159
|
-
return rule['type'].replace('_', '-')
|
|
168
|
+
return cast(str, rule['type']).replace('_', '-')
|
|
160
169
|
return None
|
|
161
170
|
|
|
162
171
|
|
|
163
|
-
def _add_rule_arguments(parser):
|
|
172
|
+
def _add_rule_arguments(parser: argparse.ArgumentParser) -> None:
|
|
164
173
|
parser.add_argument(
|
|
165
174
|
'--max-kbps',
|
|
166
175
|
dest='max_kbps',
|
|
@@ -230,7 +239,7 @@ class CreateNetworkQosRule(
|
|
|
230
239
|
):
|
|
231
240
|
_description = _("Create new Network QoS rule")
|
|
232
241
|
|
|
233
|
-
def get_parser(self, prog_name):
|
|
242
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
234
243
|
parser = super().get_parser(prog_name)
|
|
235
244
|
parser.add_argument(
|
|
236
245
|
'qos_policy',
|
|
@@ -255,7 +264,9 @@ class CreateNetworkQosRule(
|
|
|
255
264
|
_add_rule_arguments(parser)
|
|
256
265
|
return parser
|
|
257
266
|
|
|
258
|
-
def take_action(
|
|
267
|
+
def take_action(
|
|
268
|
+
self, parsed_args: argparse.Namespace
|
|
269
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
259
270
|
network_client = self.app.client_manager.network
|
|
260
271
|
try:
|
|
261
272
|
attrs = _get_attrs(network_client, parsed_args, is_create=True)
|
|
@@ -276,7 +287,7 @@ class CreateNetworkQosRule(
|
|
|
276
287
|
class DeleteNetworkQosRule(command.Command):
|
|
277
288
|
_description = _("Delete Network QoS rule")
|
|
278
289
|
|
|
279
|
-
def get_parser(self, prog_name):
|
|
290
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
280
291
|
parser = super().get_parser(prog_name)
|
|
281
292
|
parser.add_argument(
|
|
282
293
|
'qos_policy',
|
|
@@ -290,7 +301,7 @@ class DeleteNetworkQosRule(command.Command):
|
|
|
290
301
|
)
|
|
291
302
|
return parser
|
|
292
303
|
|
|
293
|
-
def take_action(self, parsed_args):
|
|
304
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
294
305
|
network_client = self.app.client_manager.network
|
|
295
306
|
rule_id = parsed_args.id
|
|
296
307
|
try:
|
|
@@ -313,7 +324,7 @@ class DeleteNetworkQosRule(command.Command):
|
|
|
313
324
|
class ListNetworkQosRule(command.Lister):
|
|
314
325
|
_description = _("List Network QoS rules")
|
|
315
326
|
|
|
316
|
-
def get_parser(self, prog_name):
|
|
327
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
317
328
|
parser = super().get_parser(prog_name)
|
|
318
329
|
parser.add_argument(
|
|
319
330
|
'qos_policy',
|
|
@@ -322,7 +333,9 @@ class ListNetworkQosRule(command.Lister):
|
|
|
322
333
|
)
|
|
323
334
|
return parser
|
|
324
335
|
|
|
325
|
-
def take_action(
|
|
336
|
+
def take_action(
|
|
337
|
+
self, parsed_args: argparse.Namespace
|
|
338
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
326
339
|
client = self.app.client_manager.network
|
|
327
340
|
columns = (
|
|
328
341
|
'id',
|
|
@@ -359,7 +372,7 @@ class ListNetworkQosRule(command.Lister):
|
|
|
359
372
|
class SetNetworkQosRule(common.NeutronCommandWithExtraArgs):
|
|
360
373
|
_description = _("Set Network QoS rule properties")
|
|
361
374
|
|
|
362
|
-
def get_parser(self, prog_name):
|
|
375
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
363
376
|
parser = super().get_parser(prog_name)
|
|
364
377
|
parser.add_argument(
|
|
365
378
|
'qos_policy',
|
|
@@ -374,7 +387,7 @@ class SetNetworkQosRule(common.NeutronCommandWithExtraArgs):
|
|
|
374
387
|
_add_rule_arguments(parser)
|
|
375
388
|
return parser
|
|
376
389
|
|
|
377
|
-
def take_action(self, parsed_args):
|
|
390
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
378
391
|
network_client = self.app.client_manager.network
|
|
379
392
|
try:
|
|
380
393
|
qos = network_client.find_qos_policy(
|
|
@@ -405,7 +418,7 @@ class SetNetworkQosRule(common.NeutronCommandWithExtraArgs):
|
|
|
405
418
|
class ShowNetworkQosRule(command.ShowOne):
|
|
406
419
|
_description = _("Display Network QoS rule details")
|
|
407
420
|
|
|
408
|
-
def get_parser(self, prog_name):
|
|
421
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
409
422
|
parser = super().get_parser(prog_name)
|
|
410
423
|
parser.add_argument(
|
|
411
424
|
'qos_policy',
|
|
@@ -419,7 +432,9 @@ class ShowNetworkQosRule(command.ShowOne):
|
|
|
419
432
|
)
|
|
420
433
|
return parser
|
|
421
434
|
|
|
422
|
-
def take_action(
|
|
435
|
+
def take_action(
|
|
436
|
+
self, parsed_args: argparse.Namespace
|
|
437
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
423
438
|
network_client = self.app.client_manager.network
|
|
424
439
|
rule_id = parsed_args.id
|
|
425
440
|
try:
|
|
@@ -13,13 +13,17 @@
|
|
|
13
13
|
# License for the specific language governing permissions and limitations
|
|
14
14
|
# under the License.
|
|
15
15
|
|
|
16
|
+
import argparse
|
|
17
|
+
from collections.abc import Iterable, Sequence
|
|
18
|
+
from typing import Any
|
|
19
|
+
|
|
16
20
|
from osc_lib import utils
|
|
17
21
|
|
|
18
22
|
from openstackclient import command
|
|
19
23
|
from openstackclient.i18n import _
|
|
20
24
|
|
|
21
25
|
|
|
22
|
-
def _get_columns(item):
|
|
26
|
+
def _get_columns(item: Any) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
23
27
|
column_map = {
|
|
24
28
|
"type": "rule_type_name",
|
|
25
29
|
"drivers": "drivers",
|
|
@@ -33,7 +37,7 @@ def _get_columns(item):
|
|
|
33
37
|
class ListNetworkQosRuleType(command.Lister):
|
|
34
38
|
_description = _("List QoS rule types")
|
|
35
39
|
|
|
36
|
-
def get_parser(self, prog_name):
|
|
40
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
37
41
|
parser = super().get_parser(prog_name)
|
|
38
42
|
supported = parser.add_mutually_exclusive_group()
|
|
39
43
|
supported.add_argument(
|
|
@@ -54,7 +58,9 @@ class ListNetworkQosRuleType(command.Lister):
|
|
|
54
58
|
)
|
|
55
59
|
return parser
|
|
56
60
|
|
|
57
|
-
def take_action(
|
|
61
|
+
def take_action(
|
|
62
|
+
self, parsed_args: argparse.Namespace
|
|
63
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
58
64
|
client = self.app.client_manager.network
|
|
59
65
|
columns = ('type',)
|
|
60
66
|
column_headers = ('Type',)
|
|
@@ -82,7 +88,7 @@ class ListNetworkQosRuleType(command.Lister):
|
|
|
82
88
|
class ShowNetworkQosRuleType(command.ShowOne):
|
|
83
89
|
_description = _("Show details about supported QoS rule type")
|
|
84
90
|
|
|
85
|
-
def get_parser(self, prog_name):
|
|
91
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
86
92
|
parser = super().get_parser(prog_name)
|
|
87
93
|
parser.add_argument(
|
|
88
94
|
'rule_type',
|
|
@@ -91,7 +97,9 @@ class ShowNetworkQosRuleType(command.ShowOne):
|
|
|
91
97
|
)
|
|
92
98
|
return parser
|
|
93
99
|
|
|
94
|
-
def take_action(
|
|
100
|
+
def take_action(
|
|
101
|
+
self, parsed_args: argparse.Namespace
|
|
102
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
95
103
|
client = self.app.client_manager.network
|
|
96
104
|
obj = client.get_qos_rule_type(parsed_args.rule_type)
|
|
97
105
|
display_columns, columns = _get_columns(obj)
|
|
@@ -13,7 +13,10 @@
|
|
|
13
13
|
|
|
14
14
|
"""RBAC action implementations"""
|
|
15
15
|
|
|
16
|
+
import argparse
|
|
17
|
+
from collections.abc import Iterable, Sequence
|
|
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
|
|
@@ -26,7 +29,7 @@ from openstackclient.network import common
|
|
|
26
29
|
LOG = logging.getLogger(__name__)
|
|
27
30
|
|
|
28
31
|
|
|
29
|
-
def _get_columns(item):
|
|
32
|
+
def _get_columns(item: Any) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
30
33
|
column_map = {
|
|
31
34
|
'target_tenant': 'target_project_id',
|
|
32
35
|
}
|
|
@@ -36,7 +39,9 @@ def _get_columns(item):
|
|
|
36
39
|
)
|
|
37
40
|
|
|
38
41
|
|
|
39
|
-
def _get_attrs(
|
|
42
|
+
def _get_attrs(
|
|
43
|
+
client_manager: Any, parsed_args: argparse.Namespace
|
|
44
|
+
) -> dict[str, Any]:
|
|
40
45
|
attrs = {}
|
|
41
46
|
attrs['object_type'] = parsed_args.type
|
|
42
47
|
attrs['action'] = parsed_args.action
|
|
@@ -95,7 +100,7 @@ def _get_attrs(client_manager, parsed_args):
|
|
|
95
100
|
class CreateNetworkRBAC(command.ShowOne, common.NeutronCommandWithExtraArgs):
|
|
96
101
|
_description = _("Create network RBAC policy")
|
|
97
102
|
|
|
98
|
-
def get_parser(self, prog_name):
|
|
103
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
99
104
|
parser = super().get_parser(prog_name)
|
|
100
105
|
parser.add_argument(
|
|
101
106
|
'rbac_object',
|
|
@@ -166,7 +171,9 @@ class CreateNetworkRBAC(command.ShowOne, common.NeutronCommandWithExtraArgs):
|
|
|
166
171
|
identity_common.add_project_domain_option_to_parser(parser)
|
|
167
172
|
return parser
|
|
168
173
|
|
|
169
|
-
def take_action(
|
|
174
|
+
def take_action(
|
|
175
|
+
self, parsed_args: argparse.Namespace
|
|
176
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
170
177
|
client = self.app.client_manager.network
|
|
171
178
|
attrs = _get_attrs(self.app.client_manager, parsed_args)
|
|
172
179
|
attrs.update(
|
|
@@ -181,7 +188,7 @@ class CreateNetworkRBAC(command.ShowOne, common.NeutronCommandWithExtraArgs):
|
|
|
181
188
|
class DeleteNetworkRBAC(command.Command):
|
|
182
189
|
_description = _("Delete network RBAC policy(s)")
|
|
183
190
|
|
|
184
|
-
def get_parser(self, prog_name):
|
|
191
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
185
192
|
parser = super().get_parser(prog_name)
|
|
186
193
|
parser.add_argument(
|
|
187
194
|
'rbac_policy',
|
|
@@ -191,7 +198,7 @@ class DeleteNetworkRBAC(command.Command):
|
|
|
191
198
|
)
|
|
192
199
|
return parser
|
|
193
200
|
|
|
194
|
-
def take_action(self, parsed_args):
|
|
201
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
195
202
|
client = self.app.client_manager.network
|
|
196
203
|
result = 0
|
|
197
204
|
|
|
@@ -220,7 +227,7 @@ class DeleteNetworkRBAC(command.Command):
|
|
|
220
227
|
class ListNetworkRBAC(command.Lister):
|
|
221
228
|
_description = _("List network RBAC policies")
|
|
222
229
|
|
|
223
|
-
def get_parser(self, prog_name):
|
|
230
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
224
231
|
parser = super().get_parser(prog_name)
|
|
225
232
|
parser.add_argument(
|
|
226
233
|
'--type',
|
|
@@ -265,7 +272,9 @@ class ListNetworkRBAC(command.Lister):
|
|
|
265
272
|
)
|
|
266
273
|
return parser
|
|
267
274
|
|
|
268
|
-
def take_action(
|
|
275
|
+
def take_action(
|
|
276
|
+
self, parsed_args: argparse.Namespace
|
|
277
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
269
278
|
client = self.app.client_manager.network
|
|
270
279
|
|
|
271
280
|
columns: tuple[str, ...] = (
|
|
@@ -317,7 +326,7 @@ class ListNetworkRBAC(command.Lister):
|
|
|
317
326
|
class SetNetworkRBAC(common.NeutronCommandWithExtraArgs):
|
|
318
327
|
_description = _("Set network RBAC policy properties")
|
|
319
328
|
|
|
320
|
-
def get_parser(self, prog_name):
|
|
329
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
321
330
|
parser = super().get_parser(prog_name)
|
|
322
331
|
parser.add_argument(
|
|
323
332
|
'rbac_policy',
|
|
@@ -343,7 +352,7 @@ class SetNetworkRBAC(common.NeutronCommandWithExtraArgs):
|
|
|
343
352
|
)
|
|
344
353
|
return parser
|
|
345
354
|
|
|
346
|
-
def take_action(self, parsed_args):
|
|
355
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
347
356
|
client = self.app.client_manager.network
|
|
348
357
|
obj = client.find_rbac_policy(
|
|
349
358
|
parsed_args.rbac_policy, ignore_missing=False
|
|
@@ -366,7 +375,7 @@ class SetNetworkRBAC(common.NeutronCommandWithExtraArgs):
|
|
|
366
375
|
class ShowNetworkRBAC(command.ShowOne):
|
|
367
376
|
_description = _("Display network RBAC policy details")
|
|
368
377
|
|
|
369
|
-
def get_parser(self, prog_name):
|
|
378
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
370
379
|
parser = super().get_parser(prog_name)
|
|
371
380
|
parser.add_argument(
|
|
372
381
|
'rbac_policy',
|
|
@@ -375,7 +384,9 @@ class ShowNetworkRBAC(command.ShowOne):
|
|
|
375
384
|
)
|
|
376
385
|
return parser
|
|
377
386
|
|
|
378
|
-
def take_action(
|
|
387
|
+
def take_action(
|
|
388
|
+
self, parsed_args: argparse.Namespace
|
|
389
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
379
390
|
client = self.app.client_manager.network
|
|
380
391
|
obj = client.find_rbac_policy(
|
|
381
392
|
parsed_args.rbac_policy, ignore_missing=False
|
|
@@ -13,7 +13,10 @@
|
|
|
13
13
|
|
|
14
14
|
"""Network segment action implementations"""
|
|
15
15
|
|
|
16
|
+
import argparse
|
|
17
|
+
from collections.abc import Iterable, Sequence
|
|
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.network import common
|
|
|
25
28
|
LOG = logging.getLogger(__name__)
|
|
26
29
|
|
|
27
30
|
|
|
28
|
-
def _get_columns(item):
|
|
31
|
+
def _get_columns(item: Any) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
29
32
|
hidden_columns = ['location', 'tenant_id']
|
|
30
33
|
return utils.get_osc_show_columns_for_sdk_resource(
|
|
31
34
|
item, {}, hidden_columns
|
|
@@ -37,7 +40,7 @@ class CreateNetworkSegment(
|
|
|
37
40
|
):
|
|
38
41
|
_description = _("Create new network segment")
|
|
39
42
|
|
|
40
|
-
def get_parser(self, prog_name):
|
|
43
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
41
44
|
parser = super().get_parser(prog_name)
|
|
42
45
|
parser.add_argument(
|
|
43
46
|
'name', metavar='<name>', help=_('New network segment name')
|
|
@@ -81,7 +84,9 @@ class CreateNetworkSegment(
|
|
|
81
84
|
)
|
|
82
85
|
return parser
|
|
83
86
|
|
|
84
|
-
def take_action(
|
|
87
|
+
def take_action(
|
|
88
|
+
self, parsed_args: argparse.Namespace
|
|
89
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
85
90
|
client = self.app.client_manager.network
|
|
86
91
|
attrs = {}
|
|
87
92
|
attrs['name'] = parsed_args.name
|
|
@@ -107,7 +112,7 @@ class CreateNetworkSegment(
|
|
|
107
112
|
class DeleteNetworkSegment(command.Command):
|
|
108
113
|
_description = _("Delete network segment(s)")
|
|
109
114
|
|
|
110
|
-
def get_parser(self, prog_name):
|
|
115
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
111
116
|
parser = super().get_parser(prog_name)
|
|
112
117
|
parser.add_argument(
|
|
113
118
|
'network_segment',
|
|
@@ -117,7 +122,7 @@ class DeleteNetworkSegment(command.Command):
|
|
|
117
122
|
)
|
|
118
123
|
return parser
|
|
119
124
|
|
|
120
|
-
def take_action(self, parsed_args):
|
|
125
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
121
126
|
client = self.app.client_manager.network
|
|
122
127
|
|
|
123
128
|
result = 0
|
|
@@ -148,7 +153,7 @@ class DeleteNetworkSegment(command.Command):
|
|
|
148
153
|
class ListNetworkSegment(command.Lister):
|
|
149
154
|
_description = _("List network segments")
|
|
150
155
|
|
|
151
|
-
def get_parser(self, prog_name):
|
|
156
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
152
157
|
parser = super().get_parser(prog_name)
|
|
153
158
|
parser.add_argument(
|
|
154
159
|
'--long',
|
|
@@ -166,7 +171,9 @@ class ListNetworkSegment(command.Lister):
|
|
|
166
171
|
)
|
|
167
172
|
return parser
|
|
168
173
|
|
|
169
|
-
def take_action(
|
|
174
|
+
def take_action(
|
|
175
|
+
self, parsed_args: argparse.Namespace
|
|
176
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
170
177
|
network_client = self.app.client_manager.network
|
|
171
178
|
|
|
172
179
|
filters = {}
|
|
@@ -211,7 +218,7 @@ class ListNetworkSegment(command.Lister):
|
|
|
211
218
|
class SetNetworkSegment(common.NeutronCommandWithExtraArgs):
|
|
212
219
|
_description = _("Set network segment properties")
|
|
213
220
|
|
|
214
|
-
def get_parser(self, prog_name):
|
|
221
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
215
222
|
parser = super().get_parser(prog_name)
|
|
216
223
|
parser.add_argument(
|
|
217
224
|
'network_segment',
|
|
@@ -230,7 +237,7 @@ class SetNetworkSegment(common.NeutronCommandWithExtraArgs):
|
|
|
230
237
|
)
|
|
231
238
|
return parser
|
|
232
239
|
|
|
233
|
-
def take_action(self, parsed_args):
|
|
240
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
234
241
|
client = self.app.client_manager.network
|
|
235
242
|
obj = client.find_segment(
|
|
236
243
|
parsed_args.network_segment, ignore_missing=False
|
|
@@ -249,7 +256,7 @@ class SetNetworkSegment(common.NeutronCommandWithExtraArgs):
|
|
|
249
256
|
class ShowNetworkSegment(command.ShowOne):
|
|
250
257
|
_description = _("Display network segment details")
|
|
251
258
|
|
|
252
|
-
def get_parser(self, prog_name):
|
|
259
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
253
260
|
parser = super().get_parser(prog_name)
|
|
254
261
|
parser.add_argument(
|
|
255
262
|
'network_segment',
|
|
@@ -258,7 +265,9 @@ class ShowNetworkSegment(command.ShowOne):
|
|
|
258
265
|
)
|
|
259
266
|
return parser
|
|
260
267
|
|
|
261
|
-
def take_action(
|
|
268
|
+
def take_action(
|
|
269
|
+
self, parsed_args: argparse.Namespace
|
|
270
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
262
271
|
client = self.app.client_manager.network
|
|
263
272
|
obj = client.find_segment(
|
|
264
273
|
parsed_args.network_segment, ignore_missing=False
|