python-openstackclient 10.0.0__py3-none-any.whl → 10.1.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/common/availability_zone.py +1 -1
- openstackclient/common/module.py +21 -27
- openstackclient/common/pagination.py +42 -4
- openstackclient/common/project_cleanup.py +1 -2
- openstackclient/common/quota.py +9 -5
- openstackclient/compute/v2/flavor.py +3 -1
- openstackclient/compute/v2/hypervisor.py +2 -0
- openstackclient/compute/v2/keypair.py +6 -2
- openstackclient/compute/v2/server.py +21 -12
- openstackclient/compute/v2/server_event.py +8 -1
- openstackclient/compute/v2/server_group.py +2 -0
- openstackclient/compute/v2/server_migration.py +3 -0
- openstackclient/compute/v2/server_volume.py +3 -1
- openstackclient/compute/v2/service.py +3 -1
- openstackclient/compute/v2/usage.py +2 -2
- openstackclient/identity/common.py +5 -1
- openstackclient/identity/v3/access_rule.py +6 -0
- openstackclient/identity/v3/application_credential.py +10 -3
- openstackclient/identity/v3/credential.py +4 -2
- openstackclient/identity/v3/domain.py +4 -2
- openstackclient/identity/v3/endpoint.py +57 -45
- openstackclient/identity/v3/federation_protocol.py +7 -5
- openstackclient/identity/v3/group.py +11 -10
- openstackclient/identity/v3/identity_provider.py +4 -1
- openstackclient/identity/v3/limit.py +5 -2
- openstackclient/identity/v3/mapping.py +36 -19
- openstackclient/identity/v3/project.py +18 -5
- openstackclient/identity/v3/region.py +4 -2
- openstackclient/identity/v3/registered_limit.py +3 -2
- openstackclient/identity/v3/role.py +2 -1
- openstackclient/identity/v3/role_assignment.py +3 -2
- openstackclient/identity/v3/service.py +4 -2
- openstackclient/identity/v3/service_provider.py +4 -2
- openstackclient/identity/v3/trust.py +8 -5
- openstackclient/identity/v3/user.py +38 -11
- openstackclient/image/v2/cache.py +2 -2
- openstackclient/image/v2/image.py +15 -9
- openstackclient/image/v2/metadef_namespaces.py +11 -10
- openstackclient/image/v2/metadef_objects.py +5 -5
- openstackclient/image/v2/metadef_properties.py +7 -4
- openstackclient/image/v2/task.py +11 -22
- openstackclient/network/utils.py +0 -41
- openstackclient/network/v2/address_group.py +13 -1
- openstackclient/network/v2/address_scope.py +13 -8
- openstackclient/network/v2/bgpvpn/bgpvpn.py +33 -19
- openstackclient/network/v2/bgpvpn/network_association.py +25 -13
- openstackclient/network/v2/bgpvpn/port_association.py +35 -21
- openstackclient/network/v2/bgpvpn/router_association.py +27 -14
- openstackclient/network/v2/default_security_group_rule.py +14 -6
- openstackclient/network/v2/floating_ip.py +12 -4
- openstackclient/network/v2/floating_ip_port_forwarding.py +12 -2
- openstackclient/network/v2/fwaas/group.py +34 -1
- openstackclient/network/v2/fwaas/rule.py +39 -3
- openstackclient/network/v2/ip_availability.py +13 -4
- openstackclient/network/v2/l3_conntrack_helper.py +14 -1
- openstackclient/network/v2/local_ip.py +4 -1
- openstackclient/network/v2/local_ip_association.py +4 -1
- openstackclient/network/v2/ndp_proxy.py +4 -1
- openstackclient/network/v2/network.py +87 -20
- openstackclient/network/v2/network_agent.py +32 -10
- openstackclient/network/v2/network_auto_allocated_topology.py +6 -5
- openstackclient/network/v2/network_flavor.py +19 -6
- openstackclient/network/v2/network_flavor_profile.py +20 -6
- openstackclient/network/v2/network_meter.py +19 -6
- openstackclient/network/v2/network_meter_rule.py +20 -2
- openstackclient/network/v2/network_qos_policy.py +15 -7
- openstackclient/network/v2/network_qos_rule.py +16 -1
- openstackclient/network/v2/network_qos_rule_type.py +16 -5
- openstackclient/network/v2/network_rbac.py +12 -5
- openstackclient/network/v2/network_segment.py +13 -1
- openstackclient/network/v2/network_segment_range.py +15 -3
- openstackclient/network/v2/network_trunk.py +4 -1
- openstackclient/network/v2/port.py +88 -12
- openstackclient/network/v2/router.py +27 -16
- openstackclient/network/v2/security_group.py +18 -49
- openstackclient/network/v2/security_group_rule.py +18 -5
- openstackclient/network/v2/subnet.py +15 -7
- openstackclient/network/v2/subnet_pool.py +13 -8
- openstackclient/network/v2/taas/tap_flow.py +13 -3
- openstackclient/network/v2/taas/tap_mirror.py +7 -4
- openstackclient/network/v2/taas/tap_service.py +4 -1
- openstackclient/object/v1/container.py +3 -1
- openstackclient/object/v1/object.py +3 -1
- openstackclient/tests/functional/identity/v3/common.py +34 -0
- openstackclient/tests/functional/identity/v3/test_application_credential.py +1 -1
- openstackclient/tests/functional/identity/v3/test_mapping.py +81 -0
- openstackclient/tests/functional/volume/v3/test_volume_group.py +163 -0
- openstackclient/tests/unit/common/test_limits.py +1 -1
- openstackclient/tests/unit/common/test_module.py +77 -44
- openstackclient/tests/unit/common/test_quota.py +9 -0
- openstackclient/tests/unit/compute/v2/fakes.py +1 -57
- openstackclient/tests/unit/compute/v2/test_agent.py +4 -4
- openstackclient/tests/unit/compute/v2/test_aggregate.py +1 -1
- openstackclient/tests/unit/compute/v2/test_console.py +2 -2
- openstackclient/tests/unit/compute/v2/test_console_connection.py +1 -1
- openstackclient/tests/unit/compute/v2/test_flavor.py +1 -1
- openstackclient/tests/unit/compute/v2/test_host.py +3 -3
- openstackclient/tests/unit/compute/v2/test_hypervisor.py +2 -2
- openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py +1 -1
- openstackclient/tests/unit/compute/v2/test_keypair.py +1 -1
- openstackclient/tests/unit/compute/v2/test_server.py +15 -15
- openstackclient/tests/unit/compute/v2/test_server_backup.py +1 -1
- openstackclient/tests/unit/compute/v2/test_server_event.py +2 -2
- openstackclient/tests/unit/compute/v2/test_server_group.py +1 -1
- openstackclient/tests/unit/compute/v2/test_server_image.py +1 -1
- openstackclient/tests/unit/compute/v2/test_server_migration.py +4 -4
- openstackclient/tests/unit/compute/v2/test_server_share.py +4 -4
- openstackclient/tests/unit/compute/v2/test_server_volume.py +2 -2
- openstackclient/tests/unit/compute/v2/test_service.py +3 -3
- openstackclient/tests/unit/compute/v2/test_usage.py +1 -1
- openstackclient/tests/unit/identity/v2_0/fakes.py +3 -7
- openstackclient/tests/unit/identity/v2_0/test_endpoint.py +1 -1
- openstackclient/tests/unit/identity/v2_0/test_project.py +1 -1
- openstackclient/tests/unit/identity/v2_0/test_role.py +1 -1
- openstackclient/tests/unit/identity/v2_0/test_role_assignment.py +1 -1
- openstackclient/tests/unit/identity/v2_0/test_service.py +1 -1
- openstackclient/tests/unit/identity/v2_0/test_token.py +2 -2
- openstackclient/tests/unit/identity/v2_0/test_user.py +1 -1
- openstackclient/tests/unit/identity/v3/fakes.py +5 -38
- openstackclient/tests/unit/identity/v3/test_access_rule.py +3 -3
- openstackclient/tests/unit/identity/v3/test_application_credential.py +4 -4
- openstackclient/tests/unit/identity/v3/test_credential.py +5 -5
- openstackclient/tests/unit/identity/v3/test_domain.py +5 -5
- openstackclient/tests/unit/identity/v3/test_endpoint.py +6 -6
- openstackclient/tests/unit/identity/v3/test_endpoint_group.py +1 -1
- openstackclient/tests/unit/identity/v3/test_group.py +8 -8
- openstackclient/tests/unit/identity/v3/test_implied_role.py +1 -1
- openstackclient/tests/unit/identity/v3/test_limit.py +5 -5
- openstackclient/tests/unit/identity/v3/test_mappings.py +163 -79
- openstackclient/tests/unit/identity/v3/test_project.py +28 -5
- openstackclient/tests/unit/identity/v3/test_protocol.py +3 -3
- openstackclient/tests/unit/identity/v3/test_region.py +5 -5
- openstackclient/tests/unit/identity/v3/test_registered_limit.py +5 -5
- openstackclient/tests/unit/identity/v3/test_role.py +8 -8
- openstackclient/tests/unit/identity/v3/test_role_assignment.py +1 -1
- openstackclient/tests/unit/identity/v3/test_service.py +5 -5
- openstackclient/tests/unit/identity/v3/test_token.py +2 -2
- openstackclient/tests/unit/identity/v3/test_trust.py +4 -4
- openstackclient/tests/unit/identity/v3/test_user.py +73 -6
- openstackclient/tests/unit/network/v2/fakes.py +5 -77
- openstackclient/tests/unit/network/v2/fwaas/test_group.py +28 -2
- openstackclient/tests/unit/network/v2/fwaas/test_rule.py +28 -3
- openstackclient/tests/unit/network/v2/test_address_group.py +24 -0
- openstackclient/tests/unit/network/v2/test_address_scope.py +24 -0
- openstackclient/tests/unit/network/v2/test_floating_ip.py +24 -0
- openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +24 -0
- openstackclient/tests/unit/network/v2/test_ip_availability.py +25 -0
- openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py +29 -3
- openstackclient/tests/unit/network/v2/test_network.py +74 -12
- openstackclient/tests/unit/network/v2/test_network_agent.py +50 -1
- openstackclient/tests/unit/network/v2/test_network_flavor.py +24 -0
- openstackclient/tests/unit/network/v2/test_network_flavor_profile.py +24 -0
- openstackclient/tests/unit/network/v2/test_network_meter.py +24 -0
- openstackclient/tests/unit/network/v2/test_network_qos_policy.py +24 -0
- openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py +24 -0
- openstackclient/tests/unit/network/v2/test_network_rbac.py +24 -0
- openstackclient/tests/unit/network/v2/test_network_segment.py +24 -0
- openstackclient/tests/unit/network/v2/test_network_segment_range.py +24 -0
- openstackclient/tests/unit/network/v2/test_port.py +166 -0
- openstackclient/tests/unit/network/v2/test_router.py +28 -7
- openstackclient/tests/unit/network/v2/test_security_group.py +22 -0
- openstackclient/tests/unit/network/v2/test_security_group_rule.py +25 -0
- openstackclient/tests/unit/network/v2/test_subnet.py +28 -4
- openstackclient/tests/unit/network/v2/test_subnet_pool.py +24 -0
- openstackclient/tests/unit/volume/v2/fakes.py +20 -140
- openstackclient/tests/unit/volume/v2/test_volume_backup.py +5 -9
- openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +6 -0
- openstackclient/tests/unit/volume/v3/fakes.py +204 -100
- openstackclient/tests/unit/volume/v3/test_backup_record.py +114 -0
- openstackclient/tests/unit/volume/v3/test_consistency_group.py +720 -0
- openstackclient/tests/unit/volume/v3/test_consistency_group_snapshot.py +354 -0
- openstackclient/tests/unit/volume/v3/test_qos_specs.py +455 -0
- openstackclient/tests/unit/volume/v3/test_volume_attachment.py +2 -0
- openstackclient/tests/unit/volume/v3/test_volume_backend.py +158 -0
- openstackclient/tests/unit/volume/v3/test_volume_backup.py +5 -9
- openstackclient/tests/unit/volume/v3/test_volume_group_type.py +65 -0
- openstackclient/tests/unit/volume/v3/test_volume_host.py +115 -0
- openstackclient/tests/unit/volume/v3/test_volume_snapshot.py +6 -0
- openstackclient/volume/v2/volume.py +4 -2
- openstackclient/volume/v2/volume_backup.py +2 -3
- openstackclient/volume/v2/volume_snapshot.py +3 -4
- openstackclient/volume/v3/backup_record.py +94 -0
- openstackclient/volume/v3/consistency_group.py +400 -0
- openstackclient/volume/v3/consistency_group_snapshot.py +225 -0
- openstackclient/volume/v3/qos_specs.py +389 -0
- openstackclient/volume/v3/volume.py +4 -2
- openstackclient/volume/v3/volume_attachment.py +5 -1
- openstackclient/volume/v3/volume_backend.py +130 -0
- openstackclient/volume/v3/volume_backup.py +2 -3
- openstackclient/volume/v3/volume_group_snapshot.py +4 -6
- openstackclient/volume/v3/volume_group_type.py +1 -1
- openstackclient/volume/v3/volume_host.py +74 -0
- openstackclient/volume/v3/volume_message.py +3 -1
- openstackclient/volume/v3/volume_snapshot.py +2 -1
- {python_openstackclient-10.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/METADATA +3 -4
- {python_openstackclient-10.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/RECORD +202 -188
- {python_openstackclient-10.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/entry_points.txt +24 -24
- {python_openstackclient-10.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/licenses/AUTHORS +5 -0
- python_openstackclient-10.1.0.dist-info/pbr.json +1 -0
- python_openstackclient-10.0.0.dist-info/pbr.json +0 -1
- {python_openstackclient-10.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/WHEEL +0 -0
- {python_openstackclient-10.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/licenses/LICENSE +0 -0
- {python_openstackclient-10.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/top_level.txt +0 -0
|
@@ -70,6 +70,7 @@ class TestCreateNetworkIdentityV3(TestNetwork):
|
|
|
70
70
|
'provider:network_type',
|
|
71
71
|
'provider:physical_network',
|
|
72
72
|
'provider:segmentation_id',
|
|
73
|
+
'pvlan',
|
|
73
74
|
'qos_policy_id',
|
|
74
75
|
'router:external',
|
|
75
76
|
'shared',
|
|
@@ -99,6 +100,7 @@ class TestCreateNetworkIdentityV3(TestNetwork):
|
|
|
99
100
|
_network.provider_network_type,
|
|
100
101
|
_network.provider_physical_network,
|
|
101
102
|
_network.provider_segmentation_id,
|
|
103
|
+
_network.pvlan,
|
|
102
104
|
_network.qos_policy_id,
|
|
103
105
|
network.RouterExternalColumn(_network.is_router_external),
|
|
104
106
|
_network.is_shared,
|
|
@@ -189,6 +191,7 @@ class TestCreateNetworkIdentityV3(TestNetwork):
|
|
|
189
191
|
self.qos_policy.id,
|
|
190
192
|
"--transparent-vlan",
|
|
191
193
|
"--no-qinq-vlan",
|
|
194
|
+
"--no-pvlan",
|
|
192
195
|
"--enable-port-security",
|
|
193
196
|
"--dns-domain",
|
|
194
197
|
"example.org.",
|
|
@@ -210,6 +213,7 @@ class TestCreateNetworkIdentityV3(TestNetwork):
|
|
|
210
213
|
('qos_policy', self.qos_policy.id),
|
|
211
214
|
('transparent_vlan', True),
|
|
212
215
|
('qinq_vlan', False),
|
|
216
|
+
('pvlan', False),
|
|
213
217
|
('enable_port_security', True),
|
|
214
218
|
('name', self._network.name),
|
|
215
219
|
('dns_domain', 'example.org.'),
|
|
@@ -235,6 +239,7 @@ class TestCreateNetworkIdentityV3(TestNetwork):
|
|
|
235
239
|
'qos_policy_id': self.qos_policy.id,
|
|
236
240
|
'vlan_transparent': True,
|
|
237
241
|
'vlan_qinq': False,
|
|
242
|
+
'pvlan': False,
|
|
238
243
|
'port_security_enabled': True,
|
|
239
244
|
'dns_domain': 'example.org.',
|
|
240
245
|
}
|
|
@@ -326,6 +331,19 @@ class TestCreateNetworkIdentityV3(TestNetwork):
|
|
|
326
331
|
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
327
332
|
)
|
|
328
333
|
|
|
334
|
+
def test_create_with_pvlan_and_port_security_disabled(self):
|
|
335
|
+
arglist = [
|
|
336
|
+
"--disable-port-security",
|
|
337
|
+
"--pvlan",
|
|
338
|
+
self._network.name,
|
|
339
|
+
]
|
|
340
|
+
verifylist = [('disable_port_security', True), ('pvlan', True)]
|
|
341
|
+
|
|
342
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
343
|
+
self.assertRaises(
|
|
344
|
+
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
345
|
+
)
|
|
346
|
+
|
|
329
347
|
def test_create_with_provider_segment_without_provider_type(self):
|
|
330
348
|
arglist = [
|
|
331
349
|
"--provider-segment",
|
|
@@ -371,6 +389,7 @@ class TestCreateNetworkIdentityV2(
|
|
|
371
389
|
'name',
|
|
372
390
|
'port_security_enabled',
|
|
373
391
|
'project_id',
|
|
392
|
+
'pvlan',
|
|
374
393
|
'provider:network_type',
|
|
375
394
|
'provider:physical_network',
|
|
376
395
|
'provider:segmentation_id',
|
|
@@ -400,6 +419,7 @@ class TestCreateNetworkIdentityV2(
|
|
|
400
419
|
_network.name,
|
|
401
420
|
_network.is_port_security_enabled,
|
|
402
421
|
_network.project_id,
|
|
422
|
+
_network.pvlan,
|
|
403
423
|
_network.provider_network_type,
|
|
404
424
|
_network.provider_physical_network,
|
|
405
425
|
_network.provider_segmentation_id,
|
|
@@ -576,7 +596,7 @@ class TestDeleteNetwork(TestNetwork):
|
|
|
576
596
|
|
|
577
597
|
class TestListNetwork(TestNetwork):
|
|
578
598
|
# The networks going to be listed up.
|
|
579
|
-
|
|
599
|
+
_networks = network_fakes.create_networks(count=3)
|
|
580
600
|
|
|
581
601
|
columns = (
|
|
582
602
|
'ID',
|
|
@@ -598,7 +618,7 @@ class TestListNetwork(TestNetwork):
|
|
|
598
618
|
)
|
|
599
619
|
|
|
600
620
|
data = []
|
|
601
|
-
for net in
|
|
621
|
+
for net in _networks:
|
|
602
622
|
data.append(
|
|
603
623
|
(
|
|
604
624
|
net.id,
|
|
@@ -608,7 +628,7 @@ class TestListNetwork(TestNetwork):
|
|
|
608
628
|
)
|
|
609
629
|
|
|
610
630
|
data_long = []
|
|
611
|
-
for net in
|
|
631
|
+
for net in _networks:
|
|
612
632
|
data_long.append(
|
|
613
633
|
(
|
|
614
634
|
net.id,
|
|
@@ -631,13 +651,13 @@ class TestListNetwork(TestNetwork):
|
|
|
631
651
|
# Get the command object to test
|
|
632
652
|
self.cmd = network.ListNetwork(self.app, None)
|
|
633
653
|
|
|
634
|
-
self.network_client.networks.return_value = self.
|
|
654
|
+
self.network_client.networks.return_value = self._networks
|
|
635
655
|
|
|
636
656
|
self._agent = network_fakes.create_one_network_agent()
|
|
637
657
|
self.network_client.get_agent.return_value = self._agent
|
|
638
658
|
|
|
639
659
|
self.network_client.dhcp_agent_hosting_networks.return_value = (
|
|
640
|
-
self.
|
|
660
|
+
self._networks
|
|
641
661
|
)
|
|
642
662
|
|
|
643
663
|
# TestListTagMixin
|
|
@@ -660,7 +680,31 @@ class TestListNetwork(TestNetwork):
|
|
|
660
680
|
self.assertEqual(self.columns, columns)
|
|
661
681
|
self.assertCountEqual(self.data, list(data))
|
|
662
682
|
|
|
663
|
-
def
|
|
683
|
+
def test_network_list_pagination(self):
|
|
684
|
+
arglist = [
|
|
685
|
+
'--marker',
|
|
686
|
+
self._networks[0].id,
|
|
687
|
+
'--limit',
|
|
688
|
+
'1',
|
|
689
|
+
]
|
|
690
|
+
verifylist = [
|
|
691
|
+
('marker', self._networks[0].id),
|
|
692
|
+
('limit', 1),
|
|
693
|
+
]
|
|
694
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
695
|
+
|
|
696
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
697
|
+
|
|
698
|
+
self.network_client.networks.assert_called_once_with(
|
|
699
|
+
**{
|
|
700
|
+
'marker': self._networks[0].id,
|
|
701
|
+
'limit': 1,
|
|
702
|
+
}
|
|
703
|
+
)
|
|
704
|
+
self.assertEqual(self.columns, columns)
|
|
705
|
+
self.assertEqual(self.data, list(data))
|
|
706
|
+
|
|
707
|
+
def test_network_list_external(self):
|
|
664
708
|
arglist = [
|
|
665
709
|
'--external',
|
|
666
710
|
]
|
|
@@ -681,7 +725,7 @@ class TestListNetwork(TestNetwork):
|
|
|
681
725
|
self.assertEqual(self.columns, columns)
|
|
682
726
|
self.assertCountEqual(self.data, list(data))
|
|
683
727
|
|
|
684
|
-
def
|
|
728
|
+
def test_network_list_internal(self):
|
|
685
729
|
arglist = [
|
|
686
730
|
'--internal',
|
|
687
731
|
]
|
|
@@ -717,7 +761,7 @@ class TestListNetwork(TestNetwork):
|
|
|
717
761
|
self.assertEqual(self.columns_long, columns)
|
|
718
762
|
self.assertCountEqual(self.data_long, list(data))
|
|
719
763
|
|
|
720
|
-
def
|
|
764
|
+
def test_network_list_name(self):
|
|
721
765
|
test_name = "fakename"
|
|
722
766
|
arglist = [
|
|
723
767
|
'--name',
|
|
@@ -865,7 +909,7 @@ class TestListNetwork(TestNetwork):
|
|
|
865
909
|
self.assertCountEqual(self.data, list(data))
|
|
866
910
|
|
|
867
911
|
def test_network_list_provider_network_type(self):
|
|
868
|
-
network_type = self.
|
|
912
|
+
network_type = self._networks[0].provider_network_type
|
|
869
913
|
arglist = [
|
|
870
914
|
'--provider-network-type',
|
|
871
915
|
network_type,
|
|
@@ -886,7 +930,7 @@ class TestListNetwork(TestNetwork):
|
|
|
886
930
|
self.assertCountEqual(self.data, list(data))
|
|
887
931
|
|
|
888
932
|
def test_network_list_provider_physical_network(self):
|
|
889
|
-
physical_network = self.
|
|
933
|
+
physical_network = self._networks[0].provider_physical_network
|
|
890
934
|
arglist = [
|
|
891
935
|
'--provider-physical-network',
|
|
892
936
|
physical_network,
|
|
@@ -907,7 +951,7 @@ class TestListNetwork(TestNetwork):
|
|
|
907
951
|
self.assertCountEqual(self.data, list(data))
|
|
908
952
|
|
|
909
953
|
def test_network_list_provider_segment(self):
|
|
910
|
-
segmentation_id = self.
|
|
954
|
+
segmentation_id = self._networks[0].provider_segmentation_id
|
|
911
955
|
arglist = [
|
|
912
956
|
'--provider-segment',
|
|
913
957
|
segmentation_id,
|
|
@@ -996,6 +1040,23 @@ class TestSetNetwork(TestNetwork):
|
|
|
996
1040
|
# Get the command object to test
|
|
997
1041
|
self.cmd = network.SetNetwork(self.app, None)
|
|
998
1042
|
|
|
1043
|
+
def test_set_with_pvlan_and_port_security_disabled(self):
|
|
1044
|
+
arglist = [
|
|
1045
|
+
self._network.name,
|
|
1046
|
+
'--disable-port-security',
|
|
1047
|
+
'--pvlan',
|
|
1048
|
+
]
|
|
1049
|
+
verifylist = [
|
|
1050
|
+
('network', self._network.name),
|
|
1051
|
+
('disable_port_security', True),
|
|
1052
|
+
('pvlan', True),
|
|
1053
|
+
]
|
|
1054
|
+
|
|
1055
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
1056
|
+
self.assertRaises(
|
|
1057
|
+
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
1058
|
+
)
|
|
1059
|
+
|
|
999
1060
|
def test_set_this(self):
|
|
1000
1061
|
arglist = [
|
|
1001
1062
|
self._network.name,
|
|
@@ -1189,6 +1250,7 @@ class TestShowNetwork(TestNetwork):
|
|
|
1189
1250
|
'provider:network_type',
|
|
1190
1251
|
'provider:physical_network',
|
|
1191
1252
|
'provider:segmentation_id',
|
|
1253
|
+
'pvlan',
|
|
1192
1254
|
'qos_policy_id',
|
|
1193
1255
|
'router:external',
|
|
1194
1256
|
'shared',
|
|
@@ -1218,6 +1280,7 @@ class TestShowNetwork(TestNetwork):
|
|
|
1218
1280
|
_network.provider_network_type,
|
|
1219
1281
|
_network.provider_physical_network,
|
|
1220
1282
|
_network.provider_segmentation_id,
|
|
1283
|
+
_network.pvlan,
|
|
1221
1284
|
_network.qos_policy_id,
|
|
1222
1285
|
network.RouterExternalColumn(_network.is_router_external),
|
|
1223
1286
|
_network.is_shared,
|
|
@@ -1265,7 +1328,6 @@ class TestShowNetwork(TestNetwork):
|
|
|
1265
1328
|
self.network_client.find_network.assert_called_once_with(
|
|
1266
1329
|
self._network.name, ignore_missing=False
|
|
1267
1330
|
)
|
|
1268
|
-
|
|
1269
1331
|
self.assertEqual(set(self.columns), set(columns))
|
|
1270
1332
|
self.assertCountEqual(self.data, data)
|
|
1271
1333
|
|
|
@@ -109,7 +109,32 @@ class TestAddRouterAgent(TestNetworkAgent):
|
|
|
109
109
|
result = self.cmd.take_action(parsed_args)
|
|
110
110
|
|
|
111
111
|
self.network_client.add_router_to_agent.assert_called_with(
|
|
112
|
-
self._agent, self._router
|
|
112
|
+
self._agent, self._router, ha_chassis_priority=None
|
|
113
|
+
)
|
|
114
|
+
self.assertIsNone(result)
|
|
115
|
+
|
|
116
|
+
def test_add_router_with_ha_chassis_priority(self):
|
|
117
|
+
arglist = [
|
|
118
|
+
self._agent.id,
|
|
119
|
+
self._router.id,
|
|
120
|
+
'--l3',
|
|
121
|
+
'--ha-chassis-priority',
|
|
122
|
+
'100',
|
|
123
|
+
]
|
|
124
|
+
verifylist = [
|
|
125
|
+
('l3', True),
|
|
126
|
+
('agent_id', self._agent.id),
|
|
127
|
+
('router', self._router.id),
|
|
128
|
+
('ha_chassis_priority', 100),
|
|
129
|
+
]
|
|
130
|
+
|
|
131
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
132
|
+
result = self.cmd.take_action(parsed_args)
|
|
133
|
+
|
|
134
|
+
self.network_client.add_router_to_agent.assert_called_with(
|
|
135
|
+
self._agent,
|
|
136
|
+
self._router,
|
|
137
|
+
ha_chassis_priority=100,
|
|
113
138
|
)
|
|
114
139
|
self.assertIsNone(result)
|
|
115
140
|
|
|
@@ -249,6 +274,30 @@ class TestListNetworkAgent(TestNetworkAgent):
|
|
|
249
274
|
self.assertEqual(self.columns, columns)
|
|
250
275
|
self.assertCountEqual(self.data, list(data))
|
|
251
276
|
|
|
277
|
+
def test_network_agents_list_pagination(self):
|
|
278
|
+
arglist = [
|
|
279
|
+
'--marker',
|
|
280
|
+
self.network_agents[0].id,
|
|
281
|
+
'--limit',
|
|
282
|
+
'1',
|
|
283
|
+
]
|
|
284
|
+
verifylist = [
|
|
285
|
+
('marker', self.network_agents[0].id),
|
|
286
|
+
('limit', 1),
|
|
287
|
+
]
|
|
288
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
289
|
+
|
|
290
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
291
|
+
|
|
292
|
+
self.network_client.agents.assert_called_once_with(
|
|
293
|
+
**{
|
|
294
|
+
'marker': self.network_agents[0].id,
|
|
295
|
+
'limit': 1,
|
|
296
|
+
}
|
|
297
|
+
)
|
|
298
|
+
self.assertEqual(self.columns, columns)
|
|
299
|
+
self.assertEqual(self.data, list(data))
|
|
300
|
+
|
|
252
301
|
def test_network_agents_list_agent_type(self):
|
|
253
302
|
arglist = [
|
|
254
303
|
'--agent-type',
|
|
@@ -335,6 +335,30 @@ class TestListNetworkFlavor(TestNetworkFlavor):
|
|
|
335
335
|
self.assertEqual(set(self.columns), set(columns))
|
|
336
336
|
self.assertEqual(self.data, list(data))
|
|
337
337
|
|
|
338
|
+
def test_network_flavor_list_pagination(self):
|
|
339
|
+
arglist = [
|
|
340
|
+
'--marker',
|
|
341
|
+
self._network_flavors[0].id,
|
|
342
|
+
'--limit',
|
|
343
|
+
'1',
|
|
344
|
+
]
|
|
345
|
+
verifylist = [
|
|
346
|
+
('marker', self._network_flavors[0].id),
|
|
347
|
+
('limit', 1),
|
|
348
|
+
]
|
|
349
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
350
|
+
|
|
351
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
352
|
+
|
|
353
|
+
self.network_client.flavors.assert_called_once_with(
|
|
354
|
+
**{
|
|
355
|
+
'marker': self._network_flavors[0].id,
|
|
356
|
+
'limit': 1,
|
|
357
|
+
}
|
|
358
|
+
)
|
|
359
|
+
self.assertEqual(self.columns, columns)
|
|
360
|
+
self.assertEqual(self.data, list(data))
|
|
361
|
+
|
|
338
362
|
|
|
339
363
|
class TestRemoveNetworkFlavorFromProfile(TestNetworkFlavor):
|
|
340
364
|
network_flavor = network_fakes.create_one_network_flavor()
|
|
@@ -332,6 +332,30 @@ class TestListFlavorProfile(TestFlavorProfile):
|
|
|
332
332
|
self.assertEqual(self.columns, columns)
|
|
333
333
|
self.assertEqual(self.data, list(data))
|
|
334
334
|
|
|
335
|
+
def test_network_flavor_profile_list_pagination(self):
|
|
336
|
+
arglist = [
|
|
337
|
+
'--marker',
|
|
338
|
+
self._network_flavor_profiles[0].id,
|
|
339
|
+
'--limit',
|
|
340
|
+
'1',
|
|
341
|
+
]
|
|
342
|
+
verifylist = [
|
|
343
|
+
('marker', self._network_flavor_profiles[0].id),
|
|
344
|
+
('limit', 1),
|
|
345
|
+
]
|
|
346
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
347
|
+
|
|
348
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
349
|
+
|
|
350
|
+
self.network_client.service_profiles.assert_called_once_with(
|
|
351
|
+
**{
|
|
352
|
+
'marker': self._network_flavor_profiles[0].id,
|
|
353
|
+
'limit': 1,
|
|
354
|
+
}
|
|
355
|
+
)
|
|
356
|
+
self.assertEqual(self.columns, columns)
|
|
357
|
+
self.assertEqual(self.data, list(data))
|
|
358
|
+
|
|
335
359
|
|
|
336
360
|
class TestShowFlavorProfile(TestFlavorProfile):
|
|
337
361
|
# The network flavor profile to show.
|
|
@@ -250,6 +250,30 @@ class TestListMeter(TestMeter):
|
|
|
250
250
|
self.assertEqual(self.columns, columns)
|
|
251
251
|
self.assertEqual(self.data, list(data))
|
|
252
252
|
|
|
253
|
+
def test_meter_list_pagination(self):
|
|
254
|
+
arglist = [
|
|
255
|
+
'--marker',
|
|
256
|
+
self.meter_list[0].id,
|
|
257
|
+
'--limit',
|
|
258
|
+
'1',
|
|
259
|
+
]
|
|
260
|
+
verifylist = [
|
|
261
|
+
('marker', self.meter_list[0].id),
|
|
262
|
+
('limit', 1),
|
|
263
|
+
]
|
|
264
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
265
|
+
|
|
266
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
267
|
+
|
|
268
|
+
self.network_client.metering_labels.assert_called_once_with(
|
|
269
|
+
**{
|
|
270
|
+
'marker': self.meter_list[0].id,
|
|
271
|
+
'limit': 1,
|
|
272
|
+
}
|
|
273
|
+
)
|
|
274
|
+
self.assertEqual(self.columns, columns)
|
|
275
|
+
self.assertEqual(self.data, list(data))
|
|
276
|
+
|
|
253
277
|
|
|
254
278
|
class TestShowMeter(TestMeter):
|
|
255
279
|
new_meter = network_fakes.FakeNetworkMeter.create_one_meter()
|
|
@@ -280,6 +280,30 @@ class TestListNetworkQosPolicy(TestQosPolicy):
|
|
|
280
280
|
self.assertEqual(self.columns, columns)
|
|
281
281
|
self.assertEqual(self.data, list(data))
|
|
282
282
|
|
|
283
|
+
def test_qos_policy_list_pagination(self):
|
|
284
|
+
arglist = [
|
|
285
|
+
'--marker',
|
|
286
|
+
self.qos_policies[0].id,
|
|
287
|
+
'--limit',
|
|
288
|
+
'1',
|
|
289
|
+
]
|
|
290
|
+
verifylist = [
|
|
291
|
+
('marker', self.qos_policies[0].id),
|
|
292
|
+
('limit', 1),
|
|
293
|
+
]
|
|
294
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
295
|
+
|
|
296
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
297
|
+
|
|
298
|
+
self.network_client.qos_policies.assert_called_once_with(
|
|
299
|
+
**{
|
|
300
|
+
'marker': self.qos_policies[0].id,
|
|
301
|
+
'limit': 1,
|
|
302
|
+
}
|
|
303
|
+
)
|
|
304
|
+
self.assertEqual(self.columns, columns)
|
|
305
|
+
self.assertEqual(self.data, list(data))
|
|
306
|
+
|
|
283
307
|
def test_qos_policy_list_share(self):
|
|
284
308
|
arglist = [
|
|
285
309
|
'--share',
|
|
@@ -126,3 +126,27 @@ class TestListNetworkQosRuleType(TestNetworkQosRuleType):
|
|
|
126
126
|
)
|
|
127
127
|
self.assertEqual(self.columns, columns)
|
|
128
128
|
self.assertEqual(self.data, list(data))
|
|
129
|
+
|
|
130
|
+
def test_qos_rule_type_list_pagination(self):
|
|
131
|
+
arglist = [
|
|
132
|
+
'--marker',
|
|
133
|
+
self.qos_rule_types[0].type,
|
|
134
|
+
'--limit',
|
|
135
|
+
'1',
|
|
136
|
+
]
|
|
137
|
+
verifylist = [
|
|
138
|
+
('marker', self.qos_rule_types[0].type),
|
|
139
|
+
('limit', 1),
|
|
140
|
+
]
|
|
141
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
142
|
+
|
|
143
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
144
|
+
|
|
145
|
+
self.network_client.qos_rule_types.assert_called_once_with(
|
|
146
|
+
**{
|
|
147
|
+
'marker': self.qos_rule_types[0].type,
|
|
148
|
+
'limit': 1,
|
|
149
|
+
}
|
|
150
|
+
)
|
|
151
|
+
self.assertEqual(self.columns, columns)
|
|
152
|
+
self.assertEqual(self.data, list(data))
|
|
@@ -469,6 +469,30 @@ class TestListNetworkRABC(TestNetworkRBAC):
|
|
|
469
469
|
self.assertEqual(self.columns, columns)
|
|
470
470
|
self.assertEqual(self.data, list(data))
|
|
471
471
|
|
|
472
|
+
def test_network_rbac_list_pagination(self):
|
|
473
|
+
arglist = [
|
|
474
|
+
'--marker',
|
|
475
|
+
self.rbac_policies[0].id,
|
|
476
|
+
'--limit',
|
|
477
|
+
'1',
|
|
478
|
+
]
|
|
479
|
+
verifylist = [
|
|
480
|
+
('marker', self.rbac_policies[0].id),
|
|
481
|
+
('limit', 1),
|
|
482
|
+
]
|
|
483
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
484
|
+
|
|
485
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
486
|
+
|
|
487
|
+
self.network_client.rbac_policies.assert_called_once_with(
|
|
488
|
+
**{
|
|
489
|
+
'marker': self.rbac_policies[0].id,
|
|
490
|
+
'limit': 1,
|
|
491
|
+
}
|
|
492
|
+
)
|
|
493
|
+
self.assertEqual(self.columns, columns)
|
|
494
|
+
self.assertEqual(self.data, list(data))
|
|
495
|
+
|
|
472
496
|
def test_network_rbac_list_type_opt(self):
|
|
473
497
|
arglist = [
|
|
474
498
|
'--type',
|
|
@@ -333,6 +333,30 @@ class TestListNetworkSegment(TestNetworkSegment):
|
|
|
333
333
|
self.assertEqual(self.columns, columns)
|
|
334
334
|
self.assertEqual(self.data, list(data))
|
|
335
335
|
|
|
336
|
+
def test_list_pagination(self):
|
|
337
|
+
arglist = [
|
|
338
|
+
'--marker',
|
|
339
|
+
self._network_segments[0].id,
|
|
340
|
+
'--limit',
|
|
341
|
+
'1',
|
|
342
|
+
]
|
|
343
|
+
verifylist = [
|
|
344
|
+
('marker', self._network_segments[0].id),
|
|
345
|
+
('limit', 1),
|
|
346
|
+
]
|
|
347
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
348
|
+
|
|
349
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
350
|
+
|
|
351
|
+
self.network_client.segments.assert_called_once_with(
|
|
352
|
+
**{
|
|
353
|
+
'marker': self._network_segments[0].id,
|
|
354
|
+
'limit': 1,
|
|
355
|
+
}
|
|
356
|
+
)
|
|
357
|
+
self.assertEqual(self.columns, columns)
|
|
358
|
+
self.assertEqual(self.data, list(data))
|
|
359
|
+
|
|
336
360
|
|
|
337
361
|
class TestSetNetworkSegment(TestNetworkSegment):
|
|
338
362
|
# The network segment to show.
|
|
@@ -515,6 +515,30 @@ class TestListNetworkSegmentRange(TestNetworkSegmentRange):
|
|
|
515
515
|
self.assertEqual(self.columns, columns)
|
|
516
516
|
self.assertEqual(self.data, list(data))
|
|
517
517
|
|
|
518
|
+
def test_list_pagination(self):
|
|
519
|
+
arglist = [
|
|
520
|
+
'--marker',
|
|
521
|
+
self._network_segment_ranges[0].id,
|
|
522
|
+
'--limit',
|
|
523
|
+
'1',
|
|
524
|
+
]
|
|
525
|
+
verifylist = [
|
|
526
|
+
('marker', self._network_segment_ranges[0].id),
|
|
527
|
+
('limit', 1),
|
|
528
|
+
]
|
|
529
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
530
|
+
|
|
531
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
532
|
+
|
|
533
|
+
self.network_client.network_segment_ranges.assert_called_once_with(
|
|
534
|
+
**{
|
|
535
|
+
'marker': self._network_segment_ranges[0].id,
|
|
536
|
+
'limit': 1,
|
|
537
|
+
}
|
|
538
|
+
)
|
|
539
|
+
self.assertEqual(self.columns, columns)
|
|
540
|
+
self.assertEqual(self.data, list(data))
|
|
541
|
+
|
|
518
542
|
def test_list_long(self):
|
|
519
543
|
arglist = [
|
|
520
544
|
'--long',
|