python-openstackclient 7.1.3__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.
Files changed (128) hide show
  1. openstackclient/api/api.py +2 -1
  2. openstackclient/api/image_v2.py +1 -1
  3. openstackclient/api/object_store_v1.py +12 -20
  4. openstackclient/common/clientmanager.py +1 -1
  5. openstackclient/common/module.py +2 -2
  6. openstackclient/common/quota.py +4 -4
  7. openstackclient/compute/v2/flavor.py +1 -1
  8. openstackclient/compute/v2/server.py +122 -59
  9. openstackclient/compute/v2/server_backup.py +1 -1
  10. openstackclient/compute/v2/server_image.py +1 -1
  11. openstackclient/compute/v2/server_migration.py +11 -2
  12. openstackclient/compute/v2/usage.py +3 -3
  13. openstackclient/identity/common.py +1 -1
  14. openstackclient/identity/v2_0/project.py +1 -1
  15. openstackclient/identity/v2_0/role_assignment.py +1 -1
  16. openstackclient/identity/v2_0/user.py +2 -2
  17. openstackclient/identity/v3/access_rule.py +26 -14
  18. openstackclient/identity/v3/identity_provider.py +1 -1
  19. openstackclient/identity/v3/project.py +1 -1
  20. openstackclient/image/v2/image.py +13 -13
  21. openstackclient/image/v2/metadef_objects.py +6 -4
  22. openstackclient/network/common.py +8 -7
  23. openstackclient/network/v2/floating_ip.py +6 -2
  24. openstackclient/network/v2/floating_ip_port_forwarding.py +2 -2
  25. openstackclient/network/v2/l3_conntrack_helper.py +1 -1
  26. openstackclient/network/v2/ndp_proxy.py +1 -0
  27. openstackclient/network/v2/network_agent.py +2 -6
  28. openstackclient/network/v2/network_qos_rule.py +2 -5
  29. openstackclient/network/v2/network_trunk.py +5 -4
  30. openstackclient/network/v2/port.py +18 -3
  31. openstackclient/network/v2/router.py +7 -4
  32. openstackclient/network/v2/subnet_pool.py +2 -2
  33. openstackclient/shell.py +3 -2
  34. openstackclient/tests/functional/common/test_help.py +3 -9
  35. openstackclient/tests/functional/common/test_module.py +1 -1
  36. openstackclient/tests/functional/common/test_quota.py +2 -4
  37. openstackclient/tests/functional/compute/v2/common.py +1 -3
  38. openstackclient/tests/functional/compute/v2/test_hypervisor.py +3 -3
  39. openstackclient/tests/functional/compute/v2/test_keypair.py +2 -2
  40. openstackclient/tests/functional/compute/v2/test_server.py +1 -1
  41. openstackclient/tests/functional/identity/v2/common.py +31 -48
  42. openstackclient/tests/functional/identity/v2/test_catalog.py +1 -1
  43. openstackclient/tests/functional/identity/v2/test_ec2_credentials.py +2 -2
  44. openstackclient/tests/functional/identity/v2/test_endpoint.py +2 -2
  45. openstackclient/tests/functional/identity/v2/test_project.py +8 -8
  46. openstackclient/tests/functional/identity/v2/test_role.py +14 -34
  47. openstackclient/tests/functional/identity/v2/test_service.py +2 -2
  48. openstackclient/tests/functional/identity/v2/test_token.py +1 -1
  49. openstackclient/tests/functional/identity/v2/test_user.py +7 -9
  50. openstackclient/tests/functional/identity/v3/common.py +69 -110
  51. openstackclient/tests/functional/identity/v3/test_access_rule.py +86 -0
  52. openstackclient/tests/functional/identity/v3/test_application_credential.py +18 -44
  53. openstackclient/tests/functional/identity/v3/test_catalog.py +1 -1
  54. openstackclient/tests/functional/identity/v3/test_domain.py +9 -11
  55. openstackclient/tests/functional/identity/v3/test_endpoint.py +15 -27
  56. openstackclient/tests/functional/identity/v3/test_group.py +32 -93
  57. openstackclient/tests/functional/identity/v3/test_idp.py +3 -3
  58. openstackclient/tests/functional/identity/v3/test_limit.py +32 -32
  59. openstackclient/tests/functional/identity/v3/test_project.py +17 -26
  60. openstackclient/tests/functional/identity/v3/test_region.py +6 -7
  61. openstackclient/tests/functional/identity/v3/test_registered_limit.py +27 -36
  62. openstackclient/tests/functional/identity/v3/test_role.py +30 -60
  63. openstackclient/tests/functional/identity/v3/test_role_assignment.py +33 -80
  64. openstackclient/tests/functional/identity/v3/test_service.py +7 -13
  65. openstackclient/tests/functional/identity/v3/test_service_provider.py +3 -3
  66. openstackclient/tests/functional/identity/v3/test_user.py +17 -34
  67. openstackclient/tests/functional/image/v2/test_image.py +1 -3
  68. openstackclient/tests/functional/network/v2/common.py +1 -3
  69. openstackclient/tests/functional/network/v2/test_default_security_group_rule.py +3 -8
  70. openstackclient/tests/functional/network/v2/test_l3_conntrack_helper.py +27 -31
  71. openstackclient/tests/functional/network/v2/test_network.py +9 -12
  72. openstackclient/tests/functional/network/v2/test_network_agent.py +15 -20
  73. openstackclient/tests/functional/network/v2/test_network_flavor.py +2 -2
  74. openstackclient/tests/functional/network/v2/test_network_ndp_proxy.py +17 -39
  75. openstackclient/tests/functional/network/v2/test_network_qos_rule.py +48 -63
  76. openstackclient/tests/functional/network/v2/test_network_qos_rule_type.py +1 -1
  77. openstackclient/tests/functional/network/v2/test_network_segment_range.py +2 -2
  78. openstackclient/tests/functional/network/v2/test_network_trunk.py +15 -25
  79. openstackclient/tests/functional/network/v2/test_port.py +28 -34
  80. openstackclient/tests/functional/network/v2/test_router.py +13 -19
  81. openstackclient/tests/functional/object/v1/test_object.py +4 -7
  82. openstackclient/tests/functional/volume/base.py +5 -17
  83. openstackclient/tests/functional/volume/v1/test_volume_type.py +11 -11
  84. openstackclient/tests/functional/volume/v2/test_volume_backup.py +1 -1
  85. openstackclient/tests/functional/volume/v2/test_volume_type.py +13 -15
  86. openstackclient/tests/functional/volume/v3/test_volume_type.py +13 -15
  87. openstackclient/tests/unit/api/test_compute_v2.py +0 -5
  88. openstackclient/tests/unit/api/test_object_store_v1.py +6 -4
  89. openstackclient/tests/unit/common/test_extension.py +24 -31
  90. openstackclient/tests/unit/compute/v2/test_host.py +0 -1
  91. openstackclient/tests/unit/compute/v2/test_server.py +123 -115
  92. openstackclient/tests/unit/identity/v3/test_access_rule.py +65 -64
  93. openstackclient/tests/unit/identity/v3/test_group.py +4 -10
  94. openstackclient/tests/unit/identity/v3/test_limit.py +2 -2
  95. openstackclient/tests/unit/image/v2/test_metadef_objects.py +1 -2
  96. openstackclient/tests/unit/image/v2/test_metadef_resource_type_association.py +2 -6
  97. openstackclient/tests/unit/integ/base.py +1 -1
  98. openstackclient/tests/unit/network/v2/test_default_security_group_rule.py +3 -3
  99. openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +4 -4
  100. openstackclient/tests/unit/network/v2/test_local_ip_association.py +2 -2
  101. openstackclient/tests/unit/network/v2/test_network_qos_rule.py +12 -13
  102. openstackclient/tests/unit/network/v2/test_network_trunk.py +31 -35
  103. openstackclient/tests/unit/network/v2/test_port.py +40 -17
  104. openstackclient/tests/unit/network/v2/test_subnet_pool.py +1 -1
  105. openstackclient/tests/unit/object/v1/test_object.py +1 -1
  106. openstackclient/tests/unit/utils.py +2 -2
  107. openstackclient/volume/client.py +1 -1
  108. openstackclient/volume/v1/volume.py +2 -2
  109. openstackclient/volume/v1/volume_backup.py +2 -2
  110. openstackclient/volume/v1/volume_snapshot.py +2 -2
  111. openstackclient/volume/v2/volume.py +2 -2
  112. openstackclient/volume/v2/volume_backup.py +2 -2
  113. openstackclient/volume/v2/volume_snapshot.py +2 -2
  114. openstackclient/volume/v2/volume_type.py +4 -4
  115. openstackclient/volume/v3/service.py +0 -1
  116. openstackclient/volume/v3/volume.py +3 -3
  117. openstackclient/volume/v3/volume_backup.py +2 -2
  118. openstackclient/volume/v3/volume_group.py +3 -7
  119. openstackclient/volume/v3/volume_type.py +6 -6
  120. {python_openstackclient-7.1.3.dist-info → python_openstackclient-7.2.0.dist-info}/AUTHORS +3 -0
  121. {python_openstackclient-7.1.3.dist-info → python_openstackclient-7.2.0.dist-info}/METADATA +2 -3
  122. {python_openstackclient-7.1.3.dist-info → python_openstackclient-7.2.0.dist-info}/RECORD +127 -126
  123. python_openstackclient-7.2.0.dist-info/pbr.json +1 -0
  124. python_openstackclient-7.1.3.dist-info/pbr.json +0 -1
  125. {python_openstackclient-7.1.3.dist-info → python_openstackclient-7.2.0.dist-info}/LICENSE +0 -0
  126. {python_openstackclient-7.1.3.dist-info → python_openstackclient-7.2.0.dist-info}/WHEEL +0 -0
  127. {python_openstackclient-7.1.3.dist-info → python_openstackclient-7.2.0.dist-info}/entry_points.txt +0 -0
  128. {python_openstackclient-7.1.3.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 %(service_id)s'
37
- ' --default-limit %(default_limit)s'
38
- ' %(resource_name)s'
39
- % {
40
- 'service_id': service_id,
41
- 'default_limit': 10,
42
- 'resource_name': 'cores',
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 \'%(description)s\''
72
- ' --region %(region_id)s'
73
- ' --service %(service_name)s'
74
- ' --default-limit %(default_limit)s'
75
- ' %(resource_name)s' % params,
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 %(registered_limit_id)s'
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 %(registered_limit_id)s'
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
- ' %(registered_limit_id)s'
109
- ' --region %(region_id)s' % params,
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
- ' %(registered_limit_id)s'
124
- ' --description \'%(description)s\'' % params,
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
- ' %(registered_limit_id)s'
140
- ' --service %(service)s' % params,
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
- ' %(registered_limit_id)s'
155
- ' --default-limit %(default_limit)s' % params,
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
- ' %(registered_limit_id)s'
171
- ' --resource-name %(resource_name)s' % params,
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 %s' % role['id'])
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 %s' % role_name)
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 %s' % role_name)
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 %s' % new_role_name)
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 %s' % role_name)
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 %(project)s '
82
- '--project-domain %(project_domain)s '
83
- '--user %(user)s '
84
- '--user-domain %(user_domain)s '
85
- '%(role)s'
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 %(project)s '
98
- '--project-domain %(project_domain)s '
99
- '--user %(user)s '
100
- '--user-domain %(user_domain)s '
101
- '%(role)s'
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 %(project)s '
118
- '--project-domain %(project_domain)s '
119
- '--user %(user)s '
120
- '--user-domain %(user_domain)s '
121
- '%(role)s'
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 %(project)s '
133
- '--project-domain %(project_domain)s '
134
- '--user %(user)s '
135
- '--user-domain %(user_domain)s '
136
- '%(role)s'
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 %(implied_role)s '
169
- '%(role)s' % {'implied_role': implied_role_name, 'role': role_name}
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 %(implied_role)s '
177
- '%(role)s' % {'implied_role': implied_role_name, 'role': role_name}
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 %(user)s '
29
- '--system %(system)s '
30
- '%(role)s'
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 %(user)s '
41
- '--system %(system)s '
42
- '%(role)s'
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 %(user)s ' % {'user': username}
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 %(role)s ' % {'role': role_name}
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 %(system)s ' % {'system': 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 %(group)s '
76
- '--system %(system)s '
77
- '%(role)s'
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 %(group)s '
88
- '--system %(system)s '
89
- '%(role)s'
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 %(group)s ' % {'group': 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 %(domain)s '
109
- '--user %(user)s '
110
- '%(role)s'
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 %(domain)s '
121
- '--user %(user)s '
122
- '%(role)s'
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 %(project)s '
143
- '--user %(user)s '
144
- '%(role)s'
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 %(project)s '
155
- '--user %(user)s '
156
- '%(role)s'
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 %(project)s '
192
- '--user %(user)s '
149
+ f'--project {self.project_name} '
150
+ f'--user {username} '
193
151
  '--inherited '
194
- '%(role)s'
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 %s' % service_name)
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 %(type)s '
48
- '--name %(name)s '
49
- '--description %(description)s '
47
+ f'--type {new_service_type} '
48
+ f'--name {new_service_name} '
49
+ f'--description {new_service_description} '
50
50
  '--disable '
51
- '%(service)s'
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 %s' % new_service_name)
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 %s' % service_name)
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 %s' % service_provider
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 %s' % service_provider
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 %s' % service_provider
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
- '--email %(email)s '
49
- '--name %(new_name)s '
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 %(project)s '
77
- '--project-domain %(project_domain)s '
78
- '%(id)s'
79
- % {
80
- 'project': project_name,
81
- 'project_domain': self.domain_name,
82
- 'id': user['id'],
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)