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
|
@@ -25,7 +25,7 @@ from openstackclient.identity.v3 import role_assignment
|
|
|
25
25
|
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
|
|
26
26
|
|
|
27
27
|
|
|
28
|
-
class TestRoleAssignmentList(identity_fakes.
|
|
28
|
+
class TestRoleAssignmentList(identity_fakes.TestIdentity):
|
|
29
29
|
columns = (
|
|
30
30
|
'Role',
|
|
31
31
|
'User',
|
|
@@ -22,7 +22,7 @@ from openstackclient.identity.v3 import service
|
|
|
22
22
|
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
|
|
23
23
|
|
|
24
24
|
|
|
25
|
-
class TestServiceCreate(identity_fakes.
|
|
25
|
+
class TestServiceCreate(identity_fakes.TestIdentity):
|
|
26
26
|
columns = (
|
|
27
27
|
'id',
|
|
28
28
|
'name',
|
|
@@ -163,7 +163,7 @@ class TestServiceCreate(identity_fakes.TestIdentityv3):
|
|
|
163
163
|
self.assertEqual(self.datalist, data)
|
|
164
164
|
|
|
165
165
|
|
|
166
|
-
class TestServiceDelete(identity_fakes.
|
|
166
|
+
class TestServiceDelete(identity_fakes.TestIdentity):
|
|
167
167
|
service = sdk_fakes.generate_fake_resource(_service.Service)
|
|
168
168
|
|
|
169
169
|
def setUp(self):
|
|
@@ -195,7 +195,7 @@ class TestServiceDelete(identity_fakes.TestIdentityv3):
|
|
|
195
195
|
self.assertIsNone(result)
|
|
196
196
|
|
|
197
197
|
|
|
198
|
-
class TestServiceList(identity_fakes.
|
|
198
|
+
class TestServiceList(identity_fakes.TestIdentity):
|
|
199
199
|
service = sdk_fakes.generate_fake_resource(_service.Service)
|
|
200
200
|
|
|
201
201
|
def setUp(self):
|
|
@@ -259,7 +259,7 @@ class TestServiceList(identity_fakes.TestIdentityv3):
|
|
|
259
259
|
self.assertEqual(datalist, tuple(data))
|
|
260
260
|
|
|
261
261
|
|
|
262
|
-
class TestServiceSet(identity_fakes.
|
|
262
|
+
class TestServiceSet(identity_fakes.TestIdentity):
|
|
263
263
|
service = sdk_fakes.generate_fake_resource(_service.Service)
|
|
264
264
|
|
|
265
265
|
def setUp(self):
|
|
@@ -420,7 +420,7 @@ class TestServiceSet(identity_fakes.TestIdentityv3):
|
|
|
420
420
|
self.assertIsNone(result)
|
|
421
421
|
|
|
422
422
|
|
|
423
|
-
class TestServiceShow(identity_fakes.
|
|
423
|
+
class TestServiceShow(identity_fakes.TestIdentity):
|
|
424
424
|
service = sdk_fakes.generate_fake_resource(_service.Service)
|
|
425
425
|
|
|
426
426
|
def setUp(self):
|
|
@@ -16,7 +16,7 @@ from openstackclient.identity.v3 import token
|
|
|
16
16
|
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
class TestTokenIssue(identity_fakes.
|
|
19
|
+
class TestTokenIssue(identity_fakes.TestIdentity):
|
|
20
20
|
def setUp(self):
|
|
21
21
|
super().setUp()
|
|
22
22
|
|
|
@@ -99,7 +99,7 @@ class TestTokenIssue(identity_fakes.TestIdentityv3):
|
|
|
99
99
|
self.assertEqual(datalist, data)
|
|
100
100
|
|
|
101
101
|
|
|
102
|
-
class TestTokenRevoke(identity_fakes.
|
|
102
|
+
class TestTokenRevoke(identity_fakes.TestIdentity):
|
|
103
103
|
TOKEN = 'fob'
|
|
104
104
|
|
|
105
105
|
def setUp(self):
|
|
@@ -26,7 +26,7 @@ from openstackclient.identity.v3 import trust
|
|
|
26
26
|
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
class TestTrustCreate(identity_fakes.
|
|
29
|
+
class TestTrustCreate(identity_fakes.TestIdentity):
|
|
30
30
|
def setUp(self):
|
|
31
31
|
super().setUp()
|
|
32
32
|
|
|
@@ -109,7 +109,7 @@ class TestTrustCreate(identity_fakes.TestIdentityv3):
|
|
|
109
109
|
self.assertEqual(datalist, data)
|
|
110
110
|
|
|
111
111
|
|
|
112
|
-
class TestTrustDelete(identity_fakes.
|
|
112
|
+
class TestTrustDelete(identity_fakes.TestIdentity):
|
|
113
113
|
def setUp(self):
|
|
114
114
|
super().setUp()
|
|
115
115
|
|
|
@@ -166,7 +166,7 @@ class TestTrustDelete(identity_fakes.TestIdentityv3):
|
|
|
166
166
|
)
|
|
167
167
|
|
|
168
168
|
|
|
169
|
-
class TestTrustList(identity_fakes.
|
|
169
|
+
class TestTrustList(identity_fakes.TestIdentity):
|
|
170
170
|
def setUp(self):
|
|
171
171
|
super().setUp()
|
|
172
172
|
|
|
@@ -341,7 +341,7 @@ class TestTrustList(identity_fakes.TestIdentityv3):
|
|
|
341
341
|
self.assertEqual(datalist, tuple(data))
|
|
342
342
|
|
|
343
343
|
|
|
344
|
-
class TestTrustShow(identity_fakes.
|
|
344
|
+
class TestTrustShow(identity_fakes.TestIdentity):
|
|
345
345
|
def setUp(self):
|
|
346
346
|
super().setUp()
|
|
347
347
|
|
|
@@ -31,7 +31,7 @@ from openstackclient.identity.v3 import user
|
|
|
31
31
|
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
|
|
32
32
|
|
|
33
33
|
|
|
34
|
-
class TestUserCreate(identity_fakes.
|
|
34
|
+
class TestUserCreate(identity_fakes.TestIdentity):
|
|
35
35
|
domain = sdk_fakes.generate_fake_resource(_domain.Domain)
|
|
36
36
|
project = sdk_fakes.generate_fake_resource(_project.Project)
|
|
37
37
|
|
|
@@ -777,7 +777,7 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
777
777
|
self.assertEqual(self.datalist, data)
|
|
778
778
|
|
|
779
779
|
|
|
780
|
-
class TestUserDelete(identity_fakes.
|
|
780
|
+
class TestUserDelete(identity_fakes.TestIdentity):
|
|
781
781
|
user = sdk_fakes.generate_fake_resource(_user.User)
|
|
782
782
|
|
|
783
783
|
def setUp(self):
|
|
@@ -840,7 +840,7 @@ class TestUserDelete(identity_fakes.TestIdentityv3):
|
|
|
840
840
|
)
|
|
841
841
|
|
|
842
842
|
|
|
843
|
-
class TestUserList(identity_fakes.
|
|
843
|
+
class TestUserList(identity_fakes.TestIdentity):
|
|
844
844
|
domain = sdk_fakes.generate_fake_resource(_domain.Domain)
|
|
845
845
|
project = sdk_fakes.generate_fake_resource(_project.Project)
|
|
846
846
|
user = sdk_fakes.generate_fake_resource(
|
|
@@ -1034,8 +1034,75 @@ class TestUserList(identity_fakes.TestIdentityv3):
|
|
|
1034
1034
|
self.assertEqual(self.columns, columns)
|
|
1035
1035
|
self.assertEqual(self.datalist, tuple(data))
|
|
1036
1036
|
|
|
1037
|
+
def test_user_list_with_pagination(self):
|
|
1038
|
+
arglist = [
|
|
1039
|
+
'--limit',
|
|
1040
|
+
'2',
|
|
1041
|
+
'--marker',
|
|
1042
|
+
'some-marker',
|
|
1043
|
+
]
|
|
1044
|
+
verifylist = [
|
|
1045
|
+
('limit', 2),
|
|
1046
|
+
('marker', 'some-marker'),
|
|
1047
|
+
]
|
|
1048
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
1049
|
+
|
|
1050
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
1051
|
+
|
|
1052
|
+
kwargs = {
|
|
1053
|
+
'domain_id': None,
|
|
1054
|
+
'limit': 2,
|
|
1055
|
+
'marker': 'some-marker',
|
|
1056
|
+
}
|
|
1057
|
+
self.identity_sdk_client.users.assert_called_with(**kwargs)
|
|
1058
|
+
|
|
1059
|
+
self.assertEqual(self.columns, columns)
|
|
1060
|
+
self.assertEqual(self.datalist, tuple(data))
|
|
1061
|
+
|
|
1062
|
+
def test_user_list_with_pagination_and_group(self):
|
|
1063
|
+
arglist = [
|
|
1064
|
+
'--group',
|
|
1065
|
+
self.group.name,
|
|
1066
|
+
'--limit',
|
|
1067
|
+
'5',
|
|
1068
|
+
]
|
|
1069
|
+
verifylist = [
|
|
1070
|
+
('group', self.group.name),
|
|
1071
|
+
('limit', 5),
|
|
1072
|
+
]
|
|
1073
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
1074
|
+
|
|
1075
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
1076
|
+
|
|
1077
|
+
kwargs = {
|
|
1078
|
+
'domain_id': None,
|
|
1079
|
+
'group': self.group.id,
|
|
1080
|
+
'limit': 5,
|
|
1081
|
+
}
|
|
1082
|
+
self.identity_sdk_client.group_users.assert_called_with(**kwargs)
|
|
1037
1083
|
|
|
1038
|
-
|
|
1084
|
+
self.assertEqual(self.columns, columns)
|
|
1085
|
+
self.assertEqual(self.datalist, tuple(data))
|
|
1086
|
+
|
|
1087
|
+
def test_user_list_pagination_with_project_fails(self):
|
|
1088
|
+
arglist = [
|
|
1089
|
+
'--project',
|
|
1090
|
+
self.project.name,
|
|
1091
|
+
'--limit',
|
|
1092
|
+
'2',
|
|
1093
|
+
]
|
|
1094
|
+
verifylist = [
|
|
1095
|
+
('project', self.project.name),
|
|
1096
|
+
('limit', 2),
|
|
1097
|
+
]
|
|
1098
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
1099
|
+
|
|
1100
|
+
self.assertRaises(
|
|
1101
|
+
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
1102
|
+
)
|
|
1103
|
+
|
|
1104
|
+
|
|
1105
|
+
class TestUserSet(identity_fakes.TestIdentity):
|
|
1039
1106
|
project = sdk_fakes.generate_fake_resource(_project.Project)
|
|
1040
1107
|
domain = sdk_fakes.generate_fake_resource(_domain.Domain)
|
|
1041
1108
|
user = sdk_fakes.generate_fake_resource(
|
|
@@ -1684,7 +1751,7 @@ class TestUserSet(identity_fakes.TestIdentityv3):
|
|
|
1684
1751
|
self.assertIsNone(result)
|
|
1685
1752
|
|
|
1686
1753
|
|
|
1687
|
-
class TestUserSetPassword(identity_fakes.
|
|
1754
|
+
class TestUserSetPassword(identity_fakes.TestIdentity):
|
|
1688
1755
|
def setUp(self):
|
|
1689
1756
|
super().setUp()
|
|
1690
1757
|
self.cmd = user.SetPasswordUser(self.app, None)
|
|
@@ -1716,7 +1783,7 @@ class TestUserSetPassword(identity_fakes.TestIdentityv3):
|
|
|
1716
1783
|
conn = self.app.client_manager.sdk_connection
|
|
1717
1784
|
user_id = conn.config.get_auth().get_user_id(conn.identity)
|
|
1718
1785
|
|
|
1719
|
-
self.identity_sdk_client.
|
|
1786
|
+
self.identity_sdk_client.update_password.assert_called_with(
|
|
1720
1787
|
user=user_id, current_password=current_pass, password=new_pass
|
|
1721
1788
|
)
|
|
1722
1789
|
|
|
@@ -1733,7 +1800,7 @@ class TestUserSetPassword(identity_fakes.TestIdentityv3):
|
|
|
1733
1800
|
conn = self.app.client_manager.sdk_connection
|
|
1734
1801
|
user_id = conn.config.get_auth().get_user_id(conn.identity)
|
|
1735
1802
|
|
|
1736
|
-
self.identity_sdk_client.
|
|
1803
|
+
self.identity_sdk_client.update_password.assert_called_with(
|
|
1737
1804
|
user=user_id, current_password=current_pass, password=new_pass
|
|
1738
1805
|
)
|
|
1739
1806
|
|
|
@@ -1758,12 +1825,12 @@ class TestUserSetPassword(identity_fakes.TestIdentityv3):
|
|
|
1758
1825
|
conn = self.app.client_manager.sdk_connection
|
|
1759
1826
|
user_id = conn.config.get_auth().get_user_id(conn.identity)
|
|
1760
1827
|
|
|
1761
|
-
self.identity_sdk_client.
|
|
1828
|
+
self.identity_sdk_client.update_password.assert_called_with(
|
|
1762
1829
|
user=user_id, current_password=current_pass, password=new_pass
|
|
1763
1830
|
)
|
|
1764
1831
|
|
|
1765
1832
|
|
|
1766
|
-
class TestUserShow(identity_fakes.
|
|
1833
|
+
class TestUserShow(identity_fakes.TestIdentity):
|
|
1767
1834
|
user = sdk_fakes.generate_fake_resource(_user.User)
|
|
1768
1835
|
|
|
1769
1836
|
def setUp(self):
|
|
@@ -1773,7 +1840,7 @@ class TestUserShow(identity_fakes.TestIdentityv3):
|
|
|
1773
1840
|
|
|
1774
1841
|
# Get the command object to test
|
|
1775
1842
|
self.cmd = user.ShowUser(self.app, None)
|
|
1776
|
-
self.identity_client.auth.client.get_user_id.return_value = (
|
|
1843
|
+
self.identity_client.auth.client.get_user_id.return_value = (
|
|
1777
1844
|
self.user.id
|
|
1778
1845
|
)
|
|
1779
1846
|
self.identity_client.tokens.get_token_data.return_value = {
|
|
@@ -305,7 +305,7 @@ class TestImageCreate(TestImage):
|
|
|
305
305
|
]
|
|
306
306
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
307
307
|
|
|
308
|
-
|
|
308
|
+
self.cmd.take_action(parsed_args)
|
|
309
309
|
|
|
310
310
|
self.image_client.create_image.assert_called_with(
|
|
311
311
|
name=self.new_image.name,
|
|
@@ -336,7 +336,7 @@ class TestImageCreate(TestImage):
|
|
|
336
336
|
]
|
|
337
337
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
338
338
|
|
|
339
|
-
|
|
339
|
+
self.cmd.take_action(parsed_args)
|
|
340
340
|
|
|
341
341
|
self.volume_sdk_client.upload_volume_to_image.assert_called_once_with(
|
|
342
342
|
volume.id,
|
|
@@ -397,7 +397,7 @@ class TestImageCreate(TestImage):
|
|
|
397
397
|
]
|
|
398
398
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
399
399
|
|
|
400
|
-
|
|
400
|
+
self.cmd.take_action(parsed_args)
|
|
401
401
|
|
|
402
402
|
self.volume_sdk_client.upload_volume_to_image.assert_called_once_with(
|
|
403
403
|
volume.id,
|
|
@@ -946,7 +946,7 @@ class TestImageList(TestImage):
|
|
|
946
946
|
]
|
|
947
947
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
948
948
|
|
|
949
|
-
|
|
949
|
+
self.cmd.take_action(parsed_args)
|
|
950
950
|
self.image_client.images.assert_called_with(
|
|
951
951
|
marker=self._image.id,
|
|
952
952
|
)
|
|
@@ -966,7 +966,7 @@ class TestImageList(TestImage):
|
|
|
966
966
|
]
|
|
967
967
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
968
968
|
|
|
969
|
-
|
|
969
|
+
self.cmd.take_action(parsed_args)
|
|
970
970
|
self.image_client.images.assert_called_with(
|
|
971
971
|
name='abc',
|
|
972
972
|
# marker=self._image.id
|
|
@@ -982,7 +982,7 @@ class TestImageList(TestImage):
|
|
|
982
982
|
]
|
|
983
983
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
984
984
|
|
|
985
|
-
|
|
985
|
+
self.cmd.take_action(parsed_args)
|
|
986
986
|
self.image_client.images.assert_called_with(status='active')
|
|
987
987
|
|
|
988
988
|
def test_image_list_hidden_option(self):
|
|
@@ -994,7 +994,7 @@ class TestImageList(TestImage):
|
|
|
994
994
|
]
|
|
995
995
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
996
996
|
|
|
997
|
-
|
|
997
|
+
self.cmd.take_action(parsed_args)
|
|
998
998
|
self.image_client.images.assert_called_with(is_hidden=True)
|
|
999
999
|
|
|
1000
1000
|
def test_image_list_tag_option(self):
|
|
@@ -1004,7 +1004,7 @@ class TestImageList(TestImage):
|
|
|
1004
1004
|
]
|
|
1005
1005
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
1006
1006
|
|
|
1007
|
-
|
|
1007
|
+
self.cmd.take_action(parsed_args)
|
|
1008
1008
|
self.image_client.images.assert_called_with(tag=['abc', 'cba'])
|
|
1009
1009
|
|
|
1010
1010
|
|
|
@@ -1329,7 +1329,7 @@ class TestImageSet(TestImage):
|
|
|
1329
1329
|
self.image_client.update_image.assert_called()
|
|
1330
1330
|
call_args = self.image_client.update_image.call_args
|
|
1331
1331
|
if call_args:
|
|
1332
|
-
|
|
1332
|
+
_args, kwargs = call_args
|
|
1333
1333
|
self.assertNotIn('owner_id', kwargs)
|
|
1334
1334
|
|
|
1335
1335
|
def test_image_set_membership_reject_with_project_no_owner_change(self):
|
|
@@ -1366,7 +1366,7 @@ class TestImageSet(TestImage):
|
|
|
1366
1366
|
self.image_client.update_image.assert_called()
|
|
1367
1367
|
call_args = self.image_client.update_image.call_args
|
|
1368
1368
|
if call_args:
|
|
1369
|
-
|
|
1369
|
+
_args, kwargs = call_args
|
|
1370
1370
|
self.assertNotIn('owner_id', kwargs)
|
|
1371
1371
|
|
|
1372
1372
|
def test_image_set_membership_pending_with_project_no_owner_change(self):
|
|
@@ -1403,7 +1403,7 @@ class TestImageSet(TestImage):
|
|
|
1403
1403
|
self.image_client.update_image.assert_called()
|
|
1404
1404
|
call_args = self.image_client.update_image.call_args
|
|
1405
1405
|
if call_args:
|
|
1406
|
-
|
|
1406
|
+
_args, kwargs = call_args
|
|
1407
1407
|
self.assertNotIn('owner_id', kwargs)
|
|
1408
1408
|
|
|
1409
1409
|
def test_image_set_options(self):
|
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
# License for the specific language governing permissions and limitations
|
|
13
13
|
# under the License.
|
|
14
14
|
|
|
15
|
+
from unittest import mock
|
|
16
|
+
|
|
15
17
|
from openstackclient.image.v2 import metadef_namespaces
|
|
16
18
|
from openstackclient.tests.unit.image.v2 import fakes as image_fakes
|
|
17
19
|
|
|
@@ -24,6 +26,7 @@ class TestMetadefNamespaceCreate(image_fakes.TestImagev2):
|
|
|
24
26
|
'display_name',
|
|
25
27
|
'namespace',
|
|
26
28
|
'owner',
|
|
29
|
+
'tags',
|
|
27
30
|
'visibility',
|
|
28
31
|
)
|
|
29
32
|
expected_data = (
|
|
@@ -31,6 +34,7 @@ class TestMetadefNamespaceCreate(image_fakes.TestImagev2):
|
|
|
31
34
|
_metadef_namespace.display_name,
|
|
32
35
|
_metadef_namespace.namespace,
|
|
33
36
|
_metadef_namespace.owner,
|
|
37
|
+
_metadef_namespace.tags,
|
|
34
38
|
_metadef_namespace.visibility,
|
|
35
39
|
)
|
|
36
40
|
|
|
@@ -114,21 +118,25 @@ class TestMetadefNamespaceList(image_fakes.TestImagev2):
|
|
|
114
118
|
|
|
115
119
|
|
|
116
120
|
class TestMetadefNamespaceSet(image_fakes.TestImagev2):
|
|
117
|
-
_metadef_namespace = image_fakes.create_one_metadef_namespace()
|
|
118
|
-
|
|
119
121
|
def setUp(self):
|
|
120
122
|
super().setUp()
|
|
121
123
|
|
|
124
|
+
self.metadef_namespace = image_fakes.create_one_metadef_namespace()
|
|
125
|
+
|
|
126
|
+
self.image_client.get_metadef_namespace.return_value = (
|
|
127
|
+
self.metadef_namespace
|
|
128
|
+
)
|
|
122
129
|
self.image_client.update_metadef_namespace.return_value = (
|
|
123
|
-
self.
|
|
130
|
+
self.metadef_namespace
|
|
124
131
|
)
|
|
132
|
+
self.image_client.add_tag_to_metadef_namespace.return_value = None
|
|
133
|
+
|
|
125
134
|
self.cmd = metadef_namespaces.SetMetadefNamespace(self.app, None)
|
|
126
|
-
self.datalist = self._metadef_namespace
|
|
127
135
|
|
|
128
136
|
def test_namespace_set_no_options(self):
|
|
129
|
-
arglist = [self.
|
|
137
|
+
arglist = [self.metadef_namespace.namespace]
|
|
130
138
|
verifylist = [
|
|
131
|
-
('namespace', self.
|
|
139
|
+
('namespace', self.metadef_namespace.namespace),
|
|
132
140
|
]
|
|
133
141
|
|
|
134
142
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -137,6 +145,95 @@ class TestMetadefNamespaceSet(image_fakes.TestImagev2):
|
|
|
137
145
|
|
|
138
146
|
self.assertIsNone(result)
|
|
139
147
|
|
|
148
|
+
def test_namespace_set_tag(self):
|
|
149
|
+
arglist = [
|
|
150
|
+
self.metadef_namespace.namespace,
|
|
151
|
+
'--tag',
|
|
152
|
+
't1',
|
|
153
|
+
'--tag',
|
|
154
|
+
't2',
|
|
155
|
+
]
|
|
156
|
+
verifylist = [
|
|
157
|
+
('namespace', self.metadef_namespace.namespace),
|
|
158
|
+
('tags', ['t1', 't2']),
|
|
159
|
+
]
|
|
160
|
+
|
|
161
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
162
|
+
|
|
163
|
+
self.cmd.take_action(parsed_args)
|
|
164
|
+
|
|
165
|
+
self.image_client.add_tag_to_metadef_namespace.assert_has_calls(
|
|
166
|
+
[
|
|
167
|
+
mock.call(self.metadef_namespace.namespace, 't1'),
|
|
168
|
+
mock.call(self.metadef_namespace.namespace, 't2'),
|
|
169
|
+
]
|
|
170
|
+
)
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
class TestMetadefNamespaceUnset(image_fakes.TestImagev2):
|
|
174
|
+
def setUp(self):
|
|
175
|
+
super().setUp()
|
|
176
|
+
|
|
177
|
+
self.metadef_namespace = image_fakes.create_one_metadef_namespace(
|
|
178
|
+
attrs={'tags': [{'name': 't1'}]}
|
|
179
|
+
)
|
|
180
|
+
|
|
181
|
+
self.image_client.get_metadef_namespace.return_value = (
|
|
182
|
+
self.metadef_namespace
|
|
183
|
+
)
|
|
184
|
+
self.image_client.update_metadef_namespace.return_value = (
|
|
185
|
+
self.metadef_namespace
|
|
186
|
+
)
|
|
187
|
+
self.image_client.remove_tag_from_metadef_namespace.return_value = None
|
|
188
|
+
self.image_client.remove_tags_from_metadef_namespace.return_value = (
|
|
189
|
+
None
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
self.cmd = metadef_namespaces.UnsetMetadefNamespace(self.app, None)
|
|
193
|
+
|
|
194
|
+
def test_namespace_unset_tag(self):
|
|
195
|
+
arglist = [
|
|
196
|
+
self.metadef_namespace.namespace,
|
|
197
|
+
'--tag',
|
|
198
|
+
't1',
|
|
199
|
+
'--tag',
|
|
200
|
+
't2',
|
|
201
|
+
]
|
|
202
|
+
verifylist = [
|
|
203
|
+
('namespace', self.metadef_namespace.namespace),
|
|
204
|
+
('tags', ['t1', 't2']),
|
|
205
|
+
]
|
|
206
|
+
|
|
207
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
208
|
+
|
|
209
|
+
self.cmd.take_action(parsed_args)
|
|
210
|
+
|
|
211
|
+
self.image_client.remove_tag_from_metadef_namespace.assert_has_calls(
|
|
212
|
+
[
|
|
213
|
+
mock.call(self.metadef_namespace, 't1'),
|
|
214
|
+
mock.call(self.metadef_namespace, 't2'),
|
|
215
|
+
]
|
|
216
|
+
)
|
|
217
|
+
self.image_client.remove_tags_from_metadef_namespace.assert_not_called()
|
|
218
|
+
|
|
219
|
+
def test_namespace_unset_all_tag(self):
|
|
220
|
+
arglist = [
|
|
221
|
+
self.metadef_namespace.namespace,
|
|
222
|
+
'--all-tags',
|
|
223
|
+
]
|
|
224
|
+
verifylist = [
|
|
225
|
+
('namespace', self.metadef_namespace.namespace),
|
|
226
|
+
]
|
|
227
|
+
|
|
228
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
229
|
+
|
|
230
|
+
self.cmd.take_action(parsed_args)
|
|
231
|
+
|
|
232
|
+
self.image_client.remove_tags_from_metadef_namespace.assert_called_once_with(
|
|
233
|
+
self.metadef_namespace
|
|
234
|
+
)
|
|
235
|
+
self.image_client.remove_tag_from_metadef_namespace.assert_not_called()
|
|
236
|
+
|
|
140
237
|
|
|
141
238
|
class TestMetadefNamespaceShow(image_fakes.TestImagev2):
|
|
142
239
|
_metadef_namespace = image_fakes.create_one_metadef_namespace()
|
|
@@ -146,6 +243,7 @@ class TestMetadefNamespaceShow(image_fakes.TestImagev2):
|
|
|
146
243
|
'display_name',
|
|
147
244
|
'namespace',
|
|
148
245
|
'owner',
|
|
246
|
+
'tags',
|
|
149
247
|
'visibility',
|
|
150
248
|
)
|
|
151
249
|
expected_data = (
|
|
@@ -153,6 +251,7 @@ class TestMetadefNamespaceShow(image_fakes.TestImagev2):
|
|
|
153
251
|
_metadef_namespace.display_name,
|
|
154
252
|
_metadef_namespace.namespace,
|
|
155
253
|
_metadef_namespace.owner,
|
|
254
|
+
_metadef_namespace.tags,
|
|
156
255
|
_metadef_namespace.visibility,
|
|
157
256
|
)
|
|
158
257
|
|
|
@@ -13,91 +13,11 @@
|
|
|
13
13
|
|
|
14
14
|
from unittest import mock
|
|
15
15
|
|
|
16
|
-
import openstack
|
|
17
|
-
from osc_lib import exceptions
|
|
18
16
|
|
|
19
17
|
from openstackclient.network import common
|
|
20
18
|
from openstackclient.tests.unit import utils
|
|
21
19
|
|
|
22
20
|
|
|
23
|
-
def _add_common_argument(parser):
|
|
24
|
-
parser.add_argument(
|
|
25
|
-
'common',
|
|
26
|
-
metavar='<common>',
|
|
27
|
-
help='Common argument',
|
|
28
|
-
)
|
|
29
|
-
return parser
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def _add_network_argument(parser):
|
|
33
|
-
parser.add_argument(
|
|
34
|
-
'network',
|
|
35
|
-
metavar='<network>',
|
|
36
|
-
help='Network argument',
|
|
37
|
-
)
|
|
38
|
-
return parser
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
def _add_compute_argument(parser):
|
|
42
|
-
parser.add_argument(
|
|
43
|
-
'compute',
|
|
44
|
-
metavar='<compute>',
|
|
45
|
-
help='Compute argument',
|
|
46
|
-
)
|
|
47
|
-
return parser
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
class FakeNetworkAndComputeCommand(common.NetworkAndComputeCommand):
|
|
51
|
-
def update_parser_common(self, parser):
|
|
52
|
-
return _add_common_argument(parser)
|
|
53
|
-
|
|
54
|
-
def update_parser_network(self, parser):
|
|
55
|
-
return _add_network_argument(parser)
|
|
56
|
-
|
|
57
|
-
def update_parser_compute(self, parser):
|
|
58
|
-
return _add_compute_argument(parser)
|
|
59
|
-
|
|
60
|
-
def take_action_network(self, client, parsed_args):
|
|
61
|
-
return client.network_action(parsed_args)
|
|
62
|
-
|
|
63
|
-
def take_action_compute(self, client, parsed_args):
|
|
64
|
-
return client.compute_action(parsed_args)
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
class FakeNetworkAndComputeLister(common.NetworkAndComputeLister):
|
|
68
|
-
def update_parser_common(self, parser):
|
|
69
|
-
return _add_common_argument(parser)
|
|
70
|
-
|
|
71
|
-
def update_parser_network(self, parser):
|
|
72
|
-
return _add_network_argument(parser)
|
|
73
|
-
|
|
74
|
-
def update_parser_compute(self, parser):
|
|
75
|
-
return _add_compute_argument(parser)
|
|
76
|
-
|
|
77
|
-
def take_action_network(self, client, parsed_args):
|
|
78
|
-
return client.network_action(parsed_args)
|
|
79
|
-
|
|
80
|
-
def take_action_compute(self, client, parsed_args):
|
|
81
|
-
return client.compute_action(parsed_args)
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
class FakeNetworkAndComputeShowOne(common.NetworkAndComputeShowOne):
|
|
85
|
-
def update_parser_common(self, parser):
|
|
86
|
-
return _add_common_argument(parser)
|
|
87
|
-
|
|
88
|
-
def update_parser_network(self, parser):
|
|
89
|
-
return _add_network_argument(parser)
|
|
90
|
-
|
|
91
|
-
def update_parser_compute(self, parser):
|
|
92
|
-
return _add_compute_argument(parser)
|
|
93
|
-
|
|
94
|
-
def take_action_network(self, client, parsed_args):
|
|
95
|
-
return client.network_action(parsed_args)
|
|
96
|
-
|
|
97
|
-
def take_action_compute(self, client, parsed_args):
|
|
98
|
-
return client.compute_action(parsed_args)
|
|
99
|
-
|
|
100
|
-
|
|
101
21
|
class FakeCreateNeutronCommandWithExtraArgs(
|
|
102
22
|
common.NeutronCommandWithExtraArgs
|
|
103
23
|
):
|
|
@@ -119,81 +39,6 @@ class FakeCreateNeutronCommandWithExtraArgs(
|
|
|
119
39
|
client.test_create_action(**attrs)
|
|
120
40
|
|
|
121
41
|
|
|
122
|
-
class TestNetworkAndCompute(utils.TestCommand):
|
|
123
|
-
def setUp(self):
|
|
124
|
-
super().setUp()
|
|
125
|
-
|
|
126
|
-
# Create client mocks. Note that we intentionally do not use specced
|
|
127
|
-
# mocks since we want to test fake methods.
|
|
128
|
-
|
|
129
|
-
self.app.client_manager.network = mock.Mock() # noqa: O401
|
|
130
|
-
self.network_client = self.app.client_manager.network # noqa: O401
|
|
131
|
-
self.network_client.network_action.return_value = 'take_action_network'
|
|
132
|
-
|
|
133
|
-
self.app.client_manager.compute = mock.Mock() # noqa: O401
|
|
134
|
-
self.compute_client = self.app.client_manager.compute # noqa: O401
|
|
135
|
-
self.compute_client.compute_action.return_value = 'take_action_compute'
|
|
136
|
-
|
|
137
|
-
self.cmd = FakeNetworkAndComputeCommand(self.app, None)
|
|
138
|
-
|
|
139
|
-
def test_take_action_network(self):
|
|
140
|
-
arglist = ['common', 'network']
|
|
141
|
-
verifylist = [('common', 'common'), ('network', 'network')]
|
|
142
|
-
|
|
143
|
-
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
144
|
-
result = self.cmd.take_action(parsed_args)
|
|
145
|
-
self.network_client.network_action.assert_called_with(parsed_args)
|
|
146
|
-
self.assertEqual('take_action_network', result)
|
|
147
|
-
|
|
148
|
-
def test_take_action_compute(self):
|
|
149
|
-
arglist = ['common', 'compute']
|
|
150
|
-
verifylist = [('common', 'common'), ('compute', 'compute')]
|
|
151
|
-
|
|
152
|
-
self.app.client_manager.network_endpoint_enabled = False
|
|
153
|
-
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
154
|
-
result = self.cmd.take_action(parsed_args)
|
|
155
|
-
self.compute_client.compute_action.assert_called_with(parsed_args)
|
|
156
|
-
self.assertEqual('take_action_compute', result)
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
class TestNetworkAndComputeCommand(TestNetworkAndCompute):
|
|
160
|
-
def setUp(self):
|
|
161
|
-
super().setUp()
|
|
162
|
-
self.cmd = FakeNetworkAndComputeCommand(self.app, None)
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
class TestNetworkAndComputeLister(TestNetworkAndCompute):
|
|
166
|
-
def setUp(self):
|
|
167
|
-
super().setUp()
|
|
168
|
-
self.cmd = FakeNetworkAndComputeLister(self.app, None)
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
class TestNetworkAndComputeShowOne(TestNetworkAndCompute):
|
|
172
|
-
def setUp(self):
|
|
173
|
-
super().setUp()
|
|
174
|
-
self.cmd = FakeNetworkAndComputeShowOne(self.app, None)
|
|
175
|
-
|
|
176
|
-
def test_take_action_with_http_exception(self):
|
|
177
|
-
with mock.patch.object(self.cmd, 'take_action_network') as m_action:
|
|
178
|
-
m_action.side_effect = openstack.exceptions.HttpException("bar")
|
|
179
|
-
self.assertRaisesRegex(
|
|
180
|
-
exceptions.CommandError,
|
|
181
|
-
"bar",
|
|
182
|
-
self.cmd.take_action,
|
|
183
|
-
mock.Mock(),
|
|
184
|
-
)
|
|
185
|
-
|
|
186
|
-
self.app.client_manager.network_endpoint_enabled = False
|
|
187
|
-
with mock.patch.object(self.cmd, 'take_action_compute') as m_action:
|
|
188
|
-
m_action.side_effect = openstack.exceptions.HttpException("bar")
|
|
189
|
-
self.assertRaisesRegex(
|
|
190
|
-
exceptions.CommandError,
|
|
191
|
-
"bar",
|
|
192
|
-
self.cmd.take_action,
|
|
193
|
-
mock.Mock(),
|
|
194
|
-
)
|
|
195
|
-
|
|
196
|
-
|
|
197
42
|
class TestNeutronCommandWithExtraArgs(utils.TestCommand):
|
|
198
43
|
def setUp(self):
|
|
199
44
|
super().setUp()
|