python-openstackclient 7.1.2__py3-none-any.whl → 7.2.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 +2 -1
- openstackclient/api/image_v2.py +1 -1
- openstackclient/api/object_store_v1.py +12 -20
- openstackclient/common/clientmanager.py +1 -1
- openstackclient/common/module.py +2 -2
- openstackclient/common/quota.py +4 -4
- openstackclient/compute/v2/flavor.py +1 -1
- openstackclient/compute/v2/server.py +123 -60
- openstackclient/compute/v2/server_backup.py +1 -1
- openstackclient/compute/v2/server_image.py +1 -1
- openstackclient/compute/v2/server_migration.py +11 -2
- openstackclient/compute/v2/usage.py +3 -3
- openstackclient/identity/common.py +4 -1
- openstackclient/identity/v2_0/project.py +1 -1
- openstackclient/identity/v2_0/role_assignment.py +1 -1
- openstackclient/identity/v2_0/user.py +2 -2
- openstackclient/identity/v3/access_rule.py +26 -14
- openstackclient/identity/v3/identity_provider.py +1 -1
- openstackclient/identity/v3/project.py +1 -1
- openstackclient/identity/v3/role_assignment.py +24 -3
- openstackclient/identity/v3/service.py +2 -1
- openstackclient/identity/v3/user.py +35 -15
- openstackclient/image/v2/image.py +13 -13
- openstackclient/image/v2/metadef_objects.py +6 -4
- openstackclient/network/common.py +8 -7
- openstackclient/network/v2/floating_ip.py +6 -2
- openstackclient/network/v2/floating_ip_port_forwarding.py +2 -2
- openstackclient/network/v2/l3_conntrack_helper.py +1 -1
- openstackclient/network/v2/ndp_proxy.py +1 -0
- openstackclient/network/v2/network_agent.py +2 -6
- openstackclient/network/v2/network_qos_rule.py +2 -5
- openstackclient/network/v2/network_trunk.py +5 -4
- openstackclient/network/v2/port.py +18 -3
- openstackclient/network/v2/router.py +7 -4
- openstackclient/network/v2/subnet_pool.py +2 -2
- openstackclient/shell.py +3 -2
- openstackclient/tests/functional/common/test_help.py +3 -9
- openstackclient/tests/functional/common/test_module.py +1 -1
- openstackclient/tests/functional/common/test_quota.py +2 -4
- openstackclient/tests/functional/compute/v2/common.py +1 -3
- openstackclient/tests/functional/compute/v2/test_hypervisor.py +3 -3
- openstackclient/tests/functional/compute/v2/test_keypair.py +2 -2
- openstackclient/tests/functional/compute/v2/test_server.py +1 -1
- openstackclient/tests/functional/identity/v2/common.py +31 -48
- openstackclient/tests/functional/identity/v2/test_catalog.py +1 -1
- openstackclient/tests/functional/identity/v2/test_ec2_credentials.py +2 -2
- openstackclient/tests/functional/identity/v2/test_endpoint.py +2 -2
- openstackclient/tests/functional/identity/v2/test_project.py +8 -8
- openstackclient/tests/functional/identity/v2/test_role.py +14 -34
- openstackclient/tests/functional/identity/v2/test_service.py +2 -2
- openstackclient/tests/functional/identity/v2/test_token.py +1 -1
- openstackclient/tests/functional/identity/v2/test_user.py +7 -9
- openstackclient/tests/functional/identity/v3/common.py +69 -110
- openstackclient/tests/functional/identity/v3/test_access_rule.py +86 -0
- openstackclient/tests/functional/identity/v3/test_application_credential.py +18 -44
- openstackclient/tests/functional/identity/v3/test_catalog.py +1 -1
- openstackclient/tests/functional/identity/v3/test_domain.py +9 -11
- openstackclient/tests/functional/identity/v3/test_endpoint.py +15 -27
- openstackclient/tests/functional/identity/v3/test_group.py +32 -93
- openstackclient/tests/functional/identity/v3/test_idp.py +3 -3
- openstackclient/tests/functional/identity/v3/test_limit.py +32 -32
- openstackclient/tests/functional/identity/v3/test_project.py +17 -26
- openstackclient/tests/functional/identity/v3/test_region.py +6 -7
- openstackclient/tests/functional/identity/v3/test_registered_limit.py +27 -36
- openstackclient/tests/functional/identity/v3/test_role.py +30 -60
- openstackclient/tests/functional/identity/v3/test_role_assignment.py +33 -80
- openstackclient/tests/functional/identity/v3/test_service.py +7 -13
- openstackclient/tests/functional/identity/v3/test_service_provider.py +3 -3
- openstackclient/tests/functional/identity/v3/test_user.py +17 -34
- openstackclient/tests/functional/image/v2/test_image.py +1 -3
- openstackclient/tests/functional/network/v2/common.py +1 -3
- openstackclient/tests/functional/network/v2/test_default_security_group_rule.py +3 -8
- openstackclient/tests/functional/network/v2/test_l3_conntrack_helper.py +27 -31
- openstackclient/tests/functional/network/v2/test_network.py +9 -12
- openstackclient/tests/functional/network/v2/test_network_agent.py +15 -20
- openstackclient/tests/functional/network/v2/test_network_flavor.py +2 -2
- openstackclient/tests/functional/network/v2/test_network_ndp_proxy.py +17 -39
- openstackclient/tests/functional/network/v2/test_network_qos_rule.py +48 -63
- openstackclient/tests/functional/network/v2/test_network_qos_rule_type.py +1 -1
- openstackclient/tests/functional/network/v2/test_network_segment_range.py +2 -2
- openstackclient/tests/functional/network/v2/test_network_trunk.py +15 -25
- openstackclient/tests/functional/network/v2/test_port.py +28 -34
- openstackclient/tests/functional/network/v2/test_router.py +13 -19
- openstackclient/tests/functional/object/v1/test_object.py +4 -7
- openstackclient/tests/functional/volume/base.py +5 -17
- openstackclient/tests/functional/volume/v1/test_volume_type.py +11 -11
- openstackclient/tests/functional/volume/v2/test_volume_backup.py +1 -1
- openstackclient/tests/functional/volume/v2/test_volume_type.py +13 -15
- openstackclient/tests/functional/volume/v3/test_volume_type.py +13 -15
- openstackclient/tests/unit/api/test_compute_v2.py +0 -5
- openstackclient/tests/unit/api/test_object_store_v1.py +6 -4
- openstackclient/tests/unit/common/test_extension.py +24 -31
- openstackclient/tests/unit/compute/v2/test_host.py +0 -1
- openstackclient/tests/unit/compute/v2/test_server.py +124 -116
- openstackclient/tests/unit/identity/v3/test_access_rule.py +65 -64
- openstackclient/tests/unit/identity/v3/test_group.py +4 -10
- openstackclient/tests/unit/identity/v3/test_limit.py +2 -2
- openstackclient/tests/unit/identity/v3/test_service.py +0 -3
- openstackclient/tests/unit/identity/v3/test_user.py +4 -90
- openstackclient/tests/unit/image/v2/test_metadef_objects.py +1 -2
- openstackclient/tests/unit/image/v2/test_metadef_resource_type_association.py +2 -6
- openstackclient/tests/unit/integ/base.py +1 -1
- openstackclient/tests/unit/network/v2/test_default_security_group_rule.py +3 -3
- openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +4 -4
- openstackclient/tests/unit/network/v2/test_local_ip_association.py +2 -2
- openstackclient/tests/unit/network/v2/test_network_qos_rule.py +12 -13
- openstackclient/tests/unit/network/v2/test_network_trunk.py +31 -35
- openstackclient/tests/unit/network/v2/test_port.py +40 -17
- openstackclient/tests/unit/network/v2/test_subnet_pool.py +1 -1
- openstackclient/tests/unit/object/v1/test_object.py +1 -1
- openstackclient/tests/unit/utils.py +2 -2
- openstackclient/volume/client.py +1 -1
- openstackclient/volume/v1/volume.py +2 -2
- openstackclient/volume/v1/volume_backup.py +2 -2
- openstackclient/volume/v1/volume_snapshot.py +2 -2
- openstackclient/volume/v2/volume.py +2 -2
- openstackclient/volume/v2/volume_backup.py +2 -2
- openstackclient/volume/v2/volume_snapshot.py +2 -2
- openstackclient/volume/v2/volume_type.py +4 -4
- openstackclient/volume/v3/service.py +0 -1
- openstackclient/volume/v3/volume.py +3 -3
- openstackclient/volume/v3/volume_backup.py +2 -2
- openstackclient/volume/v3/volume_group.py +3 -7
- openstackclient/volume/v3/volume_type.py +6 -6
- {python_openstackclient-7.1.2.dist-info → python_openstackclient-7.2.0.dist-info}/AUTHORS +3 -0
- {python_openstackclient-7.1.2.dist-info → python_openstackclient-7.2.0.dist-info}/METADATA +2 -3
- {python_openstackclient-7.1.2.dist-info → python_openstackclient-7.2.0.dist-info}/RECORD +132 -131
- python_openstackclient-7.2.0.dist-info/pbr.json +1 -0
- python_openstackclient-7.1.2.dist-info/pbr.json +0 -1
- {python_openstackclient-7.1.2.dist-info → python_openstackclient-7.2.0.dist-info}/LICENSE +0 -0
- {python_openstackclient-7.1.2.dist-info → python_openstackclient-7.2.0.dist-info}/WHEEL +0 -0
- {python_openstackclient-7.1.2.dist-info → python_openstackclient-7.2.0.dist-info}/entry_points.txt +0 -0
- {python_openstackclient-7.1.2.dist-info → python_openstackclient-7.2.0.dist-info}/top_level.txt +0 -0
|
@@ -25,31 +25,26 @@ class RegisteredLimitTestCase(common.IdentityTests):
|
|
|
25
25
|
|
|
26
26
|
def test_registered_limit_create_with_service_id(self):
|
|
27
27
|
service_name = self._create_dummy_service()
|
|
28
|
-
raw_output = self.openstack(
|
|
29
|
-
'service show' ' %(service_name)s' % {'service_name': service_name}
|
|
30
|
-
)
|
|
28
|
+
raw_output = self.openstack('service show' f' {service_name}')
|
|
31
29
|
service_items = self.parse_show(raw_output)
|
|
32
30
|
service_id = self._extract_value_from_items('id', service_items)
|
|
33
31
|
|
|
34
32
|
raw_output = self.openstack(
|
|
35
33
|
'registered limit create'
|
|
36
|
-
' --service
|
|
37
|
-
' --default-limit
|
|
38
|
-
'
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
'
|
|
42
|
-
|
|
43
|
-
},
|
|
34
|
+
' --service {service_id}'
|
|
35
|
+
' --default-limit {default_limit}'
|
|
36
|
+
' {resource_name}'.format(
|
|
37
|
+
service_id=service_id,
|
|
38
|
+
default_limit=10,
|
|
39
|
+
resource_name='cores',
|
|
40
|
+
),
|
|
44
41
|
cloud=SYSTEM_CLOUD,
|
|
45
42
|
)
|
|
46
43
|
items = self.parse_show(raw_output)
|
|
47
44
|
registered_limit_id = self._extract_value_from_items('id', items)
|
|
48
45
|
self.addCleanup(
|
|
49
46
|
self.openstack,
|
|
50
|
-
'registered limit delete'
|
|
51
|
-
' %(registered_limit_id)s'
|
|
52
|
-
% {'registered_limit_id': registered_limit_id},
|
|
47
|
+
'registered limit delete' f' {registered_limit_id}',
|
|
53
48
|
cloud=SYSTEM_CLOUD,
|
|
54
49
|
)
|
|
55
50
|
|
|
@@ -68,19 +63,18 @@ class RegisteredLimitTestCase(common.IdentityTests):
|
|
|
68
63
|
|
|
69
64
|
raw_output = self.openstack(
|
|
70
65
|
'registered limit create'
|
|
71
|
-
' --description \'
|
|
72
|
-
' --region
|
|
73
|
-
' --service
|
|
74
|
-
' --default-limit
|
|
75
|
-
'
|
|
66
|
+
' --description \'{description}\''
|
|
67
|
+
' --region {region_id}'
|
|
68
|
+
' --service {service_name}'
|
|
69
|
+
' --default-limit {default_limit}'
|
|
70
|
+
' {resource_name}'.format(**params),
|
|
76
71
|
cloud=SYSTEM_CLOUD,
|
|
77
72
|
)
|
|
78
73
|
items = self.parse_show(raw_output)
|
|
79
74
|
registered_limit_id = self._extract_value_from_items('id', items)
|
|
80
75
|
self.addCleanup(
|
|
81
76
|
self.openstack,
|
|
82
|
-
'registered limit delete
|
|
83
|
-
% {'registered_limit_id': registered_limit_id},
|
|
77
|
+
f'registered limit delete {registered_limit_id}',
|
|
84
78
|
cloud=SYSTEM_CLOUD,
|
|
85
79
|
)
|
|
86
80
|
|
|
@@ -89,8 +83,7 @@ class RegisteredLimitTestCase(common.IdentityTests):
|
|
|
89
83
|
def test_registered_limit_show(self):
|
|
90
84
|
registered_limit_id = self._create_dummy_registered_limit()
|
|
91
85
|
raw_output = self.openstack(
|
|
92
|
-
'registered limit show
|
|
93
|
-
% {'registered_limit_id': registered_limit_id}
|
|
86
|
+
f'registered limit show {registered_limit_id}'
|
|
94
87
|
)
|
|
95
88
|
items = self.parse_show(raw_output)
|
|
96
89
|
self.assert_show_fields(items, self.REGISTERED_LIMIT_FIELDS)
|
|
@@ -105,8 +98,8 @@ class RegisteredLimitTestCase(common.IdentityTests):
|
|
|
105
98
|
}
|
|
106
99
|
raw_output = self.openstack(
|
|
107
100
|
'registered limit set'
|
|
108
|
-
'
|
|
109
|
-
' --region
|
|
101
|
+
' {registered_limit_id}'
|
|
102
|
+
' --region {region_id}'.format(**params),
|
|
110
103
|
cloud=SYSTEM_CLOUD,
|
|
111
104
|
)
|
|
112
105
|
items = self.parse_show(raw_output)
|
|
@@ -120,8 +113,8 @@ class RegisteredLimitTestCase(common.IdentityTests):
|
|
|
120
113
|
}
|
|
121
114
|
raw_output = self.openstack(
|
|
122
115
|
'registered limit set'
|
|
123
|
-
'
|
|
124
|
-
' --description \'
|
|
116
|
+
' {registered_limit_id}'
|
|
117
|
+
' --description \'{description}\''.format(**params),
|
|
125
118
|
cloud=SYSTEM_CLOUD,
|
|
126
119
|
)
|
|
127
120
|
items = self.parse_show(raw_output)
|
|
@@ -136,8 +129,8 @@ class RegisteredLimitTestCase(common.IdentityTests):
|
|
|
136
129
|
}
|
|
137
130
|
raw_output = self.openstack(
|
|
138
131
|
'registered limit set'
|
|
139
|
-
'
|
|
140
|
-
' --service
|
|
132
|
+
' {registered_limit_id}'
|
|
133
|
+
' --service {service}'.format(**params),
|
|
141
134
|
cloud=SYSTEM_CLOUD,
|
|
142
135
|
)
|
|
143
136
|
items = self.parse_show(raw_output)
|
|
@@ -151,8 +144,8 @@ class RegisteredLimitTestCase(common.IdentityTests):
|
|
|
151
144
|
}
|
|
152
145
|
raw_output = self.openstack(
|
|
153
146
|
'registered limit set'
|
|
154
|
-
'
|
|
155
|
-
' --default-limit
|
|
147
|
+
' {registered_limit_id}'
|
|
148
|
+
' --default-limit {default_limit}'.format(**params),
|
|
156
149
|
cloud=SYSTEM_CLOUD,
|
|
157
150
|
)
|
|
158
151
|
items = self.parse_show(raw_output)
|
|
@@ -167,8 +160,8 @@ class RegisteredLimitTestCase(common.IdentityTests):
|
|
|
167
160
|
}
|
|
168
161
|
raw_output = self.openstack(
|
|
169
162
|
'registered limit set'
|
|
170
|
-
'
|
|
171
|
-
' --resource-name
|
|
163
|
+
' {registered_limit_id}'
|
|
164
|
+
' --resource-name {resource_name}'.format(**params),
|
|
172
165
|
cloud=SYSTEM_CLOUD,
|
|
173
166
|
)
|
|
174
167
|
items = self.parse_show(raw_output)
|
|
@@ -185,9 +178,7 @@ class RegisteredLimitTestCase(common.IdentityTests):
|
|
|
185
178
|
add_clean_up=False
|
|
186
179
|
)
|
|
187
180
|
raw_output = self.openstack(
|
|
188
|
-
'registered limit delete'
|
|
189
|
-
' %(registered_limit_id)s'
|
|
190
|
-
% {'registered_limit_id': registered_limit_id},
|
|
181
|
+
'registered limit delete' f' {registered_limit_id}',
|
|
191
182
|
cloud=SYSTEM_CLOUD,
|
|
192
183
|
)
|
|
193
184
|
self.assertEqual(0, len(raw_output))
|
|
@@ -23,12 +23,10 @@ class RoleTests(common.IdentityTests):
|
|
|
23
23
|
role_name = data_utils.rand_name('TestRole')
|
|
24
24
|
description = data_utils.rand_name('description')
|
|
25
25
|
raw_output = self.openstack(
|
|
26
|
-
'role create '
|
|
27
|
-
'--description %(description)s '
|
|
28
|
-
'%(name)s' % {'description': description, 'name': role_name}
|
|
26
|
+
'role create ' f'--description {description} ' f'{role_name}'
|
|
29
27
|
)
|
|
30
28
|
role = self.parse_show_as_object(raw_output)
|
|
31
|
-
self.addCleanup(self.openstack, 'role delete
|
|
29
|
+
self.addCleanup(self.openstack, 'role delete {}'.format(role['id']))
|
|
32
30
|
items = self.parse_show(raw_output)
|
|
33
31
|
self.assert_show_fields(items, self.ROLE_FIELDS)
|
|
34
32
|
self.assertEqual(description, role['description'])
|
|
@@ -36,7 +34,7 @@ class RoleTests(common.IdentityTests):
|
|
|
36
34
|
|
|
37
35
|
def test_role_delete(self):
|
|
38
36
|
role_name = self._create_dummy_role(add_clean_up=False)
|
|
39
|
-
raw_output = self.openstack('role delete
|
|
37
|
+
raw_output = self.openstack(f'role delete {role_name}')
|
|
40
38
|
self.assertEqual(0, len(raw_output))
|
|
41
39
|
|
|
42
40
|
def test_role_list(self):
|
|
@@ -47,7 +45,7 @@ class RoleTests(common.IdentityTests):
|
|
|
47
45
|
|
|
48
46
|
def test_role_show(self):
|
|
49
47
|
role_name = self._create_dummy_role()
|
|
50
|
-
raw_output = self.openstack('role show
|
|
48
|
+
raw_output = self.openstack(f'role show {role_name}')
|
|
51
49
|
items = self.parse_show(raw_output)
|
|
52
50
|
self.assert_show_fields(items, self.ROLE_FIELDS)
|
|
53
51
|
|
|
@@ -58,7 +56,7 @@ class RoleTests(common.IdentityTests):
|
|
|
58
56
|
f'role set --name {new_role_name} {role_name}'
|
|
59
57
|
)
|
|
60
58
|
self.assertEqual(0, len(raw_output))
|
|
61
|
-
raw_output = self.openstack('role show
|
|
59
|
+
raw_output = self.openstack(f'role show {new_role_name}')
|
|
62
60
|
role = self.parse_show_as_object(raw_output)
|
|
63
61
|
self.assertEqual(new_role_name, role['name'])
|
|
64
62
|
|
|
@@ -69,7 +67,7 @@ class RoleTests(common.IdentityTests):
|
|
|
69
67
|
f'role set --description {description} {role_name}'
|
|
70
68
|
)
|
|
71
69
|
self.assertEqual(0, len(raw_output))
|
|
72
|
-
raw_output = self.openstack('role show
|
|
70
|
+
raw_output = self.openstack(f'role show {role_name}')
|
|
73
71
|
role = self.parse_show_as_object(raw_output)
|
|
74
72
|
self.assertEqual(description, role['description'])
|
|
75
73
|
|
|
@@ -78,34 +76,20 @@ class RoleTests(common.IdentityTests):
|
|
|
78
76
|
username = self._create_dummy_user()
|
|
79
77
|
raw_output = self.openstack(
|
|
80
78
|
'role add '
|
|
81
|
-
'--project
|
|
82
|
-
'--project-domain
|
|
83
|
-
'--user
|
|
84
|
-
'--user-domain
|
|
85
|
-
'
|
|
86
|
-
% {
|
|
87
|
-
'project': self.project_name,
|
|
88
|
-
'project_domain': self.domain_name,
|
|
89
|
-
'user': username,
|
|
90
|
-
'user_domain': self.domain_name,
|
|
91
|
-
'role': role_name,
|
|
92
|
-
}
|
|
79
|
+
f'--project {self.project_name} '
|
|
80
|
+
f'--project-domain {self.domain_name} '
|
|
81
|
+
f'--user {username} '
|
|
82
|
+
f'--user-domain {self.domain_name} '
|
|
83
|
+
f'{role_name}'
|
|
93
84
|
)
|
|
94
85
|
self.addCleanup(
|
|
95
86
|
self.openstack,
|
|
96
87
|
'role remove '
|
|
97
|
-
'--project
|
|
98
|
-
'--project-domain
|
|
99
|
-
'--user
|
|
100
|
-
'--user-domain
|
|
101
|
-
'
|
|
102
|
-
% {
|
|
103
|
-
'project': self.project_name,
|
|
104
|
-
'project_domain': self.domain_name,
|
|
105
|
-
'user': username,
|
|
106
|
-
'user_domain': self.domain_name,
|
|
107
|
-
'role': role_name,
|
|
108
|
-
},
|
|
88
|
+
f'--project {self.project_name} '
|
|
89
|
+
f'--project-domain {self.domain_name} '
|
|
90
|
+
f'--user {username} '
|
|
91
|
+
f'--user-domain {self.domain_name} '
|
|
92
|
+
f'{role_name}',
|
|
109
93
|
)
|
|
110
94
|
self.assertEqual(0, len(raw_output))
|
|
111
95
|
|
|
@@ -114,33 +98,19 @@ class RoleTests(common.IdentityTests):
|
|
|
114
98
|
username = self._create_dummy_user()
|
|
115
99
|
add_raw_output = self.openstack(
|
|
116
100
|
'role add '
|
|
117
|
-
'--project
|
|
118
|
-
'--project-domain
|
|
119
|
-
'--user
|
|
120
|
-
'--user-domain
|
|
121
|
-
'
|
|
122
|
-
% {
|
|
123
|
-
'project': self.project_name,
|
|
124
|
-
'project_domain': self.domain_name,
|
|
125
|
-
'user': username,
|
|
126
|
-
'user_domain': self.domain_name,
|
|
127
|
-
'role': role_name,
|
|
128
|
-
}
|
|
101
|
+
f'--project {self.project_name} '
|
|
102
|
+
f'--project-domain {self.domain_name} '
|
|
103
|
+
f'--user {username} '
|
|
104
|
+
f'--user-domain {self.domain_name} '
|
|
105
|
+
f'{role_name}'
|
|
129
106
|
)
|
|
130
107
|
remove_raw_output = self.openstack(
|
|
131
108
|
'role remove '
|
|
132
|
-
'--project
|
|
133
|
-
'--project-domain
|
|
134
|
-
'--user
|
|
135
|
-
'--user-domain
|
|
136
|
-
'
|
|
137
|
-
% {
|
|
138
|
-
'project': self.project_name,
|
|
139
|
-
'project_domain': self.domain_name,
|
|
140
|
-
'user': username,
|
|
141
|
-
'user_domain': self.domain_name,
|
|
142
|
-
'role': role_name,
|
|
143
|
-
}
|
|
109
|
+
f'--project {self.project_name} '
|
|
110
|
+
f'--project-domain {self.domain_name} '
|
|
111
|
+
f'--user {username} '
|
|
112
|
+
f'--user-domain {self.domain_name} '
|
|
113
|
+
f'{role_name}'
|
|
144
114
|
)
|
|
145
115
|
self.assertEqual(0, len(add_raw_output))
|
|
146
116
|
self.assertEqual(0, len(remove_raw_output))
|
|
@@ -165,15 +135,15 @@ class RoleTests(common.IdentityTests):
|
|
|
165
135
|
implied_role_name = self._create_dummy_role()
|
|
166
136
|
self.openstack(
|
|
167
137
|
'implied role create '
|
|
168
|
-
'--implied-role
|
|
169
|
-
'
|
|
138
|
+
f'--implied-role {implied_role_name} '
|
|
139
|
+
f'{role_name}'
|
|
170
140
|
)
|
|
171
141
|
|
|
172
142
|
def test_implied_role_delete(self):
|
|
173
143
|
implied_role_name, role_name = self._create_dummy_implied_role()
|
|
174
144
|
raw_output = self.openstack(
|
|
175
145
|
'implied role delete '
|
|
176
|
-
'--implied-role
|
|
177
|
-
'
|
|
146
|
+
f'--implied-role {implied_role_name} '
|
|
147
|
+
f'{role_name}'
|
|
178
148
|
)
|
|
179
149
|
self.assertEqual(0, len(raw_output))
|
|
@@ -25,43 +25,33 @@ class RoleAssignmentTests(common.IdentityTests):
|
|
|
25
25
|
system = 'all'
|
|
26
26
|
raw_output = self.openstack(
|
|
27
27
|
'role add '
|
|
28
|
-
'--user
|
|
29
|
-
'--system
|
|
30
|
-
'
|
|
31
|
-
% {
|
|
32
|
-
'user': username,
|
|
33
|
-
'system': system,
|
|
34
|
-
'role': role_name,
|
|
35
|
-
}
|
|
28
|
+
f'--user {username} '
|
|
29
|
+
f'--system {system} '
|
|
30
|
+
f'{role_name}'
|
|
36
31
|
)
|
|
37
32
|
self.addCleanup(
|
|
38
33
|
self.openstack,
|
|
39
34
|
'role remove '
|
|
40
|
-
'--user
|
|
41
|
-
'--system
|
|
42
|
-
'
|
|
43
|
-
% {
|
|
44
|
-
'user': username,
|
|
45
|
-
'system': system,
|
|
46
|
-
'role': role_name,
|
|
47
|
-
},
|
|
35
|
+
f'--user {username} '
|
|
36
|
+
f'--system {system} '
|
|
37
|
+
f'{role_name}',
|
|
48
38
|
)
|
|
49
39
|
self.assertEqual(0, len(raw_output))
|
|
50
40
|
|
|
51
41
|
raw_output = self.openstack(
|
|
52
|
-
'role assignment list ' '--user
|
|
42
|
+
'role assignment list ' f'--user {username} '
|
|
53
43
|
)
|
|
54
44
|
items = self.parse_listing(raw_output)
|
|
55
45
|
self.assert_table_structure(items, self.ROLE_ASSIGNMENT_LIST_HEADERS)
|
|
56
46
|
|
|
57
47
|
raw_output = self.openstack(
|
|
58
|
-
'role assignment list ' '--role
|
|
48
|
+
'role assignment list ' f'--role {role_name} '
|
|
59
49
|
)
|
|
60
50
|
items = self.parse_listing(raw_output)
|
|
61
51
|
self.assert_table_structure(items, self.ROLE_ASSIGNMENT_LIST_HEADERS)
|
|
62
52
|
|
|
63
53
|
raw_output = self.openstack(
|
|
64
|
-
'role assignment list ' '--system
|
|
54
|
+
'role assignment list ' f'--system {system} '
|
|
65
55
|
)
|
|
66
56
|
items = self.parse_listing(raw_output)
|
|
67
57
|
self.assert_table_structure(items, self.ROLE_ASSIGNMENT_LIST_HEADERS)
|
|
@@ -72,30 +62,20 @@ class RoleAssignmentTests(common.IdentityTests):
|
|
|
72
62
|
system = 'all'
|
|
73
63
|
raw_output = self.openstack(
|
|
74
64
|
'role add '
|
|
75
|
-
'--group
|
|
76
|
-
'--system
|
|
77
|
-
'
|
|
78
|
-
% {
|
|
79
|
-
'group': group,
|
|
80
|
-
'system': system,
|
|
81
|
-
'role': role_name,
|
|
82
|
-
}
|
|
65
|
+
f'--group {group} '
|
|
66
|
+
f'--system {system} '
|
|
67
|
+
f'{role_name}'
|
|
83
68
|
)
|
|
84
69
|
self.addCleanup(
|
|
85
70
|
self.openstack,
|
|
86
71
|
'role remove '
|
|
87
|
-
'--group
|
|
88
|
-
'--system
|
|
89
|
-
'
|
|
90
|
-
% {
|
|
91
|
-
'group': group,
|
|
92
|
-
'system': system,
|
|
93
|
-
'role': role_name,
|
|
94
|
-
},
|
|
72
|
+
f'--group {group} '
|
|
73
|
+
f'--system {system} '
|
|
74
|
+
f'{role_name}',
|
|
95
75
|
)
|
|
96
76
|
self.assertEqual(0, len(raw_output))
|
|
97
77
|
raw_output = self.openstack(
|
|
98
|
-
'role assignment list ' '--group
|
|
78
|
+
'role assignment list ' f'--group {group} '
|
|
99
79
|
)
|
|
100
80
|
items = self.parse_listing(raw_output)
|
|
101
81
|
self.assert_table_structure(items, self.ROLE_ASSIGNMENT_LIST_HEADERS)
|
|
@@ -105,31 +85,20 @@ class RoleAssignmentTests(common.IdentityTests):
|
|
|
105
85
|
username = self._create_dummy_user()
|
|
106
86
|
raw_output = self.openstack(
|
|
107
87
|
'role add '
|
|
108
|
-
'--domain
|
|
109
|
-
'--user
|
|
110
|
-
'
|
|
111
|
-
% {
|
|
112
|
-
'domain': self.domain_name,
|
|
113
|
-
'user': username,
|
|
114
|
-
'role': role_name,
|
|
115
|
-
}
|
|
88
|
+
f'--domain {self.domain_name} '
|
|
89
|
+
f'--user {username} '
|
|
90
|
+
f'{role_name}'
|
|
116
91
|
)
|
|
117
92
|
self.addCleanup(
|
|
118
93
|
self.openstack,
|
|
119
94
|
'role remove '
|
|
120
|
-
'--domain
|
|
121
|
-
'--user
|
|
122
|
-
'
|
|
123
|
-
% {
|
|
124
|
-
'domain': self.domain_name,
|
|
125
|
-
'user': username,
|
|
126
|
-
'role': role_name,
|
|
127
|
-
},
|
|
95
|
+
f'--domain {self.domain_name} '
|
|
96
|
+
f'--user {username} '
|
|
97
|
+
f'{role_name}',
|
|
128
98
|
)
|
|
129
99
|
self.assertEqual(0, len(raw_output))
|
|
130
100
|
raw_output = self.openstack(
|
|
131
|
-
'role assignment list '
|
|
132
|
-
'--domain %(domain)s ' % {'domain': self.domain_name}
|
|
101
|
+
'role assignment list ' f'--domain {self.domain_name} '
|
|
133
102
|
)
|
|
134
103
|
items = self.parse_listing(raw_output)
|
|
135
104
|
self.assert_table_structure(items, self.ROLE_ASSIGNMENT_LIST_HEADERS)
|
|
@@ -139,31 +108,20 @@ class RoleAssignmentTests(common.IdentityTests):
|
|
|
139
108
|
username = self._create_dummy_user()
|
|
140
109
|
raw_output = self.openstack(
|
|
141
110
|
'role add '
|
|
142
|
-
'--project
|
|
143
|
-
'--user
|
|
144
|
-
'
|
|
145
|
-
% {
|
|
146
|
-
'project': self.project_name,
|
|
147
|
-
'user': username,
|
|
148
|
-
'role': role_name,
|
|
149
|
-
}
|
|
111
|
+
f'--project {self.project_name} '
|
|
112
|
+
f'--user {username} '
|
|
113
|
+
f'{role_name}'
|
|
150
114
|
)
|
|
151
115
|
self.addCleanup(
|
|
152
116
|
self.openstack,
|
|
153
117
|
'role remove '
|
|
154
|
-
'--project
|
|
155
|
-
'--user
|
|
156
|
-
'
|
|
157
|
-
% {
|
|
158
|
-
'project': self.project_name,
|
|
159
|
-
'user': username,
|
|
160
|
-
'role': role_name,
|
|
161
|
-
},
|
|
118
|
+
f'--project {self.project_name} '
|
|
119
|
+
f'--user {username} '
|
|
120
|
+
f'{role_name}',
|
|
162
121
|
)
|
|
163
122
|
self.assertEqual(0, len(raw_output))
|
|
164
123
|
raw_output = self.openstack(
|
|
165
|
-
'role assignment list '
|
|
166
|
-
'--project %(project)s ' % {'project': self.project_name}
|
|
124
|
+
'role assignment list ' f'--project {self.project_name} '
|
|
167
125
|
)
|
|
168
126
|
items = self.parse_listing(raw_output)
|
|
169
127
|
self.assert_table_structure(items, self.ROLE_ASSIGNMENT_LIST_HEADERS)
|
|
@@ -188,15 +146,10 @@ class RoleAssignmentTests(common.IdentityTests):
|
|
|
188
146
|
username = self._create_dummy_user()
|
|
189
147
|
raw_output = self.openstack(
|
|
190
148
|
'role add '
|
|
191
|
-
'--project
|
|
192
|
-
'--user
|
|
149
|
+
f'--project {self.project_name} '
|
|
150
|
+
f'--user {username} '
|
|
193
151
|
'--inherited '
|
|
194
|
-
'
|
|
195
|
-
% {
|
|
196
|
-
'project': self.project_name,
|
|
197
|
-
'user': username,
|
|
198
|
-
'role': role_name,
|
|
199
|
-
}
|
|
152
|
+
f'{role_name}'
|
|
200
153
|
)
|
|
201
154
|
self.assertEqual(0, len(raw_output))
|
|
202
155
|
|
|
@@ -21,7 +21,7 @@ class ServiceTests(common.IdentityTests):
|
|
|
21
21
|
|
|
22
22
|
def test_service_delete(self):
|
|
23
23
|
service_name = self._create_dummy_service(add_clean_up=False)
|
|
24
|
-
raw_output = self.openstack('service delete
|
|
24
|
+
raw_output = self.openstack(f'service delete {service_name}')
|
|
25
25
|
self.assertEqual(0, len(raw_output))
|
|
26
26
|
|
|
27
27
|
def test_service_multi_delete(self):
|
|
@@ -44,21 +44,15 @@ class ServiceTests(common.IdentityTests):
|
|
|
44
44
|
new_service_type = data_utils.rand_name('NewTestType')
|
|
45
45
|
raw_output = self.openstack(
|
|
46
46
|
'service set '
|
|
47
|
-
'--type
|
|
48
|
-
'--name
|
|
49
|
-
'--description
|
|
47
|
+
f'--type {new_service_type} '
|
|
48
|
+
f'--name {new_service_name} '
|
|
49
|
+
f'--description {new_service_description} '
|
|
50
50
|
'--disable '
|
|
51
|
-
'
|
|
52
|
-
% {
|
|
53
|
-
'type': new_service_type,
|
|
54
|
-
'name': new_service_name,
|
|
55
|
-
'description': new_service_description,
|
|
56
|
-
'service': service_name,
|
|
57
|
-
}
|
|
51
|
+
f'{service_name}'
|
|
58
52
|
)
|
|
59
53
|
self.assertEqual(0, len(raw_output))
|
|
60
54
|
# get service details
|
|
61
|
-
raw_output = self.openstack('service show
|
|
55
|
+
raw_output = self.openstack(f'service show {new_service_name}')
|
|
62
56
|
# assert service details
|
|
63
57
|
service = self.parse_show_as_object(raw_output)
|
|
64
58
|
self.assertEqual(new_service_type, service['type'])
|
|
@@ -67,6 +61,6 @@ class ServiceTests(common.IdentityTests):
|
|
|
67
61
|
|
|
68
62
|
def test_service_show(self):
|
|
69
63
|
service_name = self._create_dummy_service()
|
|
70
|
-
raw_output = self.openstack('service show
|
|
64
|
+
raw_output = self.openstack(f'service show {service_name}')
|
|
71
65
|
items = self.parse_show(raw_output)
|
|
72
66
|
self.assert_show_fields(items, self.SERVICE_FIELDS)
|
|
@@ -24,7 +24,7 @@ class ServiceProviderTests(common.IdentityTests):
|
|
|
24
24
|
def test_sp_delete(self):
|
|
25
25
|
service_provider = self._create_dummy_sp(add_clean_up=False)
|
|
26
26
|
raw_output = self.openstack(
|
|
27
|
-
'service provider delete
|
|
27
|
+
f'service provider delete {service_provider}'
|
|
28
28
|
)
|
|
29
29
|
self.assertEqual(0, len(raw_output))
|
|
30
30
|
|
|
@@ -37,7 +37,7 @@ class ServiceProviderTests(common.IdentityTests):
|
|
|
37
37
|
def test_sp_show(self):
|
|
38
38
|
service_provider = self._create_dummy_sp(add_clean_up=True)
|
|
39
39
|
raw_output = self.openstack(
|
|
40
|
-
'service provider show
|
|
40
|
+
f'service provider show {service_provider}'
|
|
41
41
|
)
|
|
42
42
|
items = self.parse_show(raw_output)
|
|
43
43
|
self.assert_show_fields(items, self.SERVICE_PROVIDER_FIELDS)
|
|
@@ -62,7 +62,7 @@ class ServiceProviderTests(common.IdentityTests):
|
|
|
62
62
|
)
|
|
63
63
|
self.assertEqual(0, len(raw_output))
|
|
64
64
|
raw_output = self.openstack(
|
|
65
|
-
'service provider show
|
|
65
|
+
f'service provider show {service_provider}'
|
|
66
66
|
)
|
|
67
67
|
updated_value = self.parse_show_as_object(raw_output)
|
|
68
68
|
self.assertIn(new_description, updated_value['description'])
|
|
@@ -22,9 +22,7 @@ class UserTests(common.IdentityTests):
|
|
|
22
22
|
def test_user_delete(self):
|
|
23
23
|
username = self._create_dummy_user(add_clean_up=False)
|
|
24
24
|
raw_output = self.openstack(
|
|
25
|
-
'user delete '
|
|
26
|
-
'--domain %(domain)s '
|
|
27
|
-
'%(name)s' % {'domain': self.domain_name, 'name': username}
|
|
25
|
+
'user delete ' f'--domain {self.domain_name} ' f'{username}'
|
|
28
26
|
)
|
|
29
27
|
self.assertEqual(0, len(raw_output))
|
|
30
28
|
|
|
@@ -36,25 +34,19 @@ class UserTests(common.IdentityTests):
|
|
|
36
34
|
def test_user_set(self):
|
|
37
35
|
username = self._create_dummy_user()
|
|
38
36
|
raw_output = self.openstack(
|
|
39
|
-
'user show '
|
|
40
|
-
'--domain %(domain)s '
|
|
41
|
-
'%(name)s' % {'domain': self.domain_name, 'name': username}
|
|
37
|
+
'user show ' f'--domain {self.domain_name} ' f'{username}'
|
|
42
38
|
)
|
|
43
39
|
user = self.parse_show_as_object(raw_output)
|
|
44
40
|
new_username = data_utils.rand_name('NewTestUser')
|
|
45
41
|
new_email = data_utils.rand_name() + '@example.com'
|
|
46
42
|
raw_output = self.openstack(
|
|
47
|
-
'user set '
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
'%(id)s'
|
|
51
|
-
% {'email': new_email, 'new_name': new_username, 'id': user['id']}
|
|
43
|
+
'user set ' '--email {email} ' '--name {new_name} ' '{id}'.format(
|
|
44
|
+
email=new_email, new_name=new_username, id=user['id']
|
|
45
|
+
)
|
|
52
46
|
)
|
|
53
47
|
self.assertEqual(0, len(raw_output))
|
|
54
48
|
raw_output = self.openstack(
|
|
55
|
-
'user show '
|
|
56
|
-
'--domain %(domain)s '
|
|
57
|
-
'%(name)s' % {'domain': self.domain_name, 'name': new_username}
|
|
49
|
+
'user show ' f'--domain {self.domain_name} ' f'{new_username}'
|
|
58
50
|
)
|
|
59
51
|
updated_user = self.parse_show_as_object(raw_output)
|
|
60
52
|
self.assertEqual(user['id'], updated_user['id'])
|
|
@@ -65,36 +57,29 @@ class UserTests(common.IdentityTests):
|
|
|
65
57
|
project_name = self._create_dummy_project()
|
|
66
58
|
# get original user details
|
|
67
59
|
raw_output = self.openstack(
|
|
68
|
-
'user show '
|
|
69
|
-
'--domain %(domain)s '
|
|
70
|
-
'%(name)s' % {'domain': self.domain_name, 'name': username}
|
|
60
|
+
'user show ' f'--domain {self.domain_name} ' f'{username}'
|
|
71
61
|
)
|
|
72
62
|
user = self.parse_show_as_object(raw_output)
|
|
73
63
|
# update user
|
|
74
64
|
raw_output = self.openstack(
|
|
75
65
|
'user set '
|
|
76
|
-
'--project
|
|
77
|
-
'--project-domain
|
|
78
|
-
'
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
'
|
|
82
|
-
|
|
83
|
-
}
|
|
66
|
+
'--project {project} '
|
|
67
|
+
'--project-domain {project_domain} '
|
|
68
|
+
'{id}'.format(
|
|
69
|
+
project=project_name,
|
|
70
|
+
project_domain=self.domain_name,
|
|
71
|
+
id=user['id'],
|
|
72
|
+
)
|
|
84
73
|
)
|
|
85
74
|
self.assertEqual(0, len(raw_output))
|
|
86
75
|
# get updated user details
|
|
87
76
|
raw_output = self.openstack(
|
|
88
|
-
'user show '
|
|
89
|
-
'--domain %(domain)s '
|
|
90
|
-
'%(name)s' % {'domain': self.domain_name, 'name': username}
|
|
77
|
+
'user show ' f'--domain {self.domain_name} ' f'{username}'
|
|
91
78
|
)
|
|
92
79
|
updated_user = self.parse_show_as_object(raw_output)
|
|
93
80
|
# get project details
|
|
94
81
|
raw_output = self.openstack(
|
|
95
|
-
'project show '
|
|
96
|
-
'--domain %(domain)s '
|
|
97
|
-
'%(name)s' % {'domain': self.domain_name, 'name': project_name}
|
|
82
|
+
'project show ' f'--domain {self.domain_name} ' f'{project_name}'
|
|
98
83
|
)
|
|
99
84
|
project = self.parse_show_as_object(raw_output)
|
|
100
85
|
# check updated user details
|
|
@@ -104,9 +89,7 @@ class UserTests(common.IdentityTests):
|
|
|
104
89
|
def test_user_show(self):
|
|
105
90
|
username = self._create_dummy_user()
|
|
106
91
|
raw_output = self.openstack(
|
|
107
|
-
'user show '
|
|
108
|
-
'--domain %(domain)s '
|
|
109
|
-
'%(name)s' % {'domain': self.domain_name, 'name': username}
|
|
92
|
+
'user show ' f'--domain {self.domain_name} ' f'{username}'
|
|
110
93
|
)
|
|
111
94
|
items = self.parse_show(raw_output)
|
|
112
95
|
self.assert_show_fields(items, self.USER_FIELDS)
|