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,13 @@
|
|
|
13
13
|
|
|
14
14
|
"""Registered limits 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.identity.v3 import registered_limit as _registered_limit
|
|
22
|
+
from openstack import utils as sdk_utils
|
|
18
23
|
from osc_lib import exceptions
|
|
19
24
|
from osc_lib import utils
|
|
20
25
|
|
|
@@ -25,7 +30,9 @@ from openstackclient.identity import common as common_utils
|
|
|
25
30
|
LOG = logging.getLogger(__name__)
|
|
26
31
|
|
|
27
32
|
|
|
28
|
-
def _format_registered_limit(
|
|
33
|
+
def _format_registered_limit(
|
|
34
|
+
registered_limit: _registered_limit.RegisteredLimit,
|
|
35
|
+
) -> tuple[tuple[str, ...], tuple[Any, ...]]:
|
|
29
36
|
columns = (
|
|
30
37
|
'default_limit',
|
|
31
38
|
'description',
|
|
@@ -51,7 +58,7 @@ def _format_registered_limit(registered_limit):
|
|
|
51
58
|
class CreateRegisteredLimit(command.ShowOne):
|
|
52
59
|
_description = _("Create a registered limit")
|
|
53
60
|
|
|
54
|
-
def get_parser(self, prog_name):
|
|
61
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
55
62
|
parser = super().get_parser(prog_name)
|
|
56
63
|
parser.add_argument(
|
|
57
64
|
'--description',
|
|
@@ -86,8 +93,12 @@ class CreateRegisteredLimit(command.ShowOne):
|
|
|
86
93
|
)
|
|
87
94
|
return parser
|
|
88
95
|
|
|
89
|
-
def take_action(
|
|
90
|
-
|
|
96
|
+
def take_action(
|
|
97
|
+
self, parsed_args: argparse.Namespace
|
|
98
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
99
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
100
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
101
|
+
)
|
|
91
102
|
|
|
92
103
|
kwargs = {}
|
|
93
104
|
|
|
@@ -114,7 +125,7 @@ class CreateRegisteredLimit(command.ShowOne):
|
|
|
114
125
|
class DeleteRegisteredLimit(command.Command):
|
|
115
126
|
_description = _("Delete a registered limit")
|
|
116
127
|
|
|
117
|
-
def get_parser(self, prog_name):
|
|
128
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
118
129
|
parser = super().get_parser(prog_name)
|
|
119
130
|
parser.add_argument(
|
|
120
131
|
'registered_limits',
|
|
@@ -127,8 +138,10 @@ class DeleteRegisteredLimit(command.Command):
|
|
|
127
138
|
)
|
|
128
139
|
return parser
|
|
129
140
|
|
|
130
|
-
def take_action(self, parsed_args):
|
|
131
|
-
identity_client =
|
|
141
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
142
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
143
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
144
|
+
)
|
|
132
145
|
|
|
133
146
|
errors = 0
|
|
134
147
|
for registered_limit_id in parsed_args.registered_limits:
|
|
@@ -160,7 +173,7 @@ class DeleteRegisteredLimit(command.Command):
|
|
|
160
173
|
class ListRegisteredLimit(command.Lister):
|
|
161
174
|
_description = _("List registered limits")
|
|
162
175
|
|
|
163
|
-
def get_parser(self, prog_name):
|
|
176
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
164
177
|
parser = super().get_parser(prog_name)
|
|
165
178
|
parser.add_argument(
|
|
166
179
|
'--service',
|
|
@@ -182,8 +195,12 @@ class ListRegisteredLimit(command.Lister):
|
|
|
182
195
|
)
|
|
183
196
|
return parser
|
|
184
197
|
|
|
185
|
-
def take_action(
|
|
186
|
-
|
|
198
|
+
def take_action(
|
|
199
|
+
self, parsed_args: argparse.Namespace
|
|
200
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
201
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
202
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
203
|
+
)
|
|
187
204
|
|
|
188
205
|
kwargs = {}
|
|
189
206
|
if parsed_args.service:
|
|
@@ -217,7 +234,7 @@ class ListRegisteredLimit(command.Lister):
|
|
|
217
234
|
class SetRegisteredLimit(command.ShowOne):
|
|
218
235
|
_description = _("Update information about a registered limit")
|
|
219
236
|
|
|
220
|
-
def get_parser(self, prog_name):
|
|
237
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
221
238
|
parser = super().get_parser(prog_name)
|
|
222
239
|
parser.add_argument(
|
|
223
240
|
'registered_limit_id',
|
|
@@ -267,8 +284,12 @@ class SetRegisteredLimit(command.ShowOne):
|
|
|
267
284
|
)
|
|
268
285
|
return parser
|
|
269
286
|
|
|
270
|
-
def take_action(
|
|
271
|
-
|
|
287
|
+
def take_action(
|
|
288
|
+
self, parsed_args: argparse.Namespace
|
|
289
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
290
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
291
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
292
|
+
)
|
|
272
293
|
|
|
273
294
|
kwargs = {}
|
|
274
295
|
if parsed_args.service:
|
|
@@ -300,7 +321,7 @@ class SetRegisteredLimit(command.ShowOne):
|
|
|
300
321
|
class ShowRegisteredLimit(command.ShowOne):
|
|
301
322
|
_description = _("Display registered limit details")
|
|
302
323
|
|
|
303
|
-
def get_parser(self, prog_name):
|
|
324
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
304
325
|
parser = super().get_parser(prog_name)
|
|
305
326
|
parser.add_argument(
|
|
306
327
|
'registered_limit_id',
|
|
@@ -309,8 +330,12 @@ class ShowRegisteredLimit(command.ShowOne):
|
|
|
309
330
|
)
|
|
310
331
|
return parser
|
|
311
332
|
|
|
312
|
-
def take_action(
|
|
313
|
-
|
|
333
|
+
def take_action(
|
|
334
|
+
self, parsed_args: argparse.Namespace
|
|
335
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
336
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
337
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
338
|
+
)
|
|
314
339
|
registered_limit = identity_client.get_registered_limit(
|
|
315
340
|
parsed_args.registered_limit_id
|
|
316
341
|
)
|
|
@@ -15,9 +15,14 @@
|
|
|
15
15
|
|
|
16
16
|
"""Identity v3 Role action implementations"""
|
|
17
17
|
|
|
18
|
+
import argparse
|
|
19
|
+
from collections.abc import Iterable, Sequence
|
|
18
20
|
import logging
|
|
21
|
+
from typing import Any
|
|
19
22
|
|
|
20
23
|
from openstack import exceptions as sdk_exc
|
|
24
|
+
from openstack.identity.v3 import role as _role
|
|
25
|
+
from openstack import utils as sdk_utils
|
|
21
26
|
from osc_lib import exceptions
|
|
22
27
|
from osc_lib import utils
|
|
23
28
|
|
|
@@ -29,7 +34,7 @@ from openstackclient.identity import common
|
|
|
29
34
|
LOG = logging.getLogger(__name__)
|
|
30
35
|
|
|
31
36
|
|
|
32
|
-
def _format_role(role):
|
|
37
|
+
def _format_role(role: _role.Role) -> tuple[tuple[str, ...], Iterable[Any]]:
|
|
33
38
|
columns = (
|
|
34
39
|
"id",
|
|
35
40
|
"name",
|
|
@@ -48,7 +53,9 @@ def _format_role(role):
|
|
|
48
53
|
)
|
|
49
54
|
|
|
50
55
|
|
|
51
|
-
def _add_identity_and_resource_options_to_parser(
|
|
56
|
+
def _add_identity_and_resource_options_to_parser(
|
|
57
|
+
parser: argparse.ArgumentParser,
|
|
58
|
+
) -> None:
|
|
52
59
|
system_or_domain_or_project = parser.add_mutually_exclusive_group()
|
|
53
60
|
system_or_domain_or_project.add_argument(
|
|
54
61
|
'--system',
|
|
@@ -83,9 +90,11 @@ def _add_identity_and_resource_options_to_parser(parser):
|
|
|
83
90
|
|
|
84
91
|
|
|
85
92
|
def _process_identity_and_resource_options(
|
|
86
|
-
parsed_args
|
|
87
|
-
|
|
88
|
-
|
|
93
|
+
parsed_args: argparse.Namespace,
|
|
94
|
+
identity_client: Any,
|
|
95
|
+
validate_actor_existence: bool = True,
|
|
96
|
+
) -> dict[str, Any]:
|
|
97
|
+
def _find_user() -> Any:
|
|
89
98
|
domain_id = (
|
|
90
99
|
common._find_sdk_id(
|
|
91
100
|
identity_client.find_domain,
|
|
@@ -102,7 +111,7 @@ def _process_identity_and_resource_options(
|
|
|
102
111
|
domain_id=domain_id,
|
|
103
112
|
)
|
|
104
113
|
|
|
105
|
-
def _find_group():
|
|
114
|
+
def _find_group() -> Any:
|
|
106
115
|
domain_id = (
|
|
107
116
|
common._find_sdk_id(
|
|
108
117
|
identity_client.find_domain,
|
|
@@ -119,7 +128,7 @@ def _process_identity_and_resource_options(
|
|
|
119
128
|
domain_id=domain_id,
|
|
120
129
|
)
|
|
121
130
|
|
|
122
|
-
def _find_project():
|
|
131
|
+
def _find_project() -> Any:
|
|
123
132
|
domain_id = (
|
|
124
133
|
common._find_sdk_id(
|
|
125
134
|
identity_client.find_domain,
|
|
@@ -180,7 +189,7 @@ class AddRole(command.Command):
|
|
|
180
189
|
"system, a domain, or a project"
|
|
181
190
|
)
|
|
182
191
|
|
|
183
|
-
def get_parser(self, prog_name):
|
|
192
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
184
193
|
parser = super().get_parser(prog_name)
|
|
185
194
|
parser.add_argument(
|
|
186
195
|
'role',
|
|
@@ -191,8 +200,10 @@ class AddRole(command.Command):
|
|
|
191
200
|
common.add_role_domain_option_to_parser(parser)
|
|
192
201
|
return parser
|
|
193
202
|
|
|
194
|
-
def take_action(self, parsed_args):
|
|
195
|
-
identity_client =
|
|
203
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
204
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
205
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
206
|
+
)
|
|
196
207
|
|
|
197
208
|
if (
|
|
198
209
|
not parsed_args.user
|
|
@@ -278,7 +289,7 @@ class AddRole(command.Command):
|
|
|
278
289
|
class CreateRole(command.ShowOne):
|
|
279
290
|
_description = _("Create new role")
|
|
280
291
|
|
|
281
|
-
def get_parser(self, prog_name):
|
|
292
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
282
293
|
parser = super().get_parser(prog_name)
|
|
283
294
|
parser.add_argument(
|
|
284
295
|
'name',
|
|
@@ -303,10 +314,14 @@ class CreateRole(command.ShowOne):
|
|
|
303
314
|
common.add_resource_option_to_parser(parser)
|
|
304
315
|
return parser
|
|
305
316
|
|
|
306
|
-
def take_action(
|
|
307
|
-
|
|
317
|
+
def take_action(
|
|
318
|
+
self, parsed_args: argparse.Namespace
|
|
319
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
320
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
321
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
322
|
+
)
|
|
308
323
|
|
|
309
|
-
create_kwargs = {}
|
|
324
|
+
create_kwargs: dict[str, Any] = {}
|
|
310
325
|
if parsed_args.domain:
|
|
311
326
|
create_kwargs['domain_id'] = common._find_sdk_id(
|
|
312
327
|
identity_client.find_domain, name_or_id=parsed_args.domain
|
|
@@ -341,7 +356,7 @@ class CreateRole(command.ShowOne):
|
|
|
341
356
|
class DeleteRole(command.Command):
|
|
342
357
|
_description = _("Delete role(s)")
|
|
343
358
|
|
|
344
|
-
def get_parser(self, prog_name):
|
|
359
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
345
360
|
parser = super().get_parser(prog_name)
|
|
346
361
|
parser.add_argument(
|
|
347
362
|
'roles',
|
|
@@ -356,8 +371,10 @@ class DeleteRole(command.Command):
|
|
|
356
371
|
)
|
|
357
372
|
return parser
|
|
358
373
|
|
|
359
|
-
def take_action(self, parsed_args):
|
|
360
|
-
identity_client =
|
|
374
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
375
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
376
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
377
|
+
)
|
|
361
378
|
|
|
362
379
|
domain_id = None
|
|
363
380
|
if parsed_args.domain:
|
|
@@ -395,7 +412,7 @@ class DeleteRole(command.Command):
|
|
|
395
412
|
class ListRole(command.Lister):
|
|
396
413
|
_description = _("List roles")
|
|
397
414
|
|
|
398
|
-
def get_parser(self, prog_name):
|
|
415
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
399
416
|
parser = super().get_parser(prog_name)
|
|
400
417
|
parser.add_argument(
|
|
401
418
|
'--domain',
|
|
@@ -404,8 +421,12 @@ class ListRole(command.Lister):
|
|
|
404
421
|
)
|
|
405
422
|
return parser
|
|
406
423
|
|
|
407
|
-
def take_action(
|
|
408
|
-
|
|
424
|
+
def take_action(
|
|
425
|
+
self, parsed_args: argparse.Namespace
|
|
426
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
427
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
428
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
429
|
+
)
|
|
409
430
|
|
|
410
431
|
if parsed_args.domain:
|
|
411
432
|
domain = identity_client.find_domain(
|
|
@@ -416,8 +437,10 @@ class ListRole(command.Lister):
|
|
|
416
437
|
return (
|
|
417
438
|
('ID', 'Name', 'Domain'),
|
|
418
439
|
(
|
|
419
|
-
|
|
420
|
-
|
|
440
|
+
(
|
|
441
|
+
*utils.get_item_properties(s, ('id', 'name')),
|
|
442
|
+
domain.name,
|
|
443
|
+
)
|
|
421
444
|
for s in data
|
|
422
445
|
),
|
|
423
446
|
)
|
|
@@ -435,7 +458,7 @@ class RemoveRole(command.Command):
|
|
|
435
458
|
"Removes a role assignment from system/domain/project : user/group"
|
|
436
459
|
)
|
|
437
460
|
|
|
438
|
-
def get_parser(self, prog_name):
|
|
461
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
439
462
|
parser = super().get_parser(prog_name)
|
|
440
463
|
parser.add_argument(
|
|
441
464
|
'role',
|
|
@@ -447,8 +470,10 @@ class RemoveRole(command.Command):
|
|
|
447
470
|
|
|
448
471
|
return parser
|
|
449
472
|
|
|
450
|
-
def take_action(self, parsed_args):
|
|
451
|
-
identity_client =
|
|
473
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
474
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
475
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
476
|
+
)
|
|
452
477
|
if (
|
|
453
478
|
not parsed_args.user
|
|
454
479
|
and not parsed_args.domain
|
|
@@ -527,7 +552,7 @@ class RemoveRole(command.Command):
|
|
|
527
552
|
class SetRole(command.Command):
|
|
528
553
|
_description = _("Set role properties")
|
|
529
554
|
|
|
530
|
-
def get_parser(self, prog_name):
|
|
555
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
531
556
|
parser = super().get_parser(prog_name)
|
|
532
557
|
parser.add_argument(
|
|
533
558
|
'role',
|
|
@@ -552,8 +577,10 @@ class SetRole(command.Command):
|
|
|
552
577
|
common.add_resource_option_to_parser(parser)
|
|
553
578
|
return parser
|
|
554
579
|
|
|
555
|
-
def take_action(self, parsed_args):
|
|
556
|
-
identity_client =
|
|
580
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
581
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
582
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
583
|
+
)
|
|
557
584
|
|
|
558
585
|
update_kwargs = {}
|
|
559
586
|
if parsed_args.description:
|
|
@@ -585,7 +612,7 @@ class SetRole(command.Command):
|
|
|
585
612
|
class ShowRole(command.ShowOne):
|
|
586
613
|
_description = _("Display role details")
|
|
587
614
|
|
|
588
|
-
def get_parser(self, prog_name):
|
|
615
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
589
616
|
parser = super().get_parser(prog_name)
|
|
590
617
|
parser.add_argument(
|
|
591
618
|
'role',
|
|
@@ -599,8 +626,12 @@ class ShowRole(command.ShowOne):
|
|
|
599
626
|
)
|
|
600
627
|
return parser
|
|
601
628
|
|
|
602
|
-
def take_action(
|
|
603
|
-
|
|
629
|
+
def take_action(
|
|
630
|
+
self, parsed_args: argparse.Namespace
|
|
631
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
632
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
633
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
634
|
+
)
|
|
604
635
|
|
|
605
636
|
domain_id = None
|
|
606
637
|
if parsed_args.domain:
|
|
@@ -13,13 +13,23 @@
|
|
|
13
13
|
|
|
14
14
|
"""Identity v3 Assignment action implementations"""
|
|
15
15
|
|
|
16
|
+
import argparse
|
|
17
|
+
from collections.abc import Iterable
|
|
18
|
+
from typing import Any
|
|
19
|
+
|
|
20
|
+
from openstack.identity.v3 import role_assignment as _role_assignment
|
|
21
|
+
from openstack import utils as sdk_utils
|
|
22
|
+
from osc_lib import exceptions
|
|
23
|
+
|
|
16
24
|
from openstackclient import command
|
|
17
25
|
from openstackclient.i18n import _
|
|
18
26
|
from openstackclient.identity import common
|
|
19
27
|
|
|
20
28
|
|
|
21
|
-
def _format_role_assignment_(
|
|
22
|
-
|
|
29
|
+
def _format_role_assignment_(
|
|
30
|
+
assignment: _role_assignment.RoleAssignment, include_names: bool
|
|
31
|
+
) -> tuple[Any, ...]:
|
|
32
|
+
def _get_names(attr: Any) -> str:
|
|
23
33
|
return (
|
|
24
34
|
(
|
|
25
35
|
attr['name']
|
|
@@ -34,7 +44,7 @@ def _format_role_assignment_(assignment, include_names):
|
|
|
34
44
|
else ''
|
|
35
45
|
)
|
|
36
46
|
|
|
37
|
-
def _get_ids(attr):
|
|
47
|
+
def _get_ids(attr: Any) -> str:
|
|
38
48
|
return attr['id'] or '' if attr else ''
|
|
39
49
|
|
|
40
50
|
func = _get_names if include_names else _get_ids
|
|
@@ -52,7 +62,7 @@ def _format_role_assignment_(assignment, include_names):
|
|
|
52
62
|
class ListRoleAssignment(command.Lister):
|
|
53
63
|
_description = _("List role assignments")
|
|
54
64
|
|
|
55
|
-
def get_parser(self, prog_name):
|
|
65
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
56
66
|
parser = super().get_parser(prog_name)
|
|
57
67
|
parser.add_argument(
|
|
58
68
|
'--effective',
|
|
@@ -117,8 +127,12 @@ class ListRoleAssignment(command.Lister):
|
|
|
117
127
|
)
|
|
118
128
|
return parser
|
|
119
129
|
|
|
120
|
-
def take_action(
|
|
121
|
-
|
|
130
|
+
def take_action(
|
|
131
|
+
self, parsed_args: argparse.Namespace
|
|
132
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
133
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
134
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
135
|
+
)
|
|
122
136
|
auth_ref = self.app.client_manager.auth_ref
|
|
123
137
|
|
|
124
138
|
role_id = None
|
|
@@ -151,6 +165,8 @@ class ListRoleAssignment(command.Lister):
|
|
|
151
165
|
)
|
|
152
166
|
elif parsed_args.authuser:
|
|
153
167
|
if auth_ref:
|
|
168
|
+
if auth_ref.user_id is None:
|
|
169
|
+
raise exceptions.CommandError('missing auth info')
|
|
154
170
|
user_id = common._find_sdk_id(
|
|
155
171
|
identity_client.find_user,
|
|
156
172
|
name_or_id=auth_ref.user_id,
|
|
@@ -185,6 +201,8 @@ class ListRoleAssignment(command.Lister):
|
|
|
185
201
|
)
|
|
186
202
|
elif parsed_args.authproject:
|
|
187
203
|
if auth_ref:
|
|
204
|
+
if auth_ref.project_id is None:
|
|
205
|
+
raise exceptions.CommandError('missing auth info')
|
|
188
206
|
project_id = common._find_sdk_id(
|
|
189
207
|
identity_client.find_project,
|
|
190
208
|
name_or_id=auth_ref.project_id,
|
|
@@ -233,7 +251,7 @@ class ListRoleAssignment(command.Lister):
|
|
|
233
251
|
data_parsed = []
|
|
234
252
|
for assignment in data:
|
|
235
253
|
data_parsed.append(
|
|
236
|
-
_format_role_assignment_(assignment, include_names)
|
|
254
|
+
_format_role_assignment_(assignment, bool(include_names))
|
|
237
255
|
)
|
|
238
256
|
|
|
239
257
|
return columns, tuple(data_parsed)
|
|
@@ -15,8 +15,13 @@
|
|
|
15
15
|
|
|
16
16
|
"""Identity v3 Service action implementations"""
|
|
17
17
|
|
|
18
|
+
import argparse
|
|
19
|
+
from collections.abc import Iterable, Sequence
|
|
18
20
|
import logging
|
|
21
|
+
from typing import Any
|
|
19
22
|
|
|
23
|
+
from openstack.identity.v3 import service as _service
|
|
24
|
+
from openstack import utils as sdk_utils
|
|
20
25
|
from osc_lib import exceptions
|
|
21
26
|
from osc_lib import utils
|
|
22
27
|
|
|
@@ -24,11 +29,12 @@ from openstackclient import command
|
|
|
24
29
|
from openstackclient.i18n import _
|
|
25
30
|
from openstackclient.identity import common
|
|
26
31
|
|
|
27
|
-
|
|
28
32
|
LOG = logging.getLogger(__name__)
|
|
29
33
|
|
|
30
34
|
|
|
31
|
-
def _format_service(
|
|
35
|
+
def _format_service(
|
|
36
|
+
service: _service.Service,
|
|
37
|
+
) -> tuple[tuple[str, ...], tuple[Any, ...]]:
|
|
32
38
|
columns = (
|
|
33
39
|
'id',
|
|
34
40
|
'name',
|
|
@@ -56,7 +62,7 @@ def _format_service(service):
|
|
|
56
62
|
class CreateService(command.ShowOne):
|
|
57
63
|
_description = _("Create new service")
|
|
58
64
|
|
|
59
|
-
def get_parser(self, prog_name):
|
|
65
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
60
66
|
parser = super().get_parser(prog_name)
|
|
61
67
|
parser.add_argument(
|
|
62
68
|
'type',
|
|
@@ -90,8 +96,12 @@ class CreateService(command.ShowOne):
|
|
|
90
96
|
)
|
|
91
97
|
return parser
|
|
92
98
|
|
|
93
|
-
def take_action(
|
|
94
|
-
|
|
99
|
+
def take_action(
|
|
100
|
+
self, parsed_args: argparse.Namespace
|
|
101
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
102
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
103
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
104
|
+
)
|
|
95
105
|
|
|
96
106
|
service = identity_client.create_service(
|
|
97
107
|
name=parsed_args.name,
|
|
@@ -106,7 +116,7 @@ class CreateService(command.ShowOne):
|
|
|
106
116
|
class DeleteService(command.Command):
|
|
107
117
|
_description = _("Delete service(s)")
|
|
108
118
|
|
|
109
|
-
def get_parser(self, prog_name):
|
|
119
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
110
120
|
parser = super().get_parser(prog_name)
|
|
111
121
|
parser.add_argument(
|
|
112
122
|
'service',
|
|
@@ -116,8 +126,10 @@ class DeleteService(command.Command):
|
|
|
116
126
|
)
|
|
117
127
|
return parser
|
|
118
128
|
|
|
119
|
-
def take_action(self, parsed_args):
|
|
120
|
-
identity_client =
|
|
129
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
130
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
131
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
132
|
+
)
|
|
121
133
|
result = 0
|
|
122
134
|
for i in parsed_args.service:
|
|
123
135
|
try:
|
|
@@ -145,7 +157,7 @@ class DeleteService(command.Command):
|
|
|
145
157
|
class ListService(command.Lister):
|
|
146
158
|
_description = _("List services")
|
|
147
159
|
|
|
148
|
-
def get_parser(self, prog_name):
|
|
160
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
149
161
|
parser = super().get_parser(prog_name)
|
|
150
162
|
parser.add_argument(
|
|
151
163
|
'--long',
|
|
@@ -155,8 +167,12 @@ class ListService(command.Lister):
|
|
|
155
167
|
)
|
|
156
168
|
return parser
|
|
157
169
|
|
|
158
|
-
def take_action(
|
|
159
|
-
|
|
170
|
+
def take_action(
|
|
171
|
+
self, parsed_args: argparse.Namespace
|
|
172
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
173
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
174
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
175
|
+
)
|
|
160
176
|
|
|
161
177
|
columns: tuple[str, ...] = ('id', 'name', 'type')
|
|
162
178
|
column_headers: tuple[str, ...] = ('ID', 'Name', 'Type')
|
|
@@ -175,7 +191,7 @@ class ListService(command.Lister):
|
|
|
175
191
|
class SetService(command.Command):
|
|
176
192
|
_description = _("Set service properties")
|
|
177
193
|
|
|
178
|
-
def get_parser(self, prog_name):
|
|
194
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
179
195
|
parser = super().get_parser(prog_name)
|
|
180
196
|
parser.add_argument(
|
|
181
197
|
'service',
|
|
@@ -214,8 +230,10 @@ class SetService(command.Command):
|
|
|
214
230
|
)
|
|
215
231
|
return parser
|
|
216
232
|
|
|
217
|
-
def take_action(self, parsed_args):
|
|
218
|
-
identity_client =
|
|
233
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
234
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
235
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
236
|
+
)
|
|
219
237
|
|
|
220
238
|
service = common.find_service_sdk(identity_client, parsed_args.service)
|
|
221
239
|
kwargs = {}
|
|
@@ -234,7 +252,7 @@ class SetService(command.Command):
|
|
|
234
252
|
class ShowService(command.ShowOne):
|
|
235
253
|
_description = _("Display service details")
|
|
236
254
|
|
|
237
|
-
def get_parser(self, prog_name):
|
|
255
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
238
256
|
parser = super().get_parser(prog_name)
|
|
239
257
|
parser.add_argument(
|
|
240
258
|
'service',
|
|
@@ -243,8 +261,12 @@ class ShowService(command.ShowOne):
|
|
|
243
261
|
)
|
|
244
262
|
return parser
|
|
245
263
|
|
|
246
|
-
def take_action(
|
|
247
|
-
|
|
264
|
+
def take_action(
|
|
265
|
+
self, parsed_args: argparse.Namespace
|
|
266
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
267
|
+
identity_client = sdk_utils.ensure_service_version(
|
|
268
|
+
self.app.client_manager.sdk_connection.identity, '3'
|
|
269
|
+
)
|
|
248
270
|
|
|
249
271
|
service = common.find_service_sdk(identity_client, parsed_args.service)
|
|
250
272
|
|