python-openstackclient 6.6.0__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 +7 -8
- 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.0.dist-info → python_openstackclient-7.0.0.dist-info}/AUTHORS +4 -0
- {python_openstackclient-6.6.0.dist-info → python_openstackclient-7.0.0.dist-info}/METADATA +3 -3
- python_openstackclient-7.0.0.dist-info/RECORD +502 -0
- {python_openstackclient-6.6.0.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.0.dist-info/RECORD +0 -489
- python_openstackclient-6.6.0.dist-info/pbr.json +0 -1
- {python_openstackclient-6.6.0.dist-info → python_openstackclient-7.0.0.dist-info}/LICENSE +0 -0
- {python_openstackclient-6.6.0.dist-info → python_openstackclient-7.0.0.dist-info}/WHEEL +0 -0
- {python_openstackclient-6.6.0.dist-info → python_openstackclient-7.0.0.dist-info}/top_level.txt +0 -0
|
@@ -52,7 +52,7 @@ class TestImageCreate(image_fakes.TestImagev1):
|
|
|
52
52
|
)
|
|
53
53
|
|
|
54
54
|
def setUp(self):
|
|
55
|
-
super(
|
|
55
|
+
super().setUp()
|
|
56
56
|
|
|
57
57
|
self.image_client.create_image = mock.Mock(return_value=self.new_image)
|
|
58
58
|
self.image_client.find_image = mock.Mock(return_value=self.new_image)
|
|
@@ -145,7 +145,7 @@ class TestImageCreate(image_fakes.TestImagev1):
|
|
|
145
145
|
self.assertEqual(self.columns, columns)
|
|
146
146
|
self.assertCountEqual(self.data, data)
|
|
147
147
|
|
|
148
|
-
@mock.patch('openstackclient.image.v1.image.
|
|
148
|
+
@mock.patch('openstackclient.image.v1.image.open', name='Open')
|
|
149
149
|
def test_image_create_file(self, mock_open):
|
|
150
150
|
mock_file = mock.Mock(name='File')
|
|
151
151
|
mock_open.return_value = mock_file
|
|
@@ -209,7 +209,7 @@ class TestImageDelete(image_fakes.TestImagev1):
|
|
|
209
209
|
_image = image_fakes.create_one_image()
|
|
210
210
|
|
|
211
211
|
def setUp(self):
|
|
212
|
-
super(
|
|
212
|
+
super().setUp()
|
|
213
213
|
|
|
214
214
|
# This is the return value for utils.find_resource()
|
|
215
215
|
self.image_client.find_image = mock.Mock(return_value=self._image)
|
|
@@ -259,7 +259,7 @@ class TestImageList(image_fakes.TestImagev1):
|
|
|
259
259
|
image_info = copy.deepcopy(info)
|
|
260
260
|
|
|
261
261
|
def setUp(self):
|
|
262
|
-
super(
|
|
262
|
+
super().setUp()
|
|
263
263
|
|
|
264
264
|
self.image_client.images = mock.Mock()
|
|
265
265
|
self.image_client.images.side_effect = [
|
|
@@ -438,7 +438,7 @@ class TestImageSet(image_fakes.TestImagev1):
|
|
|
438
438
|
_image = image_fakes.create_one_image()
|
|
439
439
|
|
|
440
440
|
def setUp(self):
|
|
441
|
-
super(
|
|
441
|
+
super().setUp()
|
|
442
442
|
|
|
443
443
|
# This is the return value for utils.find_resource()
|
|
444
444
|
self.image_client.find_image = mock.Mock(return_value=self._image)
|
|
@@ -710,7 +710,7 @@ class TestImageShow(image_fakes.TestImagev1):
|
|
|
710
710
|
)
|
|
711
711
|
|
|
712
712
|
def setUp(self):
|
|
713
|
-
super(
|
|
713
|
+
super().setUp()
|
|
714
714
|
|
|
715
715
|
self.image_client.find_image = mock.Mock(return_value=self._image)
|
|
716
716
|
|
|
@@ -27,7 +27,6 @@ from openstack.image.v2 import metadef_resource_type
|
|
|
27
27
|
from openstack.image.v2 import service_info as _service_info
|
|
28
28
|
from openstack.image.v2 import task
|
|
29
29
|
|
|
30
|
-
from openstackclient.tests.unit import fakes
|
|
31
30
|
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
|
|
32
31
|
from openstackclient.tests.unit import utils
|
|
33
32
|
|
|
@@ -40,14 +39,11 @@ class FakeClientMixin:
|
|
|
40
39
|
self.image_client = self.app.client_manager.image
|
|
41
40
|
|
|
42
41
|
|
|
43
|
-
class TestImagev2(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
endpoint=fakes.AUTH_URL,
|
|
49
|
-
token=fakes.AUTH_TOKEN,
|
|
50
|
-
)
|
|
42
|
+
class TestImagev2(
|
|
43
|
+
identity_fakes.FakeClientMixin,
|
|
44
|
+
FakeClientMixin,
|
|
45
|
+
utils.TestCommand,
|
|
46
|
+
): ...
|
|
51
47
|
|
|
52
48
|
|
|
53
49
|
def create_one_image(attrs=None):
|
|
@@ -381,3 +377,44 @@ def create_one_metadef_object(attrs=None):
|
|
|
381
377
|
# Overwrite default attributes if there are some attributes set
|
|
382
378
|
metadef_objects_list.update(attrs)
|
|
383
379
|
return metadef_object.MetadefObject(**metadef_objects_list)
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
def create_one_resource_type_association(attrs=None):
|
|
383
|
+
"""Create a fake MetadefResourceTypeAssociation.
|
|
384
|
+
|
|
385
|
+
:param attrs: A dictionary with all attributes of
|
|
386
|
+
metadef_resource_type_association member
|
|
387
|
+
:type attrs: dict
|
|
388
|
+
:return: A fake MetadefResourceTypeAssociation object
|
|
389
|
+
:rtype: A `metadef_resource_type_association.
|
|
390
|
+
MetadefResourceTypeAssociation`
|
|
391
|
+
"""
|
|
392
|
+
attrs = attrs or {}
|
|
393
|
+
|
|
394
|
+
metadef_resource_type_association_info = {
|
|
395
|
+
'namespace_name': 'OS::Compute::Quota',
|
|
396
|
+
'name': 'OS::Nova::Flavor',
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
metadef_resource_type_association_info.update(attrs)
|
|
400
|
+
return metadef_resource_type.MetadefResourceTypeAssociation(
|
|
401
|
+
**metadef_resource_type_association_info
|
|
402
|
+
)
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
def create_resource_type_associations(attrs=None, count=2):
|
|
406
|
+
"""Create mutiple fake resource type associations/
|
|
407
|
+
|
|
408
|
+
:param attrs: A dictionary with all attributes of
|
|
409
|
+
metadef_resource_type_association member
|
|
410
|
+
:type attrs: dict
|
|
411
|
+
:return: A list of fake MetadefResourceTypeAssociation objects
|
|
412
|
+
:rtype: list
|
|
413
|
+
"""
|
|
414
|
+
resource_type_associations = []
|
|
415
|
+
for n in range(0, count):
|
|
416
|
+
resource_type_associations.append(
|
|
417
|
+
create_one_resource_type_association(attrs)
|
|
418
|
+
)
|
|
419
|
+
|
|
420
|
+
return resource_type_associations
|
|
@@ -184,13 +184,13 @@ class TestCacheClear(fakes.TestImagev2):
|
|
|
184
184
|
def test_cache_clear_no_option(self):
|
|
185
185
|
arglist = []
|
|
186
186
|
|
|
187
|
-
verifylist = [('target',
|
|
187
|
+
verifylist = [('target', 'both')]
|
|
188
188
|
|
|
189
189
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
190
190
|
self.cmd.take_action(parsed_args)
|
|
191
191
|
|
|
192
192
|
self.assertIsNone(
|
|
193
|
-
self.image_client.clear_cache.assert_called_with(
|
|
193
|
+
self.image_client.clear_cache.assert_called_with('both')
|
|
194
194
|
)
|
|
195
195
|
|
|
196
196
|
def test_cache_clear_queue_option(self):
|
|
@@ -33,9 +33,9 @@ class TestImage(image_fakes.TestImagev2, volume_fakes.TestVolume):
|
|
|
33
33
|
super().setUp()
|
|
34
34
|
|
|
35
35
|
# Get shortcut to the Mocks in identity client
|
|
36
|
-
self.project_mock = self.
|
|
36
|
+
self.project_mock = self.identity_client.projects
|
|
37
37
|
self.project_mock.reset_mock()
|
|
38
|
-
self.domain_mock = self.
|
|
38
|
+
self.domain_mock = self.identity_client.domains
|
|
39
39
|
self.domain_mock.reset_mock()
|
|
40
40
|
self.volumes_mock = self.volume_client.volumes
|
|
41
41
|
fake_body = {
|
|
@@ -894,7 +894,7 @@ class TestImageList(TestImage):
|
|
|
894
894
|
columns, data = self.cmd.take_action(parsed_args)
|
|
895
895
|
self.image_client.images.assert_called_with(
|
|
896
896
|
limit=ret_limit,
|
|
897
|
-
paginated=False
|
|
897
|
+
paginated=False,
|
|
898
898
|
# marker=None
|
|
899
899
|
)
|
|
900
900
|
|
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
# License for the specific language governing permissions and limitations
|
|
13
13
|
# under the License.
|
|
14
14
|
|
|
15
|
+
from osc_lib import exceptions
|
|
16
|
+
|
|
15
17
|
from openstackclient.image.v2 import metadef_objects
|
|
16
18
|
from openstackclient.tests.unit.image.v2 import fakes
|
|
17
19
|
|
|
@@ -198,3 +200,63 @@ class TestMetadefObjectSet(fakes.TestImagev2):
|
|
|
198
200
|
result = self.cmd.take_action(parsed_args)
|
|
199
201
|
|
|
200
202
|
self.assertIsNone(result)
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
class TestMetadefObjectPropertyShow(fakes.TestImagev2):
|
|
206
|
+
_metadef_namespace = fakes.create_one_metadef_namespace()
|
|
207
|
+
_metadef_objects = fakes.create_one_metadef_object()
|
|
208
|
+
md_property = _metadef_objects['properties']['quota:cpu_quota']
|
|
209
|
+
md_property['name'] = 'quota:cpu_quota'
|
|
210
|
+
|
|
211
|
+
expected_columns = (
|
|
212
|
+
'description',
|
|
213
|
+
'name',
|
|
214
|
+
'title',
|
|
215
|
+
'type',
|
|
216
|
+
)
|
|
217
|
+
expected_data = (
|
|
218
|
+
md_property['description'],
|
|
219
|
+
md_property['name'],
|
|
220
|
+
md_property['title'],
|
|
221
|
+
md_property['type'],
|
|
222
|
+
)
|
|
223
|
+
|
|
224
|
+
def setUp(self):
|
|
225
|
+
super().setUp()
|
|
226
|
+
|
|
227
|
+
self.image_client.get_metadef_object.return_value = (
|
|
228
|
+
self._metadef_objects
|
|
229
|
+
)
|
|
230
|
+
self.cmd = metadef_objects.ShowMetadefObjectProperty(self.app, None)
|
|
231
|
+
|
|
232
|
+
def test_object_property_show(self):
|
|
233
|
+
arglist = [
|
|
234
|
+
self._metadef_namespace.namespace,
|
|
235
|
+
self._metadef_objects.name,
|
|
236
|
+
'quota:cpu_quota',
|
|
237
|
+
]
|
|
238
|
+
verifylist = []
|
|
239
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
240
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
241
|
+
|
|
242
|
+
self.assertEqual(self.expected_columns, columns)
|
|
243
|
+
self.assertEqual(self.expected_data, data)
|
|
244
|
+
|
|
245
|
+
def test_neg_object_property_show(self):
|
|
246
|
+
arglist = [
|
|
247
|
+
self._metadef_namespace.namespace,
|
|
248
|
+
self._metadef_objects.name,
|
|
249
|
+
'prop1',
|
|
250
|
+
]
|
|
251
|
+
verifylist = []
|
|
252
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
253
|
+
exc = self.assertRaises(
|
|
254
|
+
exceptions.CommandError,
|
|
255
|
+
self.cmd.take_action,
|
|
256
|
+
parsed_args,
|
|
257
|
+
)
|
|
258
|
+
self.assertIn(
|
|
259
|
+
'Property %s not found in object %s.'
|
|
260
|
+
% (parsed_args.property, parsed_args.object),
|
|
261
|
+
str(exc),
|
|
262
|
+
)
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
2
|
+
# not use this file except in compliance with the License. You may obtain
|
|
3
|
+
# a copy of the License at
|
|
4
|
+
#
|
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
#
|
|
7
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
8
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
9
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
10
|
+
# License for the specific language governing permissions and limitations
|
|
11
|
+
# under the License.
|
|
12
|
+
|
|
13
|
+
from openstackclient.image.v2 import metadef_resource_type_association
|
|
14
|
+
from openstackclient.tests.unit.image.v2 import fakes as resource_type_fakes
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class TestMetadefResourceTypeAssociationCreate(
|
|
18
|
+
resource_type_fakes.TestImagev2
|
|
19
|
+
):
|
|
20
|
+
resource_type_association = (
|
|
21
|
+
resource_type_fakes.create_one_resource_type_association()
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
columns = (
|
|
25
|
+
'created_at',
|
|
26
|
+
'id',
|
|
27
|
+
'name',
|
|
28
|
+
'prefix',
|
|
29
|
+
'properties_target',
|
|
30
|
+
'updated_at',
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
data = (
|
|
34
|
+
resource_type_association.created_at,
|
|
35
|
+
resource_type_association.id,
|
|
36
|
+
resource_type_association.name,
|
|
37
|
+
resource_type_association.prefix,
|
|
38
|
+
resource_type_association.properties_target,
|
|
39
|
+
resource_type_association.updated_at,
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
def setUp(self):
|
|
43
|
+
super().setUp()
|
|
44
|
+
|
|
45
|
+
self.image_client.create_metadef_resource_type_association.return_value = (
|
|
46
|
+
self.resource_type_association
|
|
47
|
+
)
|
|
48
|
+
self.cmd = metadef_resource_type_association.CreateMetadefResourceTypeAssociation(
|
|
49
|
+
self.app, None
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
def test_resource_type_association_create(self):
|
|
53
|
+
arglist = [
|
|
54
|
+
self.resource_type_association.namespace_name,
|
|
55
|
+
self.resource_type_association.name,
|
|
56
|
+
]
|
|
57
|
+
|
|
58
|
+
verifylist = []
|
|
59
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
60
|
+
|
|
61
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
62
|
+
|
|
63
|
+
self.assertEqual(self.columns, columns)
|
|
64
|
+
self.assertEqual(self.data, data)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class TestMetadefResourceTypeAssociationDelete(
|
|
68
|
+
resource_type_fakes.TestImagev2
|
|
69
|
+
):
|
|
70
|
+
resource_type_association = (
|
|
71
|
+
resource_type_fakes.create_one_resource_type_association()
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
def setUp(self):
|
|
75
|
+
super().setUp()
|
|
76
|
+
|
|
77
|
+
self.image_client.delete_metadef_resource_type_association.return_value = (
|
|
78
|
+
self.resource_type_association
|
|
79
|
+
)
|
|
80
|
+
self.cmd = metadef_resource_type_association.DeleteMetadefResourceTypeAssociation(
|
|
81
|
+
self.app, None
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
def test_resource_type_association_delete(self):
|
|
85
|
+
arglist = [
|
|
86
|
+
self.resource_type_association.namespace_name,
|
|
87
|
+
self.resource_type_association.name,
|
|
88
|
+
]
|
|
89
|
+
|
|
90
|
+
verifylist = []
|
|
91
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
92
|
+
|
|
93
|
+
result = self.cmd.take_action(parsed_args)
|
|
94
|
+
|
|
95
|
+
self.assertIsNone(result)
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
class TestMetadefResourceTypeAssociationList(resource_type_fakes.TestImagev2):
|
|
99
|
+
resource_type_associations = (
|
|
100
|
+
resource_type_fakes.create_resource_type_associations()
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
columns = ['Name']
|
|
104
|
+
|
|
105
|
+
datalist = [
|
|
106
|
+
(resource_type_association.name,)
|
|
107
|
+
for resource_type_association in resource_type_associations
|
|
108
|
+
]
|
|
109
|
+
|
|
110
|
+
def setUp(self):
|
|
111
|
+
super().setUp()
|
|
112
|
+
|
|
113
|
+
self.image_client.metadef_resource_type_associations.side_effect = [
|
|
114
|
+
self.resource_type_associations,
|
|
115
|
+
[],
|
|
116
|
+
]
|
|
117
|
+
|
|
118
|
+
self.cmd = metadef_resource_type_association.ListMetadefResourceTypeAssociations(
|
|
119
|
+
self.app, None
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
def test_resource_type_association_list(self):
|
|
123
|
+
arglist = [
|
|
124
|
+
self.resource_type_associations[0].namespace_name,
|
|
125
|
+
]
|
|
126
|
+
parsed_args = self.check_parser(self.cmd, arglist, [])
|
|
127
|
+
|
|
128
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
129
|
+
|
|
130
|
+
self.assertEqual(self.columns, columns)
|
|
131
|
+
self.assertCountEqual(self.datalist, data)
|
|
@@ -21,7 +21,7 @@ from openstackclient.tests.unit import test_shell
|
|
|
21
21
|
|
|
22
22
|
class TestIntegV2ProjectID(test_base.TestInteg):
|
|
23
23
|
def setUp(self):
|
|
24
|
-
super(
|
|
24
|
+
super().setUp()
|
|
25
25
|
env = {
|
|
26
26
|
"OS_AUTH_URL": test_base.V2_AUTH_URL,
|
|
27
27
|
"OS_PROJECT_ID": test_shell.DEFAULT_PROJECT_ID,
|
|
@@ -78,7 +78,7 @@ class TestIntegV2ProjectID(test_base.TestInteg):
|
|
|
78
78
|
|
|
79
79
|
class TestIntegV2ProjectName(test_base.TestInteg):
|
|
80
80
|
def setUp(self):
|
|
81
|
-
super(
|
|
81
|
+
super().setUp()
|
|
82
82
|
env = {
|
|
83
83
|
"OS_AUTH_URL": test_base.V2_AUTH_URL,
|
|
84
84
|
"OS_PROJECT_NAME": test_shell.DEFAULT_PROJECT_NAME,
|
|
@@ -135,7 +135,7 @@ class TestIntegV2ProjectName(test_base.TestInteg):
|
|
|
135
135
|
|
|
136
136
|
class TestIntegV3ProjectID(test_base.TestInteg):
|
|
137
137
|
def setUp(self):
|
|
138
|
-
super(
|
|
138
|
+
super().setUp()
|
|
139
139
|
env = {
|
|
140
140
|
"OS_AUTH_URL": test_base.V3_AUTH_URL,
|
|
141
141
|
"OS_PROJECT_ID": test_shell.DEFAULT_PROJECT_NAME,
|
|
@@ -190,7 +190,7 @@ class TestIntegV3ProjectID(test_base.TestInteg):
|
|
|
190
190
|
|
|
191
191
|
class TestIntegV3ProjectName(test_base.TestInteg):
|
|
192
192
|
def setUp(self):
|
|
193
|
-
super(
|
|
193
|
+
super().setUp()
|
|
194
194
|
env = {
|
|
195
195
|
"OS_AUTH_URL": test_base.V3_AUTH_URL,
|
|
196
196
|
"OS_PROJECT_NAME": test_shell.DEFAULT_PROJECT_NAME,
|
|
@@ -23,7 +23,7 @@ from openstackclient.tests.unit import test_shell
|
|
|
23
23
|
|
|
24
24
|
class TestIntegShellCliNoAuth(test_base.TestInteg):
|
|
25
25
|
def setUp(self):
|
|
26
|
-
super(
|
|
26
|
+
super().setUp()
|
|
27
27
|
env = {}
|
|
28
28
|
self.useFixture(osc_lib_utils.EnvFixture(copy.deepcopy(env)))
|
|
29
29
|
|
|
@@ -67,7 +67,7 @@ class TestIntegShellCliNoAuth(test_base.TestInteg):
|
|
|
67
67
|
|
|
68
68
|
class TestIntegShellCliV2(test_base.TestInteg):
|
|
69
69
|
def setUp(self):
|
|
70
|
-
super(
|
|
70
|
+
super().setUp()
|
|
71
71
|
env = {
|
|
72
72
|
"OS_AUTH_URL": test_base.V2_AUTH_URL,
|
|
73
73
|
"OS_PROJECT_NAME": test_shell.DEFAULT_PROJECT_NAME,
|
|
@@ -154,7 +154,7 @@ class TestIntegShellCliV2(test_base.TestInteg):
|
|
|
154
154
|
|
|
155
155
|
class TestIntegShellCliV2Ignore(test_base.TestInteg):
|
|
156
156
|
def setUp(self):
|
|
157
|
-
super(
|
|
157
|
+
super().setUp()
|
|
158
158
|
env = {
|
|
159
159
|
"OS_AUTH_URL": test_base.V2_AUTH_URL,
|
|
160
160
|
"OS_PROJECT_NAME": test_shell.DEFAULT_PROJECT_NAME,
|
|
@@ -200,7 +200,7 @@ class TestIntegShellCliV2Ignore(test_base.TestInteg):
|
|
|
200
200
|
|
|
201
201
|
class TestIntegShellCliV3(test_base.TestInteg):
|
|
202
202
|
def setUp(self):
|
|
203
|
-
super(
|
|
203
|
+
super().setUp()
|
|
204
204
|
env = {
|
|
205
205
|
"OS_AUTH_URL": test_base.V3_AUTH_URL,
|
|
206
206
|
"OS_PROJECT_DOMAIN_ID": test_shell.DEFAULT_PROJECT_DOMAIN_ID,
|
|
@@ -290,7 +290,7 @@ class TestIntegShellCliV3(test_base.TestInteg):
|
|
|
290
290
|
|
|
291
291
|
class TestIntegShellCliV3Prompt(test_base.TestInteg):
|
|
292
292
|
def setUp(self):
|
|
293
|
-
super(
|
|
293
|
+
super().setUp()
|
|
294
294
|
env = {
|
|
295
295
|
"OS_AUTH_URL": test_base.V3_AUTH_URL,
|
|
296
296
|
"OS_PROJECT_DOMAIN_ID": test_shell.DEFAULT_PROJECT_DOMAIN_ID,
|
|
@@ -339,7 +339,7 @@ class TestIntegShellCliPrecedence(test_base.TestInteg):
|
|
|
339
339
|
"""
|
|
340
340
|
|
|
341
341
|
def setUp(self):
|
|
342
|
-
super(
|
|
342
|
+
super().setUp()
|
|
343
343
|
env = {
|
|
344
344
|
"OS_AUTH_URL": test_base.V3_AUTH_URL,
|
|
345
345
|
"OS_PROJECT_DOMAIN_ID": test_shell.DEFAULT_PROJECT_DOMAIN_ID,
|
|
@@ -412,7 +412,7 @@ class TestIntegShellCliPrecedenceOCC(test_base.TestInteg):
|
|
|
412
412
|
"""
|
|
413
413
|
|
|
414
414
|
def setUp(self):
|
|
415
|
-
super(
|
|
415
|
+
super().setUp()
|
|
416
416
|
env = {
|
|
417
417
|
"OS_CLOUD": "megacloud",
|
|
418
418
|
"OS_AUTH_URL": test_base.V3_AUTH_URL,
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
# under the License.
|
|
12
12
|
#
|
|
13
13
|
|
|
14
|
-
import argparse
|
|
15
14
|
from unittest import mock
|
|
16
15
|
|
|
17
16
|
import openstack
|
|
@@ -103,9 +102,7 @@ class FakeCreateNeutronCommandWithExtraArgs(
|
|
|
103
102
|
common.NeutronCommandWithExtraArgs
|
|
104
103
|
):
|
|
105
104
|
def get_parser(self, prog_name):
|
|
106
|
-
parser = super(
|
|
107
|
-
prog_name
|
|
108
|
-
)
|
|
105
|
+
parser = super().get_parser(prog_name)
|
|
109
106
|
parser.add_argument(
|
|
110
107
|
'--known-attribute',
|
|
111
108
|
)
|
|
@@ -126,8 +123,6 @@ class TestNetworkAndCompute(utils.TestCommand):
|
|
|
126
123
|
def setUp(self):
|
|
127
124
|
super().setUp()
|
|
128
125
|
|
|
129
|
-
self.namespace = argparse.Namespace()
|
|
130
|
-
|
|
131
126
|
# Create client mocks. Note that we intentionally do not use specced
|
|
132
127
|
# mocks since we want to test fake methods.
|
|
133
128
|
|
|
@@ -137,13 +132,13 @@ class TestNetworkAndCompute(utils.TestCommand):
|
|
|
137
132
|
return_value='take_action_network'
|
|
138
133
|
)
|
|
139
134
|
|
|
140
|
-
self.app.client_manager.compute = mock.Mock()
|
|
141
|
-
self.compute_client = self.app.client_manager.compute
|
|
135
|
+
self.app.client_manager.sdk_connection.compute = mock.Mock()
|
|
136
|
+
self.compute_client = self.app.client_manager.sdk_connection.compute
|
|
142
137
|
self.compute_client.compute_action = mock.Mock(
|
|
143
138
|
return_value='take_action_compute'
|
|
144
139
|
)
|
|
145
140
|
|
|
146
|
-
self.cmd = FakeNetworkAndComputeCommand(self.app,
|
|
141
|
+
self.cmd = FakeNetworkAndComputeCommand(self.app, None)
|
|
147
142
|
|
|
148
143
|
def test_take_action_network(self):
|
|
149
144
|
arglist = ['common', 'network']
|
|
@@ -167,20 +162,20 @@ class TestNetworkAndCompute(utils.TestCommand):
|
|
|
167
162
|
|
|
168
163
|
class TestNetworkAndComputeCommand(TestNetworkAndCompute):
|
|
169
164
|
def setUp(self):
|
|
170
|
-
super(
|
|
171
|
-
self.cmd = FakeNetworkAndComputeCommand(self.app,
|
|
165
|
+
super().setUp()
|
|
166
|
+
self.cmd = FakeNetworkAndComputeCommand(self.app, None)
|
|
172
167
|
|
|
173
168
|
|
|
174
169
|
class TestNetworkAndComputeLister(TestNetworkAndCompute):
|
|
175
170
|
def setUp(self):
|
|
176
|
-
super(
|
|
177
|
-
self.cmd = FakeNetworkAndComputeLister(self.app,
|
|
171
|
+
super().setUp()
|
|
172
|
+
self.cmd = FakeNetworkAndComputeLister(self.app, None)
|
|
178
173
|
|
|
179
174
|
|
|
180
175
|
class TestNetworkAndComputeShowOne(TestNetworkAndCompute):
|
|
181
176
|
def setUp(self):
|
|
182
|
-
super(
|
|
183
|
-
self.cmd = FakeNetworkAndComputeShowOne(self.app,
|
|
177
|
+
super().setUp()
|
|
178
|
+
self.cmd = FakeNetworkAndComputeShowOne(self.app, None)
|
|
184
179
|
|
|
185
180
|
def test_take_action_with_http_exception(self):
|
|
186
181
|
with mock.patch.object(self.cmd, 'take_action_network') as m_action:
|
|
@@ -205,9 +200,7 @@ class TestNetworkAndComputeShowOne(TestNetworkAndCompute):
|
|
|
205
200
|
|
|
206
201
|
class TestNeutronCommandWithExtraArgs(utils.TestCommand):
|
|
207
202
|
def setUp(self):
|
|
208
|
-
super(
|
|
209
|
-
|
|
210
|
-
self.namespace = argparse.Namespace()
|
|
203
|
+
super().setUp()
|
|
211
204
|
|
|
212
205
|
# Create client mocks. Note that we intentionally do not use specced
|
|
213
206
|
# mocks since we want to test fake methods.
|
|
@@ -217,9 +210,7 @@ class TestNeutronCommandWithExtraArgs(utils.TestCommand):
|
|
|
217
210
|
self.network_client.test_create_action = mock.Mock()
|
|
218
211
|
|
|
219
212
|
# Subclasses can override the command object to test.
|
|
220
|
-
self.cmd = FakeCreateNeutronCommandWithExtraArgs(
|
|
221
|
-
self.app, self.namespace
|
|
222
|
-
)
|
|
213
|
+
self.cmd = FakeCreateNeutronCommandWithExtraArgs(self.app, None)
|
|
223
214
|
|
|
224
215
|
def test_create_extra_attributes_default_type(self):
|
|
225
216
|
arglist = [
|