python-openstackclient 7.3.0__py3-none-any.whl → 7.4.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/network/v2/port.py +17 -4
- openstackclient/network/v2/router.py +3 -0
- openstackclient/tests/functional/network/v2/test_port.py +79 -0
- openstackclient/tests/unit/identity/v3/test_credential.py +4 -4
- openstackclient/tests/unit/network/v2/test_port.py +30 -1
- openstackclient/tests/unit/network/v2/test_router.py +57 -7
- {python_openstackclient-7.3.0.dist-info → python_openstackclient-7.4.0.dist-info}/AUTHORS +1 -0
- {python_openstackclient-7.3.0.dist-info → python_openstackclient-7.4.0.dist-info}/METADATA +1 -1
- {python_openstackclient-7.3.0.dist-info → python_openstackclient-7.4.0.dist-info}/RECORD +15 -15
- python_openstackclient-7.4.0.dist-info/pbr.json +1 -0
- python_openstackclient-7.3.0.dist-info/pbr.json +0 -1
- {python_openstackclient-7.3.0.dist-info → python_openstackclient-7.4.0.dist-info}/LICENSE +0 -0
- {python_openstackclient-7.3.0.dist-info → python_openstackclient-7.4.0.dist-info}/WHEEL +0 -0
- {python_openstackclient-7.3.0.dist-info → python_openstackclient-7.4.0.dist-info}/entry_points.txt +0 -0
- {python_openstackclient-7.3.0.dist-info → python_openstackclient-7.4.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)
|
|
@@ -65,8 +65,9 @@ _formatters = {
|
|
|
65
65
|
'fixed_ips': format_columns.ListDictColumn,
|
|
66
66
|
'security_group_ids': format_columns.ListColumn,
|
|
67
67
|
'tags': format_columns.ListColumn,
|
|
68
|
-
'trunk_details': SubPortColumn,
|
|
69
68
|
}
|
|
69
|
+
_list_formatters = copy.deepcopy(_formatters)
|
|
70
|
+
_list_formatters.update({'trunk_details': SubPortColumn})
|
|
70
71
|
|
|
71
72
|
|
|
72
73
|
def _get_columns(item):
|
|
@@ -537,12 +538,12 @@ class CreatePort(command.ShowOne, common.NeutronCommandWithExtraArgs):
|
|
|
537
538
|
uplink_status_group.add_argument(
|
|
538
539
|
'--enable-uplink-status-propagation',
|
|
539
540
|
action='store_true',
|
|
540
|
-
help=_("Enable uplink status
|
|
541
|
+
help=_("Enable uplink status propagation (default)"),
|
|
541
542
|
)
|
|
542
543
|
uplink_status_group.add_argument(
|
|
543
544
|
'--disable-uplink-status-propagation',
|
|
544
545
|
action='store_true',
|
|
545
|
-
help=_("Disable uplink status
|
|
546
|
+
help=_("Disable uplink status propagation"),
|
|
546
547
|
)
|
|
547
548
|
parser.add_argument(
|
|
548
549
|
'--project',
|
|
@@ -952,7 +953,7 @@ class ListPort(command.Lister):
|
|
|
952
953
|
utils.get_item_properties(
|
|
953
954
|
s,
|
|
954
955
|
attrs,
|
|
955
|
-
formatters=
|
|
956
|
+
formatters=_list_formatters,
|
|
956
957
|
)
|
|
957
958
|
for s in data
|
|
958
959
|
),
|
|
@@ -1102,6 +1103,18 @@ class SetPort(common.NeutronCommandWithExtraArgs):
|
|
|
1102
1103
|
"(requires data plane status extension)"
|
|
1103
1104
|
),
|
|
1104
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
|
+
|
|
1105
1118
|
_tag.add_tag_option_to_parser_for_set(parser, _('port'))
|
|
1106
1119
|
|
|
1107
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)
|
|
@@ -289,3 +289,82 @@ class PortTests(common.NetworkTagTests):
|
|
|
289
289
|
f'{self.base_command} create --network {self.NETWORK_NAME} {args} {name}',
|
|
290
290
|
parse_output=True,
|
|
291
291
|
)
|
|
292
|
+
|
|
293
|
+
def _trunk_creation(self):
|
|
294
|
+
pport = uuid.uuid4().hex
|
|
295
|
+
sport1 = uuid.uuid4().hex
|
|
296
|
+
sport2 = uuid.uuid4().hex
|
|
297
|
+
trunk = uuid.uuid4().hex
|
|
298
|
+
json_output = self.openstack(
|
|
299
|
+
'port create ' f'--network {self.NETWORK_NAME} {pport}',
|
|
300
|
+
parse_output=True,
|
|
301
|
+
)
|
|
302
|
+
pport_id = json_output.get('id')
|
|
303
|
+
json_output = self.openstack(
|
|
304
|
+
'port create ' f'--network {self.NETWORK_NAME} {sport1}',
|
|
305
|
+
parse_output=True,
|
|
306
|
+
)
|
|
307
|
+
sport1_id = json_output.get('id')
|
|
308
|
+
json_output = self.openstack(
|
|
309
|
+
'port create ' f'--network {self.NETWORK_NAME} {sport2}',
|
|
310
|
+
parse_output=True,
|
|
311
|
+
)
|
|
312
|
+
sport2_id = json_output.get('id')
|
|
313
|
+
|
|
314
|
+
self.openstack(
|
|
315
|
+
f'network trunk create --parent-port {pport} {trunk}',
|
|
316
|
+
)
|
|
317
|
+
self.openstack(
|
|
318
|
+
f'network trunk set --subport port={sport1},'
|
|
319
|
+
f'segmentation-type=vlan,segmentation-id=100 {trunk}',
|
|
320
|
+
)
|
|
321
|
+
self.openstack(
|
|
322
|
+
f'network trunk set --subport port={sport2},'
|
|
323
|
+
f'segmentation-type=vlan,segmentation-id=101 {trunk}',
|
|
324
|
+
)
|
|
325
|
+
|
|
326
|
+
# NOTE(ralonsoh): keep this order to first delete the trunk and then
|
|
327
|
+
# the ports.
|
|
328
|
+
self.addCleanup(self.openstack, f'port delete {pport_id}')
|
|
329
|
+
self.addCleanup(self.openstack, f'port delete {sport1_id}')
|
|
330
|
+
self.addCleanup(self.openstack, f'port delete {sport2_id}')
|
|
331
|
+
self.addCleanup(self.openstack, f'network trunk delete {trunk}')
|
|
332
|
+
|
|
333
|
+
return pport_id, sport1_id, sport2_id
|
|
334
|
+
|
|
335
|
+
def check_subports(self, subports, pport_id, sport1_id, sport2_id):
|
|
336
|
+
self.assertEqual(2, len(subports))
|
|
337
|
+
for subport in subports:
|
|
338
|
+
if subport['port_id'] == sport1_id:
|
|
339
|
+
self.assertEqual(100, subport['segmentation_id'])
|
|
340
|
+
elif subport['port_id'] == sport2_id:
|
|
341
|
+
self.assertEqual(101, subport['segmentation_id'])
|
|
342
|
+
else:
|
|
343
|
+
self.fail(
|
|
344
|
+
f'Port {pport_id} does not have subport '
|
|
345
|
+
f'{subport["port_id"]}'
|
|
346
|
+
)
|
|
347
|
+
self.assertEqual('vlan', subport['segmentation_type'])
|
|
348
|
+
|
|
349
|
+
def test_port_list_with_trunk(self):
|
|
350
|
+
pport_id, sport1_id, sport2_id = self._trunk_creation()
|
|
351
|
+
|
|
352
|
+
# List all ports with "--long" flag to retrieve the trunk details
|
|
353
|
+
json_output = self.openstack(
|
|
354
|
+
'port list --long',
|
|
355
|
+
parse_output=True,
|
|
356
|
+
)
|
|
357
|
+
port = next(port for port in json_output if port['ID'] == pport_id)
|
|
358
|
+
subports = port['Trunk subports']
|
|
359
|
+
self.check_subports(subports, pport_id, sport1_id, sport2_id)
|
|
360
|
+
|
|
361
|
+
def test_port_show_with_trunk(self):
|
|
362
|
+
pport_id, sport1_id, sport2_id = self._trunk_creation()
|
|
363
|
+
|
|
364
|
+
# List all ports with "--long" flag to retrieve the trunk details
|
|
365
|
+
port = self.openstack(
|
|
366
|
+
f'port show {pport_id}',
|
|
367
|
+
parse_output=True,
|
|
368
|
+
)
|
|
369
|
+
subports = port['trunk_details']['sub_ports']
|
|
370
|
+
self.check_subports(subports, pport_id, sport1_id, sport2_id)
|
|
@@ -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
|
|
@@ -122,7 +122,7 @@ class TestPort(network_fakes.TestNetworkV2):
|
|
|
122
122
|
fake_port.status,
|
|
123
123
|
format_columns.ListColumn(fake_port.tags),
|
|
124
124
|
fake_port.trusted,
|
|
125
|
-
|
|
125
|
+
fake_port.trunk_details,
|
|
126
126
|
fake_port.updated_at,
|
|
127
127
|
)
|
|
128
128
|
|
|
@@ -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,
|
|
@@ -112,6 +112,7 @@ Dmitriy Rabotyagov <noonedeadpunk@ya.ru>
|
|
|
112
112
|
Dmitry Tantsur <dtantsur@protonmail.com>
|
|
113
113
|
Dolph Mathews <dolph.mathews@gmail.com>
|
|
114
114
|
Dongcan Ye <hellochosen@gmail.com>
|
|
115
|
+
Doug Goldstein <cardoe@cardoe.com>
|
|
115
116
|
Doug Hellmann <doug.hellmann@dreamhost.com>
|
|
116
117
|
Doug Hellmann <doug@doughellmann.com>
|
|
117
118
|
Doug Wiegley <dwiegley@salesforce.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
|
|
@@ -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
|
|
@@ -224,7 +224,7 @@ openstackclient/tests/functional/network/v2/test_network_segment.py,sha256=FB7PI
|
|
|
224
224
|
openstackclient/tests/functional/network/v2/test_network_segment_range.py,sha256=bf1XRaNza6qzVrb5LNuIEtmWCFb8q-OQbktINgXwoKg,4727
|
|
225
225
|
openstackclient/tests/functional/network/v2/test_network_service_provider.py,sha256=HOKvmIkUSR_e01sQOn8XS83mvflbkcC1iVKkjqi1GFk,1499
|
|
226
226
|
openstackclient/tests/functional/network/v2/test_network_trunk.py,sha256=uliAsz_xGyy8oim2RaN1D9G5944svgsRWreYtQKAliM,5289
|
|
227
|
-
openstackclient/tests/functional/network/v2/test_port.py,sha256=
|
|
227
|
+
openstackclient/tests/functional/network/v2/test_port.py,sha256=f3D5LS954L6ytS8doMaQONIO7Wt2gNLeHFnLaM3fNH4,13319
|
|
228
228
|
openstackclient/tests/functional/network/v2/test_router.py,sha256=LHODy_BoGdBc9_rL7rZTPhXiqcuTNpLShvXw_Qkw0pA,10116
|
|
229
229
|
openstackclient/tests/functional/network/v2/test_security_group.py,sha256=HXqULP4WQoxCgbzyvwqd4dMo624airNDQ5fSm2XPdwg,2160
|
|
230
230
|
openstackclient/tests/functional/network/v2/test_security_group_rule.py,sha256=iVoR1MUhxApNRHg0klv90yYkN6KSyNoJc4rxhMr3bII,2285
|
|
@@ -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
|
|
@@ -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.4.0.dist-info/AUTHORS,sha256=JEcKU3f-60jlNEfCB_U9elxEpvg-o-HNB_AFGF6zg7k,21598
|
|
498
|
+
python_openstackclient-7.4.0.dist-info/LICENSE,sha256=XfKg2H1sVi8OoRxoisUlMqoo10TKvHmU_wU39ks7MyA,10143
|
|
499
|
+
python_openstackclient-7.4.0.dist-info/METADATA,sha256=gc5mG6EMYbYGvHktTTd50EtNE9Frb_sgguIwo-Rjdso,6516
|
|
500
|
+
python_openstackclient-7.4.0.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
|
501
|
+
python_openstackclient-7.4.0.dist-info/entry_points.txt,sha256=VsZCw-6So3hkHuIiX-dGaMVL1PEqmfDynF37m1EwjCs,53260
|
|
502
|
+
python_openstackclient-7.4.0.dist-info/pbr.json,sha256=PIaHogvl-6SsHqyhVcnmyVjkEiRsEfltQ8jjvnwS8tA,47
|
|
503
|
+
python_openstackclient-7.4.0.dist-info/top_level.txt,sha256=htg7z9oZgysRuVUHn-m1Bk6XLGOeV65nMbZX9H8qhs0,16
|
|
504
|
+
python_openstackclient-7.4.0.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"git_version": "4b7e32ca", "is_release": true}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"git_version": "34121473", "is_release": true}
|
|
File without changes
|
|
File without changes
|
{python_openstackclient-7.3.0.dist-info → python_openstackclient-7.4.0.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{python_openstackclient-7.3.0.dist-info → python_openstackclient-7.4.0.dist-info}/top_level.txt
RENAMED
|
File without changes
|