python-openstackclient 9.0.0__py3-none-any.whl → 10.1.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 +59 -43
- 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 +36 -34
- openstackclient/common/pagination.py +50 -6
- openstackclient/common/progressbar.py +7 -6
- openstackclient/common/project_cleanup.py +11 -6
- openstackclient/common/quota.py +105 -103
- 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 +42 -22
- openstackclient/compute/v2/host.py +14 -6
- openstackclient/compute/v2/hypervisor.py +16 -5
- openstackclient/compute/v2/hypervisor_stats.py +10 -2
- openstackclient/compute/v2/keypair.py +35 -16
- openstackclient/compute/v2/server.py +268 -179
- openstackclient/compute/v2/server_backup.py +10 -4
- openstackclient/compute/v2/server_event.py +28 -12
- openstackclient/compute/v2/server_group.py +23 -11
- openstackclient/compute/v2/server_image.py +19 -10
- openstackclient/compute/v2/server_migration.py +27 -10
- openstackclient/compute/v2/server_share.py +274 -0
- openstackclient/compute/v2/server_volume.py +13 -5
- openstackclient/compute/v2/service.py +17 -8
- openstackclient/compute/v2/usage.py +28 -23
- openstackclient/identity/client.py +8 -3
- openstackclient/identity/common.py +82 -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 +32 -12
- openstackclient/identity/v3/application_credential.py +66 -24
- openstackclient/identity/v3/catalog.py +14 -7
- openstackclient/identity/v3/consumer.py +22 -11
- openstackclient/identity/v3/credential.py +39 -17
- openstackclient/identity/v3/domain.py +40 -19
- openstackclient/identity/v3/ec2creds.py +25 -12
- openstackclient/identity/v3/endpoint.py +98 -64
- openstackclient/identity/v3/endpoint_group.py +28 -17
- openstackclient/identity/v3/federation_protocol.py +44 -20
- openstackclient/identity/v3/group.py +64 -40
- openstackclient/identity/v3/identity_provider.py +95 -57
- openstackclient/identity/v3/implied_role.py +21 -9
- openstackclient/identity/v3/limit.py +42 -17
- openstackclient/identity/v3/mapping.py +58 -28
- openstackclient/identity/v3/policy.py +23 -12
- openstackclient/identity/v3/project.py +59 -26
- openstackclient/identity/v3/region.py +39 -17
- openstackclient/identity/v3/registered_limit.py +41 -16
- openstackclient/identity/v3/role.py +62 -31
- openstackclient/identity/v3/role_assignment.py +25 -7
- openstackclient/identity/v3/service.py +39 -17
- openstackclient/identity/v3/service_provider.py +40 -16
- openstackclient/identity/v3/tag.py +23 -6
- openstackclient/identity/v3/token.py +30 -14
- openstackclient/identity/v3/trust.py +39 -18
- openstackclient/identity/v3/unscoped_saml.py +10 -2
- openstackclient/identity/v3/user.py +86 -36
- openstackclient/image/client.py +7 -3
- openstackclient/image/v1/image.py +33 -26
- openstackclient/image/v2/cache.py +16 -11
- openstackclient/image/v2/image.py +88 -56
- openstackclient/image/v2/info.py +7 -1
- openstackclient/image/v2/metadef_namespaces.py +117 -20
- openstackclient/image/v2/metadef_objects.py +32 -19
- openstackclient/image/v2/metadef_properties.py +30 -16
- openstackclient/image/v2/metadef_resource_type_association.py +14 -7
- openstackclient/image/v2/metadef_resource_types.py +7 -1
- openstackclient/image/v2/task.py +25 -27
- 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 +27 -54
- openstackclient/network/v2/address_group.py +39 -16
- openstackclient/network/v2/address_scope.py +36 -20
- openstackclient/network/v2/bgpvpn/bgpvpn.py +477 -0
- openstackclient/network/v2/bgpvpn/constants.py +30 -0
- openstackclient/network/v2/bgpvpn/network_association.py +226 -0
- openstackclient/network/v2/bgpvpn/port_association.py +504 -0
- openstackclient/network/v2/bgpvpn/router_association.py +301 -0
- openstackclient/network/v2/default_security_group_rule.py +31 -14
- openstackclient/network/v2/floating_ip.py +121 -162
- openstackclient/network/v2/floating_ip_port_forwarding.py +41 -19
- openstackclient/network/v2/fwaas/__init__.py +0 -0
- openstackclient/network/v2/fwaas/group.py +499 -0
- openstackclient/network/v2/fwaas/policy.py +518 -0
- openstackclient/network/v2/fwaas/rule.py +610 -0
- openstackclient/network/v2/ip_availability.py +25 -8
- openstackclient/network/v2/l3_conntrack_helper.py +35 -13
- openstackclient/network/v2/local_ip.py +27 -13
- openstackclient/network/v2/local_ip_association.py +17 -7
- openstackclient/network/v2/ndp_proxy.py +23 -11
- openstackclient/network/v2/network.py +213 -213
- openstackclient/network/v2/network_agent.py +77 -34
- openstackclient/network/v2/network_auto_allocated_topology.py +27 -15
- openstackclient/network/v2/network_flavor.py +45 -21
- openstackclient/network/v2/network_flavor_profile.py +42 -17
- openstackclient/network/v2/network_meter.py +39 -15
- openstackclient/network/v2/network_meter_rule.py +40 -12
- openstackclient/network/v2/network_qos_policy.py +39 -21
- openstackclient/network/v2/network_qos_rule.py +48 -18
- openstackclient/network/v2/network_qos_rule_type.py +28 -9
- openstackclient/network/v2/network_rbac.py +34 -16
- openstackclient/network/v2/network_segment.py +32 -11
- openstackclient/network/v2/network_segment_range.py +70 -31
- openstackclient/network/v2/network_service_provider.py +7 -1
- openstackclient/network/v2/network_trunk.py +41 -22
- openstackclient/network/v2/port.py +141 -40
- openstackclient/network/v2/router.py +101 -67
- openstackclient/network/v2/security_group.py +97 -198
- openstackclient/network/v2/security_group_rule.py +115 -282
- openstackclient/network/v2/subnet.py +63 -34
- openstackclient/network/v2/subnet_pool.py +42 -24
- openstackclient/network/v2/taas/tap_flow.py +35 -14
- openstackclient/network/v2/taas/tap_mirror.py +28 -14
- openstackclient/network/v2/taas/tap_service.py +26 -12
- openstackclient/object/client.py +7 -2
- openstackclient/object/v1/account.py +13 -6
- openstackclient/object/v1/container.py +28 -16
- openstackclient/object/v1/object.py +28 -16
- 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 +59 -19
- openstackclient/tests/functional/identity/v3/test_application_credential.py +1 -1
- 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_mapping.py +81 -0
- openstackclient/tests/functional/identity/v3/test_project.py +10 -10
- openstackclient/tests/functional/identity/v3/test_role.py +18 -18
- openstackclient/tests/functional/identity/v3/test_role_assignment.py +12 -12
- openstackclient/tests/functional/identity/v3/test_user.py +8 -8
- openstackclient/tests/functional/image/base.py +1 -6
- openstackclient/tests/functional/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_group.py +163 -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_limits.py +1 -1
- openstackclient/tests/unit/common/test_module.py +82 -44
- openstackclient/tests/unit/common/test_project_cleanup.py +3 -1
- openstackclient/tests/unit/common/test_quota.py +15 -26
- openstackclient/tests/unit/compute/v2/fakes.py +26 -57
- openstackclient/tests/unit/compute/v2/test_agent.py +4 -4
- openstackclient/tests/unit/compute/v2/test_aggregate.py +1 -1
- openstackclient/tests/unit/compute/v2/test_console.py +2 -2
- openstackclient/tests/unit/compute/v2/test_console_connection.py +1 -1
- openstackclient/tests/unit/compute/v2/test_flavor.py +29 -3
- openstackclient/tests/unit/compute/v2/test_host.py +3 -3
- openstackclient/tests/unit/compute/v2/test_hypervisor.py +2 -2
- openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py +1 -1
- openstackclient/tests/unit/compute/v2/test_keypair.py +7 -7
- openstackclient/tests/unit/compute/v2/test_server.py +26 -111
- openstackclient/tests/unit/compute/v2/test_server_backup.py +1 -1
- openstackclient/tests/unit/compute/v2/test_server_event.py +2 -2
- openstackclient/tests/unit/compute/v2/test_server_group.py +1 -1
- openstackclient/tests/unit/compute/v2/test_server_image.py +1 -1
- openstackclient/tests/unit/compute/v2/test_server_migration.py +4 -4
- openstackclient/tests/unit/compute/v2/test_server_share.py +287 -0
- openstackclient/tests/unit/compute/v2/test_server_volume.py +2 -2
- openstackclient/tests/unit/compute/v2/test_service.py +3 -3
- openstackclient/tests/unit/compute/v2/test_usage.py +1 -1
- openstackclient/tests/unit/identity/v2_0/fakes.py +3 -7
- openstackclient/tests/unit/identity/v2_0/test_endpoint.py +1 -1
- openstackclient/tests/unit/identity/v2_0/test_project.py +1 -1
- openstackclient/tests/unit/identity/v2_0/test_role.py +1 -1
- openstackclient/tests/unit/identity/v2_0/test_role_assignment.py +1 -1
- openstackclient/tests/unit/identity/v2_0/test_service.py +1 -1
- openstackclient/tests/unit/identity/v2_0/test_token.py +2 -2
- openstackclient/tests/unit/identity/v2_0/test_user.py +1 -1
- openstackclient/tests/unit/identity/v3/fakes.py +8 -38
- openstackclient/tests/unit/identity/v3/test_access_rule.py +3 -3
- openstackclient/tests/unit/identity/v3/test_application_credential.py +4 -4
- openstackclient/tests/unit/identity/v3/test_credential.py +5 -5
- openstackclient/tests/unit/identity/v3/test_domain.py +5 -5
- openstackclient/tests/unit/identity/v3/test_endpoint.py +6 -6
- openstackclient/tests/unit/identity/v3/test_endpoint_group.py +1 -1
- openstackclient/tests/unit/identity/v3/test_group.py +12 -22
- openstackclient/tests/unit/identity/v3/test_identity_provider.py +303 -299
- openstackclient/tests/unit/identity/v3/test_implied_role.py +1 -1
- openstackclient/tests/unit/identity/v3/test_limit.py +5 -5
- openstackclient/tests/unit/identity/v3/test_mappings.py +163 -79
- openstackclient/tests/unit/identity/v3/test_project.py +28 -5
- openstackclient/tests/unit/identity/v3/test_protocol.py +3 -3
- openstackclient/tests/unit/identity/v3/test_region.py +5 -5
- openstackclient/tests/unit/identity/v3/test_registered_limit.py +5 -5
- openstackclient/tests/unit/identity/v3/test_role.py +8 -8
- openstackclient/tests/unit/identity/v3/test_role_assignment.py +1 -1
- openstackclient/tests/unit/identity/v3/test_service.py +5 -5
- openstackclient/tests/unit/identity/v3/test_token.py +2 -2
- openstackclient/tests/unit/identity/v3/test_trust.py +4 -4
- openstackclient/tests/unit/identity/v3/test_user.py +77 -10
- 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/fakes.py +5 -77
- openstackclient/tests/unit/network/v2/fwaas/__init__.py +0 -0
- openstackclient/tests/unit/network/v2/fwaas/test_group.py +923 -0
- openstackclient/tests/unit/network/v2/fwaas/test_policy.py +869 -0
- openstackclient/tests/unit/network/v2/fwaas/test_rule.py +1005 -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 +26 -2
- openstackclient/tests/unit/network/v2/test_address_scope.py +24 -0
- openstackclient/tests/unit/network/v2/{test_floating_ip_network.py → test_floating_ip.py} +27 -2
- openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +37 -13
- openstackclient/tests/unit/network/v2/test_ip_availability.py +25 -0
- openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py +29 -3
- openstackclient/tests/unit/network/v2/test_network.py +74 -12
- openstackclient/tests/unit/network/v2/test_network_agent.py +58 -5
- openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py +3 -3
- openstackclient/tests/unit/network/v2/test_network_flavor.py +26 -2
- openstackclient/tests/unit/network/v2/test_network_flavor_profile.py +24 -0
- openstackclient/tests/unit/network/v2/test_network_meter.py +24 -0
- openstackclient/tests/unit/network/v2/test_network_qos_policy.py +25 -1
- openstackclient/tests/unit/network/v2/test_network_qos_rule.py +2 -2
- openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py +24 -0
- openstackclient/tests/unit/network/v2/test_network_rbac.py +25 -1
- openstackclient/tests/unit/network/v2/test_network_segment.py +25 -1
- openstackclient/tests/unit/network/v2/test_network_segment_range.py +31 -10
- openstackclient/tests/unit/network/v2/test_network_trunk.py +1 -1
- openstackclient/tests/unit/network/v2/test_port.py +166 -0
- openstackclient/tests/unit/network/v2/test_router.py +36 -16
- openstackclient/tests/unit/network/v2/{test_security_group_network.py → test_security_group.py} +11 -8
- openstackclient/tests/unit/network/v2/{test_security_group_rule_network.py → test_security_group_rule.py} +28 -37
- openstackclient/tests/unit/network/v2/test_subnet.py +30 -5
- openstackclient/tests/unit/network/v2/test_subnet_pool.py +26 -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 +21 -140
- openstackclient/tests/unit/volume/v2/test_volume_backup.py +6 -14
- openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +8 -1
- openstackclient/tests/unit/volume/v2/test_volume_type.py +2 -4
- openstackclient/tests/unit/volume/v3/fakes.py +205 -100
- openstackclient/tests/unit/volume/v3/test_backup_record.py +114 -0
- openstackclient/tests/unit/volume/v3/test_consistency_group.py +720 -0
- openstackclient/tests/unit/volume/v3/test_consistency_group_snapshot.py +354 -0
- openstackclient/tests/unit/volume/v3/test_qos_specs.py +455 -0
- openstackclient/tests/unit/volume/v3/test_volume.py +60 -3
- openstackclient/tests/unit/volume/v3/test_volume_attachment.py +3 -1
- openstackclient/tests/unit/volume/v3/test_volume_backend.py +158 -0
- openstackclient/tests/unit/volume/v3/test_volume_backup.py +6 -14
- openstackclient/tests/unit/volume/v3/test_volume_group_type.py +65 -0
- openstackclient/tests/unit/volume/v3/test_volume_host.py +115 -0
- openstackclient/tests/unit/volume/v3/test_volume_snapshot.py +61 -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 +60 -30
- openstackclient/volume/v2/volume_backend.py +19 -6
- openstackclient/volume/v2/volume_backup.py +48 -23
- openstackclient/volume/v2/volume_host.py +6 -4
- openstackclient/volume/v2/volume_snapshot.py +49 -24
- openstackclient/volume/v2/volume_transfer_request.py +31 -13
- openstackclient/volume/v2/volume_type.py +43 -24
- openstackclient/volume/v3/backup_record.py +94 -0
- 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/consistency_group.py +400 -0
- openstackclient/volume/v3/consistency_group_snapshot.py +225 -0
- openstackclient/volume/v3/qos_specs.py +389 -0
- openstackclient/volume/v3/service.py +16 -6
- openstackclient/volume/v3/volume.py +92 -40
- openstackclient/volume/v3/volume_attachment.py +47 -21
- openstackclient/volume/v3/volume_backend.py +130 -0
- openstackclient/volume/v3/volume_backup.py +55 -27
- openstackclient/volume/v3/volume_group.py +23 -13
- openstackclient/volume/v3/volume_group_snapshot.py +34 -17
- openstackclient/volume/v3/volume_group_type.py +27 -14
- openstackclient/volume/v3/volume_host.py +74 -0
- openstackclient/volume/v3/volume_message.py +18 -8
- openstackclient/volume/v3/volume_snapshot.py +70 -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.1.0.dist-info}/METADATA +7 -8
- python_openstackclient-10.1.0.dist-info/RECORD +524 -0
- {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/WHEEL +1 -1
- {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/entry_points.txt +77 -25
- {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/licenses/AUTHORS +9 -0
- python_openstackclient-10.1.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/RECORD +0 -499
- 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.1.0.dist-info}/licenses/LICENSE +0 -0
- {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/top_level.txt +0 -0
|
@@ -13,8 +13,18 @@
|
|
|
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
|
|
17
|
-
|
|
19
|
+
from typing import Any, cast
|
|
20
|
+
|
|
21
|
+
from openstack.network.v2 import (
|
|
22
|
+
qos_bandwidth_limit_rule as _qos_bandwidth_limit_rule,
|
|
23
|
+
qos_dscp_marking_rule as _qos_dscp_marking_rule,
|
|
24
|
+
qos_minimum_bandwidth_rule as _qos_minimum_bandwidth_rule,
|
|
25
|
+
qos_minimum_packet_rate_rule as _qos_minimum_packet_rate_rule,
|
|
26
|
+
qos_packet_rate_limit_rule as _qos_packet_rate_limit_rule,
|
|
27
|
+
)
|
|
18
28
|
from osc_lib import exceptions
|
|
19
29
|
from osc_lib import utils
|
|
20
30
|
|
|
@@ -72,14 +82,24 @@ ACTION_SET = 'update'
|
|
|
72
82
|
ACTION_SHOW = 'get'
|
|
73
83
|
|
|
74
84
|
|
|
75
|
-
def _get_columns(
|
|
85
|
+
def _get_columns(
|
|
86
|
+
item: (
|
|
87
|
+
_qos_bandwidth_limit_rule.QoSBandwidthLimitRule
|
|
88
|
+
| _qos_dscp_marking_rule.QoSDSCPMarkingRule
|
|
89
|
+
| _qos_minimum_bandwidth_rule.QoSMinimumBandwidthRule
|
|
90
|
+
| _qos_minimum_packet_rate_rule.QoSMinimumPacketRateRule
|
|
91
|
+
| _qos_packet_rate_limit_rule.QoSPacketRateLimitRule
|
|
92
|
+
),
|
|
93
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
76
94
|
hidden_columns = ['location', 'name', 'tenant_id']
|
|
77
95
|
return utils.get_osc_show_columns_for_sdk_resource(
|
|
78
96
|
item, {}, hidden_columns
|
|
79
97
|
)
|
|
80
98
|
|
|
81
99
|
|
|
82
|
-
def _check_type_parameters(
|
|
100
|
+
def _check_type_parameters(
|
|
101
|
+
attrs: dict[str, Any], type: str, is_create: bool
|
|
102
|
+
) -> None:
|
|
83
103
|
req_params = MANDATORY_PARAMETERS[type]
|
|
84
104
|
opt_params = OPTIONAL_PARAMETERS[type]
|
|
85
105
|
type_params = req_params | opt_params
|
|
@@ -102,7 +122,11 @@ def _check_type_parameters(attrs, type, is_create):
|
|
|
102
122
|
raise exceptions.CommandError(msg)
|
|
103
123
|
|
|
104
124
|
|
|
105
|
-
def _get_attrs(
|
|
125
|
+
def _get_attrs(
|
|
126
|
+
network_client: Any,
|
|
127
|
+
parsed_args: argparse.Namespace,
|
|
128
|
+
is_create: bool = False,
|
|
129
|
+
) -> dict[str, Any]:
|
|
106
130
|
attrs = {}
|
|
107
131
|
qos = network_client.find_qos_policy(
|
|
108
132
|
parsed_args.qos_policy, ignore_missing=False
|
|
@@ -148,19 +172,19 @@ def _get_attrs(network_client, parsed_args, is_create=False):
|
|
|
148
172
|
return attrs
|
|
149
173
|
|
|
150
174
|
|
|
151
|
-
def _rule_action_call(client, action, rule_type):
|
|
175
|
+
def _rule_action_call(client: Any, action: str, rule_type: str) -> Any:
|
|
152
176
|
rule_type = rule_type.replace('-', '_')
|
|
153
177
|
func_name = f'{action}_qos_{rule_type}_rule'
|
|
154
178
|
return getattr(client, func_name)
|
|
155
179
|
|
|
156
180
|
|
|
157
|
-
def _find_rule_type(qos, rule_id):
|
|
181
|
+
def _find_rule_type(qos: Any, rule_id: str) -> str | None:
|
|
158
182
|
for rule in (r for r in qos.rules if r['id'] == rule_id):
|
|
159
|
-
return rule['type'].replace('_', '-')
|
|
183
|
+
return cast(str, rule['type']).replace('_', '-')
|
|
160
184
|
return None
|
|
161
185
|
|
|
162
186
|
|
|
163
|
-
def _add_rule_arguments(parser):
|
|
187
|
+
def _add_rule_arguments(parser: argparse.ArgumentParser) -> None:
|
|
164
188
|
parser.add_argument(
|
|
165
189
|
'--max-kbps',
|
|
166
190
|
dest='max_kbps',
|
|
@@ -230,7 +254,7 @@ class CreateNetworkQosRule(
|
|
|
230
254
|
):
|
|
231
255
|
_description = _("Create new Network QoS rule")
|
|
232
256
|
|
|
233
|
-
def get_parser(self, prog_name):
|
|
257
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
234
258
|
parser = super().get_parser(prog_name)
|
|
235
259
|
parser.add_argument(
|
|
236
260
|
'qos_policy',
|
|
@@ -255,7 +279,9 @@ class CreateNetworkQosRule(
|
|
|
255
279
|
_add_rule_arguments(parser)
|
|
256
280
|
return parser
|
|
257
281
|
|
|
258
|
-
def take_action(
|
|
282
|
+
def take_action(
|
|
283
|
+
self, parsed_args: argparse.Namespace
|
|
284
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
259
285
|
network_client = self.app.client_manager.network
|
|
260
286
|
try:
|
|
261
287
|
attrs = _get_attrs(network_client, parsed_args, is_create=True)
|
|
@@ -276,7 +302,7 @@ class CreateNetworkQosRule(
|
|
|
276
302
|
class DeleteNetworkQosRule(command.Command):
|
|
277
303
|
_description = _("Delete Network QoS rule")
|
|
278
304
|
|
|
279
|
-
def get_parser(self, prog_name):
|
|
305
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
280
306
|
parser = super().get_parser(prog_name)
|
|
281
307
|
parser.add_argument(
|
|
282
308
|
'qos_policy',
|
|
@@ -290,7 +316,7 @@ class DeleteNetworkQosRule(command.Command):
|
|
|
290
316
|
)
|
|
291
317
|
return parser
|
|
292
318
|
|
|
293
|
-
def take_action(self, parsed_args):
|
|
319
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
294
320
|
network_client = self.app.client_manager.network
|
|
295
321
|
rule_id = parsed_args.id
|
|
296
322
|
try:
|
|
@@ -313,7 +339,7 @@ class DeleteNetworkQosRule(command.Command):
|
|
|
313
339
|
class ListNetworkQosRule(command.Lister):
|
|
314
340
|
_description = _("List Network QoS rules")
|
|
315
341
|
|
|
316
|
-
def get_parser(self, prog_name):
|
|
342
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
317
343
|
parser = super().get_parser(prog_name)
|
|
318
344
|
parser.add_argument(
|
|
319
345
|
'qos_policy',
|
|
@@ -322,7 +348,9 @@ class ListNetworkQosRule(command.Lister):
|
|
|
322
348
|
)
|
|
323
349
|
return parser
|
|
324
350
|
|
|
325
|
-
def take_action(
|
|
351
|
+
def take_action(
|
|
352
|
+
self, parsed_args: argparse.Namespace
|
|
353
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
326
354
|
client = self.app.client_manager.network
|
|
327
355
|
columns = (
|
|
328
356
|
'id',
|
|
@@ -359,7 +387,7 @@ class ListNetworkQosRule(command.Lister):
|
|
|
359
387
|
class SetNetworkQosRule(common.NeutronCommandWithExtraArgs):
|
|
360
388
|
_description = _("Set Network QoS rule properties")
|
|
361
389
|
|
|
362
|
-
def get_parser(self, prog_name):
|
|
390
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
363
391
|
parser = super().get_parser(prog_name)
|
|
364
392
|
parser.add_argument(
|
|
365
393
|
'qos_policy',
|
|
@@ -374,7 +402,7 @@ class SetNetworkQosRule(common.NeutronCommandWithExtraArgs):
|
|
|
374
402
|
_add_rule_arguments(parser)
|
|
375
403
|
return parser
|
|
376
404
|
|
|
377
|
-
def take_action(self, parsed_args):
|
|
405
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
378
406
|
network_client = self.app.client_manager.network
|
|
379
407
|
try:
|
|
380
408
|
qos = network_client.find_qos_policy(
|
|
@@ -405,7 +433,7 @@ class SetNetworkQosRule(common.NeutronCommandWithExtraArgs):
|
|
|
405
433
|
class ShowNetworkQosRule(command.ShowOne):
|
|
406
434
|
_description = _("Display Network QoS rule details")
|
|
407
435
|
|
|
408
|
-
def get_parser(self, prog_name):
|
|
436
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
409
437
|
parser = super().get_parser(prog_name)
|
|
410
438
|
parser.add_argument(
|
|
411
439
|
'qos_policy',
|
|
@@ -419,7 +447,9 @@ class ShowNetworkQosRule(command.ShowOne):
|
|
|
419
447
|
)
|
|
420
448
|
return parser
|
|
421
449
|
|
|
422
|
-
def take_action(
|
|
450
|
+
def take_action(
|
|
451
|
+
self, parsed_args: argparse.Namespace
|
|
452
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
423
453
|
network_client = self.app.client_manager.network
|
|
424
454
|
rule_id = parsed_args.id
|
|
425
455
|
try:
|
|
@@ -13,13 +13,21 @@
|
|
|
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
|
+
|
|
20
|
+
from openstack.network.v2 import qos_rule_type as _qos_rule_type
|
|
16
21
|
from osc_lib import utils
|
|
17
22
|
|
|
18
23
|
from openstackclient import command
|
|
24
|
+
from openstackclient.common import pagination
|
|
19
25
|
from openstackclient.i18n import _
|
|
20
26
|
|
|
21
27
|
|
|
22
|
-
def _get_columns(
|
|
28
|
+
def _get_columns(
|
|
29
|
+
item: _qos_rule_type.QoSRuleType,
|
|
30
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
23
31
|
column_map = {
|
|
24
32
|
"type": "rule_type_name",
|
|
25
33
|
"drivers": "drivers",
|
|
@@ -33,7 +41,7 @@ def _get_columns(item):
|
|
|
33
41
|
class ListNetworkQosRuleType(command.Lister):
|
|
34
42
|
_description = _("List QoS rule types")
|
|
35
43
|
|
|
36
|
-
def get_parser(self, prog_name):
|
|
44
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
37
45
|
parser = super().get_parser(prog_name)
|
|
38
46
|
supported = parser.add_mutually_exclusive_group()
|
|
39
47
|
supported.add_argument(
|
|
@@ -52,19 +60,28 @@ class ListNetworkQosRuleType(command.Lister):
|
|
|
52
60
|
"List all QoS rule types implemented in Neutron QoS driver"
|
|
53
61
|
),
|
|
54
62
|
)
|
|
63
|
+
pagination.add_marker_pagination_option_to_parser(parser)
|
|
55
64
|
return parser
|
|
56
65
|
|
|
57
|
-
def take_action(
|
|
66
|
+
def take_action(
|
|
67
|
+
self, parsed_args: argparse.Namespace
|
|
68
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
58
69
|
client = self.app.client_manager.network
|
|
59
70
|
columns = ('type',)
|
|
60
71
|
column_headers = ('Type',)
|
|
61
72
|
|
|
62
|
-
|
|
73
|
+
filters = {}
|
|
74
|
+
if parsed_args.marker is not None:
|
|
75
|
+
filters['marker'] = parsed_args.marker
|
|
76
|
+
if parsed_args.limit is not None:
|
|
77
|
+
filters['limit'] = parsed_args.limit
|
|
78
|
+
if parsed_args.max_items is not None:
|
|
79
|
+
filters['max_items'] = parsed_args.max_items
|
|
63
80
|
if parsed_args.all_supported:
|
|
64
|
-
|
|
81
|
+
filters['all_supported'] = True
|
|
65
82
|
elif parsed_args.all_rules:
|
|
66
|
-
|
|
67
|
-
data = client.qos_rule_types(**
|
|
83
|
+
filters['all_rules'] = True
|
|
84
|
+
data = client.qos_rule_types(**filters)
|
|
68
85
|
|
|
69
86
|
return (
|
|
70
87
|
column_headers,
|
|
@@ -82,7 +99,7 @@ class ListNetworkQosRuleType(command.Lister):
|
|
|
82
99
|
class ShowNetworkQosRuleType(command.ShowOne):
|
|
83
100
|
_description = _("Show details about supported QoS rule type")
|
|
84
101
|
|
|
85
|
-
def get_parser(self, prog_name):
|
|
102
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
86
103
|
parser = super().get_parser(prog_name)
|
|
87
104
|
parser.add_argument(
|
|
88
105
|
'rule_type',
|
|
@@ -91,7 +108,9 @@ class ShowNetworkQosRuleType(command.ShowOne):
|
|
|
91
108
|
)
|
|
92
109
|
return parser
|
|
93
110
|
|
|
94
|
-
def take_action(
|
|
111
|
+
def take_action(
|
|
112
|
+
self, parsed_args: argparse.Namespace
|
|
113
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
95
114
|
client = self.app.client_manager.network
|
|
96
115
|
obj = client.get_qos_rule_type(parsed_args.rule_type)
|
|
97
116
|
display_columns, columns = _get_columns(obj)
|
|
@@ -13,12 +13,17 @@
|
|
|
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
|
|
|
21
|
+
from openstack.network.v2 import rbac_policy as _rbac_policy
|
|
18
22
|
from osc_lib import exceptions
|
|
19
23
|
from osc_lib import utils
|
|
20
24
|
|
|
21
25
|
from openstackclient import command
|
|
26
|
+
from openstackclient.common import pagination
|
|
22
27
|
from openstackclient.i18n import _
|
|
23
28
|
from openstackclient.identity import common as identity_common
|
|
24
29
|
from openstackclient.network import common
|
|
@@ -26,7 +31,9 @@ from openstackclient.network import common
|
|
|
26
31
|
LOG = logging.getLogger(__name__)
|
|
27
32
|
|
|
28
33
|
|
|
29
|
-
def _get_columns(
|
|
34
|
+
def _get_columns(
|
|
35
|
+
item: _rbac_policy.RBACPolicy,
|
|
36
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
30
37
|
column_map = {
|
|
31
38
|
'target_tenant': 'target_project_id',
|
|
32
39
|
}
|
|
@@ -36,7 +43,9 @@ def _get_columns(item):
|
|
|
36
43
|
)
|
|
37
44
|
|
|
38
45
|
|
|
39
|
-
def _get_attrs(
|
|
46
|
+
def _get_attrs(
|
|
47
|
+
client_manager: Any, parsed_args: argparse.Namespace
|
|
48
|
+
) -> dict[str, Any]:
|
|
40
49
|
attrs = {}
|
|
41
50
|
attrs['object_type'] = parsed_args.type
|
|
42
51
|
attrs['action'] = parsed_args.action
|
|
@@ -90,12 +99,10 @@ def _get_attrs(client_manager, parsed_args):
|
|
|
90
99
|
return attrs
|
|
91
100
|
|
|
92
101
|
|
|
93
|
-
# TODO(abhiraut): Use the SDK resource mapped attribute names once the
|
|
94
|
-
# OSC minimum requirements include SDK 1.0.
|
|
95
102
|
class CreateNetworkRBAC(command.ShowOne, common.NeutronCommandWithExtraArgs):
|
|
96
103
|
_description = _("Create network RBAC policy")
|
|
97
104
|
|
|
98
|
-
def get_parser(self, prog_name):
|
|
105
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
99
106
|
parser = super().get_parser(prog_name)
|
|
100
107
|
parser.add_argument(
|
|
101
108
|
'rbac_object',
|
|
@@ -166,7 +173,9 @@ class CreateNetworkRBAC(command.ShowOne, common.NeutronCommandWithExtraArgs):
|
|
|
166
173
|
identity_common.add_project_domain_option_to_parser(parser)
|
|
167
174
|
return parser
|
|
168
175
|
|
|
169
|
-
def take_action(
|
|
176
|
+
def take_action(
|
|
177
|
+
self, parsed_args: argparse.Namespace
|
|
178
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
170
179
|
client = self.app.client_manager.network
|
|
171
180
|
attrs = _get_attrs(self.app.client_manager, parsed_args)
|
|
172
181
|
attrs.update(
|
|
@@ -181,7 +190,7 @@ class CreateNetworkRBAC(command.ShowOne, common.NeutronCommandWithExtraArgs):
|
|
|
181
190
|
class DeleteNetworkRBAC(command.Command):
|
|
182
191
|
_description = _("Delete network RBAC policy(s)")
|
|
183
192
|
|
|
184
|
-
def get_parser(self, prog_name):
|
|
193
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
185
194
|
parser = super().get_parser(prog_name)
|
|
186
195
|
parser.add_argument(
|
|
187
196
|
'rbac_policy',
|
|
@@ -191,7 +200,7 @@ class DeleteNetworkRBAC(command.Command):
|
|
|
191
200
|
)
|
|
192
201
|
return parser
|
|
193
202
|
|
|
194
|
-
def take_action(self, parsed_args):
|
|
203
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
195
204
|
client = self.app.client_manager.network
|
|
196
205
|
result = 0
|
|
197
206
|
|
|
@@ -220,7 +229,7 @@ class DeleteNetworkRBAC(command.Command):
|
|
|
220
229
|
class ListNetworkRBAC(command.Lister):
|
|
221
230
|
_description = _("List network RBAC policies")
|
|
222
231
|
|
|
223
|
-
def get_parser(self, prog_name):
|
|
232
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
224
233
|
parser = super().get_parser(prog_name)
|
|
225
234
|
parser.add_argument(
|
|
226
235
|
'--type',
|
|
@@ -263,9 +272,12 @@ class ListNetworkRBAC(command.Lister):
|
|
|
263
272
|
default=False,
|
|
264
273
|
help=_("List additional fields in output"),
|
|
265
274
|
)
|
|
275
|
+
pagination.add_marker_pagination_option_to_parser(parser)
|
|
266
276
|
return parser
|
|
267
277
|
|
|
268
|
-
def take_action(
|
|
278
|
+
def take_action(
|
|
279
|
+
self, parsed_args: argparse.Namespace
|
|
280
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
269
281
|
client = self.app.client_manager.network
|
|
270
282
|
|
|
271
283
|
columns: tuple[str, ...] = (
|
|
@@ -297,6 +309,12 @@ class ListNetworkRBAC(command.Lister):
|
|
|
297
309
|
parsed_args.target_project,
|
|
298
310
|
).id
|
|
299
311
|
query['target_project_id'] = project_id
|
|
312
|
+
if parsed_args.marker is not None:
|
|
313
|
+
query['marker'] = parsed_args.marker
|
|
314
|
+
if parsed_args.limit is not None:
|
|
315
|
+
query['limit'] = parsed_args.limit
|
|
316
|
+
if parsed_args.max_items is not None:
|
|
317
|
+
query['max_items'] = parsed_args.max_items
|
|
300
318
|
|
|
301
319
|
data = client.rbac_policies(**query)
|
|
302
320
|
|
|
@@ -312,12 +330,10 @@ class ListNetworkRBAC(command.Lister):
|
|
|
312
330
|
)
|
|
313
331
|
|
|
314
332
|
|
|
315
|
-
# TODO(abhiraut): Use the SDK resource mapped attribute names once the
|
|
316
|
-
# OSC minimum requirements include SDK 1.0.
|
|
317
333
|
class SetNetworkRBAC(common.NeutronCommandWithExtraArgs):
|
|
318
334
|
_description = _("Set network RBAC policy properties")
|
|
319
335
|
|
|
320
|
-
def get_parser(self, prog_name):
|
|
336
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
321
337
|
parser = super().get_parser(prog_name)
|
|
322
338
|
parser.add_argument(
|
|
323
339
|
'rbac_policy',
|
|
@@ -343,7 +359,7 @@ class SetNetworkRBAC(common.NeutronCommandWithExtraArgs):
|
|
|
343
359
|
)
|
|
344
360
|
return parser
|
|
345
361
|
|
|
346
|
-
def take_action(self, parsed_args):
|
|
362
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
347
363
|
client = self.app.client_manager.network
|
|
348
364
|
obj = client.find_rbac_policy(
|
|
349
365
|
parsed_args.rbac_policy, ignore_missing=False
|
|
@@ -366,7 +382,7 @@ class SetNetworkRBAC(common.NeutronCommandWithExtraArgs):
|
|
|
366
382
|
class ShowNetworkRBAC(command.ShowOne):
|
|
367
383
|
_description = _("Display network RBAC policy details")
|
|
368
384
|
|
|
369
|
-
def get_parser(self, prog_name):
|
|
385
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
370
386
|
parser = super().get_parser(prog_name)
|
|
371
387
|
parser.add_argument(
|
|
372
388
|
'rbac_policy',
|
|
@@ -375,7 +391,9 @@ class ShowNetworkRBAC(command.ShowOne):
|
|
|
375
391
|
)
|
|
376
392
|
return parser
|
|
377
393
|
|
|
378
|
-
def take_action(
|
|
394
|
+
def take_action(
|
|
395
|
+
self, parsed_args: argparse.Namespace
|
|
396
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
379
397
|
client = self.app.client_manager.network
|
|
380
398
|
obj = client.find_rbac_policy(
|
|
381
399
|
parsed_args.rbac_policy, ignore_missing=False
|
|
@@ -13,19 +13,26 @@
|
|
|
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
|
|
|
21
|
+
from openstack.network.v2 import segment as _segment
|
|
18
22
|
from osc_lib import exceptions
|
|
19
23
|
from osc_lib import utils
|
|
20
24
|
|
|
21
25
|
from openstackclient import command
|
|
26
|
+
from openstackclient.common import pagination
|
|
22
27
|
from openstackclient.i18n import _
|
|
23
28
|
from openstackclient.network import common
|
|
24
29
|
|
|
25
30
|
LOG = logging.getLogger(__name__)
|
|
26
31
|
|
|
27
32
|
|
|
28
|
-
def _get_columns(
|
|
33
|
+
def _get_columns(
|
|
34
|
+
item: _segment.Segment,
|
|
35
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
29
36
|
hidden_columns = ['location', 'tenant_id']
|
|
30
37
|
return utils.get_osc_show_columns_for_sdk_resource(
|
|
31
38
|
item, {}, hidden_columns
|
|
@@ -37,7 +44,7 @@ class CreateNetworkSegment(
|
|
|
37
44
|
):
|
|
38
45
|
_description = _("Create new network segment")
|
|
39
46
|
|
|
40
|
-
def get_parser(self, prog_name):
|
|
47
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
41
48
|
parser = super().get_parser(prog_name)
|
|
42
49
|
parser.add_argument(
|
|
43
50
|
'name', metavar='<name>', help=_('New network segment name')
|
|
@@ -81,7 +88,9 @@ class CreateNetworkSegment(
|
|
|
81
88
|
)
|
|
82
89
|
return parser
|
|
83
90
|
|
|
84
|
-
def take_action(
|
|
91
|
+
def take_action(
|
|
92
|
+
self, parsed_args: argparse.Namespace
|
|
93
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
85
94
|
client = self.app.client_manager.network
|
|
86
95
|
attrs = {}
|
|
87
96
|
attrs['name'] = parsed_args.name
|
|
@@ -107,7 +116,7 @@ class CreateNetworkSegment(
|
|
|
107
116
|
class DeleteNetworkSegment(command.Command):
|
|
108
117
|
_description = _("Delete network segment(s)")
|
|
109
118
|
|
|
110
|
-
def get_parser(self, prog_name):
|
|
119
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
111
120
|
parser = super().get_parser(prog_name)
|
|
112
121
|
parser.add_argument(
|
|
113
122
|
'network_segment',
|
|
@@ -117,7 +126,7 @@ class DeleteNetworkSegment(command.Command):
|
|
|
117
126
|
)
|
|
118
127
|
return parser
|
|
119
128
|
|
|
120
|
-
def take_action(self, parsed_args):
|
|
129
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
121
130
|
client = self.app.client_manager.network
|
|
122
131
|
|
|
123
132
|
result = 0
|
|
@@ -148,7 +157,7 @@ class DeleteNetworkSegment(command.Command):
|
|
|
148
157
|
class ListNetworkSegment(command.Lister):
|
|
149
158
|
_description = _("List network segments")
|
|
150
159
|
|
|
151
|
-
def get_parser(self, prog_name):
|
|
160
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
152
161
|
parser = super().get_parser(prog_name)
|
|
153
162
|
parser.add_argument(
|
|
154
163
|
'--long',
|
|
@@ -164,9 +173,12 @@ class ListNetworkSegment(command.Lister):
|
|
|
164
173
|
'network (name or ID)'
|
|
165
174
|
),
|
|
166
175
|
)
|
|
176
|
+
pagination.add_marker_pagination_option_to_parser(parser)
|
|
167
177
|
return parser
|
|
168
178
|
|
|
169
|
-
def take_action(
|
|
179
|
+
def take_action(
|
|
180
|
+
self, parsed_args: argparse.Namespace
|
|
181
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
170
182
|
network_client = self.app.client_manager.network
|
|
171
183
|
|
|
172
184
|
filters = {}
|
|
@@ -175,6 +187,13 @@ class ListNetworkSegment(command.Lister):
|
|
|
175
187
|
parsed_args.network, ignore_missing=False
|
|
176
188
|
)
|
|
177
189
|
filters = {'network_id': _network.id}
|
|
190
|
+
if parsed_args.marker is not None:
|
|
191
|
+
filters['marker'] = parsed_args.marker
|
|
192
|
+
if parsed_args.limit is not None:
|
|
193
|
+
filters['limit'] = parsed_args.limit
|
|
194
|
+
if parsed_args.max_items is not None:
|
|
195
|
+
filters['max_items'] = parsed_args.max_items
|
|
196
|
+
|
|
178
197
|
data = network_client.segments(**filters)
|
|
179
198
|
|
|
180
199
|
headers: tuple[str, ...] = (
|
|
@@ -211,7 +230,7 @@ class ListNetworkSegment(command.Lister):
|
|
|
211
230
|
class SetNetworkSegment(common.NeutronCommandWithExtraArgs):
|
|
212
231
|
_description = _("Set network segment properties")
|
|
213
232
|
|
|
214
|
-
def get_parser(self, prog_name):
|
|
233
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
215
234
|
parser = super().get_parser(prog_name)
|
|
216
235
|
parser.add_argument(
|
|
217
236
|
'network_segment',
|
|
@@ -230,7 +249,7 @@ class SetNetworkSegment(common.NeutronCommandWithExtraArgs):
|
|
|
230
249
|
)
|
|
231
250
|
return parser
|
|
232
251
|
|
|
233
|
-
def take_action(self, parsed_args):
|
|
252
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
234
253
|
client = self.app.client_manager.network
|
|
235
254
|
obj = client.find_segment(
|
|
236
255
|
parsed_args.network_segment, ignore_missing=False
|
|
@@ -249,7 +268,7 @@ class SetNetworkSegment(common.NeutronCommandWithExtraArgs):
|
|
|
249
268
|
class ShowNetworkSegment(command.ShowOne):
|
|
250
269
|
_description = _("Display network segment details")
|
|
251
270
|
|
|
252
|
-
def get_parser(self, prog_name):
|
|
271
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
253
272
|
parser = super().get_parser(prog_name)
|
|
254
273
|
parser.add_argument(
|
|
255
274
|
'network_segment',
|
|
@@ -258,7 +277,9 @@ class ShowNetworkSegment(command.ShowOne):
|
|
|
258
277
|
)
|
|
259
278
|
return parser
|
|
260
279
|
|
|
261
|
-
def take_action(
|
|
280
|
+
def take_action(
|
|
281
|
+
self, parsed_args: argparse.Namespace
|
|
282
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
262
283
|
client = self.app.client_manager.network
|
|
263
284
|
obj = client.find_segment(
|
|
264
285
|
parsed_args.network_segment, ignore_missing=False
|