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
openstackclient/shell.py
CHANGED
|
@@ -16,7 +16,9 @@
|
|
|
16
16
|
|
|
17
17
|
"""Command-line interface to the OpenStack APIs"""
|
|
18
18
|
|
|
19
|
+
import argparse
|
|
19
20
|
import sys
|
|
21
|
+
from typing import Any
|
|
20
22
|
import warnings
|
|
21
23
|
|
|
22
24
|
from osc_lib.api import auth
|
|
@@ -31,14 +33,16 @@ DEFAULT_DOMAIN = 'default'
|
|
|
31
33
|
# core OSC
|
|
32
34
|
IGNORED_MODULES = (
|
|
33
35
|
'neutron_taas.taas_client.osc',
|
|
36
|
+
'neutronclient.osc.v2.fwaas',
|
|
34
37
|
'neutronclient.osc.v2.taas',
|
|
38
|
+
'neutronclient.osc.v2.networking_bgpvpn',
|
|
35
39
|
)
|
|
36
40
|
|
|
37
41
|
|
|
38
42
|
class OpenStackShell(shell.OpenStackShell):
|
|
39
43
|
client_manager: clientmanager.ClientManager
|
|
40
44
|
|
|
41
|
-
def __init__(self):
|
|
45
|
+
def __init__(self) -> None:
|
|
42
46
|
command_manager = commandmanager.CommandManager(
|
|
43
47
|
'openstack.cli', ignored_modules=IGNORED_MODULES
|
|
44
48
|
)
|
|
@@ -59,7 +63,12 @@ class OpenStackShell(shell.OpenStackShell):
|
|
|
59
63
|
# about them
|
|
60
64
|
warnings.filterwarnings('ignore', module='openstack')
|
|
61
65
|
|
|
62
|
-
def build_option_parser(
|
|
66
|
+
def build_option_parser(
|
|
67
|
+
self,
|
|
68
|
+
description: str | None,
|
|
69
|
+
version: str | None,
|
|
70
|
+
argparse_kwargs: dict[str, Any] | None = None,
|
|
71
|
+
) -> argparse.ArgumentParser:
|
|
63
72
|
parser = super().build_option_parser(
|
|
64
73
|
description, version, argparse_kwargs
|
|
65
74
|
)
|
|
@@ -67,7 +76,7 @@ class OpenStackShell(shell.OpenStackShell):
|
|
|
67
76
|
parser = auth.build_auth_plugins_option_parser(parser)
|
|
68
77
|
return parser
|
|
69
78
|
|
|
70
|
-
def _final_defaults(self):
|
|
79
|
+
def _final_defaults(self) -> None:
|
|
71
80
|
super()._final_defaults()
|
|
72
81
|
|
|
73
82
|
# Set the default plugin to admin_token if endpoint and token are given
|
|
@@ -77,7 +86,7 @@ class OpenStackShell(shell.OpenStackShell):
|
|
|
77
86
|
else:
|
|
78
87
|
self._auth_type = 'password'
|
|
79
88
|
|
|
80
|
-
def _load_plugins(self):
|
|
89
|
+
def _load_plugins(self) -> None:
|
|
81
90
|
"""Load plugins via stevedore."""
|
|
82
91
|
# Loop through extensions to get API versions
|
|
83
92
|
for mod in clientmanager.PLUGIN_MODULES:
|
|
@@ -128,16 +137,43 @@ class OpenStackShell(shell.OpenStackShell):
|
|
|
128
137
|
},
|
|
129
138
|
)
|
|
130
139
|
|
|
131
|
-
#
|
|
132
|
-
|
|
133
|
-
|
|
140
|
+
# Build our command group which we expect to look like:
|
|
141
|
+
#
|
|
142
|
+
# openstack.<service>.vN
|
|
143
|
+
#
|
|
144
|
+
# Note that command groups deal only with major versions
|
|
145
|
+
cmd_group = '.'.join(
|
|
146
|
+
[
|
|
147
|
+
'openstack',
|
|
148
|
+
api.replace('-', '_'),
|
|
149
|
+
'v' + version_opt.replace('.', '_').split('_')[0],
|
|
150
|
+
]
|
|
151
|
+
)
|
|
134
152
|
self.command_manager.add_command_group(cmd_group)
|
|
135
153
|
self.log.debug(
|
|
136
154
|
'%(name)s API version %(version)s, cmd group %(group)s',
|
|
137
155
|
{'name': api, 'version': version_opt, 'group': cmd_group},
|
|
138
156
|
)
|
|
139
157
|
|
|
140
|
-
|
|
158
|
+
mod_extensions = getattr(mod, 'API_EXTENSIONS', None)
|
|
159
|
+
if not mod_extensions:
|
|
160
|
+
continue
|
|
161
|
+
|
|
162
|
+
for extension in mod_extensions:
|
|
163
|
+
extension_cmd_group = '.'.join([cmd_group, extension])
|
|
164
|
+
self.command_manager.add_command_group(extension_cmd_group)
|
|
165
|
+
self.log.debug(
|
|
166
|
+
'%(name)s API version %(version)s '
|
|
167
|
+
'(%(extension)s extension), cmd group %(group)s',
|
|
168
|
+
{
|
|
169
|
+
'name': api,
|
|
170
|
+
'version': version_opt,
|
|
171
|
+
'extension': extension,
|
|
172
|
+
'group': cmd_group,
|
|
173
|
+
},
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
def _load_commands(self) -> None:
|
|
141
177
|
"""Load commands via cliff/stevedore
|
|
142
178
|
|
|
143
179
|
osc-lib has no opinion on what commands should be loaded
|
|
@@ -157,7 +193,7 @@ class OpenStackShell(shell.OpenStackShell):
|
|
|
157
193
|
# }
|
|
158
194
|
self.command_manager.add_command_group('openstack.extension')
|
|
159
195
|
|
|
160
|
-
def initialize_app(self, argv):
|
|
196
|
+
def initialize_app(self, argv: list[str]) -> None:
|
|
161
197
|
super().initialize_app(argv)
|
|
162
198
|
|
|
163
199
|
# Re-create the client_manager with our subclass
|
|
@@ -168,7 +204,7 @@ class OpenStackShell(shell.OpenStackShell):
|
|
|
168
204
|
)
|
|
169
205
|
|
|
170
206
|
|
|
171
|
-
def main(argv=None):
|
|
207
|
+
def main(argv: list[str] | None = None) -> int:
|
|
172
208
|
if argv is None:
|
|
173
209
|
argv = sys.argv[1:]
|
|
174
210
|
|
|
@@ -10,11 +10,13 @@
|
|
|
10
10
|
# License for the specific language governing permissions and limitations
|
|
11
11
|
# under the License.
|
|
12
12
|
|
|
13
|
+
from collections.abc import Iterable, Mapping, Sequence
|
|
13
14
|
import json
|
|
14
15
|
import logging
|
|
15
16
|
import os
|
|
16
17
|
import shlex
|
|
17
18
|
import subprocess
|
|
19
|
+
from typing import Any, Literal, cast, overload
|
|
18
20
|
|
|
19
21
|
from tempest.lib.cli import output_parser
|
|
20
22
|
from tempest.lib import exceptions
|
|
@@ -24,7 +26,7 @@ ADMIN_CLOUD = os.environ.get('OS_ADMIN_CLOUD', 'devstack-admin')
|
|
|
24
26
|
LOG = logging.getLogger(__name__)
|
|
25
27
|
|
|
26
28
|
|
|
27
|
-
def execute(cmd, *, fail_ok=False):
|
|
29
|
+
def execute(cmd: str, *, fail_ok: bool = False) -> str:
|
|
28
30
|
"""Executes specified command for the given action."""
|
|
29
31
|
LOG.debug('Executing: %s', cmd)
|
|
30
32
|
cmdlist = shlex.split(cmd)
|
|
@@ -53,15 +55,37 @@ def execute(cmd, *, fail_ok=False):
|
|
|
53
55
|
|
|
54
56
|
|
|
55
57
|
class TestCase(testtools.TestCase):
|
|
58
|
+
@overload
|
|
56
59
|
@classmethod
|
|
57
60
|
def openstack(
|
|
58
61
|
cls,
|
|
59
|
-
cmd,
|
|
62
|
+
cmd: str,
|
|
60
63
|
*,
|
|
61
|
-
cloud=ADMIN_CLOUD,
|
|
62
|
-
fail_ok=False,
|
|
63
|
-
parse_output=False,
|
|
64
|
-
):
|
|
64
|
+
cloud: str | None = ADMIN_CLOUD,
|
|
65
|
+
fail_ok: bool = False,
|
|
66
|
+
parse_output: Literal[False] = False,
|
|
67
|
+
) -> str: ...
|
|
68
|
+
|
|
69
|
+
@overload
|
|
70
|
+
@classmethod
|
|
71
|
+
def openstack(
|
|
72
|
+
cls,
|
|
73
|
+
cmd: str,
|
|
74
|
+
*,
|
|
75
|
+
cloud: str | None = ADMIN_CLOUD,
|
|
76
|
+
fail_ok: bool = False,
|
|
77
|
+
parse_output: Literal[True] = ...,
|
|
78
|
+
) -> Any: ...
|
|
79
|
+
|
|
80
|
+
@classmethod
|
|
81
|
+
def openstack(
|
|
82
|
+
cls,
|
|
83
|
+
cmd: str,
|
|
84
|
+
*,
|
|
85
|
+
cloud: str | None = ADMIN_CLOUD,
|
|
86
|
+
fail_ok: bool = False,
|
|
87
|
+
parse_output: bool = False,
|
|
88
|
+
) -> str | Any:
|
|
65
89
|
"""Executes openstackclient command for the given action
|
|
66
90
|
|
|
67
91
|
:param cmd: A string representation of the command to execute.
|
|
@@ -92,7 +116,7 @@ class TestCase(testtools.TestCase):
|
|
|
92
116
|
format_args.append('-f json')
|
|
93
117
|
|
|
94
118
|
output = execute(
|
|
95
|
-
' '.join(['openstack'
|
|
119
|
+
' '.join(['openstack', *auth_args, cmd, *format_args]),
|
|
96
120
|
fail_ok=fail_ok,
|
|
97
121
|
)
|
|
98
122
|
|
|
@@ -106,7 +130,9 @@ class TestCase(testtools.TestCase):
|
|
|
106
130
|
return output
|
|
107
131
|
|
|
108
132
|
@classmethod
|
|
109
|
-
def is_service_enabled(
|
|
133
|
+
def is_service_enabled(
|
|
134
|
+
cls, service: str, version: str | None = None
|
|
135
|
+
) -> bool:
|
|
110
136
|
"""Ask client cloud if service is available
|
|
111
137
|
|
|
112
138
|
:param service: The service name or type. This should be either an
|
|
@@ -126,7 +152,9 @@ class TestCase(testtools.TestCase):
|
|
|
126
152
|
return bool(ret)
|
|
127
153
|
|
|
128
154
|
@classmethod
|
|
129
|
-
def is_extension_enabled(
|
|
155
|
+
def is_extension_enabled(
|
|
156
|
+
cls, alias: str, *, service: str = 'network'
|
|
157
|
+
) -> bool:
|
|
130
158
|
"""Ask client cloud if extension is enabled"""
|
|
131
159
|
extensions = cls.openstack(
|
|
132
160
|
f'extension list --{service}',
|
|
@@ -135,38 +163,44 @@ class TestCase(testtools.TestCase):
|
|
|
135
163
|
return alias in [x['Alias'] for x in extensions]
|
|
136
164
|
|
|
137
165
|
@classmethod
|
|
138
|
-
def get_openstack_configuration_value(cls, configuration):
|
|
166
|
+
def get_openstack_configuration_value(cls, configuration: str) -> str:
|
|
139
167
|
opts = cls.get_opts([configuration])
|
|
140
168
|
return cls.openstack('configuration show ' + opts)
|
|
141
169
|
|
|
142
170
|
@classmethod
|
|
143
|
-
def get_opts(cls, fields, output_format='value'):
|
|
171
|
+
def get_opts(cls, fields: list[str], output_format: str = 'value') -> str:
|
|
144
172
|
return ' -f {} {}'.format(
|
|
145
173
|
output_format, ' '.join(['-c ' + it for it in fields])
|
|
146
174
|
)
|
|
147
175
|
|
|
148
176
|
@classmethod
|
|
149
|
-
def assertOutput(cls, expected, actual):
|
|
177
|
+
def assertOutput(cls, expected: str, actual: str) -> None:
|
|
150
178
|
if expected != actual:
|
|
151
179
|
raise Exception(expected + ' != ' + actual)
|
|
152
180
|
|
|
153
181
|
@classmethod
|
|
154
|
-
def assertInOutput(cls, expected, actual):
|
|
182
|
+
def assertInOutput(cls, expected: str, actual: str) -> None:
|
|
155
183
|
if expected not in actual:
|
|
156
184
|
raise Exception(expected + ' not in ' + actual)
|
|
157
185
|
|
|
158
186
|
@classmethod
|
|
159
|
-
def assertsOutputNotNone(cls, observed):
|
|
187
|
+
def assertsOutputNotNone(cls, observed: Any) -> None:
|
|
160
188
|
if observed is None:
|
|
161
189
|
raise Exception('No output observed')
|
|
162
190
|
|
|
163
|
-
def assert_table_structure(
|
|
191
|
+
def assert_table_structure(
|
|
192
|
+
self, items: Iterable[Mapping[str, Any]], field_names: Sequence[str]
|
|
193
|
+
) -> None:
|
|
164
194
|
"""Verify that all items have keys listed in field_names."""
|
|
165
195
|
for item in items:
|
|
166
196
|
for field in field_names:
|
|
167
197
|
self.assertIn(field, item)
|
|
168
198
|
|
|
169
|
-
def assert_show_fields(
|
|
199
|
+
def assert_show_fields(
|
|
200
|
+
self,
|
|
201
|
+
show_output: Iterable[Mapping[str, Any]],
|
|
202
|
+
field_names: Sequence[str],
|
|
203
|
+
) -> None:
|
|
170
204
|
"""Verify that all items have keys listed in field_names."""
|
|
171
205
|
|
|
172
206
|
# field_names = ['name', 'description']
|
|
@@ -186,17 +220,18 @@ class TestCase(testtools.TestCase):
|
|
|
186
220
|
o.update(item)
|
|
187
221
|
return o
|
|
188
222
|
|
|
189
|
-
def parse_show(self, raw_output):
|
|
223
|
+
def parse_show(self, raw_output: str) -> list[dict[str, Any]]:
|
|
190
224
|
"""Return list of dicts with item values parsed from cli output."""
|
|
191
225
|
|
|
192
226
|
items = []
|
|
193
227
|
table_ = output_parser.table(raw_output)
|
|
194
228
|
for row in table_['values']:
|
|
195
229
|
item = {}
|
|
196
|
-
item[row[0]] = row[1]
|
|
230
|
+
item[str(row[0])] = row[1]
|
|
197
231
|
items.append(item)
|
|
198
232
|
return items
|
|
199
233
|
|
|
200
|
-
def parse_listing(self, raw_output):
|
|
234
|
+
def parse_listing(self, raw_output: str) -> list[dict[str, Any]]:
|
|
201
235
|
"""Return list of dicts with basic item parsed from cli output."""
|
|
202
|
-
|
|
236
|
+
# need to add hints to tempest
|
|
237
|
+
return cast(list[dict[str, Any]], output_parser.listing(raw_output))
|
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
# License for the specific language governing permissions and limitations
|
|
14
14
|
# under the License.
|
|
15
15
|
|
|
16
|
+
from typing import ClassVar
|
|
17
|
+
|
|
16
18
|
from tempest.lib import exceptions as tempest_exc
|
|
17
19
|
|
|
18
20
|
from openstackclient.tests.functional import base
|
|
@@ -21,6 +23,8 @@ from openstackclient.tests.functional import base
|
|
|
21
23
|
class ExtensionTests(base.TestCase):
|
|
22
24
|
"""Functional tests for extension"""
|
|
23
25
|
|
|
26
|
+
haz_network: ClassVar[bool]
|
|
27
|
+
|
|
24
28
|
@classmethod
|
|
25
29
|
def setUpClass(cls):
|
|
26
30
|
super().setUpClass()
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
# License for the specific language governing permissions and limitations
|
|
11
11
|
# under the License.
|
|
12
12
|
|
|
13
|
+
from typing import ClassVar
|
|
13
14
|
import uuid
|
|
14
15
|
|
|
15
16
|
from tempest.lib.common.utils import data_utils
|
|
@@ -25,7 +26,8 @@ class QuotaTests(base.TestCase):
|
|
|
25
26
|
test runs as these may run in parallel and otherwise step on each other.
|
|
26
27
|
"""
|
|
27
28
|
|
|
28
|
-
|
|
29
|
+
haz_network: ClassVar[bool]
|
|
30
|
+
PROJECT_NAME: ClassVar[str]
|
|
29
31
|
|
|
30
32
|
@classmethod
|
|
31
33
|
def setUpClass(cls):
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
#
|
|
13
13
|
|
|
14
14
|
import time
|
|
15
|
+
from typing import cast
|
|
15
16
|
import uuid
|
|
16
17
|
|
|
17
18
|
from tempest.lib import exceptions
|
|
@@ -35,18 +36,18 @@ class ComputeTestCase(base.TestCase):
|
|
|
35
36
|
|
|
36
37
|
@classmethod
|
|
37
38
|
def get_flavor(cls) -> str:
|
|
39
|
+
valid_flavors = ['m1.tiny', 'cirros256']
|
|
38
40
|
# NOTE(rtheis): Get cirros256 or m1.tiny flavors since functional
|
|
39
41
|
# tests may create other flavors.
|
|
40
42
|
flavors = cls.openstack("flavor list", parse_output=True)
|
|
41
|
-
server_flavor = None
|
|
42
43
|
for flavor in flavors:
|
|
43
44
|
if flavor['Name'] in ['m1.tiny', 'cirros256']:
|
|
44
|
-
|
|
45
|
-
break
|
|
46
|
-
|
|
47
|
-
assert server_flavor is not None
|
|
45
|
+
return cast(str, flavor['Name'])
|
|
48
46
|
|
|
49
|
-
|
|
47
|
+
raise Exception(
|
|
48
|
+
f'Failed to find a suitable flavor. Required one of: '
|
|
49
|
+
f'{", ".join(valid_flavors)}'
|
|
50
|
+
)
|
|
50
51
|
|
|
51
52
|
@classmethod
|
|
52
53
|
def get_image(cls) -> str:
|
|
@@ -54,18 +55,17 @@ class ComputeTestCase(base.TestCase):
|
|
|
54
55
|
# create other images. Image may be named '-uec' or
|
|
55
56
|
# '-disk'.
|
|
56
57
|
images = cls.openstack("image list", parse_output=True)
|
|
57
|
-
server_image = None
|
|
58
58
|
for image in images:
|
|
59
59
|
if image['Name'].startswith('cirros-') and (
|
|
60
60
|
image['Name'].endswith('-uec')
|
|
61
61
|
or image['Name'].endswith('-disk')
|
|
62
62
|
):
|
|
63
|
-
|
|
64
|
-
break
|
|
63
|
+
return cast(str, image['Name'])
|
|
65
64
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
65
|
+
raise Exception(
|
|
66
|
+
'Failed to find a suitable image. Required one matching one of '
|
|
67
|
+
'the following patterns: cirros-*-uec, cirros-*-disk'
|
|
68
|
+
)
|
|
69
69
|
|
|
70
70
|
@classmethod
|
|
71
71
|
def get_network(cls) -> str:
|
|
@@ -78,7 +78,8 @@ class ComputeTestCase(base.TestCase):
|
|
|
78
78
|
)
|
|
79
79
|
except exceptions.CommandFailed:
|
|
80
80
|
return ''
|
|
81
|
-
|
|
81
|
+
|
|
82
|
+
return '='.join(('--nic net-id', cmd_output['id']))
|
|
82
83
|
|
|
83
84
|
def server_create(self, name=None, cleanup=True):
|
|
84
85
|
"""Create server, with cleanup"""
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
# License for the specific language governing permissions and limitations
|
|
11
11
|
# under the License.
|
|
12
12
|
|
|
13
|
+
from typing import ClassVar
|
|
13
14
|
import uuid
|
|
14
15
|
|
|
15
16
|
from openstackclient.tests.functional import base
|
|
@@ -19,6 +20,7 @@ class FlavorTests(base.TestCase):
|
|
|
19
20
|
"""Functional tests for flavor."""
|
|
20
21
|
|
|
21
22
|
PROJECT_NAME = uuid.uuid4().hex
|
|
23
|
+
PROJECT_ID: ClassVar[str]
|
|
22
24
|
|
|
23
25
|
@classmethod
|
|
24
26
|
def setUpClass(cls):
|
|
@@ -28,7 +30,7 @@ class FlavorTests(base.TestCase):
|
|
|
28
30
|
"project create --enable " + cls.PROJECT_NAME,
|
|
29
31
|
parse_output=True,
|
|
30
32
|
)
|
|
31
|
-
cls.
|
|
33
|
+
cls.PROJECT_ID = cmd_output["id"]
|
|
32
34
|
|
|
33
35
|
@classmethod
|
|
34
36
|
def tearDownClass(cls):
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
import itertools
|
|
14
14
|
import json
|
|
15
15
|
import time
|
|
16
|
+
from typing import ClassVar
|
|
16
17
|
import uuid
|
|
17
18
|
|
|
18
19
|
from tempest.lib import exceptions
|
|
@@ -25,6 +26,8 @@ from openstackclient.tests.functional.volume.v2 import common as volume_common
|
|
|
25
26
|
class ServerTests(common.ComputeTestCase):
|
|
26
27
|
"""Functional tests for openstack server commands"""
|
|
27
28
|
|
|
29
|
+
haz_network: ClassVar[bool]
|
|
30
|
+
|
|
28
31
|
@classmethod
|
|
29
32
|
def setUpClass(cls):
|
|
30
33
|
super().setUpClass()
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
# under the License.
|
|
12
12
|
|
|
13
13
|
import os
|
|
14
|
+
from typing import ClassVar
|
|
14
15
|
import unittest
|
|
15
16
|
|
|
16
17
|
import fixtures
|
|
@@ -57,19 +58,22 @@ class IdentityTests(base.TestCase):
|
|
|
57
58
|
CATALOG_LIST_HEADERS = ['Name', 'Type', 'Endpoints']
|
|
58
59
|
ENDPOINT_LIST_HEADERS = ['ID', 'Region', 'Service Name', 'Service Type']
|
|
59
60
|
|
|
61
|
+
PROJECT_NAME: ClassVar[str]
|
|
62
|
+
PROJECT_DESCRIPTION: ClassVar[str]
|
|
63
|
+
|
|
60
64
|
@classmethod
|
|
61
65
|
def setUpClass(cls):
|
|
62
66
|
super().setUpClass()
|
|
63
67
|
# create dummy project
|
|
64
|
-
cls.
|
|
65
|
-
cls.
|
|
68
|
+
cls.PROJECT_NAME = data_utils.rand_name('TestProject')
|
|
69
|
+
cls.PROJECT_DESCRIPTION = data_utils.rand_name('description')
|
|
66
70
|
try:
|
|
67
71
|
cls.openstack(
|
|
68
72
|
'--os-identity-api-version 2 '
|
|
69
73
|
'project create '
|
|
70
|
-
f'--description {cls.
|
|
74
|
+
f'--description {cls.PROJECT_DESCRIPTION} '
|
|
71
75
|
'--enable '
|
|
72
|
-
f'{cls.
|
|
76
|
+
f'{cls.PROJECT_NAME}'
|
|
73
77
|
)
|
|
74
78
|
except tempest_exceptions.CommandFailed:
|
|
75
79
|
# Good chance this is due to Identity v2 admin not being enabled
|
|
@@ -83,7 +87,7 @@ class IdentityTests(base.TestCase):
|
|
|
83
87
|
try:
|
|
84
88
|
cls.openstack(
|
|
85
89
|
'--os-identity-api-version 2 '
|
|
86
|
-
f'project delete {cls.
|
|
90
|
+
f'project delete {cls.PROJECT_NAME}'
|
|
87
91
|
)
|
|
88
92
|
finally:
|
|
89
93
|
super().tearDownClass()
|
|
@@ -125,7 +129,7 @@ class IdentityTests(base.TestCase):
|
|
|
125
129
|
email = data_utils.rand_name() + '@example.com'
|
|
126
130
|
raw_output = self.openstack(
|
|
127
131
|
'user create '
|
|
128
|
-
f'--project {self.
|
|
132
|
+
f'--project {self.PROJECT_NAME} '
|
|
129
133
|
f'--password {password} '
|
|
130
134
|
f'--email {email} '
|
|
131
135
|
'--enable '
|
|
@@ -39,14 +39,14 @@ class RoleTests(common.IdentityTests):
|
|
|
39
39
|
username = self._create_dummy_user()
|
|
40
40
|
raw_output = self.openstack(
|
|
41
41
|
'role add '
|
|
42
|
-
f'--project {self.
|
|
42
|
+
f'--project {self.PROJECT_NAME} '
|
|
43
43
|
f'--user {username} '
|
|
44
44
|
f'{role_name}'
|
|
45
45
|
)
|
|
46
46
|
self.addCleanup(
|
|
47
47
|
self.openstack,
|
|
48
48
|
'role remove '
|
|
49
|
-
f'--project {self.
|
|
49
|
+
f'--project {self.PROJECT_NAME} '
|
|
50
50
|
f'--user {username} '
|
|
51
51
|
f'{role_name}',
|
|
52
52
|
)
|
|
@@ -58,13 +58,13 @@ class RoleTests(common.IdentityTests):
|
|
|
58
58
|
username = self._create_dummy_user()
|
|
59
59
|
add_raw_output = self.openstack(
|
|
60
60
|
'role add '
|
|
61
|
-
f'--project {self.
|
|
61
|
+
f'--project {self.PROJECT_NAME} '
|
|
62
62
|
f'--user {username} '
|
|
63
63
|
f'{role_name}'
|
|
64
64
|
)
|
|
65
65
|
del_raw_output = self.openstack(
|
|
66
66
|
'role remove '
|
|
67
|
-
f'--project {self.
|
|
67
|
+
f'--project {self.PROJECT_NAME} '
|
|
68
68
|
f'--user {username} '
|
|
69
69
|
f'{role_name}'
|
|
70
70
|
)
|