python-openstackclient 6.6.1__py3-none-any.whl → 7.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/api/api.py +4 -4
- openstackclient/api/compute_v2.py +352 -638
- openstackclient/api/image_v1.py +1 -1
- openstackclient/api/object_store_v1.py +3 -4
- openstackclient/common/availability_zone.py +1 -1
- openstackclient/common/clientmanager.py +24 -20
- openstackclient/common/configuration.py +1 -1
- openstackclient/common/extension.py +1 -1
- openstackclient/common/limits.py +67 -34
- openstackclient/common/module.py +3 -3
- openstackclient/common/progressbar.py +2 -2
- openstackclient/common/project_cleanup.py +5 -2
- openstackclient/common/quota.py +299 -423
- openstackclient/common/versions.py +1 -1
- openstackclient/compute/client.py +7 -116
- openstackclient/compute/v2/agent.py +75 -49
- openstackclient/compute/v2/aggregate.py +38 -32
- openstackclient/compute/v2/console.py +2 -2
- openstackclient/compute/v2/flavor.py +6 -6
- openstackclient/compute/v2/host.py +38 -33
- openstackclient/compute/v2/hypervisor.py +9 -6
- openstackclient/compute/v2/keypair.py +7 -8
- openstackclient/compute/v2/server.py +479 -396
- openstackclient/compute/v2/server_backup.py +1 -1
- openstackclient/compute/v2/server_group.py +4 -4
- openstackclient/compute/v2/server_image.py +1 -1
- openstackclient/compute/v2/server_migration.py +3 -4
- openstackclient/compute/v2/service.py +4 -4
- openstackclient/compute/v2/usage.py +3 -3
- openstackclient/identity/common.py +34 -0
- openstackclient/identity/v2_0/catalog.py +2 -2
- openstackclient/identity/v2_0/ec2creds.py +4 -4
- openstackclient/identity/v2_0/endpoint.py +4 -4
- openstackclient/identity/v2_0/project.py +6 -6
- openstackclient/identity/v2_0/role.py +5 -5
- openstackclient/identity/v2_0/role_assignment.py +1 -1
- openstackclient/identity/v2_0/service.py +4 -4
- openstackclient/identity/v2_0/token.py +2 -2
- openstackclient/identity/v2_0/user.py +7 -7
- openstackclient/identity/v3/access_rule.py +3 -3
- openstackclient/identity/v3/application_credential.py +125 -43
- openstackclient/identity/v3/catalog.py +2 -2
- openstackclient/identity/v3/consumer.py +4 -4
- openstackclient/identity/v3/credential.py +5 -5
- openstackclient/identity/v3/domain.py +5 -5
- openstackclient/identity/v3/ec2creds.py +4 -4
- openstackclient/identity/v3/endpoint.py +7 -7
- openstackclient/identity/v3/endpoint_group.py +8 -10
- openstackclient/identity/v3/federation_protocol.py +5 -5
- openstackclient/identity/v3/group.py +8 -8
- openstackclient/identity/v3/identity_provider.py +5 -5
- openstackclient/identity/v3/implied_role.py +3 -3
- openstackclient/identity/v3/limit.py +5 -5
- openstackclient/identity/v3/mapping.py +5 -5
- openstackclient/identity/v3/policy.py +5 -5
- openstackclient/identity/v3/project.py +5 -5
- openstackclient/identity/v3/region.py +5 -5
- openstackclient/identity/v3/registered_limit.py +5 -5
- openstackclient/identity/v3/role.py +7 -7
- openstackclient/identity/v3/role_assignment.py +92 -140
- openstackclient/identity/v3/service.py +64 -34
- openstackclient/identity/v3/service_provider.py +4 -4
- openstackclient/identity/v3/tag.py +2 -2
- openstackclient/identity/v3/token.py +5 -5
- openstackclient/identity/v3/trust.py +3 -3
- openstackclient/identity/v3/user.py +144 -80
- openstackclient/image/client.py +4 -4
- openstackclient/image/v1/image.py +8 -9
- openstackclient/image/v2/cache.py +12 -10
- openstackclient/image/v2/metadef_objects.py +44 -0
- openstackclient/image/v2/metadef_resource_type_association.py +189 -0
- openstackclient/image/v2/task.py +1 -1
- openstackclient/network/common.py +6 -5
- openstackclient/network/utils.py +2 -2
- openstackclient/network/v2/address_group.py +6 -6
- openstackclient/network/v2/address_scope.py +5 -5
- openstackclient/network/v2/default_security_group_rule.py +1 -1
- openstackclient/network/v2/floating_ip.py +8 -10
- openstackclient/network/v2/floating_ip_pool.py +6 -15
- openstackclient/network/v2/floating_ip_port_forwarding.py +5 -13
- openstackclient/network/v2/ip_availability.py +2 -2
- openstackclient/network/v2/l3_conntrack_helper.py +5 -5
- openstackclient/network/v2/network.py +8 -8
- openstackclient/network/v2/network_agent.py +8 -8
- openstackclient/network/v2/network_auto_allocated_topology.py +2 -2
- openstackclient/network/v2/network_flavor.py +6 -8
- openstackclient/network/v2/network_flavor_profile.py +4 -4
- openstackclient/network/v2/network_meter.py +3 -3
- openstackclient/network/v2/network_meter_rule.py +3 -3
- openstackclient/network/v2/network_qos_policy.py +5 -5
- openstackclient/network/v2/network_qos_rule.py +9 -9
- openstackclient/network/v2/network_qos_rule_type.py +1 -1
- openstackclient/network/v2/network_rbac.py +5 -5
- openstackclient/network/v2/network_segment.py +5 -5
- openstackclient/network/v2/network_segment_range.py +7 -7
- openstackclient/network/v2/network_trunk.py +7 -7
- openstackclient/network/v2/port.py +26 -12
- openstackclient/network/v2/router.py +403 -54
- openstackclient/network/v2/security_group.py +18 -14
- openstackclient/network/v2/security_group_rule.py +18 -15
- openstackclient/network/v2/subnet.py +15 -8
- openstackclient/network/v2/subnet_pool.py +6 -6
- openstackclient/object/v1/account.py +2 -2
- openstackclient/object/v1/container.py +7 -7
- openstackclient/object/v1/object.py +7 -7
- openstackclient/releasenotes/notes/volume-backup-created-at-list-b49ec893ae1f6b0d.yaml +4 -0
- openstackclient/shell.py +4 -6
- openstackclient/tests/functional/base.py +1 -1
- openstackclient/tests/functional/common/test_extension.py +1 -1
- openstackclient/tests/functional/common/test_help.py +2 -2
- openstackclient/tests/functional/common/test_module.py +1 -1
- openstackclient/tests/functional/common/test_quota.py +43 -61
- openstackclient/tests/functional/compute/v2/common.py +2 -2
- openstackclient/tests/functional/compute/v2/test_flavor.py +2 -2
- openstackclient/tests/functional/compute/v2/test_keypair.py +1 -1
- openstackclient/tests/functional/compute/v2/test_server.py +5 -5
- openstackclient/tests/functional/compute/v2/test_server_event.py +1 -1
- openstackclient/tests/functional/identity/v2/common.py +3 -3
- openstackclient/tests/functional/identity/v3/common.py +12 -4
- openstackclient/tests/functional/identity/v3/test_application_credential.py +6 -12
- openstackclient/tests/functional/identity/v3/test_domain.py +1 -3
- openstackclient/tests/functional/identity/v3/test_endpoint.py +1 -1
- openstackclient/tests/functional/identity/v3/test_idp.py +1 -1
- openstackclient/tests/functional/identity/v3/test_region.py +1 -3
- openstackclient/tests/functional/identity/v3/test_role.py +2 -2
- openstackclient/tests/functional/identity/v3/test_role_assignment.py +210 -0
- openstackclient/tests/functional/identity/v3/test_service.py +1 -3
- openstackclient/tests/functional/identity/v3/test_service_provider.py +1 -3
- openstackclient/tests/functional/image/base.py +1 -1
- openstackclient/tests/functional/image/v2/test_image.py +1 -1
- openstackclient/tests/functional/image/v2/test_info.py +1 -1
- openstackclient/tests/functional/network/v2/common.py +4 -6
- openstackclient/tests/functional/network/v2/test_network.py +5 -3
- openstackclient/tests/functional/network/v2/test_network_agent.py +7 -5
- openstackclient/tests/functional/network/v2/test_network_qos_rule.py +4 -4
- openstackclient/tests/functional/network/v2/test_port.py +11 -7
- openstackclient/tests/functional/network/v2/test_router.py +2 -2
- openstackclient/tests/functional/object/v1/common.py +1 -1
- openstackclient/tests/functional/object/v1/test_container.py +3 -3
- openstackclient/tests/functional/object/v1/test_object.py +9 -13
- openstackclient/tests/functional/volume/base.py +1 -1
- openstackclient/tests/functional/volume/v1/test_service.py +1 -1
- openstackclient/tests/functional/volume/v1/test_snapshot.py +2 -2
- openstackclient/tests/functional/volume/v1/test_transfer_request.py +2 -2
- openstackclient/tests/functional/volume/v1/test_volume_type.py +1 -1
- openstackclient/tests/functional/volume/v2/test_service.py +2 -2
- openstackclient/tests/functional/volume/v2/test_volume_backup.py +2 -2
- openstackclient/tests/functional/volume/v2/test_volume_snapshot.py +2 -2
- openstackclient/tests/functional/volume/v2/test_volume_type.py +1 -1
- openstackclient/tests/functional/volume/v3/test_volume_snapshot.py +2 -2
- openstackclient/tests/functional/volume/v3/test_volume_type.py +1 -1
- openstackclient/tests/unit/api/fakes.py +1 -1
- openstackclient/tests/unit/api/test_api.py +2 -2
- openstackclient/tests/unit/api/test_compute_v2.py +522 -707
- openstackclient/tests/unit/api/test_image_v1.py +1 -1
- openstackclient/tests/unit/api/test_image_v2.py +1 -1
- openstackclient/tests/unit/api/test_object_store_v1.py +4 -4
- openstackclient/tests/unit/common/test_limits.py +73 -35
- openstackclient/tests/unit/common/test_logs.py +2 -2
- openstackclient/tests/unit/common/test_module.py +4 -2
- openstackclient/tests/unit/common/test_project_cleanup.py +31 -6
- openstackclient/tests/unit/common/test_quota.py +490 -630
- openstackclient/tests/unit/compute/v2/fakes.py +37 -286
- openstackclient/tests/unit/compute/v2/test_agent.py +189 -147
- openstackclient/tests/unit/compute/v2/test_aggregate.py +87 -57
- openstackclient/tests/unit/compute/v2/test_console.py +4 -5
- openstackclient/tests/unit/compute/v2/test_flavor.py +59 -68
- openstackclient/tests/unit/compute/v2/test_host.py +83 -54
- openstackclient/tests/unit/compute/v2/test_hypervisor.py +57 -34
- openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py +2 -2
- openstackclient/tests/unit/compute/v2/test_keypair.py +65 -50
- openstackclient/tests/unit/compute/v2/test_server.py +2850 -2453
- openstackclient/tests/unit/compute/v2/test_server_backup.py +1 -1
- openstackclient/tests/unit/compute/v2/test_server_event.py +14 -39
- openstackclient/tests/unit/compute/v2/test_server_group.py +28 -29
- openstackclient/tests/unit/compute/v2/test_server_migration.py +43 -68
- openstackclient/tests/unit/compute/v2/test_server_volume.py +17 -34
- openstackclient/tests/unit/compute/v2/test_service.py +34 -52
- openstackclient/tests/unit/compute/v2/test_usage.py +4 -4
- openstackclient/tests/unit/fakes.py +12 -12
- openstackclient/tests/unit/identity/v2_0/fakes.py +27 -10
- openstackclient/tests/unit/identity/v2_0/test_catalog.py +3 -3
- openstackclient/tests/unit/identity/v2_0/test_endpoint.py +7 -7
- openstackclient/tests/unit/identity/v2_0/test_project.py +8 -8
- openstackclient/tests/unit/identity/v2_0/test_role.py +10 -10
- openstackclient/tests/unit/identity/v2_0/test_role_assignment.py +4 -4
- openstackclient/tests/unit/identity/v2_0/test_service.py +6 -6
- openstackclient/tests/unit/identity/v2_0/test_token.py +4 -4
- openstackclient/tests/unit/identity/v2_0/test_user.py +8 -8
- openstackclient/tests/unit/identity/v3/fakes.py +59 -20
- openstackclient/tests/unit/identity/v3/test_access_rule.py +5 -5
- openstackclient/tests/unit/identity/v3/test_application_credential.py +207 -230
- openstackclient/tests/unit/identity/v3/test_catalog.py +3 -3
- openstackclient/tests/unit/identity/v3/test_consumer.py +7 -8
- openstackclient/tests/unit/identity/v3/test_credential.py +9 -9
- openstackclient/tests/unit/identity/v3/test_domain.py +8 -8
- openstackclient/tests/unit/identity/v3/test_endpoint.py +13 -13
- openstackclient/tests/unit/identity/v3/test_endpoint_group.py +12 -14
- openstackclient/tests/unit/identity/v3/test_group.py +12 -12
- openstackclient/tests/unit/identity/v3/test_identity_provider.py +8 -8
- openstackclient/tests/unit/identity/v3/test_implied_role.py +5 -5
- openstackclient/tests/unit/identity/v3/test_limit.py +7 -7
- openstackclient/tests/unit/identity/v3/test_mappings.py +7 -7
- openstackclient/tests/unit/identity/v3/test_oauth.py +5 -5
- openstackclient/tests/unit/identity/v3/test_project.py +16 -16
- openstackclient/tests/unit/identity/v3/test_protocol.py +7 -7
- openstackclient/tests/unit/identity/v3/test_region.py +7 -7
- openstackclient/tests/unit/identity/v3/test_registered_limit.py +12 -13
- openstackclient/tests/unit/identity/v3/test_role.py +13 -13
- openstackclient/tests/unit/identity/v3/test_role_assignment.py +410 -331
- openstackclient/tests/unit/identity/v3/test_service.py +90 -94
- openstackclient/tests/unit/identity/v3/test_service_provider.py +7 -7
- openstackclient/tests/unit/identity/v3/test_token.py +4 -4
- openstackclient/tests/unit/identity/v3/test_trust.py +9 -9
- openstackclient/tests/unit/identity/v3/test_unscoped_saml.py +4 -4
- openstackclient/tests/unit/identity/v3/test_user.py +299 -327
- openstackclient/tests/unit/image/v1/test_image.py +6 -6
- openstackclient/tests/unit/image/v2/fakes.py +46 -9
- openstackclient/tests/unit/image/v2/test_cache.py +2 -2
- openstackclient/tests/unit/image/v2/test_image.py +3 -3
- openstackclient/tests/unit/image/v2/test_metadef_objects.py +62 -0
- openstackclient/tests/unit/image/v2/test_metadef_resource_type_association.py +131 -0
- openstackclient/tests/unit/integ/base.py +1 -1
- openstackclient/tests/unit/integ/cli/test_project.py +4 -4
- openstackclient/tests/unit/integ/cli/test_shell.py +7 -7
- openstackclient/tests/unit/network/test_common.py +12 -21
- openstackclient/tests/unit/network/v2/fakes.py +64 -130
- openstackclient/tests/unit/network/v2/test_address_group.py +15 -15
- openstackclient/tests/unit/network/v2/test_address_scope.py +13 -13
- openstackclient/tests/unit/network/v2/test_default_security_group_rule.py +49 -27
- openstackclient/tests/unit/network/v2/test_floating_ip_compute.py +40 -38
- openstackclient/tests/unit/network/v2/test_floating_ip_network.py +15 -15
- openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py +4 -7
- openstackclient/tests/unit/network/v2/test_floating_ip_pool_network.py +3 -5
- openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +11 -11
- openstackclient/tests/unit/network/v2/test_ip_availability.py +6 -6
- openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py +11 -21
- openstackclient/tests/unit/network/v2/test_local_ip.py +7 -7
- openstackclient/tests/unit/network/v2/test_local_ip_association.py +3 -5
- openstackclient/tests/unit/network/v2/test_ndp_proxy.py +13 -13
- openstackclient/tests/unit/network/v2/test_network.py +23 -28
- openstackclient/tests/unit/network/v2/test_network_agent.py +17 -21
- openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py +8 -8
- openstackclient/tests/unit/network/v2/test_network_compute.py +66 -65
- openstackclient/tests/unit/network/v2/test_network_flavor.py +17 -19
- openstackclient/tests/unit/network/v2/test_network_flavor_profile.py +13 -13
- openstackclient/tests/unit/network/v2/test_network_meter.py +11 -11
- openstackclient/tests/unit/network/v2/test_network_meter_rule.py +11 -11
- openstackclient/tests/unit/network/v2/test_network_qos_policy.py +11 -21
- openstackclient/tests/unit/network/v2/test_network_qos_rule.py +51 -77
- openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py +5 -9
- openstackclient/tests/unit/network/v2/test_network_rbac.py +12 -12
- openstackclient/tests/unit/network/v2/test_network_segment.py +11 -15
- openstackclient/tests/unit/network/v2/test_network_segment_range.py +11 -13
- openstackclient/tests/unit/network/v2/test_network_service_provider.py +3 -5
- openstackclient/tests/unit/network/v2/test_network_trunk.py +11 -11
- openstackclient/tests/unit/network/v2/test_port.py +22 -25
- openstackclient/tests/unit/network/v2/test_router.py +721 -51
- openstackclient/tests/unit/network/v2/test_security_group_compute.py +65 -49
- openstackclient/tests/unit/network/v2/test_security_group_network.py +15 -15
- openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py +57 -45
- openstackclient/tests/unit/network/v2/test_security_group_rule_network.py +11 -19
- openstackclient/tests/unit/network/v2/test_subnet.py +29 -25
- openstackclient/tests/unit/network/v2/test_subnet_pool.py +15 -15
- openstackclient/tests/unit/object/v1/fakes.py +1 -1
- openstackclient/tests/unit/object/v1/test_container.py +5 -5
- openstackclient/tests/unit/object/v1/test_container_all.py +6 -6
- openstackclient/tests/unit/object/v1/test_object.py +3 -3
- openstackclient/tests/unit/object/v1/test_object_all.py +5 -5
- openstackclient/tests/unit/test_shell.py +5 -5
- openstackclient/tests/unit/utils.py +4 -1
- openstackclient/tests/unit/volume/test_find_resource.py +2 -2
- openstackclient/tests/unit/volume/v1/fakes.py +5 -6
- openstackclient/tests/unit/volume/v1/test_volume.py +5 -4
- openstackclient/tests/unit/volume/v2/fakes.py +39 -259
- openstackclient/tests/unit/volume/v2/test_consistency_group_snapshot.py +5 -5
- openstackclient/tests/unit/volume/v2/test_qos_specs.py +9 -9
- openstackclient/tests/unit/volume/v2/test_volume.py +21 -87
- openstackclient/tests/unit/volume/v2/test_volume_backup.py +10 -368
- openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +1 -1
- openstackclient/tests/unit/volume/v2/test_volume_transfer_request.py +0 -44
- openstackclient/tests/unit/volume/v2/test_volume_type.py +6 -87
- openstackclient/tests/unit/volume/v3/fakes.py +505 -22
- openstackclient/tests/unit/volume/v3/test_block_storage_cleanup.py +2 -3
- openstackclient/tests/unit/volume/v3/test_block_storage_cluster.py +10 -11
- openstackclient/tests/unit/volume/v3/test_block_storage_log_level.py +10 -6
- openstackclient/tests/unit/volume/v3/test_block_storage_manage.py +25 -17
- openstackclient/tests/unit/volume/v3/test_block_storage_resource_filter.py +6 -32
- openstackclient/tests/unit/volume/v3/test_service.py +271 -0
- openstackclient/tests/unit/volume/v3/test_volume.py +2177 -33
- openstackclient/tests/unit/volume/v3/test_volume_attachment.py +48 -52
- openstackclient/tests/unit/volume/v3/test_volume_backup.py +892 -0
- openstackclient/tests/unit/volume/v3/test_volume_group.py +19 -20
- openstackclient/tests/unit/volume/v3/test_volume_group_snapshot.py +14 -34
- openstackclient/tests/unit/volume/v3/test_volume_group_type.py +13 -16
- openstackclient/tests/unit/volume/v3/test_volume_message.py +10 -11
- openstackclient/tests/unit/volume/v3/test_volume_snapshot.py +161 -0
- openstackclient/tests/unit/volume/v3/test_volume_transfer_request.py +425 -0
- openstackclient/tests/unit/volume/v3/test_volume_type.py +1109 -0
- openstackclient/volume/v1/qos_specs.py +7 -7
- openstackclient/volume/v1/service.py +2 -2
- openstackclient/volume/v1/volume.py +12 -12
- openstackclient/volume/v1/volume_backup.py +7 -7
- openstackclient/volume/v1/volume_snapshot.py +8 -8
- openstackclient/volume/v1/volume_transfer_request.py +5 -5
- openstackclient/volume/v1/volume_type.py +7 -7
- openstackclient/volume/v2/backup_record.py +2 -2
- openstackclient/volume/v2/consistency_group.py +7 -9
- openstackclient/volume/v2/consistency_group_snapshot.py +4 -12
- openstackclient/volume/v2/qos_specs.py +7 -7
- openstackclient/volume/v2/service.py +2 -2
- openstackclient/volume/v2/volume.py +80 -80
- openstackclient/volume/v2/volume_backend.py +2 -2
- openstackclient/volume/v2/volume_backup.py +9 -217
- openstackclient/volume/v2/volume_host.py +2 -2
- openstackclient/volume/v2/volume_snapshot.py +8 -8
- openstackclient/volume/v2/volume_transfer_request.py +5 -37
- openstackclient/volume/v2/volume_type.py +7 -89
- openstackclient/volume/v3/service.py +56 -0
- openstackclient/volume/v3/volume.py +971 -0
- openstackclient/volume/v3/volume_attachment.py +31 -29
- openstackclient/volume/v3/volume_backup.py +670 -0
- openstackclient/volume/v3/volume_message.py +1 -1
- openstackclient/volume/v3/volume_snapshot.py +97 -0
- openstackclient/volume/v3/volume_transfer_request.py +233 -0
- openstackclient/volume/v3/volume_type.py +967 -0
- {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/AUTHORS +6 -0
- {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/METADATA +4 -4
- python_openstackclient-7.1.0.dist-info/RECORD +503 -0
- {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/entry_points.txt +33 -27
- python_openstackclient-7.1.0.dist-info/pbr.json +1 -0
- python_openstackclient-6.6.1.dist-info/RECORD +0 -489
- python_openstackclient-6.6.1.dist-info/pbr.json +0 -1
- {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/LICENSE +0 -0
- {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/WHEEL +0 -0
- {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/top_level.txt +0 -0
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
import datetime
|
|
19
19
|
import json
|
|
20
20
|
import logging
|
|
21
|
+
import uuid
|
|
21
22
|
|
|
22
23
|
from osc_lib.command import command
|
|
23
24
|
from osc_lib import exceptions
|
|
@@ -30,11 +31,35 @@ from openstackclient.identity import common
|
|
|
30
31
|
LOG = logging.getLogger(__name__)
|
|
31
32
|
|
|
32
33
|
|
|
34
|
+
# TODO(stephenfin): Move this to osc_lib since it's useful elsewhere
|
|
35
|
+
def is_uuid_like(value) -> bool:
|
|
36
|
+
"""Returns validation of a value as a UUID.
|
|
37
|
+
|
|
38
|
+
:param val: Value to verify
|
|
39
|
+
:type val: string
|
|
40
|
+
:returns: bool
|
|
41
|
+
|
|
42
|
+
.. versionchanged:: 1.1.1
|
|
43
|
+
Support non-lowercase UUIDs.
|
|
44
|
+
"""
|
|
45
|
+
try:
|
|
46
|
+
formatted_value = (
|
|
47
|
+
value.replace('urn:', '')
|
|
48
|
+
.replace('uuid:', '')
|
|
49
|
+
.strip('{}')
|
|
50
|
+
.replace('-', '')
|
|
51
|
+
.lower()
|
|
52
|
+
)
|
|
53
|
+
return str(uuid.UUID(value)).replace('-', '') == formatted_value
|
|
54
|
+
except (TypeError, ValueError, AttributeError):
|
|
55
|
+
return False
|
|
56
|
+
|
|
57
|
+
|
|
33
58
|
class CreateApplicationCredential(command.ShowOne):
|
|
34
59
|
_description = _("Create new application credential")
|
|
35
60
|
|
|
36
61
|
def get_parser(self, prog_name):
|
|
37
|
-
parser = super(
|
|
62
|
+
parser = super().get_parser(prog_name)
|
|
38
63
|
parser.add_argument(
|
|
39
64
|
'name',
|
|
40
65
|
metavar='<name>',
|
|
@@ -105,19 +130,16 @@ class CreateApplicationCredential(command.ShowOne):
|
|
|
105
130
|
return parser
|
|
106
131
|
|
|
107
132
|
def take_action(self, parsed_args):
|
|
108
|
-
identity_client = self.app.client_manager.identity
|
|
133
|
+
identity_client = self.app.client_manager.sdk_connection.identity
|
|
134
|
+
conn = self.app.client_manager.sdk_connection
|
|
135
|
+
user_id = conn.config.get_auth().get_user_id(conn.identity)
|
|
109
136
|
|
|
110
137
|
role_ids = []
|
|
111
138
|
for role in parsed_args.role:
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
# look up roles via keystone, just introspect the token.
|
|
117
|
-
role_id = common._get_token_resource(
|
|
118
|
-
identity_client, "roles", role
|
|
119
|
-
)
|
|
120
|
-
role_ids.append(role_id)
|
|
139
|
+
if is_uuid_like(role):
|
|
140
|
+
role_ids.append({'id': role})
|
|
141
|
+
else:
|
|
142
|
+
role_ids.append({'name': role})
|
|
121
143
|
|
|
122
144
|
expires_at = None
|
|
123
145
|
if parsed_args.expiration:
|
|
@@ -137,17 +159,17 @@ class CreateApplicationCredential(command.ShowOne):
|
|
|
137
159
|
try:
|
|
138
160
|
with open(parsed_args.access_rules) as f:
|
|
139
161
|
access_rules = json.load(f)
|
|
140
|
-
except
|
|
162
|
+
except OSError:
|
|
141
163
|
msg = _(
|
|
142
164
|
"Access rules is not valid JSON string or file does"
|
|
143
165
|
" not exist."
|
|
144
166
|
)
|
|
145
167
|
raise exceptions.CommandError(msg)
|
|
146
168
|
else:
|
|
147
|
-
access_rules =
|
|
169
|
+
access_rules = []
|
|
148
170
|
|
|
149
|
-
|
|
150
|
-
|
|
171
|
+
application_credential = identity_client.create_application_credential(
|
|
172
|
+
user_id,
|
|
151
173
|
parsed_args.name,
|
|
152
174
|
roles=role_ids,
|
|
153
175
|
expires_at=expires_at,
|
|
@@ -157,21 +179,39 @@ class CreateApplicationCredential(command.ShowOne):
|
|
|
157
179
|
access_rules=access_rules,
|
|
158
180
|
)
|
|
159
181
|
|
|
160
|
-
application_credential._info.pop('links', None)
|
|
161
|
-
|
|
162
182
|
# Format roles into something sensible
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
183
|
+
if application_credential['roles']:
|
|
184
|
+
roles = application_credential['roles']
|
|
185
|
+
msg = ' '.join(r['name'] for r in roles)
|
|
186
|
+
application_credential['roles'] = msg
|
|
166
187
|
|
|
167
|
-
|
|
188
|
+
columns = (
|
|
189
|
+
'id',
|
|
190
|
+
'name',
|
|
191
|
+
'description',
|
|
192
|
+
'project_id',
|
|
193
|
+
'roles',
|
|
194
|
+
'unrestricted',
|
|
195
|
+
'access_rules',
|
|
196
|
+
'expires_at',
|
|
197
|
+
'secret',
|
|
198
|
+
)
|
|
199
|
+
return (
|
|
200
|
+
columns,
|
|
201
|
+
(
|
|
202
|
+
utils.get_dict_properties(
|
|
203
|
+
application_credential,
|
|
204
|
+
columns,
|
|
205
|
+
)
|
|
206
|
+
),
|
|
207
|
+
)
|
|
168
208
|
|
|
169
209
|
|
|
170
210
|
class DeleteApplicationCredential(command.Command):
|
|
171
211
|
_description = _("Delete application credentials(s)")
|
|
172
212
|
|
|
173
213
|
def get_parser(self, prog_name):
|
|
174
|
-
parser = super(
|
|
214
|
+
parser = super().get_parser(prog_name)
|
|
175
215
|
parser.add_argument(
|
|
176
216
|
'application_credential',
|
|
177
217
|
metavar='<application-credential>',
|
|
@@ -181,15 +221,19 @@ class DeleteApplicationCredential(command.Command):
|
|
|
181
221
|
return parser
|
|
182
222
|
|
|
183
223
|
def take_action(self, parsed_args):
|
|
184
|
-
identity_client = self.app.client_manager.identity
|
|
224
|
+
identity_client = self.app.client_manager.sdk_connection.identity
|
|
225
|
+
conn = self.app.client_manager.sdk_connection
|
|
226
|
+
user_id = conn.config.get_auth().get_user_id(conn.identity)
|
|
185
227
|
|
|
186
228
|
errors = 0
|
|
187
229
|
for ac in parsed_args.application_credential:
|
|
188
230
|
try:
|
|
189
|
-
app_cred =
|
|
190
|
-
|
|
231
|
+
app_cred = identity_client.find_application_credential(
|
|
232
|
+
user_id, ac
|
|
233
|
+
)
|
|
234
|
+
identity_client.delete_application_credential(
|
|
235
|
+
user_id, app_cred.id
|
|
191
236
|
)
|
|
192
|
-
identity_client.application_credentials.delete(app_cred.id)
|
|
193
237
|
except Exception as e:
|
|
194
238
|
errors += 1
|
|
195
239
|
LOG.error(
|
|
@@ -213,7 +257,7 @@ class ListApplicationCredential(command.Lister):
|
|
|
213
257
|
_description = _("List application credentials")
|
|
214
258
|
|
|
215
259
|
def get_parser(self, prog_name):
|
|
216
|
-
parser = super(
|
|
260
|
+
parser = super().get_parser(prog_name)
|
|
217
261
|
parser.add_argument(
|
|
218
262
|
'--user',
|
|
219
263
|
metavar='<user>',
|
|
@@ -223,16 +267,36 @@ class ListApplicationCredential(command.Lister):
|
|
|
223
267
|
return parser
|
|
224
268
|
|
|
225
269
|
def take_action(self, parsed_args):
|
|
226
|
-
identity_client = self.app.client_manager.identity
|
|
270
|
+
identity_client = self.app.client_manager.sdk_connection.identity
|
|
227
271
|
if parsed_args.user:
|
|
228
272
|
user_id = common.find_user(
|
|
229
273
|
identity_client, parsed_args.user, parsed_args.user_domain
|
|
230
274
|
).id
|
|
231
275
|
else:
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
data = identity_client.application_credentials
|
|
276
|
+
conn = self.app.client_manager.sdk_connection
|
|
277
|
+
user_id = conn.config.get_auth().get_user_id(conn.identity)
|
|
278
|
+
|
|
279
|
+
data = identity_client.application_credentials(user=user_id)
|
|
280
|
+
|
|
281
|
+
data_formatted = []
|
|
282
|
+
for ac in data:
|
|
283
|
+
# Format roles into something sensible
|
|
284
|
+
roles = ac['roles']
|
|
285
|
+
msg = ' '.join(r['name'] for r in roles)
|
|
286
|
+
ac['roles'] = msg
|
|
287
|
+
|
|
288
|
+
data_formatted.append(ac)
|
|
289
|
+
|
|
290
|
+
columns = (
|
|
291
|
+
'ID',
|
|
292
|
+
'Name',
|
|
293
|
+
'Description',
|
|
294
|
+
'Project ID',
|
|
295
|
+
'Roles',
|
|
296
|
+
'Unrestricted',
|
|
297
|
+
'Access Rules',
|
|
298
|
+
'Expires At',
|
|
299
|
+
)
|
|
236
300
|
return (
|
|
237
301
|
columns,
|
|
238
302
|
(
|
|
@@ -241,7 +305,7 @@ class ListApplicationCredential(command.Lister):
|
|
|
241
305
|
columns,
|
|
242
306
|
formatters={},
|
|
243
307
|
)
|
|
244
|
-
for s in
|
|
308
|
+
for s in data_formatted
|
|
245
309
|
),
|
|
246
310
|
)
|
|
247
311
|
|
|
@@ -250,7 +314,7 @@ class ShowApplicationCredential(command.ShowOne):
|
|
|
250
314
|
_description = _("Display application credential details")
|
|
251
315
|
|
|
252
316
|
def get_parser(self, prog_name):
|
|
253
|
-
parser = super(
|
|
317
|
+
parser = super().get_parser(prog_name)
|
|
254
318
|
parser.add_argument(
|
|
255
319
|
'application_credential',
|
|
256
320
|
metavar='<application-credential>',
|
|
@@ -259,17 +323,35 @@ class ShowApplicationCredential(command.ShowOne):
|
|
|
259
323
|
return parser
|
|
260
324
|
|
|
261
325
|
def take_action(self, parsed_args):
|
|
262
|
-
identity_client = self.app.client_manager.identity
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
parsed_args.application_credential,
|
|
266
|
-
)
|
|
326
|
+
identity_client = self.app.client_manager.sdk_connection.identity
|
|
327
|
+
conn = self.app.client_manager.sdk_connection
|
|
328
|
+
user_id = conn.config.get_auth().get_user_id(conn.identity)
|
|
267
329
|
|
|
268
|
-
app_cred.
|
|
330
|
+
app_cred = identity_client.find_application_credential(
|
|
331
|
+
user_id, parsed_args.application_credential
|
|
332
|
+
)
|
|
269
333
|
|
|
270
334
|
# Format roles into something sensible
|
|
271
|
-
roles = app_cred
|
|
335
|
+
roles = app_cred['roles']
|
|
272
336
|
msg = ' '.join(r['name'] for r in roles)
|
|
273
|
-
app_cred
|
|
337
|
+
app_cred['roles'] = msg
|
|
274
338
|
|
|
275
|
-
|
|
339
|
+
columns = (
|
|
340
|
+
'id',
|
|
341
|
+
'name',
|
|
342
|
+
'description',
|
|
343
|
+
'project_id',
|
|
344
|
+
'roles',
|
|
345
|
+
'unrestricted',
|
|
346
|
+
'access_rules',
|
|
347
|
+
'expires_at',
|
|
348
|
+
)
|
|
349
|
+
return (
|
|
350
|
+
columns,
|
|
351
|
+
(
|
|
352
|
+
utils.get_dict_properties(
|
|
353
|
+
app_cred,
|
|
354
|
+
columns,
|
|
355
|
+
)
|
|
356
|
+
),
|
|
357
|
+
)
|
|
@@ -34,7 +34,7 @@ class EndpointsColumn(cliff_columns.FormattableColumn):
|
|
|
34
34
|
for ep in self._value:
|
|
35
35
|
region = ep.get('region_id') or ep.get('region') or '<none>'
|
|
36
36
|
ret += region + '\n'
|
|
37
|
-
ret += "
|
|
37
|
+
ret += " {}: {}\n".format(ep['interface'], ep['url'])
|
|
38
38
|
return ret
|
|
39
39
|
|
|
40
40
|
|
|
@@ -70,7 +70,7 @@ class ShowCatalog(command.ShowOne):
|
|
|
70
70
|
_description = _("Display service catalog details")
|
|
71
71
|
|
|
72
72
|
def get_parser(self, prog_name):
|
|
73
|
-
parser = super(
|
|
73
|
+
parser = super().get_parser(prog_name)
|
|
74
74
|
parser.add_argument(
|
|
75
75
|
'service',
|
|
76
76
|
metavar='<service>',
|
|
@@ -31,7 +31,7 @@ class CreateConsumer(command.ShowOne):
|
|
|
31
31
|
_description = _("Create new consumer")
|
|
32
32
|
|
|
33
33
|
def get_parser(self, prog_name):
|
|
34
|
-
parser = super(
|
|
34
|
+
parser = super().get_parser(prog_name)
|
|
35
35
|
parser.add_argument(
|
|
36
36
|
'--description',
|
|
37
37
|
metavar='<description>',
|
|
@@ -52,7 +52,7 @@ class DeleteConsumer(command.Command):
|
|
|
52
52
|
_description = _("Delete consumer(s)")
|
|
53
53
|
|
|
54
54
|
def get_parser(self, prog_name):
|
|
55
|
-
parser = super(
|
|
55
|
+
parser = super().get_parser(prog_name)
|
|
56
56
|
parser.add_argument(
|
|
57
57
|
'consumer',
|
|
58
58
|
metavar='<consumer>',
|
|
@@ -111,7 +111,7 @@ class SetConsumer(command.Command):
|
|
|
111
111
|
_description = _("Set consumer properties")
|
|
112
112
|
|
|
113
113
|
def get_parser(self, prog_name):
|
|
114
|
-
parser = super(
|
|
114
|
+
parser = super().get_parser(prog_name)
|
|
115
115
|
parser.add_argument(
|
|
116
116
|
'consumer',
|
|
117
117
|
metavar='<consumer>',
|
|
@@ -142,7 +142,7 @@ class ShowConsumer(command.ShowOne):
|
|
|
142
142
|
_description = _("Display consumer details")
|
|
143
143
|
|
|
144
144
|
def get_parser(self, prog_name):
|
|
145
|
-
parser = super(
|
|
145
|
+
parser = super().get_parser(prog_name)
|
|
146
146
|
parser.add_argument(
|
|
147
147
|
'consumer',
|
|
148
148
|
metavar='<consumer>',
|
|
@@ -32,7 +32,7 @@ class CreateCredential(command.ShowOne):
|
|
|
32
32
|
_description = _("Create new credential")
|
|
33
33
|
|
|
34
34
|
def get_parser(self, prog_name):
|
|
35
|
-
parser = super(
|
|
35
|
+
parser = super().get_parser(prog_name)
|
|
36
36
|
parser.add_argument(
|
|
37
37
|
'user',
|
|
38
38
|
metavar='<user>',
|
|
@@ -85,7 +85,7 @@ class DeleteCredential(command.Command):
|
|
|
85
85
|
_description = _("Delete credential(s)")
|
|
86
86
|
|
|
87
87
|
def get_parser(self, prog_name):
|
|
88
|
-
parser = super(
|
|
88
|
+
parser = super().get_parser(prog_name)
|
|
89
89
|
parser.add_argument(
|
|
90
90
|
'credential',
|
|
91
91
|
metavar='<credential-id>',
|
|
@@ -122,7 +122,7 @@ class ListCredential(command.Lister):
|
|
|
122
122
|
_description = _("List credentials")
|
|
123
123
|
|
|
124
124
|
def get_parser(self, prog_name):
|
|
125
|
-
parser = super(
|
|
125
|
+
parser = super().get_parser(prog_name)
|
|
126
126
|
parser.add_argument(
|
|
127
127
|
'--user',
|
|
128
128
|
metavar='<user>',
|
|
@@ -171,7 +171,7 @@ class SetCredential(command.Command):
|
|
|
171
171
|
_description = _("Set credential properties")
|
|
172
172
|
|
|
173
173
|
def get_parser(self, prog_name):
|
|
174
|
-
parser = super(
|
|
174
|
+
parser = super().get_parser(prog_name)
|
|
175
175
|
parser.add_argument(
|
|
176
176
|
'credential',
|
|
177
177
|
metavar='<credential-id>',
|
|
@@ -232,7 +232,7 @@ class ShowCredential(command.ShowOne):
|
|
|
232
232
|
_description = _("Display credential details")
|
|
233
233
|
|
|
234
234
|
def get_parser(self, prog_name):
|
|
235
|
-
parser = super(
|
|
235
|
+
parser = super().get_parser(prog_name)
|
|
236
236
|
parser.add_argument(
|
|
237
237
|
'credential',
|
|
238
238
|
metavar='<credential-id>',
|
|
@@ -33,7 +33,7 @@ class CreateDomain(command.ShowOne):
|
|
|
33
33
|
_description = _("Create new domain")
|
|
34
34
|
|
|
35
35
|
def get_parser(self, prog_name):
|
|
36
|
-
parser = super(
|
|
36
|
+
parser = super().get_parser(prog_name)
|
|
37
37
|
parser.add_argument(
|
|
38
38
|
'name',
|
|
39
39
|
metavar='<domain-name>',
|
|
@@ -96,7 +96,7 @@ class DeleteDomain(command.Command):
|
|
|
96
96
|
_description = _("Delete domain(s)")
|
|
97
97
|
|
|
98
98
|
def get_parser(self, prog_name):
|
|
99
|
-
parser = super(
|
|
99
|
+
parser = super().get_parser(prog_name)
|
|
100
100
|
parser.add_argument(
|
|
101
101
|
'domain',
|
|
102
102
|
metavar='<domain>',
|
|
@@ -135,7 +135,7 @@ class ListDomain(command.Lister):
|
|
|
135
135
|
_description = _("List domains")
|
|
136
136
|
|
|
137
137
|
def get_parser(self, prog_name):
|
|
138
|
-
parser = super(
|
|
138
|
+
parser = super().get_parser(prog_name)
|
|
139
139
|
parser.add_argument(
|
|
140
140
|
'--name',
|
|
141
141
|
metavar='<name>',
|
|
@@ -175,7 +175,7 @@ class SetDomain(command.Command):
|
|
|
175
175
|
_description = _("Set domain properties")
|
|
176
176
|
|
|
177
177
|
def get_parser(self, prog_name):
|
|
178
|
-
parser = super(
|
|
178
|
+
parser = super().get_parser(prog_name)
|
|
179
179
|
parser.add_argument(
|
|
180
180
|
'domain',
|
|
181
181
|
metavar='<domain>',
|
|
@@ -232,7 +232,7 @@ class ShowDomain(command.ShowOne):
|
|
|
232
232
|
_description = _("Display domain details")
|
|
233
233
|
|
|
234
234
|
def get_parser(self, prog_name):
|
|
235
|
-
parser = super(
|
|
235
|
+
parser = super().get_parser(prog_name)
|
|
236
236
|
parser.add_argument(
|
|
237
237
|
'domain',
|
|
238
238
|
metavar='<domain>',
|
|
@@ -60,7 +60,7 @@ class CreateEC2Creds(command.ShowOne):
|
|
|
60
60
|
_description = _("Create EC2 credentials")
|
|
61
61
|
|
|
62
62
|
def get_parser(self, prog_name):
|
|
63
|
-
parser = super(
|
|
63
|
+
parser = super().get_parser(prog_name)
|
|
64
64
|
parser.add_argument(
|
|
65
65
|
'--project',
|
|
66
66
|
metavar='<project>',
|
|
@@ -122,7 +122,7 @@ class DeleteEC2Creds(command.Command):
|
|
|
122
122
|
_description = _("Delete EC2 credentials")
|
|
123
123
|
|
|
124
124
|
def get_parser(self, prog_name):
|
|
125
|
-
parser = super(
|
|
125
|
+
parser = super().get_parser(prog_name)
|
|
126
126
|
parser.add_argument(
|
|
127
127
|
'access_key',
|
|
128
128
|
metavar='<access-key>',
|
|
@@ -166,7 +166,7 @@ class ListEC2Creds(command.Lister):
|
|
|
166
166
|
_description = _("List EC2 credentials")
|
|
167
167
|
|
|
168
168
|
def get_parser(self, prog_name):
|
|
169
|
-
parser = super(
|
|
169
|
+
parser = super().get_parser(prog_name)
|
|
170
170
|
parser.add_argument(
|
|
171
171
|
'--user',
|
|
172
172
|
metavar='<user>',
|
|
@@ -200,7 +200,7 @@ class ShowEC2Creds(command.ShowOne):
|
|
|
200
200
|
_description = _("Display EC2 credentials details")
|
|
201
201
|
|
|
202
202
|
def get_parser(self, prog_name):
|
|
203
|
-
parser = super(
|
|
203
|
+
parser = super().get_parser(prog_name)
|
|
204
204
|
parser.add_argument(
|
|
205
205
|
'access_key',
|
|
206
206
|
metavar='<access-key>',
|
|
@@ -39,7 +39,7 @@ class AddProjectToEndpoint(command.Command):
|
|
|
39
39
|
_description = _("Associate a project to an endpoint")
|
|
40
40
|
|
|
41
41
|
def get_parser(self, prog_name):
|
|
42
|
-
parser = super(
|
|
42
|
+
parser = super().get_parser(prog_name)
|
|
43
43
|
parser.add_argument(
|
|
44
44
|
'endpoint',
|
|
45
45
|
metavar='<endpoint>',
|
|
@@ -75,7 +75,7 @@ class CreateEndpoint(command.ShowOne):
|
|
|
75
75
|
_description = _("Create new endpoint")
|
|
76
76
|
|
|
77
77
|
def get_parser(self, prog_name):
|
|
78
|
-
parser = super(
|
|
78
|
+
parser = super().get_parser(prog_name)
|
|
79
79
|
parser.add_argument(
|
|
80
80
|
'service',
|
|
81
81
|
metavar='<service>',
|
|
@@ -137,7 +137,7 @@ class DeleteEndpoint(command.Command):
|
|
|
137
137
|
_description = _("Delete endpoint(s)")
|
|
138
138
|
|
|
139
139
|
def get_parser(self, prog_name):
|
|
140
|
-
parser = super(
|
|
140
|
+
parser = super().get_parser(prog_name)
|
|
141
141
|
parser.add_argument(
|
|
142
142
|
'endpoint',
|
|
143
143
|
metavar='<endpoint-id>',
|
|
@@ -177,7 +177,7 @@ class ListEndpoint(command.Lister):
|
|
|
177
177
|
_description = _("List endpoints")
|
|
178
178
|
|
|
179
179
|
def get_parser(self, prog_name):
|
|
180
|
-
parser = super(
|
|
180
|
+
parser = super().get_parser(prog_name)
|
|
181
181
|
parser.add_argument(
|
|
182
182
|
'--service',
|
|
183
183
|
metavar='<service>',
|
|
@@ -285,7 +285,7 @@ class RemoveProjectFromEndpoint(command.Command):
|
|
|
285
285
|
_description = _("Dissociate a project from an endpoint")
|
|
286
286
|
|
|
287
287
|
def get_parser(self, prog_name):
|
|
288
|
-
parser = super(
|
|
288
|
+
parser = super().get_parser(prog_name)
|
|
289
289
|
parser.add_argument(
|
|
290
290
|
'endpoint',
|
|
291
291
|
metavar='<endpoint>',
|
|
@@ -321,7 +321,7 @@ class SetEndpoint(command.Command):
|
|
|
321
321
|
_description = _("Set endpoint properties")
|
|
322
322
|
|
|
323
323
|
def get_parser(self, prog_name):
|
|
324
|
-
parser = super(
|
|
324
|
+
parser = super().get_parser(prog_name)
|
|
325
325
|
parser.add_argument(
|
|
326
326
|
'endpoint',
|
|
327
327
|
metavar='<endpoint-id>',
|
|
@@ -393,7 +393,7 @@ class ShowEndpoint(command.ShowOne):
|
|
|
393
393
|
_description = _("Display endpoint details")
|
|
394
394
|
|
|
395
395
|
def get_parser(self, prog_name):
|
|
396
|
-
parser = super(
|
|
396
|
+
parser = super().get_parser(prog_name)
|
|
397
397
|
parser.add_argument(
|
|
398
398
|
'endpoint',
|
|
399
399
|
metavar='<endpoint>',
|
|
@@ -27,7 +27,7 @@ from openstackclient.identity import common
|
|
|
27
27
|
LOG = logging.getLogger(__name__)
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
class _FiltersReader
|
|
30
|
+
class _FiltersReader:
|
|
31
31
|
_description = _("Helper class capable of reading filters from files")
|
|
32
32
|
|
|
33
33
|
def _read_filters(self, path):
|
|
@@ -63,7 +63,7 @@ class AddProjectToEndpointGroup(command.Command):
|
|
|
63
63
|
_description = _("Add a project to an endpoint group")
|
|
64
64
|
|
|
65
65
|
def get_parser(self, prog_name):
|
|
66
|
-
parser = super(
|
|
66
|
+
parser = super().get_parser(prog_name)
|
|
67
67
|
parser.add_argument(
|
|
68
68
|
'endpointgroup',
|
|
69
69
|
metavar='<endpoint-group>',
|
|
@@ -97,7 +97,7 @@ class CreateEndpointGroup(command.ShowOne, _FiltersReader):
|
|
|
97
97
|
_description = _("Create new endpoint group")
|
|
98
98
|
|
|
99
99
|
def get_parser(self, prog_name):
|
|
100
|
-
parser = super(
|
|
100
|
+
parser = super().get_parser(prog_name)
|
|
101
101
|
parser.add_argument(
|
|
102
102
|
'name',
|
|
103
103
|
metavar='<name>',
|
|
@@ -137,7 +137,7 @@ class DeleteEndpointGroup(command.Command):
|
|
|
137
137
|
_description = _("Delete endpoint group(s)")
|
|
138
138
|
|
|
139
139
|
def get_parser(self, prog_name):
|
|
140
|
-
parser = super(
|
|
140
|
+
parser = super().get_parser(prog_name)
|
|
141
141
|
parser.add_argument(
|
|
142
142
|
'endpointgroup',
|
|
143
143
|
metavar='<endpoint-group>',
|
|
@@ -177,7 +177,7 @@ class ListEndpointGroup(command.Lister):
|
|
|
177
177
|
_description = _("List endpoint groups")
|
|
178
178
|
|
|
179
179
|
def get_parser(self, prog_name):
|
|
180
|
-
parser = super(
|
|
180
|
+
parser = super().get_parser(prog_name)
|
|
181
181
|
list_group = parser.add_mutually_exclusive_group()
|
|
182
182
|
list_group.add_argument(
|
|
183
183
|
'--endpointgroup',
|
|
@@ -242,9 +242,7 @@ class RemoveProjectFromEndpointGroup(command.Command):
|
|
|
242
242
|
_description = _("Remove project from endpoint group")
|
|
243
243
|
|
|
244
244
|
def get_parser(self, prog_name):
|
|
245
|
-
parser = super(
|
|
246
|
-
prog_name
|
|
247
|
-
)
|
|
245
|
+
parser = super().get_parser(prog_name)
|
|
248
246
|
parser.add_argument(
|
|
249
247
|
'endpointgroup',
|
|
250
248
|
metavar='<endpoint-group>',
|
|
@@ -278,7 +276,7 @@ class SetEndpointGroup(command.Command, _FiltersReader):
|
|
|
278
276
|
_description = _("Set endpoint group properties")
|
|
279
277
|
|
|
280
278
|
def get_parser(self, prog_name):
|
|
281
|
-
parser = super(
|
|
279
|
+
parser = super().get_parser(prog_name)
|
|
282
280
|
parser.add_argument(
|
|
283
281
|
'endpointgroup',
|
|
284
282
|
metavar='<endpoint-group>',
|
|
@@ -324,7 +322,7 @@ class ShowEndpointGroup(command.ShowOne):
|
|
|
324
322
|
_description = _("Display endpoint group details")
|
|
325
323
|
|
|
326
324
|
def get_parser(self, prog_name):
|
|
327
|
-
parser = super(
|
|
325
|
+
parser = super().get_parser(prog_name)
|
|
328
326
|
parser.add_argument(
|
|
329
327
|
'endpointgroup',
|
|
330
328
|
metavar='<endpointgroup>',
|
|
@@ -30,7 +30,7 @@ class CreateProtocol(command.ShowOne):
|
|
|
30
30
|
_description = _("Create new federation protocol")
|
|
31
31
|
|
|
32
32
|
def get_parser(self, prog_name):
|
|
33
|
-
parser = super(
|
|
33
|
+
parser = super().get_parser(prog_name)
|
|
34
34
|
parser.add_argument(
|
|
35
35
|
'federation_protocol',
|
|
36
36
|
metavar='<name>',
|
|
@@ -79,7 +79,7 @@ class DeleteProtocol(command.Command):
|
|
|
79
79
|
_description = _("Delete federation protocol(s)")
|
|
80
80
|
|
|
81
81
|
def get_parser(self, prog_name):
|
|
82
|
-
parser = super(
|
|
82
|
+
parser = super().get_parser(prog_name)
|
|
83
83
|
parser.add_argument(
|
|
84
84
|
'federation_protocol',
|
|
85
85
|
metavar='<federation-protocol>',
|
|
@@ -129,7 +129,7 @@ class ListProtocols(command.Lister):
|
|
|
129
129
|
_description = _("List federation protocols")
|
|
130
130
|
|
|
131
131
|
def get_parser(self, prog_name):
|
|
132
|
-
parser = super(
|
|
132
|
+
parser = super().get_parser(prog_name)
|
|
133
133
|
parser.add_argument(
|
|
134
134
|
'--identity-provider',
|
|
135
135
|
metavar='<identity-provider>',
|
|
@@ -158,7 +158,7 @@ class SetProtocol(command.Command):
|
|
|
158
158
|
_description = _("Set federation protocol properties")
|
|
159
159
|
|
|
160
160
|
def get_parser(self, prog_name):
|
|
161
|
-
parser = super(
|
|
161
|
+
parser = super().get_parser(prog_name)
|
|
162
162
|
parser.add_argument(
|
|
163
163
|
'federation_protocol',
|
|
164
164
|
metavar='<name>',
|
|
@@ -202,7 +202,7 @@ class ShowProtocol(command.ShowOne):
|
|
|
202
202
|
_description = _("Display federation protocol details")
|
|
203
203
|
|
|
204
204
|
def get_parser(self, prog_name):
|
|
205
|
-
parser = super(
|
|
205
|
+
parser = super().get_parser(prog_name)
|
|
206
206
|
parser.add_argument(
|
|
207
207
|
'federation_protocol',
|
|
208
208
|
metavar='<federation-protocol>',
|