python-openstackclient 7.3.1__py3-none-any.whl → 7.5.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/identity/v3/credential.py +2 -2
- openstackclient/identity/v3/trust.py +73 -24
- openstackclient/identity/v3/user.py +6 -4
- openstackclient/network/v2/port.py +14 -2
- openstackclient/network/v2/router.py +3 -0
- openstackclient/tests/unit/identity/v3/test_credential.py +4 -4
- openstackclient/tests/unit/identity/v3/test_trust.py +5 -2
- openstackclient/tests/unit/identity/v3/test_user.py +16 -0
- openstackclient/tests/unit/network/v2/test_port.py +29 -0
- openstackclient/tests/unit/network/v2/test_router.py +57 -7
- {python_openstackclient-7.3.1.dist-info → python_openstackclient-7.5.0.dist-info}/AUTHORS +3 -0
- {python_openstackclient-7.3.1.dist-info → python_openstackclient-7.5.0.dist-info}/METADATA +1 -1
- {python_openstackclient-7.3.1.dist-info → python_openstackclient-7.5.0.dist-info}/RECORD +18 -18
- {python_openstackclient-7.3.1.dist-info → python_openstackclient-7.5.0.dist-info}/WHEEL +1 -1
- python_openstackclient-7.5.0.dist-info/pbr.json +1 -0
- python_openstackclient-7.3.1.dist-info/pbr.json +0 -1
- {python_openstackclient-7.3.1.dist-info → python_openstackclient-7.5.0.dist-info}/LICENSE +0 -0
- {python_openstackclient-7.3.1.dist-info → python_openstackclient-7.5.0.dist-info}/entry_points.txt +0 -0
- {python_openstackclient-7.3.1.dist-info → python_openstackclient-7.5.0.dist-info}/top_level.txt +0 -0
|
@@ -88,10 +88,10 @@ class CreateCredential(command.ShowOne):
|
|
|
88
88
|
else:
|
|
89
89
|
project = None
|
|
90
90
|
credential = identity_client.create_credential(
|
|
91
|
-
|
|
91
|
+
user_id=user_id,
|
|
92
92
|
type=parsed_args.type,
|
|
93
93
|
blob=parsed_args.data,
|
|
94
|
-
|
|
94
|
+
project_id=project,
|
|
95
95
|
)
|
|
96
96
|
|
|
97
97
|
return _format_credential(credential)
|
|
@@ -123,37 +123,67 @@ class CreateTrust(command.ShowOne):
|
|
|
123
123
|
# pointless, and trusts are immutable, so let's enforce it at the
|
|
124
124
|
# client level.
|
|
125
125
|
try:
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
126
|
+
if parsed_args.trustor_domain:
|
|
127
|
+
trustor_domain_id = identity_client.find_domain(
|
|
128
|
+
parsed_args.trustor_domain, ignore_missing=False
|
|
129
|
+
).id
|
|
130
|
+
trustor_id = identity_client.find_user(
|
|
131
|
+
parsed_args.trustor,
|
|
132
|
+
ignore_missing=False,
|
|
133
|
+
domain_id=trustor_domain_id,
|
|
134
|
+
).id
|
|
135
|
+
else:
|
|
136
|
+
trustor_id = identity_client.find_user(
|
|
137
|
+
parsed_args.trustor, ignore_missing=False
|
|
138
|
+
).id
|
|
139
|
+
kwargs['trustor_user_id'] = trustor_id
|
|
130
140
|
except sdk_exceptions.ForbiddenException:
|
|
131
|
-
kwargs['
|
|
141
|
+
kwargs['trustor_user_id'] = parsed_args.trustor
|
|
132
142
|
|
|
133
143
|
try:
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
144
|
+
if parsed_args.trustee_domain:
|
|
145
|
+
trustee_domain_id = identity_client.find_domain(
|
|
146
|
+
parsed_args.trustee_domain, ignore_missing=False
|
|
147
|
+
).id
|
|
148
|
+
trustee_id = identity_client.find_user(
|
|
149
|
+
parsed_args.trustee,
|
|
150
|
+
ignore_missing=False,
|
|
151
|
+
domain_id=trustee_domain_id,
|
|
152
|
+
).id
|
|
153
|
+
else:
|
|
154
|
+
trustee_id = identity_client.find_user(
|
|
155
|
+
parsed_args.trustee, ignore_missing=False
|
|
156
|
+
).id
|
|
157
|
+
kwargs['trustee_user_id'] = trustee_id
|
|
138
158
|
except sdk_exceptions.ForbiddenException:
|
|
139
|
-
kwargs['
|
|
159
|
+
kwargs['trustee_user_id'] = parsed_args.trustee
|
|
140
160
|
|
|
141
161
|
try:
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
162
|
+
if parsed_args.project_domain:
|
|
163
|
+
project_domain_id = identity_client.find_domain(
|
|
164
|
+
parsed_args.project_domain, ignore_missing=False
|
|
165
|
+
).id
|
|
166
|
+
project_id = identity_client.find_project(
|
|
167
|
+
parsed_args.project,
|
|
168
|
+
ignore_missing=False,
|
|
169
|
+
domain_id=project_domain_id,
|
|
170
|
+
).id
|
|
171
|
+
else:
|
|
172
|
+
project_id = identity_client.find_project(
|
|
173
|
+
parsed_args.project, ignore_missing=False
|
|
174
|
+
).id
|
|
145
175
|
kwargs['project_id'] = project_id
|
|
146
176
|
except sdk_exceptions.ForbiddenException:
|
|
147
177
|
kwargs['project_id'] = parsed_args.project
|
|
148
178
|
|
|
149
|
-
|
|
179
|
+
roles = []
|
|
150
180
|
for role in parsed_args.roles:
|
|
151
181
|
try:
|
|
152
182
|
role_id = identity_client.find_role(role).id
|
|
153
183
|
except sdk_exceptions.ForbiddenException:
|
|
154
184
|
role_id = role
|
|
155
|
-
|
|
156
|
-
kwargs['roles'] =
|
|
185
|
+
roles.append({"id": role_id})
|
|
186
|
+
kwargs['roles'] = roles
|
|
157
187
|
|
|
158
188
|
if parsed_args.expiration:
|
|
159
189
|
expires_at = datetime.datetime.strptime(
|
|
@@ -161,8 +191,7 @@ class CreateTrust(command.ShowOne):
|
|
|
161
191
|
)
|
|
162
192
|
kwargs['expires_at'] = expires_at
|
|
163
193
|
|
|
164
|
-
|
|
165
|
-
kwargs['is_impersonation'] = parsed_args.is_impersonation
|
|
194
|
+
kwargs['impersonation'] = bool(parsed_args.is_impersonation)
|
|
166
195
|
|
|
167
196
|
trust = identity_client.create_trust(**kwargs)
|
|
168
197
|
|
|
@@ -289,9 +318,19 @@ class ListTrust(command.Lister):
|
|
|
289
318
|
trustor = None
|
|
290
319
|
if parsed_args.trustor:
|
|
291
320
|
try:
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
321
|
+
if parsed_args.trustor_domain:
|
|
322
|
+
trustor_domain_id = identity_client.find_domain(
|
|
323
|
+
parsed_args.trustor_domain, ignore_missing=False
|
|
324
|
+
).id
|
|
325
|
+
trustor_id = identity_client.find_user(
|
|
326
|
+
parsed_args.trustor,
|
|
327
|
+
ignore_missing=False,
|
|
328
|
+
domain_id=trustor_domain_id,
|
|
329
|
+
).id
|
|
330
|
+
else:
|
|
331
|
+
trustor_id = identity_client.find_user(
|
|
332
|
+
parsed_args.trustor, ignore_missing=False
|
|
333
|
+
).id
|
|
295
334
|
trustor = trustor_id
|
|
296
335
|
except sdk_exceptions.ForbiddenException:
|
|
297
336
|
trustor = parsed_args.trustor
|
|
@@ -299,9 +338,19 @@ class ListTrust(command.Lister):
|
|
|
299
338
|
trustee = None
|
|
300
339
|
if parsed_args.trustee:
|
|
301
340
|
try:
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
341
|
+
if parsed_args.trustee_domain:
|
|
342
|
+
trustee_domain_id = identity_client.find_domain(
|
|
343
|
+
parsed_args.trustee_domain, ignore_missing=False
|
|
344
|
+
).id
|
|
345
|
+
trustee_id = identity_client.find_user(
|
|
346
|
+
parsed_args.trustee,
|
|
347
|
+
ignore_missing=False,
|
|
348
|
+
domain_id=trustee_domain_id,
|
|
349
|
+
).id
|
|
350
|
+
else:
|
|
351
|
+
trustee_id = identity_client.find_user(
|
|
352
|
+
parsed_args.trustee, ignore_missing=False
|
|
353
|
+
).id
|
|
305
354
|
trustee = trustee_id
|
|
306
355
|
except sdk_exceptions.ForbiddenException:
|
|
307
356
|
trustee = parsed_args.trustee
|
|
@@ -612,10 +612,12 @@ class SetUser(command.Command):
|
|
|
612
612
|
if parsed_args.description:
|
|
613
613
|
kwargs['description'] = parsed_args.description
|
|
614
614
|
if parsed_args.project:
|
|
615
|
-
project_domain_id =
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
615
|
+
project_domain_id = None
|
|
616
|
+
if parsed_args.project_domain:
|
|
617
|
+
project_domain_id = identity_client.find_domain(
|
|
618
|
+
name_or_id=parsed_args.project_domain,
|
|
619
|
+
ignore_missing=False,
|
|
620
|
+
).id
|
|
619
621
|
project_id = identity_client.find_project(
|
|
620
622
|
name_or_id=parsed_args.project,
|
|
621
623
|
ignore_missing=False,
|
|
@@ -538,12 +538,12 @@ class CreatePort(command.ShowOne, common.NeutronCommandWithExtraArgs):
|
|
|
538
538
|
uplink_status_group.add_argument(
|
|
539
539
|
'--enable-uplink-status-propagation',
|
|
540
540
|
action='store_true',
|
|
541
|
-
help=_("Enable uplink status
|
|
541
|
+
help=_("Enable uplink status propagation (default)"),
|
|
542
542
|
)
|
|
543
543
|
uplink_status_group.add_argument(
|
|
544
544
|
'--disable-uplink-status-propagation',
|
|
545
545
|
action='store_true',
|
|
546
|
-
help=_("Disable uplink status
|
|
546
|
+
help=_("Disable uplink status propagation"),
|
|
547
547
|
)
|
|
548
548
|
parser.add_argument(
|
|
549
549
|
'--project',
|
|
@@ -1103,6 +1103,18 @@ class SetPort(common.NeutronCommandWithExtraArgs):
|
|
|
1103
1103
|
"(requires data plane status extension)"
|
|
1104
1104
|
),
|
|
1105
1105
|
)
|
|
1106
|
+
uplink_status_group = parser.add_mutually_exclusive_group()
|
|
1107
|
+
uplink_status_group.add_argument(
|
|
1108
|
+
'--enable-uplink-status-propagation',
|
|
1109
|
+
action='store_true',
|
|
1110
|
+
help=_('Enable uplink status propagation'),
|
|
1111
|
+
)
|
|
1112
|
+
uplink_status_group.add_argument(
|
|
1113
|
+
'--disable-uplink-status-propagation',
|
|
1114
|
+
action='store_true',
|
|
1115
|
+
help=_('Disable uplink status propagation'),
|
|
1116
|
+
)
|
|
1117
|
+
|
|
1106
1118
|
_tag.add_tag_option_to_parser_for_set(parser, _('port'))
|
|
1107
1119
|
|
|
1108
1120
|
return parser
|
|
@@ -237,6 +237,9 @@ def _get_attrs(client_manager, parsed_args):
|
|
|
237
237
|
if 'flavor_id' in parsed_args and parsed_args.flavor_id is not None:
|
|
238
238
|
flavor = n_client.find_flavor(parsed_args.flavor_id)
|
|
239
239
|
attrs['flavor_id'] = flavor.id
|
|
240
|
+
elif 'flavor' in parsed_args and parsed_args.flavor is not None:
|
|
241
|
+
flavor = n_client.find_flavor(parsed_args.flavor, ignore_missing=False)
|
|
242
|
+
attrs['flavor_id'] = flavor.id
|
|
240
243
|
|
|
241
244
|
for attr in ('enable_default_route_bfd', 'enable_default_route_ecmp'):
|
|
242
245
|
value = getattr(parsed_args, attr, None)
|
|
@@ -73,10 +73,10 @@ class TestCredentialCreate(identity_fakes.TestIdentityv3):
|
|
|
73
73
|
columns, data = self.cmd.take_action(parsed_args)
|
|
74
74
|
|
|
75
75
|
kwargs = {
|
|
76
|
-
'
|
|
76
|
+
'user_id': self.credential.user_id,
|
|
77
77
|
'type': self.credential.type,
|
|
78
78
|
'blob': self.credential.blob,
|
|
79
|
-
'
|
|
79
|
+
'project_id': None,
|
|
80
80
|
}
|
|
81
81
|
self.identity_sdk_client.create_credential.assert_called_once_with(
|
|
82
82
|
**kwargs
|
|
@@ -105,10 +105,10 @@ class TestCredentialCreate(identity_fakes.TestIdentityv3):
|
|
|
105
105
|
columns, data = self.cmd.take_action(parsed_args)
|
|
106
106
|
|
|
107
107
|
kwargs = {
|
|
108
|
-
'
|
|
108
|
+
'user_id': self.credential.user_id,
|
|
109
109
|
'type': self.credential.type,
|
|
110
110
|
'blob': self.credential.blob,
|
|
111
|
-
'
|
|
111
|
+
'project_id': self.credential.project_id,
|
|
112
112
|
}
|
|
113
113
|
self.identity_sdk_client.create_credential.assert_called_once_with(
|
|
114
114
|
**kwargs
|
|
@@ -70,12 +70,15 @@ class TestTrustCreate(identity_fakes.TestIdentityv3):
|
|
|
70
70
|
# Set expected values
|
|
71
71
|
kwargs = {
|
|
72
72
|
'project_id': self.project.id,
|
|
73
|
-
'roles': [self.role.id],
|
|
73
|
+
'roles': [{'id': self.role.id}],
|
|
74
|
+
'impersonation': False,
|
|
74
75
|
}
|
|
75
76
|
# TrustManager.create(trustee_id, trustor_id, impersonation=,
|
|
76
77
|
# project=, role_names=, expires_at=)
|
|
77
78
|
self.identity_sdk_client.create_trust.assert_called_with(
|
|
78
|
-
|
|
79
|
+
trustor_user_id=self.user.id,
|
|
80
|
+
trustee_user_id=self.user.id,
|
|
81
|
+
**kwargs,
|
|
79
82
|
)
|
|
80
83
|
|
|
81
84
|
collist = (
|
|
@@ -1206,6 +1206,17 @@ class TestUserSet(identity_fakes.TestIdentityv3):
|
|
|
1206
1206
|
self.identity_sdk_client.update_user.assert_called_with(
|
|
1207
1207
|
user=self.user, **kwargs
|
|
1208
1208
|
)
|
|
1209
|
+
self.identity_sdk_client.find_domain.assert_not_called()
|
|
1210
|
+
|
|
1211
|
+
# Set expected values
|
|
1212
|
+
kwargs = {
|
|
1213
|
+
'ignore_missing': False,
|
|
1214
|
+
'domain_id': None,
|
|
1215
|
+
}
|
|
1216
|
+
self.identity_sdk_client.find_project.assert_called_once_with(
|
|
1217
|
+
name_or_id=self.project.id, **kwargs
|
|
1218
|
+
)
|
|
1219
|
+
|
|
1209
1220
|
self.assertIsNone(result)
|
|
1210
1221
|
|
|
1211
1222
|
def test_user_set_project_domain(self):
|
|
@@ -1238,6 +1249,11 @@ class TestUserSet(identity_fakes.TestIdentityv3):
|
|
|
1238
1249
|
self.identity_sdk_client.update_user.assert_called_with(
|
|
1239
1250
|
user=self.user, **kwargs
|
|
1240
1251
|
)
|
|
1252
|
+
|
|
1253
|
+
self.identity_sdk_client.find_domain.assert_called_once_with(
|
|
1254
|
+
name_or_id=self.project.domain_id, ignore_missing=False
|
|
1255
|
+
)
|
|
1256
|
+
|
|
1241
1257
|
self.assertIsNone(result)
|
|
1242
1258
|
|
|
1243
1259
|
def test_user_set_enable(self):
|
|
@@ -2633,6 +2633,35 @@ class TestSetPort(TestPort):
|
|
|
2633
2633
|
def test_set_trusted_false(self):
|
|
2634
2634
|
self._test_set_trusted_field(False)
|
|
2635
2635
|
|
|
2636
|
+
def _test_set_uplink_status_propagation(self, uspropagation):
|
|
2637
|
+
arglist = [self._port.id]
|
|
2638
|
+
if uspropagation:
|
|
2639
|
+
arglist += ['--enable-uplink-status-propagation']
|
|
2640
|
+
else:
|
|
2641
|
+
arglist += ['--disable-uplink-status-propagation']
|
|
2642
|
+
|
|
2643
|
+
verifylist = [
|
|
2644
|
+
('port', self._port.id),
|
|
2645
|
+
]
|
|
2646
|
+
if uspropagation:
|
|
2647
|
+
verifylist.append(('enable_uplink_status_propagation', True))
|
|
2648
|
+
else:
|
|
2649
|
+
verifylist.append(('enable_uplink_status_propagation', False))
|
|
2650
|
+
|
|
2651
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
2652
|
+
|
|
2653
|
+
result = self.cmd.take_action(parsed_args)
|
|
2654
|
+
self.network_client.update_port.assert_called_once_with(
|
|
2655
|
+
self._port, **{'propagate_uplink_status': uspropagation}
|
|
2656
|
+
)
|
|
2657
|
+
self.assertIsNone(result)
|
|
2658
|
+
|
|
2659
|
+
def test_set_uplink_status_propagation_true(self):
|
|
2660
|
+
self._test_set_uplink_status_propagation(True)
|
|
2661
|
+
|
|
2662
|
+
def test_set_uplink_status_propagation_false(self):
|
|
2663
|
+
self._test_set_uplink_status_propagation(False)
|
|
2664
|
+
|
|
2636
2665
|
|
|
2637
2666
|
class TestShowPort(TestPort):
|
|
2638
2667
|
# The port to show.
|
|
@@ -384,7 +384,7 @@ class TestCreateRouter(TestRouter):
|
|
|
384
384
|
def test_create_with_no_tag(self):
|
|
385
385
|
self._test_create_with_tag(add_tags=False)
|
|
386
386
|
|
|
387
|
-
def
|
|
387
|
+
def test_create_with_flavor_id_id(self):
|
|
388
388
|
_flavor = network_fakes.create_one_network_flavor()
|
|
389
389
|
self.network_client.find_flavor = mock.Mock(return_value=_flavor)
|
|
390
390
|
arglist = [
|
|
@@ -392,7 +392,6 @@ class TestCreateRouter(TestRouter):
|
|
|
392
392
|
'--flavor-id',
|
|
393
393
|
_flavor.id,
|
|
394
394
|
]
|
|
395
|
-
arglist_with_name = [self.new_router.name, '--flavor-id', _flavor.name]
|
|
396
395
|
verifylist = [
|
|
397
396
|
('name', self.new_router.name),
|
|
398
397
|
('enable', True),
|
|
@@ -412,18 +411,69 @@ class TestCreateRouter(TestRouter):
|
|
|
412
411
|
self.assertEqual(self.columns, columns)
|
|
413
412
|
self.assertCountEqual(self.data, data)
|
|
414
413
|
|
|
415
|
-
|
|
416
|
-
|
|
414
|
+
def test_create_with_flavor_id_name(self):
|
|
415
|
+
_flavor = network_fakes.create_one_network_flavor()
|
|
416
|
+
self.network_client.find_flavor = mock.Mock(return_value=_flavor)
|
|
417
|
+
arglist = [self.new_router.name, '--flavor-id', _flavor.name]
|
|
418
|
+
verifylist = [
|
|
417
419
|
('name', self.new_router.name),
|
|
418
420
|
('enable', True),
|
|
419
421
|
('distributed', False),
|
|
420
422
|
('ha', False),
|
|
421
423
|
('flavor_id', _flavor.name),
|
|
422
424
|
]
|
|
423
|
-
|
|
424
|
-
|
|
425
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
426
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
427
|
+
self.network_client.create_router.assert_called_once_with(
|
|
428
|
+
**{
|
|
429
|
+
'admin_state_up': True,
|
|
430
|
+
'name': self.new_router.name,
|
|
431
|
+
'flavor_id': _flavor.id,
|
|
432
|
+
}
|
|
433
|
+
)
|
|
434
|
+
self.assertEqual(self.columns, columns)
|
|
435
|
+
self.assertCountEqual(self.data, data)
|
|
436
|
+
|
|
437
|
+
def test_create_with_flavor_id(self):
|
|
438
|
+
_flavor = network_fakes.create_one_network_flavor()
|
|
439
|
+
self.network_client.find_flavor = mock.Mock(return_value=_flavor)
|
|
440
|
+
arglist = [
|
|
441
|
+
self.new_router.name,
|
|
442
|
+
'--flavor',
|
|
443
|
+
_flavor.id,
|
|
444
|
+
]
|
|
445
|
+
verifylist = [
|
|
446
|
+
('name', self.new_router.name),
|
|
447
|
+
('enable', True),
|
|
448
|
+
('distributed', False),
|
|
449
|
+
('ha', False),
|
|
450
|
+
('flavor', _flavor.id),
|
|
451
|
+
]
|
|
452
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
453
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
454
|
+
self.network_client.create_router.assert_called_once_with(
|
|
455
|
+
**{
|
|
456
|
+
'admin_state_up': True,
|
|
457
|
+
'name': self.new_router.name,
|
|
458
|
+
'flavor_id': _flavor.id,
|
|
459
|
+
}
|
|
425
460
|
)
|
|
426
|
-
columns,
|
|
461
|
+
self.assertEqual(self.columns, columns)
|
|
462
|
+
self.assertCountEqual(self.data, data)
|
|
463
|
+
|
|
464
|
+
def test_create_with_flavor_name(self):
|
|
465
|
+
_flavor = network_fakes.create_one_network_flavor()
|
|
466
|
+
self.network_client.find_flavor = mock.Mock(return_value=_flavor)
|
|
467
|
+
arglist = [self.new_router.name, '--flavor', _flavor.name]
|
|
468
|
+
verifylist = [
|
|
469
|
+
('name', self.new_router.name),
|
|
470
|
+
('enable', True),
|
|
471
|
+
('distributed', False),
|
|
472
|
+
('ha', False),
|
|
473
|
+
('flavor', _flavor.name),
|
|
474
|
+
]
|
|
475
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
476
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
427
477
|
self.network_client.create_router.assert_called_once_with(
|
|
428
478
|
**{
|
|
429
479
|
'admin_state_up': True,
|
|
@@ -107,11 +107,13 @@ Dina Belova <dbelova@mirantis.com>
|
|
|
107
107
|
Dirk Mueller <dirk@dmllr.de>
|
|
108
108
|
Diwei Zhu <zhu.diw@northeastern.edu>
|
|
109
109
|
Dmitrii Shcherbakov <dmitrii.shcherbakov@canonical.com>
|
|
110
|
+
Dmitriy Chubinidze <dcu995@gmail.com>
|
|
110
111
|
Dmitriy Rabotyagov <drabotyagov@vexxhost.com>
|
|
111
112
|
Dmitriy Rabotyagov <noonedeadpunk@ya.ru>
|
|
112
113
|
Dmitry Tantsur <dtantsur@protonmail.com>
|
|
113
114
|
Dolph Mathews <dolph.mathews@gmail.com>
|
|
114
115
|
Dongcan Ye <hellochosen@gmail.com>
|
|
116
|
+
Doug Goldstein <cardoe@cardoe.com>
|
|
115
117
|
Doug Hellmann <doug.hellmann@dreamhost.com>
|
|
116
118
|
Doug Hellmann <doug@doughellmann.com>
|
|
117
119
|
Doug Wiegley <dwiegley@salesforce.com>
|
|
@@ -424,6 +426,7 @@ Violet Kurtz <vi.kurtz@protonmail.com>
|
|
|
424
426
|
Violet Kurtz <vikurtz@osuosl.org>
|
|
425
427
|
Vishakha Agarwal <agarwalvishakha18@gmail.com>
|
|
426
428
|
Vladimir Eremin <yottatsa@yandex-team.ru>
|
|
429
|
+
Vladimir Kozhukalov <kozhukalov@gmail.com>
|
|
427
430
|
Vu Cong Tuan <tuanvc@vn.fujitsu.com>
|
|
428
431
|
Wenran Xiao <xiaowenran@unitedstack.com>
|
|
429
432
|
Wenzhi Yu <wenzhi_yu@163.com>
|
|
@@ -57,7 +57,7 @@ openstackclient/identity/v3/access_rule.py,sha256=s1bQ-dQwnUYKPbovwqObhHLmjATsjK
|
|
|
57
57
|
openstackclient/identity/v3/application_credential.py,sha256=vCa4hAt7AhVtyZV1Ed_F3BuMtRK5JIxEzyRwXk-hJXA,11232
|
|
58
58
|
openstackclient/identity/v3/catalog.py,sha256=49jDO5w8AqGgQxRppYmfi8R6P0Es7tnIraQzzFmYFAc,3300
|
|
59
59
|
openstackclient/identity/v3/consumer.py,sha256=Fk1-wyUoTA638zHKf5KwTP4Os-RYctmBYkyen7fasIk,4845
|
|
60
|
-
openstackclient/identity/v3/credential.py,sha256=
|
|
60
|
+
openstackclient/identity/v3/credential.py,sha256=3VMohFrTEqK3hcmBEaXWXwO16n9WCwUYBeav8IEbqsQ,7941
|
|
61
61
|
openstackclient/identity/v3/domain.py,sha256=Hy_xsQd2tMNjlKsd-OY99XZTbys8XwSf3TOCqhX3YI8,7616
|
|
62
62
|
openstackclient/identity/v3/ec2creds.py,sha256=BrLcjP_3i6PuMvgIarnhGjx7BxZ4VUVLz6MkE4gZ50I,7278
|
|
63
63
|
openstackclient/identity/v3/endpoint.py,sha256=RPeAAiNBr6bMhhiCoNpPxanZVxjyiW2fhPxImi37Dks,13013
|
|
@@ -78,9 +78,9 @@ openstackclient/identity/v3/service.py,sha256=2VuxiOEuEnqjWEPNryKRe4LLe70-MIndkD
|
|
|
78
78
|
openstackclient/identity/v3/service_provider.py,sha256=tw_X_S3dXZPs-AijTbi_UC14JivBZ-IxsVwcj-6dYSY,8433
|
|
79
79
|
openstackclient/identity/v3/tag.py,sha256=dcVDheoWxdkwsZYvyJSpzIF2EGpqZtaE0h7x2halscc,3972
|
|
80
80
|
openstackclient/identity/v3/token.py,sha256=dXP7iRYZRROw3k8knao6NteZeP67mVGCc2Y9jMHudnQ,7399
|
|
81
|
-
openstackclient/identity/v3/trust.py,sha256=
|
|
81
|
+
openstackclient/identity/v3/trust.py,sha256=5VZYtn8Dy_R_JlWmG3eiiv93cLwrlD7OiMcjO5qFDsU,13884
|
|
82
82
|
openstackclient/identity/v3/unscoped_saml.py,sha256=A-645W2kp0_27NxG03YcEU9EtcCFex6Ojzw4fLApuds,2031
|
|
83
|
-
openstackclient/identity/v3/user.py,sha256=
|
|
83
|
+
openstackclient/identity/v3/user.py,sha256=y0pKxoNnXmchABzTt8lg9tkgOPqTZxUYiaXjw1xSrlM,24147
|
|
84
84
|
openstackclient/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
85
85
|
openstackclient/image/client.py,sha256=I088KrjZ9ubuS_8NDX98W6_lHkdaxbBtRHTHt5q_HC8,1508
|
|
86
86
|
openstackclient/image/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -127,8 +127,8 @@ openstackclient/network/v2/network_segment.py,sha256=3bJFnFz4QOwgb_diuLZ-QJ9WOj3
|
|
|
127
127
|
openstackclient/network/v2/network_segment_range.py,sha256=phZ4h-tRPpHbFNA8s_IegdXKm8Y84kffV62RxVITAn0,17514
|
|
128
128
|
openstackclient/network/v2/network_service_provider.py,sha256=b0pKHxB5Qq1U2lfOCWHKJ8CMX661gBbKtv0jXvuE3Xg,1384
|
|
129
129
|
openstackclient/network/v2/network_trunk.py,sha256=2QUGXB4lUGv9BvKPErzFUlgU9Tm_6Agp2pljRx3vTVw,13846
|
|
130
|
-
openstackclient/network/v2/port.py,sha256=
|
|
131
|
-
openstackclient/network/v2/router.py,sha256=
|
|
130
|
+
openstackclient/network/v2/port.py,sha256=P9UvpFAV0JQsxk9m6pV7PdAXOoTF-lDRVEq5KUPYzb8,50825
|
|
131
|
+
openstackclient/network/v2/router.py,sha256=x6jC0qeeOwRAJbC9ZagWVkgcKtz_KX4MzQCYTU5Z_4w,50290
|
|
132
132
|
openstackclient/network/v2/security_group.py,sha256=XYOze-FQFJWtGxBc-6hiGViKVSi6fDPRWtjC9Keb1Pw,15488
|
|
133
133
|
openstackclient/network/v2/security_group_rule.py,sha256=UQwuJ2uOmdGpaxcmeKNf8c3ay8I5vVjzb4fSFT3liPg,22371
|
|
134
134
|
openstackclient/network/v2/subnet.py,sha256=CzW5uV3AQUaOW9gf5IMwJJXJQtk-22cLfNkmazF_LZw,31325
|
|
@@ -321,7 +321,7 @@ openstackclient/tests/unit/identity/v3/test_access_rule.py,sha256=g8sWxkRiUZiJr0
|
|
|
321
321
|
openstackclient/tests/unit/identity/v3/test_application_credential.py,sha256=o-1WAPU5PQ7xtNGj01zEpt2icB8sGXqCqXR0bG8IXaM,14851
|
|
322
322
|
openstackclient/tests/unit/identity/v3/test_catalog.py,sha256=u8PIs1shX4IYE3_nd8B8H4f3dV_nqmR59IEX_DgqkYo,4766
|
|
323
323
|
openstackclient/tests/unit/identity/v3/test_consumer.py,sha256=QcoK9U_Ce1XQMBRqhY2OJouPQXji0huykhehwM6kHlI,6693
|
|
324
|
-
openstackclient/tests/unit/identity/v3/test_credential.py,sha256=
|
|
324
|
+
openstackclient/tests/unit/identity/v3/test_credential.py,sha256=yTOl_7NnczmVNplhA8mrWiPnHOWX4AW_UwF5OvIqsro,11965
|
|
325
325
|
openstackclient/tests/unit/identity/v3/test_domain.py,sha256=Dvy-WTkWxwVfHCeIebdmsFuXETNTdccCKqWkAWRXrt4,16203
|
|
326
326
|
openstackclient/tests/unit/identity/v3/test_endpoint.py,sha256=kx9y_6XMvm6CQIejTX0zVvwisjoJ4hrpgE-tqtQOBKY,28478
|
|
327
327
|
openstackclient/tests/unit/identity/v3/test_endpoint_group.py,sha256=g3JGihRqj0jLzmEJXdyOh1PVXyI_48NdeBsGbl9f7e4,16211
|
|
@@ -340,9 +340,9 @@ openstackclient/tests/unit/identity/v3/test_role_assignment.py,sha256=Lpb0vwOfP7
|
|
|
340
340
|
openstackclient/tests/unit/identity/v3/test_service.py,sha256=eFRjaeuJKd4_G1_gSTzAKmLTN035rQjY4E5RnLzMutY,15028
|
|
341
341
|
openstackclient/tests/unit/identity/v3/test_service_provider.py,sha256=vAY1-5zzhbw_Fa5tcYMWzNezTKMpHfvYDYN2w6zOFdI,12080
|
|
342
342
|
openstackclient/tests/unit/identity/v3/test_token.py,sha256=7Vp-thUbZcaXvIybvD40Xc8JfncZF9DcipgibyTjIdw,4098
|
|
343
|
-
openstackclient/tests/unit/identity/v3/test_trust.py,sha256=
|
|
343
|
+
openstackclient/tests/unit/identity/v3/test_trust.py,sha256=C-RY9_SJypImzDbHgyMNj-yzvEfqdylwONdFFt8D4wg,12953
|
|
344
344
|
openstackclient/tests/unit/identity/v3/test_unscoped_saml.py,sha256=gBtouVvKaOTflJ6TMg497ScL4GsVS3lVM_h8XKFExXg,3592
|
|
345
|
-
openstackclient/tests/unit/identity/v3/test_user.py,sha256=
|
|
345
|
+
openstackclient/tests/unit/identity/v3/test_user.py,sha256=z2fChcuhT711GDyKlYsIPpvAx2aDtFn9C2KAe4kvYNw,58719
|
|
346
346
|
openstackclient/tests/unit/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
347
347
|
openstackclient/tests/unit/image/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
348
348
|
openstackclient/tests/unit/image/v1/fakes.py,sha256=rwYSQK12WxSaX2p-f15e6D94qC6lg1XIgBFvdiJ5aRc,2271
|
|
@@ -397,8 +397,8 @@ openstackclient/tests/unit/network/v2/test_network_segment.py,sha256=D6MVB6eETA2
|
|
|
397
397
|
openstackclient/tests/unit/network/v2/test_network_segment_range.py,sha256=zLgAZdHqbWKn5tYYCUuDn9UA7BFOMYOowC3DQztrZyQ,23388
|
|
398
398
|
openstackclient/tests/unit/network/v2/test_network_service_provider.py,sha256=iHsMqAGuK3onjUI46uGKX1_DwGq-y6b_SOR2IU9PdfU,2047
|
|
399
399
|
openstackclient/tests/unit/network/v2/test_network_trunk.py,sha256=1VPt6Nzv92nRxLoDgwffmpTJ0sgYl4b5PmLO3qJ9INk,30556
|
|
400
|
-
openstackclient/tests/unit/network/v2/test_port.py,sha256=
|
|
401
|
-
openstackclient/tests/unit/network/v2/test_router.py,sha256=
|
|
400
|
+
openstackclient/tests/unit/network/v2/test_port.py,sha256=SxoL8Oft3NwlQOp7SV98FZ3dM6Ha9BdQwUqmTWBHzvk,95789
|
|
401
|
+
openstackclient/tests/unit/network/v2/test_router.py,sha256=TaYFuKeCcM_WzR5V_-FJo5w2Z8sNUsPiKLm1S4245pM,86272
|
|
402
402
|
openstackclient/tests/unit/network/v2/test_security_group_compute.py,sha256=725tUWOhxjWJwUXVdKfxD7eXMe7zrz7bKNdK_HvK624,12576
|
|
403
403
|
openstackclient/tests/unit/network/v2/test_security_group_network.py,sha256=PIE6TgW-bUGSAZLk0B60lPELIJsw_MTKxxcHw-E1fak,20916
|
|
404
404
|
openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py,sha256=8z6OfGcA69LumFpxglE9MzJS267Co08DAwUf4NNC9RA,19155
|
|
@@ -494,11 +494,11 @@ openstackclient/volume/v3/volume_message.py,sha256=HBBxPEcYoNqGjEbzGIEnIJ1XTcQ2K
|
|
|
494
494
|
openstackclient/volume/v3/volume_snapshot.py,sha256=pZ4q_qCwqh4jaGhX28G59wsWDmEc3uXdbpeD176osZg,3186
|
|
495
495
|
openstackclient/volume/v3/volume_transfer_request.py,sha256=PthOJV2m-pTV1njFzwTpaekXZkET1c6alIJrpuN7R6Q,7530
|
|
496
496
|
openstackclient/volume/v3/volume_type.py,sha256=_nbmu6e87UAHRjh30fQIwScMubox_FpHcQKDUOxO4NA,33955
|
|
497
|
-
python_openstackclient-7.
|
|
498
|
-
python_openstackclient-7.
|
|
499
|
-
python_openstackclient-7.
|
|
500
|
-
python_openstackclient-7.
|
|
501
|
-
python_openstackclient-7.
|
|
502
|
-
python_openstackclient-7.
|
|
503
|
-
python_openstackclient-7.
|
|
504
|
-
python_openstackclient-7.
|
|
497
|
+
python_openstackclient-7.5.0.dist-info/AUTHORS,sha256=dLJoA2nJCPXXMQlfd8nyRZhXkR2Ai9t6frv3d3eZUII,21679
|
|
498
|
+
python_openstackclient-7.5.0.dist-info/LICENSE,sha256=XfKg2H1sVi8OoRxoisUlMqoo10TKvHmU_wU39ks7MyA,10143
|
|
499
|
+
python_openstackclient-7.5.0.dist-info/METADATA,sha256=t2n54Ya-t_0Ca4BJFk0TYWfMNjRbGhdPMRs4nsiRrpc,6516
|
|
500
|
+
python_openstackclient-7.5.0.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
|
|
501
|
+
python_openstackclient-7.5.0.dist-info/entry_points.txt,sha256=VsZCw-6So3hkHuIiX-dGaMVL1PEqmfDynF37m1EwjCs,53260
|
|
502
|
+
python_openstackclient-7.5.0.dist-info/pbr.json,sha256=E0U5ImtX7CrMc6toMJW1G42hL8cWtMsUKUJyLrUc3sM,47
|
|
503
|
+
python_openstackclient-7.5.0.dist-info/top_level.txt,sha256=htg7z9oZgysRuVUHn-m1Bk6XLGOeV65nMbZX9H8qhs0,16
|
|
504
|
+
python_openstackclient-7.5.0.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"git_version": "bc1930c2", "is_release": true}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"git_version": "0ba77e67", "is_release": true}
|
|
File without changes
|
{python_openstackclient-7.3.1.dist-info → python_openstackclient-7.5.0.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{python_openstackclient-7.3.1.dist-info → python_openstackclient-7.5.0.dist-info}/top_level.txt
RENAMED
|
File without changes
|