python-openstackclient 6.6.1__py3-none-any.whl → 7.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openstackclient/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 +16 -4
- openstackclient/common/configuration.py +1 -1
- openstackclient/common/extension.py +1 -1
- openstackclient/common/limits.py +66 -32
- openstackclient/common/module.py +3 -3
- openstackclient/common/progressbar.py +2 -2
- openstackclient/common/project_cleanup.py +5 -2
- openstackclient/common/quota.py +281 -410
- openstackclient/common/versions.py +1 -1
- openstackclient/compute/client.py +7 -116
- openstackclient/compute/v2/agent.py +75 -49
- openstackclient/compute/v2/aggregate.py +9 -9
- 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 +4 -3
- openstackclient/compute/v2/keypair.py +7 -8
- openstackclient/compute/v2/server.py +478 -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 +127 -45
- 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/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 +14 -6
- openstackclient/tests/functional/identity/v3/test_application_credential.py +13 -19
- 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_limit.py +2 -2
- openstackclient/tests/functional/identity/v3/test_region.py +1 -3
- openstackclient/tests/functional/identity/v3/test_registered_limit.py +1 -1
- 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 +4 -6
- 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 +18 -16
- 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 +28 -31
- 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 +2895 -2459
- 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 +11 -11
- 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 +212 -235
- 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 +93 -97
- 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 +7 -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 +7 -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.0.0.dist-info}/AUTHORS +4 -0
- {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.0.0.dist-info}/METADATA +2 -3
- python_openstackclient-7.0.0.dist-info/RECORD +502 -0
- {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.0.0.dist-info}/entry_points.txt +33 -27
- python_openstackclient-7.0.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.0.0.dist-info}/LICENSE +0 -0
- {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.0.0.dist-info}/WHEEL +0 -0
- {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.0.0.dist-info}/top_level.txt +0 -0
|
@@ -56,7 +56,7 @@ class CreateServerGroup(command.ShowOne):
|
|
|
56
56
|
_description = _("Create a new server group.")
|
|
57
57
|
|
|
58
58
|
def get_parser(self, prog_name):
|
|
59
|
-
parser = super(
|
|
59
|
+
parser = super().get_parser(prog_name)
|
|
60
60
|
parser.add_argument(
|
|
61
61
|
'name',
|
|
62
62
|
metavar='<name>',
|
|
@@ -143,7 +143,7 @@ class DeleteServerGroup(command.Command):
|
|
|
143
143
|
_description = _("Delete existing server group(s).")
|
|
144
144
|
|
|
145
145
|
def get_parser(self, prog_name):
|
|
146
|
-
parser = super(
|
|
146
|
+
parser = super().get_parser(prog_name)
|
|
147
147
|
parser.add_argument(
|
|
148
148
|
'server_group',
|
|
149
149
|
metavar='<server-group>',
|
|
@@ -178,7 +178,7 @@ class ListServerGroup(command.Lister):
|
|
|
178
178
|
_description = _("List all server groups.")
|
|
179
179
|
|
|
180
180
|
def get_parser(self, prog_name):
|
|
181
|
-
parser = super(
|
|
181
|
+
parser = super().get_parser(prog_name)
|
|
182
182
|
parser.add_argument(
|
|
183
183
|
'--all-projects',
|
|
184
184
|
action='store_true',
|
|
@@ -255,7 +255,7 @@ class ShowServerGroup(command.ShowOne):
|
|
|
255
255
|
_description = _("Display server group details.")
|
|
256
256
|
|
|
257
257
|
def get_parser(self, prog_name):
|
|
258
|
-
parser = super(
|
|
258
|
+
parser = super().get_parser(prog_name)
|
|
259
259
|
parser.add_argument(
|
|
260
260
|
'server_group',
|
|
261
261
|
metavar='<server-group>',
|
|
@@ -28,7 +28,7 @@ class ListMigration(command.Lister):
|
|
|
28
28
|
_description = _("""List server migrations""")
|
|
29
29
|
|
|
30
30
|
def get_parser(self, prog_name):
|
|
31
|
-
parser = super(
|
|
31
|
+
parser = super().get_parser(prog_name)
|
|
32
32
|
parser.add_argument(
|
|
33
33
|
'--server',
|
|
34
34
|
metavar='<server>',
|
|
@@ -252,7 +252,6 @@ def _get_migration_by_uuid(compute_client, server_id, migration_uuid):
|
|
|
252
252
|
for migration in compute_client.server_migrations(server_id):
|
|
253
253
|
if migration.uuid == migration_uuid:
|
|
254
254
|
return migration
|
|
255
|
-
break
|
|
256
255
|
else:
|
|
257
256
|
msg = _('In-progress live migration %s is not found for server %s.')
|
|
258
257
|
raise exceptions.CommandError(msg % (migration_uuid, server_id))
|
|
@@ -382,7 +381,7 @@ class AbortMigration(command.Command):
|
|
|
382
381
|
"""
|
|
383
382
|
|
|
384
383
|
def get_parser(self, prog_name):
|
|
385
|
-
parser = super(
|
|
384
|
+
parser = super().get_parser(prog_name)
|
|
386
385
|
parser.add_argument(
|
|
387
386
|
'server',
|
|
388
387
|
metavar='<server>',
|
|
@@ -449,7 +448,7 @@ class ForceCompleteMigration(command.Command):
|
|
|
449
448
|
"""
|
|
450
449
|
|
|
451
450
|
def get_parser(self, prog_name):
|
|
452
|
-
parser = super(
|
|
451
|
+
parser = super().get_parser(prog_name)
|
|
453
452
|
parser.add_argument(
|
|
454
453
|
'server',
|
|
455
454
|
metavar='<server>',
|
|
@@ -32,7 +32,7 @@ class DeleteService(command.Command):
|
|
|
32
32
|
_description = _("Delete compute service(s)")
|
|
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
|
"service",
|
|
38
38
|
metavar="<service>",
|
|
@@ -85,7 +85,7 @@ deployment."""
|
|
|
85
85
|
)
|
|
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
|
"--host",
|
|
91
91
|
metavar="<host>",
|
|
@@ -147,7 +147,7 @@ class SetService(command.Command):
|
|
|
147
147
|
_description = _("Set compute service properties")
|
|
148
148
|
|
|
149
149
|
def get_parser(self, prog_name):
|
|
150
|
-
parser = super(
|
|
150
|
+
parser = super().get_parser(prog_name)
|
|
151
151
|
parser.add_argument("host", metavar="<host>", help=_("Name of host"))
|
|
152
152
|
parser.add_argument(
|
|
153
153
|
"service",
|
|
@@ -198,7 +198,7 @@ class SetService(command.Command):
|
|
|
198
198
|
|
|
199
199
|
:param host: the name of the compute service host
|
|
200
200
|
:param binary: the compute service binary, e.g. nova-compute
|
|
201
|
-
:returns:
|
|
201
|
+
:returns: The service.
|
|
202
202
|
:raises: CommandError if no or multiple results were found
|
|
203
203
|
"""
|
|
204
204
|
services = list(compute_client.services(host=host, binary=binary))
|
|
@@ -109,7 +109,7 @@ class ListUsage(command.Lister):
|
|
|
109
109
|
_description = _("List resource usage per project")
|
|
110
110
|
|
|
111
111
|
def get_parser(self, prog_name):
|
|
112
|
-
parser = super(
|
|
112
|
+
parser = super().get_parser(prog_name)
|
|
113
113
|
parser.add_argument(
|
|
114
114
|
"--start",
|
|
115
115
|
metavar="<start>",
|
|
@@ -182,7 +182,7 @@ class ListUsage(command.Lister):
|
|
|
182
182
|
project_cache[p.id] = p
|
|
183
183
|
except Exception:
|
|
184
184
|
# Just forget it if there's any trouble
|
|
185
|
-
pass
|
|
185
|
+
pass # nosec: B110
|
|
186
186
|
|
|
187
187
|
if parsed_args.formatter == 'table' and len(usage_list) > 0:
|
|
188
188
|
self.app.stdout.write(
|
|
@@ -210,7 +210,7 @@ class ShowUsage(command.ShowOne):
|
|
|
210
210
|
_description = _("Show resource usage for a single project")
|
|
211
211
|
|
|
212
212
|
def get_parser(self, prog_name):
|
|
213
|
-
parser = super(
|
|
213
|
+
parser = super().get_parser(prog_name)
|
|
214
214
|
parser.add_argument(
|
|
215
215
|
"--project",
|
|
216
216
|
metavar="<project>",
|
|
@@ -20,6 +20,7 @@ from keystoneclient.v3 import domains
|
|
|
20
20
|
from keystoneclient.v3 import groups
|
|
21
21
|
from keystoneclient.v3 import projects
|
|
22
22
|
from keystoneclient.v3 import users
|
|
23
|
+
from openstack import exceptions as sdk_exceptions
|
|
23
24
|
from osc_lib import exceptions
|
|
24
25
|
from osc_lib import utils
|
|
25
26
|
|
|
@@ -73,6 +74,39 @@ def find_service(identity_client, name_type_or_id):
|
|
|
73
74
|
raise exceptions.CommandError(msg % name_type_or_id)
|
|
74
75
|
|
|
75
76
|
|
|
77
|
+
def find_service_sdk(identity_client, name_type_or_id):
|
|
78
|
+
"""Find a service by id, name or type."""
|
|
79
|
+
|
|
80
|
+
try:
|
|
81
|
+
# search for service name or ID
|
|
82
|
+
return identity_client.find_service(
|
|
83
|
+
name_type_or_id, ignore_missing=False
|
|
84
|
+
)
|
|
85
|
+
except sdk_exceptions.ResourceNotFound:
|
|
86
|
+
pass
|
|
87
|
+
except sdk_exceptions.DuplicateResource as e:
|
|
88
|
+
raise exceptions.CommandError(e.message)
|
|
89
|
+
|
|
90
|
+
# search for service type
|
|
91
|
+
services = identity_client.services()
|
|
92
|
+
result = None
|
|
93
|
+
for service in services:
|
|
94
|
+
if name_type_or_id == service.type:
|
|
95
|
+
if result:
|
|
96
|
+
msg = _(
|
|
97
|
+
"Multiple service matches found for '%s', "
|
|
98
|
+
"use an ID or name to be more specific."
|
|
99
|
+
)
|
|
100
|
+
raise exceptions.CommandError(msg % name_type_or_id)
|
|
101
|
+
result = service
|
|
102
|
+
|
|
103
|
+
if result is None:
|
|
104
|
+
msg = _("No service with a type, name or ID of '%s' exists.")
|
|
105
|
+
raise exceptions.CommandError(msg % name_type_or_id)
|
|
106
|
+
|
|
107
|
+
return result
|
|
108
|
+
|
|
109
|
+
|
|
76
110
|
def get_resource(manager, name_type_or_id):
|
|
77
111
|
# NOTE (vishakha): Due to bug #1799153 and for any another related case
|
|
78
112
|
# where GET resource API does not support the filter by name,
|
|
@@ -39,7 +39,7 @@ class EndpointsColumn(cliff_columns.FormattableColumn):
|
|
|
39
39
|
for endpoint_type in ['publicURL', 'internalURL', 'adminURL']:
|
|
40
40
|
url = ep.get(endpoint_type)
|
|
41
41
|
if url:
|
|
42
|
-
ret += "
|
|
42
|
+
ret += f" {endpoint_type}: {url}\n"
|
|
43
43
|
return ret
|
|
44
44
|
|
|
45
45
|
|
|
@@ -75,7 +75,7 @@ class ShowCatalog(command.ShowOne):
|
|
|
75
75
|
_description = _("Display service catalog details")
|
|
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>',
|
|
@@ -32,7 +32,7 @@ class CreateEC2Creds(command.ShowOne):
|
|
|
32
32
|
_description = _("Create EC2 credentials")
|
|
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
|
'--project',
|
|
38
38
|
metavar='<project>',
|
|
@@ -86,7 +86,7 @@ class DeleteEC2Creds(command.Command):
|
|
|
86
86
|
_description = _("Delete EC2 credentials")
|
|
87
87
|
|
|
88
88
|
def get_parser(self, prog_name):
|
|
89
|
-
parser = super(
|
|
89
|
+
parser = super().get_parser(prog_name)
|
|
90
90
|
parser.add_argument(
|
|
91
91
|
'access_keys',
|
|
92
92
|
metavar='<access-key>',
|
|
@@ -138,7 +138,7 @@ class ListEC2Creds(command.Lister):
|
|
|
138
138
|
_description = _("List EC2 credentials")
|
|
139
139
|
|
|
140
140
|
def get_parser(self, prog_name):
|
|
141
|
-
parser = super(
|
|
141
|
+
parser = super().get_parser(prog_name)
|
|
142
142
|
parser.add_argument(
|
|
143
143
|
'--user',
|
|
144
144
|
metavar='<user>',
|
|
@@ -179,7 +179,7 @@ class ShowEC2Creds(command.ShowOne):
|
|
|
179
179
|
_description = _("Display EC2 credentials details")
|
|
180
180
|
|
|
181
181
|
def get_parser(self, prog_name):
|
|
182
|
-
parser = super(
|
|
182
|
+
parser = super().get_parser(prog_name)
|
|
183
183
|
parser.add_argument(
|
|
184
184
|
'access_key',
|
|
185
185
|
metavar='<access-key>',
|
|
@@ -32,7 +32,7 @@ class CreateEndpoint(command.ShowOne):
|
|
|
32
32
|
_description = _("Create new endpoint")
|
|
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
|
'service',
|
|
38
38
|
metavar='<service>',
|
|
@@ -83,7 +83,7 @@ class DeleteEndpoint(command.Command):
|
|
|
83
83
|
_description = _("Delete endpoint(s)")
|
|
84
84
|
|
|
85
85
|
def get_parser(self, prog_name):
|
|
86
|
-
parser = super(
|
|
86
|
+
parser = super().get_parser(prog_name)
|
|
87
87
|
parser.add_argument(
|
|
88
88
|
'endpoints',
|
|
89
89
|
metavar='<endpoint-id>',
|
|
@@ -121,7 +121,7 @@ class ListEndpoint(command.Lister):
|
|
|
121
121
|
_description = _("List endpoints")
|
|
122
122
|
|
|
123
123
|
def get_parser(self, prog_name):
|
|
124
|
-
parser = super(
|
|
124
|
+
parser = super().get_parser(prog_name)
|
|
125
125
|
parser.add_argument(
|
|
126
126
|
'--long',
|
|
127
127
|
action='store_true',
|
|
@@ -167,7 +167,7 @@ class ShowEndpoint(command.ShowOne):
|
|
|
167
167
|
_description = _("Display endpoint details")
|
|
168
168
|
|
|
169
169
|
def get_parser(self, prog_name):
|
|
170
|
-
parser = super(
|
|
170
|
+
parser = super().get_parser(prog_name)
|
|
171
171
|
parser.add_argument(
|
|
172
172
|
'endpoint_or_service',
|
|
173
173
|
metavar='<endpoint>',
|
|
@@ -34,7 +34,7 @@ class CreateProject(command.ShowOne):
|
|
|
34
34
|
_description = _("Create new project")
|
|
35
35
|
|
|
36
36
|
def get_parser(self, prog_name):
|
|
37
|
-
parser = super(
|
|
37
|
+
parser = super().get_parser(prog_name)
|
|
38
38
|
parser.add_argument(
|
|
39
39
|
'name',
|
|
40
40
|
metavar='<project-name>',
|
|
@@ -108,7 +108,7 @@ class DeleteProject(command.Command):
|
|
|
108
108
|
_description = _("Delete project(s)")
|
|
109
109
|
|
|
110
110
|
def get_parser(self, prog_name):
|
|
111
|
-
parser = super(
|
|
111
|
+
parser = super().get_parser(prog_name)
|
|
112
112
|
parser.add_argument(
|
|
113
113
|
'projects',
|
|
114
114
|
metavar='<project>',
|
|
@@ -150,7 +150,7 @@ class ListProject(command.Lister):
|
|
|
150
150
|
_description = _("List projects")
|
|
151
151
|
|
|
152
152
|
def get_parser(self, prog_name):
|
|
153
|
-
parser = super(
|
|
153
|
+
parser = super().get_parser(prog_name)
|
|
154
154
|
parser.add_argument(
|
|
155
155
|
'--long',
|
|
156
156
|
action='store_true',
|
|
@@ -193,7 +193,7 @@ class SetProject(command.Command):
|
|
|
193
193
|
_description = _("Set project properties")
|
|
194
194
|
|
|
195
195
|
def get_parser(self, prog_name):
|
|
196
|
-
parser = super(
|
|
196
|
+
parser = super().get_parser(prog_name)
|
|
197
197
|
parser.add_argument(
|
|
198
198
|
'project',
|
|
199
199
|
metavar='<project>',
|
|
@@ -264,7 +264,7 @@ class ShowProject(command.ShowOne):
|
|
|
264
264
|
_description = _("Display project details")
|
|
265
265
|
|
|
266
266
|
def get_parser(self, prog_name):
|
|
267
|
-
parser = super(
|
|
267
|
+
parser = super().get_parser(prog_name)
|
|
268
268
|
parser.add_argument(
|
|
269
269
|
'project',
|
|
270
270
|
metavar='<project>',
|
|
@@ -322,7 +322,7 @@ class UnsetProject(command.Command):
|
|
|
322
322
|
_description = _("Unset project properties")
|
|
323
323
|
|
|
324
324
|
def get_parser(self, prog_name):
|
|
325
|
-
parser = super(
|
|
325
|
+
parser = super().get_parser(prog_name)
|
|
326
326
|
parser.add_argument(
|
|
327
327
|
'project',
|
|
328
328
|
metavar='<project>',
|
|
@@ -32,7 +32,7 @@ class AddRole(command.ShowOne):
|
|
|
32
32
|
_description = _("Add role to project:user")
|
|
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
|
'role',
|
|
38
38
|
metavar='<role>',
|
|
@@ -75,7 +75,7 @@ class CreateRole(command.ShowOne):
|
|
|
75
75
|
_description = _("Create new role")
|
|
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
|
'role_name',
|
|
81
81
|
metavar='<name>',
|
|
@@ -111,7 +111,7 @@ class DeleteRole(command.Command):
|
|
|
111
111
|
_description = _("Delete role(s)")
|
|
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
|
'roles',
|
|
117
117
|
metavar='<role>',
|
|
@@ -176,7 +176,7 @@ class RemoveRole(command.Command):
|
|
|
176
176
|
_description = _("Remove role from project : user")
|
|
177
177
|
|
|
178
178
|
def get_parser(self, prog_name):
|
|
179
|
-
parser = super(
|
|
179
|
+
parser = super().get_parser(prog_name)
|
|
180
180
|
parser.add_argument(
|
|
181
181
|
'role',
|
|
182
182
|
metavar='<role>',
|
|
@@ -211,7 +211,7 @@ class ShowRole(command.ShowOne):
|
|
|
211
211
|
_description = _("Display role details")
|
|
212
212
|
|
|
213
213
|
def get_parser(self, prog_name):
|
|
214
|
-
parser = super(
|
|
214
|
+
parser = super().get_parser(prog_name)
|
|
215
215
|
parser.add_argument(
|
|
216
216
|
'role',
|
|
217
217
|
metavar='<role>',
|
|
@@ -24,7 +24,7 @@ class ListRoleAssignment(command.Lister):
|
|
|
24
24
|
_description = _("List role assignments")
|
|
25
25
|
|
|
26
26
|
def get_parser(self, prog_name):
|
|
27
|
-
parser = super(
|
|
27
|
+
parser = super().get_parser(prog_name)
|
|
28
28
|
parser.add_argument(
|
|
29
29
|
'--user',
|
|
30
30
|
metavar='<user>',
|
|
@@ -32,7 +32,7 @@ class CreateService(command.ShowOne):
|
|
|
32
32
|
_description = _("Create new service")
|
|
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
|
'type',
|
|
38
38
|
metavar='<type>',
|
|
@@ -71,7 +71,7 @@ class DeleteService(command.Command):
|
|
|
71
71
|
_description = _("Delete service(s)")
|
|
72
72
|
|
|
73
73
|
def get_parser(self, prog_name):
|
|
74
|
-
parser = super(
|
|
74
|
+
parser = super().get_parser(prog_name)
|
|
75
75
|
parser.add_argument(
|
|
76
76
|
'services',
|
|
77
77
|
metavar='<service>',
|
|
@@ -110,7 +110,7 @@ class ListService(command.Lister):
|
|
|
110
110
|
_description = _("List services")
|
|
111
111
|
|
|
112
112
|
def get_parser(self, prog_name):
|
|
113
|
-
parser = super(
|
|
113
|
+
parser = super().get_parser(prog_name)
|
|
114
114
|
parser.add_argument(
|
|
115
115
|
'--long',
|
|
116
116
|
action='store_true',
|
|
@@ -135,7 +135,7 @@ class ShowService(command.ShowOne):
|
|
|
135
135
|
_description = _("Display service details")
|
|
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
|
'service',
|
|
141
141
|
metavar='<service>',
|
|
@@ -28,7 +28,7 @@ class IssueToken(command.ShowOne):
|
|
|
28
28
|
required_scope = False
|
|
29
29
|
|
|
30
30
|
def get_parser(self, prog_name):
|
|
31
|
-
parser = super(
|
|
31
|
+
parser = super().get_parser(prog_name)
|
|
32
32
|
return parser
|
|
33
33
|
|
|
34
34
|
def take_action(self, parsed_args):
|
|
@@ -56,7 +56,7 @@ class RevokeToken(command.Command):
|
|
|
56
56
|
_description = _("Revoke existing token")
|
|
57
57
|
|
|
58
58
|
def get_parser(self, prog_name):
|
|
59
|
-
parser = super(
|
|
59
|
+
parser = super().get_parser(prog_name)
|
|
60
60
|
parser.add_argument(
|
|
61
61
|
'token',
|
|
62
62
|
metavar='<token>',
|
|
@@ -42,7 +42,7 @@ class ProjectColumn(cliff_columns.FormattableColumn):
|
|
|
42
42
|
"""
|
|
43
43
|
|
|
44
44
|
def __init__(self, value, project_cache=None):
|
|
45
|
-
super(
|
|
45
|
+
super().__init__(value)
|
|
46
46
|
self.project_cache = project_cache or {}
|
|
47
47
|
|
|
48
48
|
def human_readable(self):
|
|
@@ -59,7 +59,7 @@ class CreateUser(command.ShowOne):
|
|
|
59
59
|
_description = _("Create new user")
|
|
60
60
|
|
|
61
61
|
def get_parser(self, prog_name):
|
|
62
|
-
parser = super(
|
|
62
|
+
parser = super().get_parser(prog_name)
|
|
63
63
|
parser.add_argument(
|
|
64
64
|
'name',
|
|
65
65
|
metavar='<name>',
|
|
@@ -162,7 +162,7 @@ class DeleteUser(command.Command):
|
|
|
162
162
|
_description = _("Delete user(s)")
|
|
163
163
|
|
|
164
164
|
def get_parser(self, prog_name):
|
|
165
|
-
parser = super(
|
|
165
|
+
parser = super().get_parser(prog_name)
|
|
166
166
|
parser.add_argument(
|
|
167
167
|
'users',
|
|
168
168
|
metavar='<user>',
|
|
@@ -205,7 +205,7 @@ class ListUser(command.Lister):
|
|
|
205
205
|
_description = _("List users")
|
|
206
206
|
|
|
207
207
|
def get_parser(self, prog_name):
|
|
208
|
-
parser = super(
|
|
208
|
+
parser = super().get_parser(prog_name)
|
|
209
209
|
parser.add_argument(
|
|
210
210
|
'--project',
|
|
211
211
|
metavar='<project>',
|
|
@@ -252,7 +252,7 @@ class ListUser(command.Lister):
|
|
|
252
252
|
project_cache[p.id] = p
|
|
253
253
|
except Exception:
|
|
254
254
|
# Just forget it if there's any trouble
|
|
255
|
-
pass
|
|
255
|
+
pass # nosec: B110
|
|
256
256
|
formatters['tenantId'] = functools.partial(
|
|
257
257
|
ProjectColumn, project_cache=project_cache
|
|
258
258
|
)
|
|
@@ -294,7 +294,7 @@ class SetUser(command.Command):
|
|
|
294
294
|
_description = _("Set user properties")
|
|
295
295
|
|
|
296
296
|
def get_parser(self, prog_name):
|
|
297
|
-
parser = super(
|
|
297
|
+
parser = super().get_parser(prog_name)
|
|
298
298
|
parser.add_argument(
|
|
299
299
|
'user',
|
|
300
300
|
metavar='<user>',
|
|
@@ -392,7 +392,7 @@ class ShowUser(command.ShowOne):
|
|
|
392
392
|
_description = _("Display user details")
|
|
393
393
|
|
|
394
394
|
def get_parser(self, prog_name):
|
|
395
|
-
parser = super(
|
|
395
|
+
parser = super().get_parser(prog_name)
|
|
396
396
|
parser.add_argument(
|
|
397
397
|
'user',
|
|
398
398
|
metavar='<user>',
|
|
@@ -32,7 +32,7 @@ class DeleteAccessRule(command.Command):
|
|
|
32
32
|
_description = _("Delete access rule(s)")
|
|
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
|
'access_rule',
|
|
38
38
|
metavar='<access-rule>',
|
|
@@ -73,7 +73,7 @@ class ListAccessRule(command.Lister):
|
|
|
73
73
|
_description = _("List access rules")
|
|
74
74
|
|
|
75
75
|
def get_parser(self, prog_name):
|
|
76
|
-
parser = super(
|
|
76
|
+
parser = super().get_parser(prog_name)
|
|
77
77
|
parser.add_argument(
|
|
78
78
|
'--user',
|
|
79
79
|
metavar='<user>',
|
|
@@ -110,7 +110,7 @@ class ShowAccessRule(command.ShowOne):
|
|
|
110
110
|
_description = _("Display access rule details")
|
|
111
111
|
|
|
112
112
|
def get_parser(self, prog_name):
|
|
113
|
-
parser = super(
|
|
113
|
+
parser = super().get_parser(prog_name)
|
|
114
114
|
parser.add_argument(
|
|
115
115
|
'access_rule',
|
|
116
116
|
metavar='<access-rule>',
|