python-openstackclient 8.3.0__py3-none-any.whl → 10.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/__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 +58 -42
- 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 +14 -6
- openstackclient/common/pagination.py +8 -2
- openstackclient/common/progressbar.py +7 -6
- openstackclient/common/project_cleanup.py +13 -7
- openstackclient/common/quota.py +126 -114
- 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 +39 -21
- openstackclient/compute/v2/host.py +14 -6
- openstackclient/compute/v2/hypervisor.py +14 -5
- openstackclient/compute/v2/hypervisor_stats.py +10 -2
- openstackclient/compute/v2/keypair.py +29 -14
- openstackclient/compute/v2/server.py +251 -171
- openstackclient/compute/v2/server_backup.py +10 -4
- openstackclient/compute/v2/server_event.py +21 -12
- openstackclient/compute/v2/server_group.py +21 -11
- openstackclient/compute/v2/server_image.py +19 -10
- openstackclient/compute/v2/server_migration.py +24 -10
- openstackclient/compute/v2/server_share.py +274 -0
- openstackclient/compute/v2/server_volume.py +10 -4
- openstackclient/compute/v2/service.py +14 -7
- openstackclient/compute/v2/usage.py +26 -21
- openstackclient/identity/client.py +8 -3
- openstackclient/identity/common.py +103 -41
- 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 +26 -12
- openstackclient/identity/v2_0/token.py +12 -5
- openstackclient/identity/v2_0/user.py +26 -15
- openstackclient/identity/v3/access_rule.py +26 -12
- openstackclient/identity/v3/application_credential.py +59 -24
- openstackclient/identity/v3/catalog.py +14 -7
- openstackclient/identity/v3/consumer.py +22 -11
- openstackclient/identity/v3/credential.py +36 -16
- openstackclient/identity/v3/domain.py +37 -18
- openstackclient/identity/v3/ec2creds.py +25 -12
- openstackclient/identity/v3/endpoint.py +42 -20
- openstackclient/identity/v3/endpoint_group.py +28 -17
- openstackclient/identity/v3/federation_protocol.py +71 -50
- openstackclient/identity/v3/group.py +55 -32
- openstackclient/identity/v3/identity_provider.py +92 -57
- openstackclient/identity/v3/implied_role.py +21 -9
- openstackclient/identity/v3/limit.py +115 -92
- openstackclient/identity/v3/mapping.py +26 -13
- openstackclient/identity/v3/policy.py +23 -12
- openstackclient/identity/v3/project.py +211 -122
- openstackclient/identity/v3/region.py +36 -16
- openstackclient/identity/v3/registered_limit.py +116 -109
- openstackclient/identity/v3/role.py +61 -31
- openstackclient/identity/v3/role_assignment.py +23 -6
- openstackclient/identity/v3/service.py +36 -16
- openstackclient/identity/v3/service_provider.py +37 -15
- openstackclient/identity/v3/tag.py +23 -17
- openstackclient/identity/v3/token.py +30 -14
- openstackclient/identity/v3/trust.py +32 -14
- openstackclient/identity/v3/unscoped_saml.py +10 -2
- openstackclient/identity/v3/user.py +49 -26
- openstackclient/image/client.py +7 -3
- openstackclient/image/v1/image.py +33 -26
- openstackclient/image/v2/cache.py +14 -9
- openstackclient/image/v2/image.py +76 -49
- openstackclient/image/v2/info.py +7 -1
- openstackclient/image/v2/metadef_namespaces.py +109 -13
- openstackclient/image/v2/metadef_objects.py +28 -15
- openstackclient/image/v2/metadef_properties.py +24 -13
- openstackclient/image/v2/metadef_resource_type_association.py +14 -7
- openstackclient/image/v2/metadef_resource_types.py +7 -1
- openstackclient/image/v2/task.py +15 -6
- 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 +36 -22
- openstackclient/network/v2/address_group.py +27 -16
- openstackclient/network/v2/address_scope.py +24 -13
- openstackclient/network/v2/bgpvpn/bgpvpn.py +463 -0
- openstackclient/network/v2/bgpvpn/constants.py +30 -0
- openstackclient/network/v2/bgpvpn/network_association.py +214 -0
- openstackclient/network/v2/bgpvpn/port_association.py +490 -0
- openstackclient/network/v2/bgpvpn/router_association.py +288 -0
- openstackclient/network/v2/default_security_group_rule.py +19 -10
- openstackclient/network/v2/floating_ip.py +110 -159
- openstackclient/network/v2/floating_ip_port_forwarding.py +30 -18
- openstackclient/network/v2/fwaas/__init__.py +0 -0
- openstackclient/network/v2/fwaas/group.py +466 -0
- openstackclient/network/v2/fwaas/policy.py +518 -0
- openstackclient/network/v2/fwaas/rule.py +574 -0
- openstackclient/network/v2/ip_availability.py +13 -5
- openstackclient/network/v2/l3_conntrack_helper.py +22 -13
- openstackclient/network/v2/local_ip.py +24 -13
- openstackclient/network/v2/local_ip_association.py +14 -7
- openstackclient/network/v2/ndp_proxy.py +20 -11
- openstackclient/network/v2/network.py +129 -196
- openstackclient/network/v2/network_agent.py +46 -25
- openstackclient/network/v2/network_auto_allocated_topology.py +22 -11
- openstackclient/network/v2/network_flavor.py +27 -16
- openstackclient/network/v2/network_flavor_profile.py +23 -12
- openstackclient/network/v2/network_meter.py +21 -10
- openstackclient/network/v2/network_meter_rule.py +21 -11
- openstackclient/network/v2/network_qos_policy.py +25 -15
- openstackclient/network/v2/network_qos_rule.py +32 -17
- openstackclient/network/v2/network_qos_rule_type.py +13 -5
- openstackclient/network/v2/network_rbac.py +23 -12
- openstackclient/network/v2/network_segment.py +20 -11
- openstackclient/network/v2/network_segment_range.py +56 -29
- openstackclient/network/v2/network_service_provider.py +7 -1
- openstackclient/network/v2/network_trunk.py +38 -22
- openstackclient/network/v2/port.py +54 -29
- openstackclient/network/v2/router.py +75 -52
- openstackclient/network/v2/security_group.py +87 -157
- openstackclient/network/v2/security_group_rule.py +100 -280
- openstackclient/network/v2/subnet.py +49 -28
- openstackclient/network/v2/subnet_pool.py +30 -17
- openstackclient/network/v2/taas/tap_flow.py +22 -11
- openstackclient/network/v2/taas/tap_mirror.py +22 -11
- openstackclient/network/v2/taas/tap_service.py +23 -12
- openstackclient/object/client.py +7 -2
- openstackclient/object/v1/account.py +13 -6
- openstackclient/object/v1/container.py +25 -15
- openstackclient/object/v1/object.py +25 -15
- 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 +25 -19
- 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_limit.py +47 -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/image/v2/test_metadef_objects.py +69 -0
- 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_snapshot.py +56 -138
- 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_module.py +12 -7
- openstackclient/tests/unit/common/test_project_cleanup.py +3 -1
- openstackclient/tests/unit/common/test_quota.py +62 -23
- openstackclient/tests/unit/compute/v2/fakes.py +25 -0
- openstackclient/tests/unit/compute/v2/test_flavor.py +28 -2
- openstackclient/tests/unit/compute/v2/test_keypair.py +6 -6
- openstackclient/tests/unit/compute/v2/test_server.py +17 -104
- openstackclient/tests/unit/compute/v2/test_server_share.py +287 -0
- openstackclient/tests/unit/identity/v3/fakes.py +3 -0
- openstackclient/tests/unit/identity/v3/test_group.py +4 -14
- openstackclient/tests/unit/identity/v3/test_identity_provider.py +303 -299
- openstackclient/tests/unit/identity/v3/test_limit.py +197 -145
- openstackclient/tests/unit/identity/v3/test_project.py +831 -512
- openstackclient/tests/unit/identity/v3/test_protocol.py +97 -88
- openstackclient/tests/unit/identity/v3/test_registered_limit.py +355 -220
- openstackclient/tests/unit/identity/v3/test_user.py +4 -4
- openstackclient/tests/unit/image/v2/test_image.py +16 -16
- 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/fwaas/__init__.py +0 -0
- openstackclient/tests/unit/network/v2/fwaas/test_group.py +897 -0
- openstackclient/tests/unit/network/v2/fwaas/test_policy.py +869 -0
- openstackclient/tests/unit/network/v2/fwaas/test_rule.py +980 -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 +2 -2
- openstackclient/tests/unit/network/v2/{test_floating_ip_network.py → test_floating_ip.py} +3 -2
- openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +13 -13
- openstackclient/tests/unit/network/v2/test_network_agent.py +8 -4
- openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py +3 -3
- openstackclient/tests/unit/network/v2/test_network_flavor.py +2 -2
- openstackclient/tests/unit/network/v2/test_network_qos_policy.py +1 -1
- openstackclient/tests/unit/network/v2/test_network_qos_rule.py +2 -2
- openstackclient/tests/unit/network/v2/test_network_rbac.py +1 -1
- openstackclient/tests/unit/network/v2/test_network_segment.py +1 -1
- openstackclient/tests/unit/network/v2/test_network_segment_range.py +7 -10
- openstackclient/tests/unit/network/v2/test_network_trunk.py +1 -1
- openstackclient/tests/unit/network/v2/test_router.py +8 -9
- openstackclient/tests/unit/network/v2/{test_security_group_network.py → test_security_group.py} +1 -20
- openstackclient/tests/unit/network/v2/{test_security_group_rule_network.py → test_security_group_rule.py} +7 -41
- openstackclient/tests/unit/network/v2/test_subnet.py +2 -1
- openstackclient/tests/unit/network/v2/test_subnet_pool.py +2 -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 +1 -0
- openstackclient/tests/unit/volume/v2/test_consistency_group.py +8 -2
- openstackclient/tests/unit/volume/v2/test_volume.py +7 -6
- openstackclient/tests/unit/volume/v2/test_volume_backup.py +1 -5
- openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +2 -1
- openstackclient/tests/unit/volume/v2/test_volume_type.py +2 -4
- openstackclient/tests/unit/volume/v3/fakes.py +1 -0
- openstackclient/tests/unit/volume/v3/test_volume.py +94 -15
- openstackclient/tests/unit/volume/v3/test_volume_attachment.py +1 -1
- openstackclient/tests/unit/volume/v3/test_volume_backup.py +1 -5
- openstackclient/tests/unit/volume/v3/test_volume_snapshot.py +55 -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 +37 -25
- openstackclient/volume/v2/consistency_group_snapshot.py +27 -12
- openstackclient/volume/v2/qos_specs.py +30 -19
- openstackclient/volume/v2/service.py +17 -6
- openstackclient/volume/v2/volume.py +69 -34
- openstackclient/volume/v2/volume_backend.py +19 -6
- openstackclient/volume/v2/volume_backup.py +48 -22
- openstackclient/volume/v2/volume_host.py +6 -4
- openstackclient/volume/v2/volume_snapshot.py +52 -26
- openstackclient/volume/v2/volume_transfer_request.py +33 -15
- openstackclient/volume/v2/volume_type.py +46 -27
- 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/service.py +16 -6
- openstackclient/volume/v3/volume.py +103 -46
- openstackclient/volume/v3/volume_attachment.py +43 -21
- openstackclient/volume/v3/volume_backup.py +55 -26
- openstackclient/volume/v3/volume_group.py +23 -13
- openstackclient/volume/v3/volume_group_snapshot.py +32 -13
- openstackclient/volume/v3/volume_group_type.py +26 -13
- openstackclient/volume/v3/volume_message.py +15 -7
- openstackclient/volume/v3/volume_snapshot.py +71 -34
- openstackclient/volume/v3/volume_transfer_request.py +33 -15
- openstackclient/volume/v3/volume_type.py +45 -27
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/METADATA +6 -6
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/RECORD +279 -267
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/WHEEL +1 -1
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/entry_points.txt +53 -1
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/licenses/AUTHORS +9 -0
- python_openstackclient-10.0.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-8.3.0.dist-info/pbr.json +0 -1
- /openstackclient/{tests/functional/image/v1 → network/v2/bgpvpn}/__init__.py +0 -0
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/licenses/LICENSE +0 -0
- {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/top_level.txt +0 -0
|
@@ -128,11 +128,6 @@ class TestCommandList(utils.TestCommand):
|
|
|
128
128
|
self.assertEqual(datalist, tuple(data))
|
|
129
129
|
|
|
130
130
|
|
|
131
|
-
@mock.patch.dict(
|
|
132
|
-
'openstackclient.common.module.sys.modules',
|
|
133
|
-
values=MODULES,
|
|
134
|
-
clear=True,
|
|
135
|
-
)
|
|
136
131
|
class TestModuleList(utils.TestCommand):
|
|
137
132
|
def setUp(self):
|
|
138
133
|
super().setUp()
|
|
@@ -150,7 +145,12 @@ class TestModuleList(utils.TestCommand):
|
|
|
150
145
|
# In base command class Lister in cliff, abstract method take_action()
|
|
151
146
|
# returns a tuple containing the column names and an iterable
|
|
152
147
|
# containing the data to be listed.
|
|
153
|
-
|
|
148
|
+
with mock.patch.dict(
|
|
149
|
+
'openstackclient.common.module.sys.modules',
|
|
150
|
+
values=MODULES,
|
|
151
|
+
clear=True,
|
|
152
|
+
):
|
|
153
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
154
154
|
|
|
155
155
|
# Output xxxclient and openstacksdk, but not regular module, like: zlib
|
|
156
156
|
self.assertIn(module_name_1, columns)
|
|
@@ -177,7 +177,12 @@ class TestModuleList(utils.TestCommand):
|
|
|
177
177
|
# In base command class Lister in cliff, abstract method take_action()
|
|
178
178
|
# returns a tuple containing the column names and an iterable
|
|
179
179
|
# containing the data to be listed.
|
|
180
|
-
|
|
180
|
+
with mock.patch.dict(
|
|
181
|
+
'openstackclient.common.module.sys.modules',
|
|
182
|
+
values=MODULES,
|
|
183
|
+
clear=True,
|
|
184
|
+
):
|
|
185
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
181
186
|
|
|
182
187
|
# Output xxxclient, openstacksdk and regular module, like: zlib
|
|
183
188
|
self.assertIn(module_name_1, columns)
|
|
@@ -17,7 +17,9 @@ from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
|
|
|
17
17
|
from openstackclient.tests.unit import utils as test_utils
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
class TestProjectCleanup(
|
|
20
|
+
class TestProjectCleanup(
|
|
21
|
+
identity_fakes.FakeClientMixin, test_utils.TestCommand
|
|
22
|
+
):
|
|
21
23
|
project = identity_fakes.FakeProject.create_one_project()
|
|
22
24
|
|
|
23
25
|
def setUp(self):
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
# License for the specific language governing permissions and limitations
|
|
11
11
|
# under the License.
|
|
12
12
|
|
|
13
|
+
import copy
|
|
13
14
|
from unittest import mock
|
|
14
15
|
|
|
15
16
|
from openstack.block_storage.v3 import quota_set as _volume_quota_set
|
|
@@ -381,8 +382,6 @@ class TestQuotaSet(TestQuota):
|
|
|
381
382
|
self.cmd = quota.SetQuota(self.app, None)
|
|
382
383
|
|
|
383
384
|
def test_quota_set(self):
|
|
384
|
-
floating_ip_num = 100
|
|
385
|
-
fix_ip_num = 100
|
|
386
385
|
injected_file_num = 100
|
|
387
386
|
injected_file_size_num = 10240
|
|
388
387
|
injected_path_size_num = 255
|
|
@@ -391,16 +390,10 @@ class TestQuotaSet(TestQuota):
|
|
|
391
390
|
ram_num = 51200
|
|
392
391
|
instance_num = 10
|
|
393
392
|
property_num = 128
|
|
394
|
-
secgroup_rule_num = 20
|
|
395
|
-
secgroup_num = 10
|
|
396
393
|
servgroup_num = 10
|
|
397
394
|
servgroup_members_num = 10
|
|
398
395
|
|
|
399
396
|
arglist = [
|
|
400
|
-
'--floating-ips',
|
|
401
|
-
str(floating_ip_num),
|
|
402
|
-
'--fixed-ips',
|
|
403
|
-
str(fix_ip_num),
|
|
404
397
|
'--injected-files',
|
|
405
398
|
str(injected_file_num),
|
|
406
399
|
'--injected-file-size',
|
|
@@ -417,10 +410,6 @@ class TestQuotaSet(TestQuota):
|
|
|
417
410
|
str(instance_num),
|
|
418
411
|
'--properties',
|
|
419
412
|
str(property_num),
|
|
420
|
-
'--secgroup-rules',
|
|
421
|
-
str(secgroup_rule_num),
|
|
422
|
-
'--secgroups',
|
|
423
|
-
str(secgroup_num),
|
|
424
413
|
'--server-groups',
|
|
425
414
|
str(servgroup_num),
|
|
426
415
|
'--server-group-members',
|
|
@@ -428,8 +417,6 @@ class TestQuotaSet(TestQuota):
|
|
|
428
417
|
self.projects[0].name,
|
|
429
418
|
]
|
|
430
419
|
verifylist = [
|
|
431
|
-
('floating_ips', floating_ip_num),
|
|
432
|
-
('fixed_ips', fix_ip_num),
|
|
433
420
|
('injected_files', injected_file_num),
|
|
434
421
|
(
|
|
435
422
|
'injected_file_content_bytes',
|
|
@@ -441,8 +428,6 @@ class TestQuotaSet(TestQuota):
|
|
|
441
428
|
('ram', ram_num),
|
|
442
429
|
('instances', instance_num),
|
|
443
430
|
('metadata_items', property_num),
|
|
444
|
-
('security_group_rules', secgroup_rule_num),
|
|
445
|
-
('security_groups', secgroup_num),
|
|
446
431
|
('server_groups', servgroup_num),
|
|
447
432
|
('server_group_members', servgroup_members_num),
|
|
448
433
|
('force', False),
|
|
@@ -454,18 +439,14 @@ class TestQuotaSet(TestQuota):
|
|
|
454
439
|
result = self.cmd.take_action(parsed_args)
|
|
455
440
|
|
|
456
441
|
kwargs = {
|
|
457
|
-
'floating_ips': floating_ip_num,
|
|
458
|
-
'fixed_ips': fix_ip_num,
|
|
459
442
|
'injected_files': injected_file_num,
|
|
460
|
-
'injected_file_content_bytes': injected_file_size_num,
|
|
443
|
+
'injected_file_content_bytes': injected_file_size_num,
|
|
461
444
|
'injected_file_path_bytes': injected_path_size_num,
|
|
462
445
|
'key_pairs': key_pair_num,
|
|
463
446
|
'cores': core_num,
|
|
464
447
|
'ram': ram_num,
|
|
465
448
|
'instances': instance_num,
|
|
466
449
|
'metadata_items': property_num,
|
|
467
|
-
'security_group_rules': secgroup_rule_num,
|
|
468
|
-
'security_groups': secgroup_num,
|
|
469
450
|
'server_groups': servgroup_num,
|
|
470
451
|
'server_group_members': servgroup_members_num,
|
|
471
452
|
}
|
|
@@ -728,7 +709,7 @@ class TestQuotaSet(TestQuota):
|
|
|
728
709
|
|
|
729
710
|
kwargs_compute = {
|
|
730
711
|
'injected_files': injected_file_num,
|
|
731
|
-
'injected_file_content_bytes': injected_file_size_num,
|
|
712
|
+
'injected_file_content_bytes': injected_file_size_num,
|
|
732
713
|
'injected_file_path_bytes': injected_path_size_num,
|
|
733
714
|
'key_pairs': key_pair_num,
|
|
734
715
|
'cores': core_num,
|
|
@@ -826,7 +807,7 @@ class TestQuotaSet(TestQuota):
|
|
|
826
807
|
|
|
827
808
|
kwargs_compute = {
|
|
828
809
|
'injected_files': injected_file_num,
|
|
829
|
-
'injected_file_content_bytes': injected_file_size_num,
|
|
810
|
+
'injected_file_content_bytes': injected_file_size_num,
|
|
830
811
|
'injected_file_path_bytes': injected_path_size_num,
|
|
831
812
|
'key_pairs': key_pair_num,
|
|
832
813
|
'cores': core_num,
|
|
@@ -1122,6 +1103,64 @@ class TestQuotaShow(TestQuota):
|
|
|
1122
1103
|
)
|
|
1123
1104
|
self.assertNotCalled(self.network_client.get_quota_default)
|
|
1124
1105
|
|
|
1106
|
+
def test_quota_show__with_network_and_usage(self):
|
|
1107
|
+
# ensure we do not interfere with other tests
|
|
1108
|
+
self._network_quota_details = copy.deepcopy(
|
|
1109
|
+
self._network_quota_details
|
|
1110
|
+
)
|
|
1111
|
+
# set a couple of resources
|
|
1112
|
+
self._network_quota_details["floating_ips"].update(
|
|
1113
|
+
limit=30, reserved=20, used=7
|
|
1114
|
+
)
|
|
1115
|
+
self._network_quota_details["security_group_rules"].update(
|
|
1116
|
+
limit=9, reserved=7, used=5
|
|
1117
|
+
)
|
|
1118
|
+
|
|
1119
|
+
arglist = [
|
|
1120
|
+
'--network',
|
|
1121
|
+
'--usage',
|
|
1122
|
+
self.projects[0].name,
|
|
1123
|
+
]
|
|
1124
|
+
verifylist = [
|
|
1125
|
+
('service', 'network'),
|
|
1126
|
+
('project', self.projects[0].name),
|
|
1127
|
+
]
|
|
1128
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
1129
|
+
|
|
1130
|
+
headers, result_gen = self.cmd.take_action(parsed_args)
|
|
1131
|
+
|
|
1132
|
+
self.assertEqual(('Resource', 'Limit', 'In Use', 'Reserved'), headers)
|
|
1133
|
+
|
|
1134
|
+
result = sorted(result_gen)
|
|
1135
|
+
|
|
1136
|
+
self.assertEqual(
|
|
1137
|
+
[
|
|
1138
|
+
('floating_ips', 30, 7, 20),
|
|
1139
|
+
('health_monitors', 0, 0, 0),
|
|
1140
|
+
('l7_policies', 0, 0, 0),
|
|
1141
|
+
('listeners', 0, 0, 0),
|
|
1142
|
+
('load_balancers', 0, 0, 0),
|
|
1143
|
+
('networks', 0, 0, 0),
|
|
1144
|
+
('pools', 0, 0, 0),
|
|
1145
|
+
('ports', 0, 0, 0),
|
|
1146
|
+
('rbac_policies', 0, 0, 0),
|
|
1147
|
+
('routers', 0, 0, 0),
|
|
1148
|
+
('security_group_rules', 9, 5, 7),
|
|
1149
|
+
('security_groups', 0, 0, 0),
|
|
1150
|
+
('subnet_pools', 0, 0, 0),
|
|
1151
|
+
('subnets', 0, 0, 0),
|
|
1152
|
+
],
|
|
1153
|
+
result,
|
|
1154
|
+
)
|
|
1155
|
+
|
|
1156
|
+
self.compute_client.get_quota_set.assert_not_called()
|
|
1157
|
+
self.volume_sdk_client.get_quota_set.assert_not_called()
|
|
1158
|
+
self.network_client.get_quota.assert_called_once_with(
|
|
1159
|
+
self.projects[0].id,
|
|
1160
|
+
details=True,
|
|
1161
|
+
)
|
|
1162
|
+
self.assertNotCalled(self.network_client.get_quota_default)
|
|
1163
|
+
|
|
1125
1164
|
def test_quota_show__with_default(self):
|
|
1126
1165
|
arglist = [
|
|
1127
1166
|
'--default',
|
|
@@ -29,7 +29,9 @@ from openstack.compute.v2 import server as _server
|
|
|
29
29
|
from openstack.compute.v2 import server_action as _server_action
|
|
30
30
|
from openstack.compute.v2 import server_interface as _server_interface
|
|
31
31
|
from openstack.compute.v2 import server_migration as _server_migration
|
|
32
|
+
from openstack.compute.v2 import server_share as _server_share
|
|
32
33
|
from openstack.compute.v2 import volume_attachment as _volume_attachment
|
|
34
|
+
from openstack.test import fakes as sdk_fakes
|
|
33
35
|
|
|
34
36
|
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
|
|
35
37
|
from openstackclient.tests.unit.image.v2 import fakes as image_fakes
|
|
@@ -788,6 +790,29 @@ def create_volume_attachments(attrs=None, count=2):
|
|
|
788
790
|
return volume_attachments
|
|
789
791
|
|
|
790
792
|
|
|
793
|
+
def create_one_share(attrs=None):
|
|
794
|
+
"""Create a fake share attachment.
|
|
795
|
+
|
|
796
|
+
:param dict attrs: A dictionary with all attributes
|
|
797
|
+
:return: A fake openstack.compute.v2.server_share.ShareMapping
|
|
798
|
+
object
|
|
799
|
+
"""
|
|
800
|
+
return sdk_fakes.generate_fake_resource(
|
|
801
|
+
_server_share.ShareMapping, **(attrs or {})
|
|
802
|
+
)
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
def create_shares(attrs=None, count=2):
|
|
806
|
+
"""Create multiple fake share attachments.
|
|
807
|
+
|
|
808
|
+
:param dict attrs: A dictionary with all attributes
|
|
809
|
+
:param int count: The number of share attachments to fake
|
|
810
|
+
:return: A list of fake
|
|
811
|
+
openstack.compute.v2.server_share.ShareMapping objects
|
|
812
|
+
"""
|
|
813
|
+
return [create_one_share(attrs) for _ in range(count)]
|
|
814
|
+
|
|
815
|
+
|
|
791
816
|
def create_one_server_interface(attrs=None):
|
|
792
817
|
"""Create a fake ServerInterface.
|
|
793
818
|
|
|
@@ -106,7 +106,6 @@ class TestFlavorCreate(TestFlavor):
|
|
|
106
106
|
'id': None,
|
|
107
107
|
'ephemeral': 0,
|
|
108
108
|
'swap': 0,
|
|
109
|
-
'rxtx_factor': 1.0,
|
|
110
109
|
'is_public': True,
|
|
111
110
|
}
|
|
112
111
|
|
|
@@ -395,6 +394,32 @@ class TestFlavorCreate(TestFlavor):
|
|
|
395
394
|
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
396
395
|
)
|
|
397
396
|
|
|
397
|
+
def test_flavor_create_with_rxtx_factor_post_v2102(self):
|
|
398
|
+
self.set_compute_api_version('2.102')
|
|
399
|
+
|
|
400
|
+
arglist = [
|
|
401
|
+
'--id',
|
|
402
|
+
self.flavor.id,
|
|
403
|
+
'--ram',
|
|
404
|
+
str(self.flavor.ram),
|
|
405
|
+
'--vcpus',
|
|
406
|
+
str(self.flavor.vcpus),
|
|
407
|
+
'--rxtx-factor',
|
|
408
|
+
'1.0',
|
|
409
|
+
self.flavor.name,
|
|
410
|
+
]
|
|
411
|
+
verifylist = [
|
|
412
|
+
('ram', self.flavor.ram),
|
|
413
|
+
('vcpus', self.flavor.vcpus),
|
|
414
|
+
('rxtx_factor', 1.0),
|
|
415
|
+
('name', self.flavor.name),
|
|
416
|
+
]
|
|
417
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
418
|
+
|
|
419
|
+
self.assertRaises(
|
|
420
|
+
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
421
|
+
)
|
|
422
|
+
|
|
398
423
|
|
|
399
424
|
class TestFlavorDelete(TestFlavor):
|
|
400
425
|
def setUp(self):
|
|
@@ -494,7 +519,8 @@ class TestFlavorList(TestFlavor):
|
|
|
494
519
|
'VCPUs',
|
|
495
520
|
'Is Public',
|
|
496
521
|
)
|
|
497
|
-
self.columns_long =
|
|
522
|
+
self.columns_long = (
|
|
523
|
+
*self.columns,
|
|
498
524
|
'Swap',
|
|
499
525
|
'RXTX Factor',
|
|
500
526
|
'Properties',
|
|
@@ -90,8 +90,8 @@ class TestKeypairCreate(TestKeypair):
|
|
|
90
90
|
public_key=mock_generate.return_value.public_key,
|
|
91
91
|
)
|
|
92
92
|
|
|
93
|
-
self.assertEqual(
|
|
94
|
-
self.assertEqual(
|
|
93
|
+
self.assertEqual((), columns)
|
|
94
|
+
self.assertEqual((), data)
|
|
95
95
|
|
|
96
96
|
def test_keypair_create_public_key(self):
|
|
97
97
|
self.data = (
|
|
@@ -279,8 +279,8 @@ class TestKeypairCreate(TestKeypair):
|
|
|
279
279
|
public_key=mock_generate.return_value.public_key,
|
|
280
280
|
)
|
|
281
281
|
|
|
282
|
-
self.assertEqual(
|
|
283
|
-
self.assertEqual(
|
|
282
|
+
self.assertEqual((), columns)
|
|
283
|
+
self.assertEqual((), data)
|
|
284
284
|
|
|
285
285
|
def test_key_pair_create_with_user_pre_v210(self):
|
|
286
286
|
self.set_compute_api_version('2.9')
|
|
@@ -740,8 +740,8 @@ class TestKeypairShow(TestKeypair):
|
|
|
740
740
|
|
|
741
741
|
columns, data = self.cmd.take_action(parsed_args)
|
|
742
742
|
|
|
743
|
-
self.assertEqual(
|
|
744
|
-
self.assertEqual(
|
|
743
|
+
self.assertEqual((), columns)
|
|
744
|
+
self.assertEqual((), data)
|
|
745
745
|
|
|
746
746
|
def test_keypair_show_with_user(self):
|
|
747
747
|
self.set_compute_api_version('2.10')
|
|
@@ -341,61 +341,7 @@ class TestServerAddFixedIP(TestServer):
|
|
|
341
341
|
)
|
|
342
342
|
|
|
343
343
|
|
|
344
|
-
class
|
|
345
|
-
def setUp(self):
|
|
346
|
-
super().setUp()
|
|
347
|
-
|
|
348
|
-
self.app.client_manager.network_endpoint_enabled = False
|
|
349
|
-
self.server = compute_fakes.create_one_server()
|
|
350
|
-
self.compute_client.find_server.return_value = self.server
|
|
351
|
-
|
|
352
|
-
self.cmd = server.AddFloatingIP(self.app, None)
|
|
353
|
-
|
|
354
|
-
def test_server_add_floating_ip_default(self):
|
|
355
|
-
arglist = [
|
|
356
|
-
self.server.name,
|
|
357
|
-
'1.2.3.4',
|
|
358
|
-
]
|
|
359
|
-
verifylist = [
|
|
360
|
-
('server', self.server.name),
|
|
361
|
-
('ip_address', '1.2.3.4'),
|
|
362
|
-
]
|
|
363
|
-
|
|
364
|
-
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
365
|
-
self.cmd.take_action(parsed_args)
|
|
366
|
-
|
|
367
|
-
self.compute_client.find_server.assert_called_once_with(
|
|
368
|
-
self.server.name, ignore_missing=False
|
|
369
|
-
)
|
|
370
|
-
self.compute_client.add_floating_ip_to_server.assert_called_once_with(
|
|
371
|
-
self.server, '1.2.3.4', fixed_address=None
|
|
372
|
-
)
|
|
373
|
-
|
|
374
|
-
def test_server_add_floating_ip_fixed(self):
|
|
375
|
-
arglist = [
|
|
376
|
-
'--fixed-ip-address',
|
|
377
|
-
'5.6.7.8',
|
|
378
|
-
self.server.name,
|
|
379
|
-
'1.2.3.4',
|
|
380
|
-
]
|
|
381
|
-
verifylist = [
|
|
382
|
-
('fixed_ip_address', '5.6.7.8'),
|
|
383
|
-
('server', self.server.name),
|
|
384
|
-
('ip_address', '1.2.3.4'),
|
|
385
|
-
]
|
|
386
|
-
|
|
387
|
-
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
388
|
-
self.cmd.take_action(parsed_args)
|
|
389
|
-
|
|
390
|
-
self.compute_client.find_server.assert_called_once_with(
|
|
391
|
-
self.server.name, ignore_missing=False
|
|
392
|
-
)
|
|
393
|
-
self.compute_client.add_floating_ip_to_server.assert_called_once_with(
|
|
394
|
-
self.server, '1.2.3.4', fixed_address='5.6.7.8'
|
|
395
|
-
)
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
class TestServerAddFloatingIPNetwork(
|
|
344
|
+
class TestServerAddFloatingIP(
|
|
399
345
|
TestServer,
|
|
400
346
|
network_fakes.TestNetworkV2,
|
|
401
347
|
):
|
|
@@ -1608,8 +1554,8 @@ class TestServerCreate(TestServer):
|
|
|
1608
1554
|
port_port2.id: port_port2,
|
|
1609
1555
|
}[name_or_id]
|
|
1610
1556
|
|
|
1611
|
-
self.
|
|
1612
|
-
self.
|
|
1557
|
+
self.network_client.find_network.side_effect = find_network
|
|
1558
|
+
self.network_client.find_port.side_effect = find_port
|
|
1613
1559
|
|
|
1614
1560
|
arglist = [
|
|
1615
1561
|
'--image',
|
|
@@ -1728,7 +1674,7 @@ class TestServerCreate(TestServer):
|
|
|
1728
1674
|
self.set_compute_api_version('2.43')
|
|
1729
1675
|
|
|
1730
1676
|
network = network_fakes.create_one_network()
|
|
1731
|
-
self.
|
|
1677
|
+
self.network_client.find_network.return_value = network
|
|
1732
1678
|
|
|
1733
1679
|
arglist = [
|
|
1734
1680
|
'--image',
|
|
@@ -4865,7 +4811,7 @@ class TestServerList(_TestServerList):
|
|
|
4865
4811
|
]
|
|
4866
4812
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
4867
4813
|
|
|
4868
|
-
columns,
|
|
4814
|
+
columns, _data = self.cmd.take_action(parsed_args)
|
|
4869
4815
|
|
|
4870
4816
|
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
4871
4817
|
self.assertIn('Project ID', columns)
|
|
@@ -5329,7 +5275,7 @@ class TestServerList(_TestServerList):
|
|
|
5329
5275
|
]
|
|
5330
5276
|
|
|
5331
5277
|
# Add the expected host_status column and data.
|
|
5332
|
-
columns_long = self.columns_long
|
|
5278
|
+
columns_long = (*self.columns_long, 'Host Status')
|
|
5333
5279
|
self.data2 = tuple(
|
|
5334
5280
|
(
|
|
5335
5281
|
s.id,
|
|
@@ -5560,7 +5506,7 @@ class TestServerListV273(_TestServerList):
|
|
|
5560
5506
|
}
|
|
5561
5507
|
fake_server = _server.Server(**server_dict)
|
|
5562
5508
|
self.servers.append(fake_server)
|
|
5563
|
-
|
|
5509
|
+
_columns, data = self.cmd.take_action(parsed_args)
|
|
5564
5510
|
# get the first three servers out since our interest is in the partial
|
|
5565
5511
|
# server.
|
|
5566
5512
|
next(data)
|
|
@@ -5708,7 +5654,7 @@ class TestServerListV296(_TestServerList):
|
|
|
5708
5654
|
]
|
|
5709
5655
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
5710
5656
|
|
|
5711
|
-
columns,
|
|
5657
|
+
columns, _data = self.cmd.take_action(parsed_args)
|
|
5712
5658
|
|
|
5713
5659
|
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
5714
5660
|
self.assertIn('Project ID', columns)
|
|
@@ -5860,7 +5806,7 @@ class TestServerListV2100(_TestServerList):
|
|
|
5860
5806
|
]
|
|
5861
5807
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
5862
5808
|
|
|
5863
|
-
columns,
|
|
5809
|
+
columns, _data = self.cmd.take_action(parsed_args)
|
|
5864
5810
|
|
|
5865
5811
|
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
5866
5812
|
self.assertIn('Project ID', columns)
|
|
@@ -7648,38 +7594,7 @@ class TestServerRescue(compute_fakes.TestComputev2):
|
|
|
7648
7594
|
self.assertIsNone(result)
|
|
7649
7595
|
|
|
7650
7596
|
|
|
7651
|
-
class
|
|
7652
|
-
def setUp(self):
|
|
7653
|
-
super().setUp()
|
|
7654
|
-
|
|
7655
|
-
self.app.client_manager.network_endpoint_enabled = False
|
|
7656
|
-
self.server = compute_fakes.create_one_server()
|
|
7657
|
-
self.compute_client.find_server.return_value = self.server
|
|
7658
|
-
|
|
7659
|
-
self.cmd = server.RemoveFloatingIP(self.app, None)
|
|
7660
|
-
|
|
7661
|
-
def test_server_remove_floating_ip(self):
|
|
7662
|
-
arglist = [
|
|
7663
|
-
self.server.name,
|
|
7664
|
-
'1.2.3.4',
|
|
7665
|
-
]
|
|
7666
|
-
verifylist = [
|
|
7667
|
-
('server', self.server.name),
|
|
7668
|
-
('ip_address', '1.2.3.4'),
|
|
7669
|
-
]
|
|
7670
|
-
|
|
7671
|
-
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
7672
|
-
self.cmd.take_action(parsed_args)
|
|
7673
|
-
|
|
7674
|
-
self.compute_client.find_server.assert_called_once_with(
|
|
7675
|
-
self.server.name, ignore_missing=False
|
|
7676
|
-
)
|
|
7677
|
-
self.compute_client.remove_floating_ip_from_server.assert_called_once_with(
|
|
7678
|
-
self.server, '1.2.3.4'
|
|
7679
|
-
)
|
|
7680
|
-
|
|
7681
|
-
|
|
7682
|
-
class TestServerRemoveFloatingIPNetwork(network_fakes.TestNetworkV2):
|
|
7597
|
+
class TestServerRemoveFloatingIP(network_fakes.TestNetworkV2):
|
|
7683
7598
|
def setUp(self):
|
|
7684
7599
|
super().setUp()
|
|
7685
7600
|
|
|
@@ -7896,15 +7811,13 @@ class TestServerResize(compute_fakes.TestComputev2):
|
|
|
7896
7811
|
('server', self.server.id),
|
|
7897
7812
|
]
|
|
7898
7813
|
|
|
7899
|
-
|
|
7900
|
-
|
|
7901
|
-
|
|
7902
|
-
|
|
7903
|
-
|
|
7814
|
+
self.assertRaises(
|
|
7815
|
+
test_utils.ParserException,
|
|
7816
|
+
self.check_parser,
|
|
7817
|
+
self.cmd,
|
|
7818
|
+
arglist,
|
|
7819
|
+
verifylist,
|
|
7904
7820
|
)
|
|
7905
|
-
self.compute_client.find_flavor.assert_not_called()
|
|
7906
|
-
self.compute_client.resize_server.assert_not_called()
|
|
7907
|
-
self.assertIsNone(result)
|
|
7908
7821
|
|
|
7909
7822
|
def test_server_resize(self):
|
|
7910
7823
|
arglist = [
|
|
@@ -8898,7 +8811,7 @@ class TestServerShow(TestServer):
|
|
|
8898
8811
|
None, # OS-EXT-SRV-ATTR:user_data
|
|
8899
8812
|
server.PowerStateColumn(
|
|
8900
8813
|
self.server.power_state
|
|
8901
|
-
), # OS-EXT-STS:power_state
|
|
8814
|
+
), # OS-EXT-STS:power_state
|
|
8902
8815
|
None, # OS-EXT-STS:task_state
|
|
8903
8816
|
None, # OS-EXT-STS:vm_state
|
|
8904
8817
|
None, # OS-SRV-USG:launched_at
|