python-openstackclient 8.1.0__py3-none-any.whl → 8.3.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/compute_v2.py +2 -2
- openstackclient/api/object_store_v1.py +4 -1
- openstackclient/api/volume_v2.py +60 -0
- openstackclient/api/volume_v3.py +60 -0
- openstackclient/command.py +27 -0
- openstackclient/common/availability_zone.py +1 -1
- openstackclient/common/clientmanager.py +59 -21
- openstackclient/common/configuration.py +1 -1
- openstackclient/common/extension.py +1 -1
- openstackclient/common/limits.py +1 -1
- openstackclient/common/module.py +4 -2
- openstackclient/common/project_cleanup.py +10 -8
- openstackclient/common/quota.py +23 -6
- openstackclient/common/versions.py +1 -2
- openstackclient/compute/v2/agent.py +1 -1
- openstackclient/compute/v2/aggregate.py +6 -5
- openstackclient/compute/v2/console.py +5 -3
- openstackclient/compute/v2/console_connection.py +1 -1
- openstackclient/compute/v2/flavor.py +15 -2
- openstackclient/compute/v2/host.py +1 -1
- openstackclient/compute/v2/hypervisor.py +1 -1
- openstackclient/compute/v2/hypervisor_stats.py +1 -1
- openstackclient/compute/v2/keypair.py +1 -1
- openstackclient/compute/v2/server.py +77 -30
- openstackclient/compute/v2/server_backup.py +1 -1
- openstackclient/compute/v2/server_event.py +1 -1
- openstackclient/compute/v2/server_group.py +4 -2
- openstackclient/compute/v2/server_image.py +1 -1
- openstackclient/compute/v2/server_migration.py +1 -1
- openstackclient/compute/v2/server_volume.py +1 -1
- openstackclient/compute/v2/service.py +1 -1
- openstackclient/compute/v2/usage.py +6 -4
- openstackclient/identity/common.py +10 -14
- openstackclient/identity/v2_0/catalog.py +3 -2
- openstackclient/identity/v2_0/ec2creds.py +1 -1
- openstackclient/identity/v2_0/endpoint.py +1 -1
- openstackclient/identity/v2_0/project.py +17 -7
- openstackclient/identity/v2_0/role.py +1 -1
- openstackclient/identity/v2_0/role_assignment.py +3 -3
- openstackclient/identity/v2_0/service.py +1 -1
- openstackclient/identity/v2_0/token.py +1 -1
- openstackclient/identity/v2_0/user.py +2 -2
- openstackclient/identity/v3/access_rule.py +16 -4
- openstackclient/identity/v3/application_credential.py +116 -95
- openstackclient/identity/v3/catalog.py +3 -3
- openstackclient/identity/v3/consumer.py +1 -1
- openstackclient/identity/v3/credential.py +1 -1
- openstackclient/identity/v3/domain.py +15 -10
- openstackclient/identity/v3/ec2creds.py +1 -1
- openstackclient/identity/v3/endpoint.py +33 -12
- openstackclient/identity/v3/endpoint_group.py +1 -1
- openstackclient/identity/v3/federation_protocol.py +1 -1
- openstackclient/identity/v3/group.py +11 -5
- openstackclient/identity/v3/identity_provider.py +12 -10
- openstackclient/identity/v3/implied_role.py +1 -1
- openstackclient/identity/v3/limit.py +1 -1
- openstackclient/identity/v3/mapping.py +1 -1
- openstackclient/identity/v3/policy.py +1 -1
- openstackclient/identity/v3/project.py +34 -22
- openstackclient/identity/v3/region.py +1 -1
- openstackclient/identity/v3/registered_limit.py +16 -11
- openstackclient/identity/v3/role.py +27 -41
- openstackclient/identity/v3/role_assignment.py +12 -23
- openstackclient/identity/v3/service.py +1 -1
- openstackclient/identity/v3/service_provider.py +1 -1
- openstackclient/identity/v3/tag.py +3 -2
- openstackclient/identity/v3/token.py +3 -2
- openstackclient/identity/v3/trust.py +4 -2
- openstackclient/identity/v3/unscoped_saml.py +1 -1
- openstackclient/identity/v3/user.py +22 -13
- openstackclient/image/v1/image.py +35 -17
- openstackclient/image/v2/cache.py +11 -7
- openstackclient/image/v2/image.py +62 -12
- openstackclient/image/v2/info.py +1 -1
- openstackclient/image/v2/metadef_namespaces.py +1 -1
- openstackclient/image/v2/metadef_objects.py +9 -3
- openstackclient/image/v2/metadef_properties.py +11 -3
- openstackclient/image/v2/metadef_resource_type_association.py +1 -1
- openstackclient/image/v2/metadef_resource_types.py +1 -1
- openstackclient/image/v2/task.py +1 -1
- openstackclient/network/common.py +10 -9
- openstackclient/network/v2/address_group.py +4 -3
- openstackclient/network/v2/address_scope.py +8 -6
- openstackclient/network/v2/default_security_group_rule.py +9 -8
- openstackclient/network/v2/floating_ip.py +16 -9
- openstackclient/network/v2/floating_ip_port_forwarding.py +9 -6
- openstackclient/network/v2/ip_availability.py +7 -4
- openstackclient/network/v2/l3_conntrack_helper.py +11 -4
- openstackclient/network/v2/local_ip.py +13 -7
- openstackclient/network/v2/local_ip_association.py +7 -4
- openstackclient/network/v2/ndp_proxy.py +13 -6
- openstackclient/network/v2/network.py +33 -16
- openstackclient/network/v2/network_agent.py +5 -5
- openstackclient/network/v2/network_auto_allocated_topology.py +1 -1
- openstackclient/network/v2/network_flavor.py +1 -1
- openstackclient/network/v2/network_flavor_profile.py +1 -1
- openstackclient/network/v2/network_meter.py +1 -1
- openstackclient/network/v2/network_meter_rule.py +1 -1
- openstackclient/network/v2/network_qos_policy.py +7 -5
- openstackclient/network/v2/network_qos_rule.py +1 -1
- openstackclient/network/v2/network_qos_rule_type.py +1 -1
- openstackclient/network/v2/network_rbac.py +8 -5
- openstackclient/network/v2/network_segment.py +2 -2
- openstackclient/network/v2/network_segment_range.py +13 -6
- openstackclient/network/v2/network_service_provider.py +1 -1
- openstackclient/network/v2/network_trunk.py +65 -42
- openstackclient/network/v2/port.py +38 -20
- openstackclient/network/v2/router.py +19 -8
- openstackclient/network/v2/security_group.py +52 -7
- openstackclient/network/v2/security_group_rule.py +27 -4
- openstackclient/network/v2/subnet.py +17 -18
- openstackclient/network/v2/subnet_pool.py +11 -9
- openstackclient/network/v2/taas/__init__.py +0 -0
- openstackclient/network/v2/taas/tap_flow.py +245 -0
- openstackclient/network/v2/taas/tap_mirror.py +237 -0
- openstackclient/network/v2/taas/tap_service.py +211 -0
- openstackclient/object/v1/account.py +1 -1
- openstackclient/object/v1/container.py +1 -1
- openstackclient/object/v1/object.py +1 -1
- openstackclient/shell.py +18 -8
- openstackclient/tests/functional/identity/v3/test_access_rule.py +1 -1
- openstackclient/tests/functional/identity/v3/test_application_credential.py +7 -7
- openstackclient/tests/functional/identity/v3/test_catalog.py +42 -23
- openstackclient/tests/functional/identity/v3/test_role_assignment.py +174 -0
- openstackclient/tests/functional/image/v2/test_cache.py +54 -0
- openstackclient/tests/functional/image/v2/test_image.py +36 -14
- openstackclient/tests/functional/image/v2/test_metadef_resource_type.py +55 -0
- openstackclient/tests/functional/volume/v2/test_volume.py +1 -1
- openstackclient/tests/functional/volume/v3/test_volume.py +2 -2
- openstackclient/tests/unit/api/test_volume_v2.py +124 -0
- openstackclient/tests/unit/api/test_volume_v3.py +124 -0
- openstackclient/tests/unit/common/test_command.py +1 -1
- openstackclient/tests/unit/common/test_extension.py +2 -3
- openstackclient/tests/unit/common/test_module.py +14 -7
- openstackclient/tests/unit/common/test_quota.py +20 -0
- openstackclient/tests/unit/compute/v2/test_aggregate.py +5 -3
- openstackclient/tests/unit/compute/v2/test_console.py +1 -4
- openstackclient/tests/unit/compute/v2/test_flavor.py +160 -177
- openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py +1 -9
- openstackclient/tests/unit/compute/v2/test_server.py +406 -81
- openstackclient/tests/unit/compute/v2/test_server_backup.py +1 -3
- openstackclient/tests/unit/compute/v2/test_service.py +1 -3
- openstackclient/tests/unit/fakes.py +35 -134
- openstackclient/tests/unit/identity/test_common.py +100 -0
- openstackclient/tests/unit/identity/v2_0/test_project.py +4 -4
- openstackclient/tests/unit/identity/v3/fakes.py +10 -2
- openstackclient/tests/unit/identity/v3/test_application_credential.py +50 -44
- openstackclient/tests/unit/identity/v3/test_domain.py +3 -3
- openstackclient/tests/unit/identity/v3/test_endpoint.py +1 -1
- openstackclient/tests/unit/identity/v3/test_group.py +4 -2
- openstackclient/tests/unit/identity/v3/test_identity_provider.py +10 -10
- openstackclient/tests/unit/identity/v3/test_oauth.py +1 -1
- openstackclient/tests/unit/identity/v3/test_project.py +31 -54
- openstackclient/tests/unit/identity/v3/test_registered_limit.py +2 -2
- openstackclient/tests/unit/identity/v3/test_role.py +3 -90
- openstackclient/tests/unit/identity/v3/test_user.py +7 -51
- openstackclient/tests/unit/image/v1/test_image.py +47 -0
- openstackclient/tests/unit/image/v2/test_image.py +190 -9
- openstackclient/tests/unit/image/v2/test_metadef_objects.py +22 -0
- openstackclient/tests/unit/image/v2/test_metadef_properties.py +24 -10
- openstackclient/tests/unit/network/test_common.py +9 -13
- openstackclient/tests/unit/network/v2/fakes.py +1 -0
- openstackclient/tests/unit/network/v2/taas/__init__.py +0 -0
- openstackclient/tests/unit/network/v2/taas/test_osc_tap_flow.py +276 -0
- openstackclient/tests/unit/network/v2/taas/test_osc_tap_mirror.py +288 -0
- openstackclient/tests/unit/network/v2/taas/test_osc_tap_service.py +271 -0
- openstackclient/tests/unit/network/v2/test_address_group.py +19 -22
- openstackclient/tests/unit/network/v2/test_address_scope.py +10 -15
- openstackclient/tests/unit/network/v2/test_default_security_group_rule.py +38 -49
- openstackclient/tests/unit/network/v2/test_floating_ip_network.py +21 -27
- openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +21 -18
- openstackclient/tests/unit/network/v2/test_ip_availability.py +6 -8
- openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py +6 -15
- openstackclient/tests/unit/network/v2/test_local_ip.py +12 -23
- openstackclient/tests/unit/network/v2/test_local_ip_association.py +13 -18
- openstackclient/tests/unit/network/v2/test_ndp_proxy.py +13 -23
- openstackclient/tests/unit/network/v2/test_network.py +41 -37
- openstackclient/tests/unit/network/v2/test_network_agent.py +13 -20
- openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py +5 -8
- openstackclient/tests/unit/network/v2/test_network_flavor.py +14 -26
- openstackclient/tests/unit/network/v2/test_network_flavor_profile.py +14 -17
- openstackclient/tests/unit/network/v2/test_network_meter.py +7 -17
- openstackclient/tests/unit/network/v2/test_network_meter_rule.py +10 -20
- openstackclient/tests/unit/network/v2/test_network_qos_policy.py +7 -13
- openstackclient/tests/unit/network/v2/test_network_qos_rule.py +44 -54
- openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py +2 -7
- openstackclient/tests/unit/network/v2/test_network_rbac.py +21 -36
- openstackclient/tests/unit/network/v2/test_network_segment.py +13 -29
- openstackclient/tests/unit/network/v2/test_network_segment_range.py +20 -19
- openstackclient/tests/unit/network/v2/test_network_service_provider.py +1 -4
- openstackclient/tests/unit/network/v2/test_network_trunk.py +52 -47
- openstackclient/tests/unit/network/v2/test_port.py +113 -84
- openstackclient/tests/unit/network/v2/test_router.py +104 -126
- openstackclient/tests/unit/network/v2/test_security_group_network.py +25 -26
- openstackclient/tests/unit/network/v2/test_security_group_rule_network.py +66 -18
- openstackclient/tests/unit/network/v2/test_subnet.py +35 -46
- openstackclient/tests/unit/network/v2/test_subnet_pool.py +21 -33
- openstackclient/tests/unit/volume/test_find_resource.py +4 -13
- openstackclient/tests/unit/volume/v2/test_volume.py +358 -305
- openstackclient/tests/unit/volume/v2/test_volume_backup.py +3 -1
- openstackclient/tests/unit/volume/v3/test_volume.py +443 -415
- openstackclient/tests/unit/volume/v3/test_volume_backup.py +9 -0
- openstackclient/volume/client.py +7 -17
- openstackclient/volume/v2/backup_record.py +1 -1
- openstackclient/volume/v2/consistency_group.py +1 -1
- openstackclient/volume/v2/consistency_group_snapshot.py +1 -1
- openstackclient/volume/v2/qos_specs.py +1 -1
- openstackclient/volume/v2/service.py +2 -2
- openstackclient/volume/v2/volume.py +80 -54
- openstackclient/volume/v2/volume_backend.py +1 -1
- openstackclient/volume/v2/volume_backup.py +5 -3
- openstackclient/volume/v2/volume_host.py +1 -2
- openstackclient/volume/v2/volume_snapshot.py +2 -2
- openstackclient/volume/v2/volume_transfer_request.py +1 -1
- openstackclient/volume/v2/volume_type.py +11 -6
- openstackclient/volume/v3/block_storage_cleanup.py +1 -1
- openstackclient/volume/v3/block_storage_cluster.py +1 -1
- openstackclient/volume/v3/block_storage_log_level.py +1 -1
- openstackclient/volume/v3/block_storage_manage.py +1 -1
- openstackclient/volume/v3/block_storage_resource_filter.py +1 -1
- openstackclient/volume/v3/service.py +2 -2
- openstackclient/volume/v3/volume.py +104 -77
- openstackclient/volume/v3/volume_attachment.py +6 -5
- openstackclient/volume/v3/volume_backup.py +18 -3
- openstackclient/volume/v3/volume_group.py +2 -2
- openstackclient/volume/v3/volume_group_snapshot.py +1 -1
- openstackclient/volume/v3/volume_group_type.py +1 -1
- openstackclient/volume/v3/volume_message.py +1 -1
- openstackclient/volume/v3/volume_snapshot.py +2 -2
- openstackclient/volume/v3/volume_transfer_request.py +1 -1
- openstackclient/volume/v3/volume_type.py +15 -9
- {python_openstackclient-8.1.0.dist-info → python_openstackclient-8.3.0.dist-info}/METADATA +19 -17
- {python_openstackclient-8.1.0.dist-info → python_openstackclient-8.3.0.dist-info}/RECORD +239 -224
- {python_openstackclient-8.1.0.dist-info → python_openstackclient-8.3.0.dist-info}/WHEEL +1 -1
- {python_openstackclient-8.1.0.dist-info → python_openstackclient-8.3.0.dist-info}/entry_points.txt +15 -0
- {python_openstackclient-8.1.0.dist-info → python_openstackclient-8.3.0.dist-info/licenses}/AUTHORS +15 -0
- python_openstackclient-8.3.0.dist-info/pbr.json +1 -0
- openstackclient/tests/unit/common/test_logs.py +0 -221
- python_openstackclient-8.1.0.dist-info/pbr.json +0 -1
- {python_openstackclient-8.1.0.dist-info → python_openstackclient-8.3.0.dist-info/licenses}/LICENSE +0 -0
- {python_openstackclient-8.1.0.dist-info → python_openstackclient-8.3.0.dist-info}/top_level.txt +0 -0
|
@@ -127,7 +127,7 @@ class TestIdentityProviderCreate(TestIdentityProvider):
|
|
|
127
127
|
]
|
|
128
128
|
verifylist = [
|
|
129
129
|
('identity_provider_id', identity_fakes.idp_id),
|
|
130
|
-
('
|
|
130
|
+
('remote_ids', identity_fakes.idp_remote_ids[:1]),
|
|
131
131
|
]
|
|
132
132
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
133
133
|
columns, data = self.cmd.take_action(parsed_args)
|
|
@@ -157,7 +157,7 @@ class TestIdentityProviderCreate(TestIdentityProvider):
|
|
|
157
157
|
]
|
|
158
158
|
verifylist = [
|
|
159
159
|
('identity_provider_id', identity_fakes.idp_id),
|
|
160
|
-
('
|
|
160
|
+
('remote_ids', identity_fakes.idp_remote_ids),
|
|
161
161
|
]
|
|
162
162
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
163
163
|
columns, data = self.cmd.take_action(parsed_args)
|
|
@@ -561,7 +561,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
|
|
|
561
561
|
('description', new_description),
|
|
562
562
|
('enable', False),
|
|
563
563
|
('disable', False),
|
|
564
|
-
('
|
|
564
|
+
('remote_ids', None),
|
|
565
565
|
]
|
|
566
566
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
567
567
|
self.cmd.take_action(parsed_args)
|
|
@@ -597,7 +597,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
|
|
|
597
597
|
('description', None),
|
|
598
598
|
('enable', False),
|
|
599
599
|
('disable', True),
|
|
600
|
-
('
|
|
600
|
+
('remote_ids', identity_fakes.idp_remote_ids),
|
|
601
601
|
]
|
|
602
602
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
603
603
|
|
|
@@ -637,7 +637,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
|
|
|
637
637
|
('description', None),
|
|
638
638
|
('enable', True),
|
|
639
639
|
('disable', False),
|
|
640
|
-
('
|
|
640
|
+
('remote_ids', identity_fakes.idp_remote_ids),
|
|
641
641
|
]
|
|
642
642
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
643
643
|
|
|
@@ -675,7 +675,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
|
|
|
675
675
|
('description', None),
|
|
676
676
|
('enable', True),
|
|
677
677
|
('disable', False),
|
|
678
|
-
('
|
|
678
|
+
('remote_ids', [self.new_remote_id]),
|
|
679
679
|
]
|
|
680
680
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
681
681
|
|
|
@@ -756,7 +756,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
|
|
|
756
756
|
('identity_provider', identity_fakes.idp_id),
|
|
757
757
|
('enable', False),
|
|
758
758
|
('disable', False),
|
|
759
|
-
('
|
|
759
|
+
('remote_ids', None),
|
|
760
760
|
]
|
|
761
761
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
762
762
|
|
|
@@ -776,7 +776,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
|
|
|
776
776
|
('identity_provider', identity_fakes.idp_id),
|
|
777
777
|
('enable', False),
|
|
778
778
|
('disable', False),
|
|
779
|
-
('
|
|
779
|
+
('remote_ids', None),
|
|
780
780
|
('authorization_ttl', 60),
|
|
781
781
|
]
|
|
782
782
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -800,7 +800,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
|
|
|
800
800
|
('identity_provider', identity_fakes.idp_id),
|
|
801
801
|
('enable', False),
|
|
802
802
|
('disable', False),
|
|
803
|
-
('
|
|
803
|
+
('remote_ids', None),
|
|
804
804
|
('authorization_ttl', 0),
|
|
805
805
|
]
|
|
806
806
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -816,7 +816,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
|
|
|
816
816
|
('identity_provider', identity_fakes.idp_id),
|
|
817
817
|
('enable', False),
|
|
818
818
|
('disable', False),
|
|
819
|
-
('
|
|
819
|
+
('remote_ids', None),
|
|
820
820
|
('authorization_ttl', -1),
|
|
821
821
|
]
|
|
822
822
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -109,7 +109,7 @@ class TestRequestTokenAuthorize(TestOAuth1):
|
|
|
109
109
|
]
|
|
110
110
|
verifylist = [
|
|
111
111
|
('request_key', identity_fakes.request_token_id),
|
|
112
|
-
('
|
|
112
|
+
('roles', [identity_fakes.role_name]),
|
|
113
113
|
]
|
|
114
114
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
115
115
|
columns, data = self.cmd.take_action(parsed_args)
|
|
@@ -77,8 +77,7 @@ class TestProjectCreate(TestProject):
|
|
|
77
77
|
]
|
|
78
78
|
verifylist = [
|
|
79
79
|
('parent', None),
|
|
80
|
-
('
|
|
81
|
-
('disable', False),
|
|
80
|
+
('enabled', True),
|
|
82
81
|
('name', self.project.name),
|
|
83
82
|
('tags', []),
|
|
84
83
|
]
|
|
@@ -134,8 +133,7 @@ class TestProjectCreate(TestProject):
|
|
|
134
133
|
]
|
|
135
134
|
verifylist = [
|
|
136
135
|
('description', 'new desc'),
|
|
137
|
-
('
|
|
138
|
-
('disable', False),
|
|
136
|
+
('enabled', True),
|
|
139
137
|
('name', self.project.name),
|
|
140
138
|
('parent', None),
|
|
141
139
|
('tags', []),
|
|
@@ -172,8 +170,7 @@ class TestProjectCreate(TestProject):
|
|
|
172
170
|
]
|
|
173
171
|
verifylist = [
|
|
174
172
|
('domain', self.project.domain_id),
|
|
175
|
-
('
|
|
176
|
-
('disable', False),
|
|
173
|
+
('enabled', True),
|
|
177
174
|
('name', self.project.name),
|
|
178
175
|
('parent', None),
|
|
179
176
|
('tags', []),
|
|
@@ -210,8 +207,7 @@ class TestProjectCreate(TestProject):
|
|
|
210
207
|
]
|
|
211
208
|
verifylist = [
|
|
212
209
|
('domain', self.project.domain_id),
|
|
213
|
-
('
|
|
214
|
-
('disable', False),
|
|
210
|
+
('enabled', True),
|
|
215
211
|
('name', self.project.name),
|
|
216
212
|
('parent', None),
|
|
217
213
|
('tags', []),
|
|
@@ -243,8 +239,7 @@ class TestProjectCreate(TestProject):
|
|
|
243
239
|
self.project.name,
|
|
244
240
|
]
|
|
245
241
|
verifylist = [
|
|
246
|
-
('
|
|
247
|
-
('disable', False),
|
|
242
|
+
('enabled', True),
|
|
248
243
|
('name', self.project.name),
|
|
249
244
|
('parent', None),
|
|
250
245
|
('tags', []),
|
|
@@ -279,8 +274,7 @@ class TestProjectCreate(TestProject):
|
|
|
279
274
|
self.project.name,
|
|
280
275
|
]
|
|
281
276
|
verifylist = [
|
|
282
|
-
('
|
|
283
|
-
('disable', True),
|
|
277
|
+
('enabled', False),
|
|
284
278
|
('name', self.project.name),
|
|
285
279
|
('parent', None),
|
|
286
280
|
]
|
|
@@ -317,7 +311,7 @@ class TestProjectCreate(TestProject):
|
|
|
317
311
|
self.project.name,
|
|
318
312
|
]
|
|
319
313
|
verifylist = [
|
|
320
|
-
('
|
|
314
|
+
('properties', {'fee': 'fi', 'fo': 'fum'}),
|
|
321
315
|
('name', self.project.name),
|
|
322
316
|
]
|
|
323
317
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -354,11 +348,10 @@ class TestProjectCreate(TestProject):
|
|
|
354
348
|
]
|
|
355
349
|
verifylist = [
|
|
356
350
|
('parent', None),
|
|
357
|
-
('
|
|
358
|
-
('disable', False),
|
|
351
|
+
('enabled', True),
|
|
359
352
|
('name', self.project.name),
|
|
360
353
|
('tags', []),
|
|
361
|
-
('
|
|
354
|
+
('properties', {'is_domain': 'false'}),
|
|
362
355
|
('name', self.project.name),
|
|
363
356
|
]
|
|
364
357
|
|
|
@@ -393,11 +386,10 @@ class TestProjectCreate(TestProject):
|
|
|
393
386
|
]
|
|
394
387
|
verifylist = [
|
|
395
388
|
('parent', None),
|
|
396
|
-
('
|
|
397
|
-
('disable', False),
|
|
389
|
+
('enabled', True),
|
|
398
390
|
('name', self.project.name),
|
|
399
391
|
('tags', []),
|
|
400
|
-
('
|
|
392
|
+
('properties', {'is_domain': 'true'}),
|
|
401
393
|
('name', self.project.name),
|
|
402
394
|
]
|
|
403
395
|
|
|
@@ -432,11 +424,10 @@ class TestProjectCreate(TestProject):
|
|
|
432
424
|
]
|
|
433
425
|
verifylist = [
|
|
434
426
|
('parent', None),
|
|
435
|
-
('
|
|
436
|
-
('disable', False),
|
|
427
|
+
('enabled', True),
|
|
437
428
|
('name', self.project.name),
|
|
438
429
|
('tags', []),
|
|
439
|
-
('
|
|
430
|
+
('properties', {'is_domain': 'none'}),
|
|
440
431
|
('name', self.project.name),
|
|
441
432
|
]
|
|
442
433
|
|
|
@@ -481,8 +472,7 @@ class TestProjectCreate(TestProject):
|
|
|
481
472
|
verifylist = [
|
|
482
473
|
('domain', self.project.domain_id),
|
|
483
474
|
('parent', self.parent.name),
|
|
484
|
-
('
|
|
485
|
-
('disable', False),
|
|
475
|
+
('enabled', True),
|
|
486
476
|
('name', self.project.name),
|
|
487
477
|
('tags', []),
|
|
488
478
|
]
|
|
@@ -544,8 +534,7 @@ class TestProjectCreate(TestProject):
|
|
|
544
534
|
verifylist = [
|
|
545
535
|
('domain', self.project.domain_id),
|
|
546
536
|
('parent', 'invalid'),
|
|
547
|
-
('
|
|
548
|
-
('disable', False),
|
|
537
|
+
('enabled', True),
|
|
549
538
|
('name', self.project.name),
|
|
550
539
|
]
|
|
551
540
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -566,8 +555,7 @@ class TestProjectCreate(TestProject):
|
|
|
566
555
|
]
|
|
567
556
|
verifylist = [
|
|
568
557
|
('domain', self.project.domain_id),
|
|
569
|
-
('
|
|
570
|
-
('disable', False),
|
|
558
|
+
('enabled', True),
|
|
571
559
|
('name', self.project.name),
|
|
572
560
|
('parent', None),
|
|
573
561
|
('tags', ['foo']),
|
|
@@ -602,8 +590,7 @@ class TestProjectCreate(TestProject):
|
|
|
602
590
|
verifylist = [
|
|
603
591
|
('immutable', True),
|
|
604
592
|
('description', None),
|
|
605
|
-
('
|
|
606
|
-
('disable', False),
|
|
593
|
+
('enabled', True),
|
|
607
594
|
('name', self.project.name),
|
|
608
595
|
('parent', None),
|
|
609
596
|
('tags', []),
|
|
@@ -638,10 +625,9 @@ class TestProjectCreate(TestProject):
|
|
|
638
625
|
self.project.name,
|
|
639
626
|
]
|
|
640
627
|
verifylist = [
|
|
641
|
-
('
|
|
628
|
+
('immutable', False),
|
|
642
629
|
('description', None),
|
|
643
|
-
('
|
|
644
|
-
('disable', False),
|
|
630
|
+
('enabled', True),
|
|
645
631
|
('name', self.project.name),
|
|
646
632
|
('parent', None),
|
|
647
633
|
('tags', []),
|
|
@@ -981,8 +967,7 @@ class TestProjectSet(TestProject):
|
|
|
981
967
|
]
|
|
982
968
|
verifylist = [
|
|
983
969
|
('project', self.project.name),
|
|
984
|
-
('
|
|
985
|
-
('disable', False),
|
|
970
|
+
('enabled', None),
|
|
986
971
|
]
|
|
987
972
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
988
973
|
|
|
@@ -1001,8 +986,7 @@ class TestProjectSet(TestProject):
|
|
|
1001
986
|
verifylist = [
|
|
1002
987
|
('name', 'qwerty'),
|
|
1003
988
|
('domain', self.project.domain_id),
|
|
1004
|
-
('
|
|
1005
|
-
('disable', False),
|
|
989
|
+
('enabled', None),
|
|
1006
990
|
('project', self.project.name),
|
|
1007
991
|
]
|
|
1008
992
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -1029,8 +1013,7 @@ class TestProjectSet(TestProject):
|
|
|
1029
1013
|
verifylist = [
|
|
1030
1014
|
('domain', self.project.domain_id),
|
|
1031
1015
|
('description', 'new desc'),
|
|
1032
|
-
('
|
|
1033
|
-
('disable', False),
|
|
1016
|
+
('enabled', None),
|
|
1034
1017
|
('project', self.project.name),
|
|
1035
1018
|
]
|
|
1036
1019
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -1053,8 +1036,7 @@ class TestProjectSet(TestProject):
|
|
|
1053
1036
|
]
|
|
1054
1037
|
verifylist = [
|
|
1055
1038
|
('domain', self.project.domain_id),
|
|
1056
|
-
('
|
|
1057
|
-
('disable', False),
|
|
1039
|
+
('enabled', True),
|
|
1058
1040
|
('project', self.project.name),
|
|
1059
1041
|
]
|
|
1060
1042
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -1077,8 +1059,7 @@ class TestProjectSet(TestProject):
|
|
|
1077
1059
|
]
|
|
1078
1060
|
verifylist = [
|
|
1079
1061
|
('domain', self.project.domain_id),
|
|
1080
|
-
('
|
|
1081
|
-
('disable', True),
|
|
1062
|
+
('enabled', False),
|
|
1082
1063
|
('project', self.project.name),
|
|
1083
1064
|
]
|
|
1084
1065
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -1104,7 +1085,7 @@ class TestProjectSet(TestProject):
|
|
|
1104
1085
|
]
|
|
1105
1086
|
verifylist = [
|
|
1106
1087
|
('domain', self.project.domain_id),
|
|
1107
|
-
('
|
|
1088
|
+
('properties', {'fee': 'fi', 'fo': 'fum'}),
|
|
1108
1089
|
('project', self.project.name),
|
|
1109
1090
|
]
|
|
1110
1091
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -1132,8 +1113,7 @@ class TestProjectSet(TestProject):
|
|
|
1132
1113
|
verifylist = [
|
|
1133
1114
|
('name', 'qwerty'),
|
|
1134
1115
|
('domain', self.project.domain_id),
|
|
1135
|
-
('
|
|
1136
|
-
('disable', False),
|
|
1116
|
+
('enabled', None),
|
|
1137
1117
|
('project', self.project.name),
|
|
1138
1118
|
('tags', ['foo']),
|
|
1139
1119
|
]
|
|
@@ -1160,10 +1140,9 @@ class TestProjectSet(TestProject):
|
|
|
1160
1140
|
self.project.name,
|
|
1161
1141
|
]
|
|
1162
1142
|
verifylist = [
|
|
1163
|
-
('
|
|
1164
|
-
('disable', False),
|
|
1143
|
+
('enabled', None),
|
|
1165
1144
|
('project', self.project.name),
|
|
1166
|
-
('
|
|
1145
|
+
('remove_tags', ['tag1', 'tag2']),
|
|
1167
1146
|
]
|
|
1168
1147
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
1169
1148
|
|
|
@@ -1183,8 +1162,7 @@ class TestProjectSet(TestProject):
|
|
|
1183
1162
|
verifylist = [
|
|
1184
1163
|
('domain', self.project.domain_id),
|
|
1185
1164
|
('immutable', True),
|
|
1186
|
-
('
|
|
1187
|
-
('disable', False),
|
|
1165
|
+
('enabled', None),
|
|
1188
1166
|
('project', self.project.name),
|
|
1189
1167
|
]
|
|
1190
1168
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -1207,9 +1185,8 @@ class TestProjectSet(TestProject):
|
|
|
1207
1185
|
]
|
|
1208
1186
|
verifylist = [
|
|
1209
1187
|
('domain', self.project.domain_id),
|
|
1210
|
-
('
|
|
1211
|
-
('
|
|
1212
|
-
('disable', False),
|
|
1188
|
+
('immutable', False),
|
|
1189
|
+
('enabled', None),
|
|
1213
1190
|
('project', self.project.name),
|
|
1214
1191
|
]
|
|
1215
1192
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -168,7 +168,7 @@ class TestRegisteredLimitDelete(TestRegisteredLimit):
|
|
|
168
168
|
|
|
169
169
|
arglist = [identity_fakes.registered_limit_id]
|
|
170
170
|
verifylist = [
|
|
171
|
-
('
|
|
171
|
+
('registered_limits', [identity_fakes.registered_limit_id])
|
|
172
172
|
]
|
|
173
173
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
174
174
|
|
|
@@ -184,7 +184,7 @@ class TestRegisteredLimitDelete(TestRegisteredLimit):
|
|
|
184
184
|
self.registered_limit_mock.delete.side_effect = return_value
|
|
185
185
|
|
|
186
186
|
arglist = ['fake-registered-limit-id']
|
|
187
|
-
verifylist = [('
|
|
187
|
+
verifylist = [('registered_limits', ['fake-registered-limit-id'])]
|
|
188
188
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
189
189
|
|
|
190
190
|
try:
|
|
@@ -15,8 +15,6 @@
|
|
|
15
15
|
|
|
16
16
|
from unittest import mock
|
|
17
17
|
|
|
18
|
-
from osc_lib import exceptions
|
|
19
|
-
|
|
20
18
|
from openstack import exceptions as sdk_exc
|
|
21
19
|
from openstack.identity.v3 import domain as _domain
|
|
22
20
|
from openstack.identity.v3 import group as _group
|
|
@@ -25,10 +23,10 @@ from openstack.identity.v3 import role as _role
|
|
|
25
23
|
from openstack.identity.v3 import system as _system
|
|
26
24
|
from openstack.identity.v3 import user as _user
|
|
27
25
|
from openstack.test import fakes as sdk_fakes
|
|
26
|
+
from osc_lib import exceptions
|
|
28
27
|
|
|
29
28
|
from openstackclient.identity.v3 import role
|
|
30
29
|
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
|
|
31
|
-
from openstackclient.tests.unit import utils as test_utils
|
|
32
30
|
|
|
33
31
|
|
|
34
32
|
class TestRoleInherited(identity_fakes.TestIdentityv3):
|
|
@@ -36,85 +34,6 @@ class TestRoleInherited(identity_fakes.TestIdentityv3):
|
|
|
36
34
|
return True
|
|
37
35
|
|
|
38
36
|
|
|
39
|
-
class TestFindSDKId(test_utils.TestCase):
|
|
40
|
-
def setUp(self):
|
|
41
|
-
super().setUp()
|
|
42
|
-
self.user = sdk_fakes.generate_fake_resource(_user.User)
|
|
43
|
-
self.identity_sdk_client = mock.Mock()
|
|
44
|
-
self.identity_sdk_client.find_user = mock.Mock()
|
|
45
|
-
|
|
46
|
-
def test_find_sdk_id_validate(self):
|
|
47
|
-
self.identity_sdk_client.find_user.side_effect = [self.user]
|
|
48
|
-
|
|
49
|
-
result = role._find_sdk_id(
|
|
50
|
-
self.identity_sdk_client.find_user,
|
|
51
|
-
name_or_id=self.user.id,
|
|
52
|
-
validate_actor_existence=True,
|
|
53
|
-
)
|
|
54
|
-
self.assertEqual(self.user.id, result)
|
|
55
|
-
|
|
56
|
-
def test_find_sdk_id_no_validate(self):
|
|
57
|
-
self.identity_sdk_client.find_user.side_effect = [self.user]
|
|
58
|
-
|
|
59
|
-
result = role._find_sdk_id(
|
|
60
|
-
self.identity_sdk_client.find_user,
|
|
61
|
-
name_or_id=self.user.id,
|
|
62
|
-
validate_actor_existence=False,
|
|
63
|
-
)
|
|
64
|
-
self.assertEqual(self.user.id, result)
|
|
65
|
-
|
|
66
|
-
def test_find_sdk_id_not_found_validate(self):
|
|
67
|
-
self.identity_sdk_client.find_user.side_effect = [
|
|
68
|
-
sdk_exc.ResourceNotFound,
|
|
69
|
-
]
|
|
70
|
-
|
|
71
|
-
self.assertRaises(
|
|
72
|
-
exceptions.CommandError,
|
|
73
|
-
role._find_sdk_id,
|
|
74
|
-
self.identity_sdk_client.find_user,
|
|
75
|
-
name_or_id=self.user.id,
|
|
76
|
-
validate_actor_existence=True,
|
|
77
|
-
)
|
|
78
|
-
|
|
79
|
-
def test_find_sdk_id_not_found_no_validate(self):
|
|
80
|
-
self.identity_sdk_client.find_user.side_effect = [
|
|
81
|
-
sdk_exc.ResourceNotFound,
|
|
82
|
-
]
|
|
83
|
-
|
|
84
|
-
result = role._find_sdk_id(
|
|
85
|
-
self.identity_sdk_client.find_user,
|
|
86
|
-
name_or_id=self.user.id,
|
|
87
|
-
validate_actor_existence=False,
|
|
88
|
-
)
|
|
89
|
-
self.assertEqual(self.user.id, result)
|
|
90
|
-
|
|
91
|
-
def test_find_sdk_id_forbidden_validate(self):
|
|
92
|
-
self.identity_sdk_client.find_user.side_effect = [
|
|
93
|
-
sdk_exc.ForbiddenException,
|
|
94
|
-
]
|
|
95
|
-
|
|
96
|
-
result = role._find_sdk_id(
|
|
97
|
-
self.identity_sdk_client.find_user,
|
|
98
|
-
name_or_id=self.user.id,
|
|
99
|
-
validate_actor_existence=True,
|
|
100
|
-
)
|
|
101
|
-
|
|
102
|
-
self.assertEqual(self.user.id, result)
|
|
103
|
-
|
|
104
|
-
def test_find_sdk_id_forbidden_no_validate(self):
|
|
105
|
-
self.identity_sdk_client.find_user.side_effect = [
|
|
106
|
-
sdk_exc.ForbiddenException,
|
|
107
|
-
]
|
|
108
|
-
|
|
109
|
-
result = role._find_sdk_id(
|
|
110
|
-
self.identity_sdk_client.find_user,
|
|
111
|
-
name_or_id=self.user.id,
|
|
112
|
-
validate_actor_existence=False,
|
|
113
|
-
)
|
|
114
|
-
|
|
115
|
-
self.assertEqual(self.user.id, result)
|
|
116
|
-
|
|
117
|
-
|
|
118
37
|
class TestRoleAdd(identity_fakes.TestIdentityv3):
|
|
119
38
|
def _is_inheritance_testcase(self):
|
|
120
39
|
return False
|
|
@@ -494,7 +413,6 @@ class TestRoleCreate(identity_fakes.TestIdentityv3):
|
|
|
494
413
|
# Set expected values
|
|
495
414
|
kwargs = {
|
|
496
415
|
'name': self.role.name,
|
|
497
|
-
'options': {},
|
|
498
416
|
}
|
|
499
417
|
|
|
500
418
|
self.identity_sdk_client.create_role.assert_called_with(**kwargs)
|
|
@@ -533,7 +451,6 @@ class TestRoleCreate(identity_fakes.TestIdentityv3):
|
|
|
533
451
|
kwargs = {
|
|
534
452
|
'domain_id': self.domain.id,
|
|
535
453
|
'name': self.role_with_domain.name,
|
|
536
|
-
'options': {},
|
|
537
454
|
}
|
|
538
455
|
|
|
539
456
|
self.identity_sdk_client.create_role.assert_called_with(**kwargs)
|
|
@@ -572,7 +489,6 @@ class TestRoleCreate(identity_fakes.TestIdentityv3):
|
|
|
572
489
|
kwargs = {
|
|
573
490
|
'name': self.role_with_description.name,
|
|
574
491
|
'description': self.role_with_description.description,
|
|
575
|
-
'options': {},
|
|
576
492
|
}
|
|
577
493
|
|
|
578
494
|
self.identity_sdk_client.create_role.assert_called_with(**kwargs)
|
|
@@ -629,7 +545,7 @@ class TestRoleCreate(identity_fakes.TestIdentityv3):
|
|
|
629
545
|
self.role.name,
|
|
630
546
|
]
|
|
631
547
|
verifylist = [
|
|
632
|
-
('
|
|
548
|
+
('immutable', False),
|
|
633
549
|
('name', self.role.name),
|
|
634
550
|
]
|
|
635
551
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -1437,7 +1353,6 @@ class TestRoleSet(identity_fakes.TestIdentityv3):
|
|
|
1437
1353
|
kwargs = {
|
|
1438
1354
|
'name': 'over',
|
|
1439
1355
|
'role': self.role.id,
|
|
1440
|
-
'options': {},
|
|
1441
1356
|
}
|
|
1442
1357
|
self.identity_sdk_client.update_role.assert_called_with(**kwargs)
|
|
1443
1358
|
self.assertIsNone(result)
|
|
@@ -1472,7 +1387,6 @@ class TestRoleSet(identity_fakes.TestIdentityv3):
|
|
|
1472
1387
|
'name': 'over',
|
|
1473
1388
|
'role': self.role_with_domain.id,
|
|
1474
1389
|
'domain_id': self.domain2.id,
|
|
1475
|
-
'options': {},
|
|
1476
1390
|
}
|
|
1477
1391
|
self.identity_sdk_client.update_role.assert_called_with(**kwargs)
|
|
1478
1392
|
self.assertIsNone(result)
|
|
@@ -1501,7 +1415,6 @@ class TestRoleSet(identity_fakes.TestIdentityv3):
|
|
|
1501
1415
|
'name': 'over',
|
|
1502
1416
|
'description': 'role description',
|
|
1503
1417
|
'role': self.role_with_domain.id,
|
|
1504
|
-
'options': {},
|
|
1505
1418
|
}
|
|
1506
1419
|
self.identity_sdk_client.update_role.assert_called_with(**kwargs)
|
|
1507
1420
|
self.assertIsNone(result)
|
|
@@ -1544,7 +1457,7 @@ class TestRoleSet(identity_fakes.TestIdentityv3):
|
|
|
1544
1457
|
]
|
|
1545
1458
|
verifylist = [
|
|
1546
1459
|
('name', 'over'),
|
|
1547
|
-
('
|
|
1460
|
+
('immutable', False),
|
|
1548
1461
|
('role', self.role_with_domain.name),
|
|
1549
1462
|
]
|
|
1550
1463
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|