python-openstackclient 8.2.0__py3-none-any.whl → 8.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openstackclient/api/object_store_v1.py +4 -1
- openstackclient/command.py +27 -0
- openstackclient/common/availability_zone.py +1 -1
- openstackclient/common/clientmanager.py +59 -21
- openstackclient/common/configuration.py +1 -1
- openstackclient/common/extension.py +1 -1
- openstackclient/common/limits.py +1 -1
- openstackclient/common/module.py +4 -2
- openstackclient/common/project_cleanup.py +10 -8
- openstackclient/common/quota.py +23 -6
- openstackclient/common/versions.py +1 -2
- openstackclient/compute/v2/agent.py +1 -1
- openstackclient/compute/v2/aggregate.py +6 -5
- openstackclient/compute/v2/console.py +5 -3
- openstackclient/compute/v2/console_connection.py +1 -1
- openstackclient/compute/v2/flavor.py +1 -1
- openstackclient/compute/v2/host.py +1 -1
- openstackclient/compute/v2/hypervisor.py +1 -1
- openstackclient/compute/v2/hypervisor_stats.py +1 -1
- openstackclient/compute/v2/keypair.py +1 -1
- openstackclient/compute/v2/server.py +76 -27
- openstackclient/compute/v2/server_backup.py +1 -1
- openstackclient/compute/v2/server_event.py +1 -1
- openstackclient/compute/v2/server_group.py +4 -2
- openstackclient/compute/v2/server_image.py +1 -1
- openstackclient/compute/v2/server_migration.py +1 -1
- openstackclient/compute/v2/server_volume.py +1 -1
- openstackclient/compute/v2/service.py +1 -1
- openstackclient/compute/v2/usage.py +6 -4
- openstackclient/identity/common.py +2 -1
- openstackclient/identity/v2_0/catalog.py +3 -2
- openstackclient/identity/v2_0/ec2creds.py +1 -1
- openstackclient/identity/v2_0/endpoint.py +1 -1
- openstackclient/identity/v2_0/project.py +17 -7
- openstackclient/identity/v2_0/role.py +1 -1
- openstackclient/identity/v2_0/role_assignment.py +3 -3
- openstackclient/identity/v2_0/service.py +1 -1
- openstackclient/identity/v2_0/token.py +1 -1
- openstackclient/identity/v2_0/user.py +2 -2
- openstackclient/identity/v3/access_rule.py +16 -4
- openstackclient/identity/v3/application_credential.py +30 -10
- openstackclient/identity/v3/catalog.py +3 -3
- openstackclient/identity/v3/consumer.py +1 -1
- openstackclient/identity/v3/credential.py +1 -1
- openstackclient/identity/v3/domain.py +10 -4
- openstackclient/identity/v3/ec2creds.py +1 -1
- openstackclient/identity/v3/endpoint.py +33 -12
- openstackclient/identity/v3/endpoint_group.py +1 -1
- openstackclient/identity/v3/federation_protocol.py +1 -1
- openstackclient/identity/v3/group.py +11 -5
- openstackclient/identity/v3/identity_provider.py +12 -10
- openstackclient/identity/v3/implied_role.py +1 -1
- openstackclient/identity/v3/limit.py +1 -1
- openstackclient/identity/v3/mapping.py +1 -1
- openstackclient/identity/v3/policy.py +1 -1
- openstackclient/identity/v3/project.py +10 -3
- openstackclient/identity/v3/region.py +1 -1
- openstackclient/identity/v3/registered_limit.py +16 -11
- openstackclient/identity/v3/role.py +20 -39
- openstackclient/identity/v3/role_assignment.py +12 -23
- openstackclient/identity/v3/service.py +1 -1
- openstackclient/identity/v3/service_provider.py +1 -1
- openstackclient/identity/v3/tag.py +3 -2
- openstackclient/identity/v3/token.py +3 -2
- openstackclient/identity/v3/trust.py +4 -2
- openstackclient/identity/v3/unscoped_saml.py +1 -1
- openstackclient/identity/v3/user.py +22 -13
- openstackclient/image/v1/image.py +19 -16
- openstackclient/image/v2/cache.py +1 -1
- openstackclient/image/v2/image.py +14 -11
- openstackclient/image/v2/info.py +1 -1
- openstackclient/image/v2/metadef_namespaces.py +1 -1
- openstackclient/image/v2/metadef_objects.py +1 -1
- openstackclient/image/v2/metadef_properties.py +3 -2
- openstackclient/image/v2/metadef_resource_type_association.py +1 -1
- openstackclient/image/v2/metadef_resource_types.py +1 -1
- openstackclient/image/v2/task.py +1 -1
- openstackclient/network/common.py +10 -9
- openstackclient/network/v2/address_group.py +4 -3
- openstackclient/network/v2/address_scope.py +8 -6
- openstackclient/network/v2/default_security_group_rule.py +9 -8
- openstackclient/network/v2/floating_ip.py +16 -9
- openstackclient/network/v2/floating_ip_port_forwarding.py +9 -6
- openstackclient/network/v2/ip_availability.py +7 -4
- openstackclient/network/v2/l3_conntrack_helper.py +11 -4
- openstackclient/network/v2/local_ip.py +13 -7
- openstackclient/network/v2/local_ip_association.py +7 -4
- openstackclient/network/v2/ndp_proxy.py +13 -6
- openstackclient/network/v2/network.py +33 -16
- openstackclient/network/v2/network_agent.py +5 -5
- openstackclient/network/v2/network_auto_allocated_topology.py +1 -1
- openstackclient/network/v2/network_flavor.py +1 -1
- openstackclient/network/v2/network_flavor_profile.py +1 -1
- openstackclient/network/v2/network_meter.py +1 -1
- openstackclient/network/v2/network_meter_rule.py +1 -1
- openstackclient/network/v2/network_qos_policy.py +7 -5
- openstackclient/network/v2/network_qos_rule.py +1 -1
- openstackclient/network/v2/network_qos_rule_type.py +1 -1
- openstackclient/network/v2/network_rbac.py +8 -5
- openstackclient/network/v2/network_segment.py +2 -2
- openstackclient/network/v2/network_segment_range.py +13 -6
- openstackclient/network/v2/network_service_provider.py +1 -1
- openstackclient/network/v2/network_trunk.py +65 -42
- openstackclient/network/v2/port.py +22 -20
- openstackclient/network/v2/router.py +19 -8
- openstackclient/network/v2/security_group.py +10 -6
- openstackclient/network/v2/security_group_rule.py +11 -5
- openstackclient/network/v2/subnet.py +17 -18
- openstackclient/network/v2/subnet_pool.py +11 -9
- openstackclient/network/v2/taas/__init__.py +0 -0
- openstackclient/network/v2/taas/tap_flow.py +245 -0
- openstackclient/network/v2/taas/tap_mirror.py +237 -0
- openstackclient/network/v2/taas/tap_service.py +211 -0
- openstackclient/object/v1/account.py +1 -1
- openstackclient/object/v1/container.py +1 -1
- openstackclient/object/v1/object.py +1 -1
- openstackclient/shell.py +18 -8
- openstackclient/tests/functional/identity/v3/test_catalog.py +42 -23
- openstackclient/tests/functional/identity/v3/test_role_assignment.py +174 -0
- openstackclient/tests/functional/image/v2/test_cache.py +54 -0
- openstackclient/tests/functional/image/v2/test_metadef_resource_type.py +55 -0
- openstackclient/tests/unit/common/test_command.py +1 -1
- openstackclient/tests/unit/common/test_extension.py +2 -3
- openstackclient/tests/unit/common/test_module.py +14 -7
- openstackclient/tests/unit/common/test_quota.py +20 -0
- openstackclient/tests/unit/compute/v2/test_aggregate.py +5 -3
- openstackclient/tests/unit/compute/v2/test_console.py +1 -4
- openstackclient/tests/unit/compute/v2/test_flavor.py +1 -3
- openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py +1 -9
- openstackclient/tests/unit/compute/v2/test_server.py +364 -30
- openstackclient/tests/unit/compute/v2/test_server_backup.py +1 -3
- openstackclient/tests/unit/compute/v2/test_service.py +1 -3
- openstackclient/tests/unit/fakes.py +35 -134
- openstackclient/tests/unit/identity/test_common.py +100 -0
- openstackclient/tests/unit/identity/v2_0/test_project.py +4 -4
- openstackclient/tests/unit/identity/v3/fakes.py +10 -2
- openstackclient/tests/unit/identity/v3/test_application_credential.py +3 -3
- openstackclient/tests/unit/identity/v3/test_domain.py +1 -1
- openstackclient/tests/unit/identity/v3/test_endpoint.py +1 -1
- openstackclient/tests/unit/identity/v3/test_group.py +4 -2
- openstackclient/tests/unit/identity/v3/test_identity_provider.py +10 -10
- openstackclient/tests/unit/identity/v3/test_oauth.py +1 -1
- openstackclient/tests/unit/identity/v3/test_project.py +1 -1
- openstackclient/tests/unit/identity/v3/test_registered_limit.py +2 -2
- openstackclient/tests/unit/identity/v3/test_role.py +1 -82
- openstackclient/tests/unit/identity/v3/test_user.py +7 -51
- openstackclient/tests/unit/image/v2/test_image.py +111 -0
- openstackclient/tests/unit/network/test_common.py +9 -13
- openstackclient/tests/unit/network/v2/taas/__init__.py +0 -0
- openstackclient/tests/unit/network/v2/taas/test_osc_tap_flow.py +276 -0
- openstackclient/tests/unit/network/v2/taas/test_osc_tap_mirror.py +288 -0
- openstackclient/tests/unit/network/v2/taas/test_osc_tap_service.py +271 -0
- openstackclient/tests/unit/network/v2/test_address_group.py +19 -22
- openstackclient/tests/unit/network/v2/test_address_scope.py +10 -15
- openstackclient/tests/unit/network/v2/test_default_security_group_rule.py +38 -49
- openstackclient/tests/unit/network/v2/test_floating_ip_network.py +21 -27
- openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +21 -18
- openstackclient/tests/unit/network/v2/test_ip_availability.py +6 -8
- openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py +6 -15
- openstackclient/tests/unit/network/v2/test_local_ip.py +12 -23
- openstackclient/tests/unit/network/v2/test_local_ip_association.py +13 -18
- openstackclient/tests/unit/network/v2/test_ndp_proxy.py +11 -21
- openstackclient/tests/unit/network/v2/test_network.py +41 -37
- openstackclient/tests/unit/network/v2/test_network_agent.py +13 -20
- openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py +5 -8
- openstackclient/tests/unit/network/v2/test_network_flavor.py +14 -26
- openstackclient/tests/unit/network/v2/test_network_flavor_profile.py +14 -17
- openstackclient/tests/unit/network/v2/test_network_meter.py +7 -17
- openstackclient/tests/unit/network/v2/test_network_meter_rule.py +10 -20
- openstackclient/tests/unit/network/v2/test_network_qos_policy.py +7 -13
- openstackclient/tests/unit/network/v2/test_network_qos_rule.py +44 -54
- openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py +2 -7
- openstackclient/tests/unit/network/v2/test_network_rbac.py +21 -36
- openstackclient/tests/unit/network/v2/test_network_segment.py +13 -29
- openstackclient/tests/unit/network/v2/test_network_segment_range.py +20 -19
- openstackclient/tests/unit/network/v2/test_network_service_provider.py +1 -4
- openstackclient/tests/unit/network/v2/test_network_trunk.py +52 -47
- openstackclient/tests/unit/network/v2/test_port.py +75 -86
- openstackclient/tests/unit/network/v2/test_router.py +104 -126
- openstackclient/tests/unit/network/v2/test_security_group_network.py +19 -26
- openstackclient/tests/unit/network/v2/test_security_group_rule_network.py +17 -18
- openstackclient/tests/unit/network/v2/test_subnet.py +35 -46
- openstackclient/tests/unit/network/v2/test_subnet_pool.py +21 -33
- openstackclient/tests/unit/volume/test_find_resource.py +4 -13
- openstackclient/tests/unit/volume/v2/test_volume_backup.py +3 -1
- openstackclient/tests/unit/volume/v3/test_volume.py +4 -0
- openstackclient/tests/unit/volume/v3/test_volume_backup.py +9 -0
- openstackclient/volume/client.py +7 -17
- openstackclient/volume/v2/backup_record.py +1 -1
- openstackclient/volume/v2/consistency_group.py +1 -1
- openstackclient/volume/v2/consistency_group_snapshot.py +1 -1
- openstackclient/volume/v2/qos_specs.py +1 -1
- openstackclient/volume/v2/service.py +1 -1
- openstackclient/volume/v2/volume.py +2 -2
- openstackclient/volume/v2/volume_backend.py +1 -1
- openstackclient/volume/v2/volume_backup.py +5 -3
- openstackclient/volume/v2/volume_host.py +1 -2
- openstackclient/volume/v2/volume_snapshot.py +2 -2
- openstackclient/volume/v2/volume_transfer_request.py +1 -1
- openstackclient/volume/v2/volume_type.py +11 -6
- openstackclient/volume/v3/block_storage_cleanup.py +1 -1
- openstackclient/volume/v3/block_storage_cluster.py +1 -1
- openstackclient/volume/v3/block_storage_log_level.py +1 -1
- openstackclient/volume/v3/block_storage_manage.py +1 -1
- openstackclient/volume/v3/block_storage_resource_filter.py +1 -1
- openstackclient/volume/v3/service.py +1 -1
- openstackclient/volume/v3/volume.py +2 -2
- openstackclient/volume/v3/volume_attachment.py +6 -5
- openstackclient/volume/v3/volume_backup.py +18 -3
- openstackclient/volume/v3/volume_group.py +1 -1
- openstackclient/volume/v3/volume_group_snapshot.py +1 -1
- openstackclient/volume/v3/volume_group_type.py +1 -1
- openstackclient/volume/v3/volume_message.py +1 -1
- openstackclient/volume/v3/volume_snapshot.py +2 -2
- openstackclient/volume/v3/volume_transfer_request.py +1 -1
- openstackclient/volume/v3/volume_type.py +15 -9
- {python_openstackclient-8.2.0.dist-info → python_openstackclient-8.3.0.dist-info}/METADATA +15 -13
- {python_openstackclient-8.2.0.dist-info → python_openstackclient-8.3.0.dist-info}/RECORD +224 -213
- {python_openstackclient-8.2.0.dist-info → python_openstackclient-8.3.0.dist-info}/WHEEL +1 -1
- {python_openstackclient-8.2.0.dist-info → python_openstackclient-8.3.0.dist-info}/entry_points.txt +15 -0
- {python_openstackclient-8.2.0.dist-info → python_openstackclient-8.3.0.dist-info/licenses}/AUTHORS +10 -0
- python_openstackclient-8.3.0.dist-info/pbr.json +1 -0
- openstackclient/tests/unit/common/test_logs.py +0 -221
- python_openstackclient-8.2.0.dist-info/pbr.json +0 -1
- {python_openstackclient-8.2.0.dist-info → python_openstackclient-8.3.0.dist-info/licenses}/LICENSE +0 -0
- {python_openstackclient-8.2.0.dist-info → python_openstackclient-8.3.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
# All Rights Reserved 2020
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
4
|
+
# not use this file except in compliance with the License. You may obtain
|
|
5
|
+
# a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
11
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
12
|
+
# License for the specific language governing permissions and limitations
|
|
13
|
+
# under the License.
|
|
14
|
+
|
|
15
|
+
import copy
|
|
16
|
+
import operator
|
|
17
|
+
import uuid
|
|
18
|
+
|
|
19
|
+
from openstack.network.v2 import tap_service
|
|
20
|
+
from openstack.test import fakes as sdk_fakes
|
|
21
|
+
from osc_lib import utils as osc_utils
|
|
22
|
+
from osc_lib.utils import columns as column_util
|
|
23
|
+
|
|
24
|
+
from openstackclient.network.v2.taas import tap_service as osc_tap_service
|
|
25
|
+
from openstackclient.tests.unit.network.v2 import fakes as network_fakes
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
columns_long = tuple(
|
|
29
|
+
col
|
|
30
|
+
for col, _, listing_mode in osc_tap_service._attr_map
|
|
31
|
+
if listing_mode in (column_util.LIST_BOTH, column_util.LIST_LONG_ONLY)
|
|
32
|
+
)
|
|
33
|
+
headers_long = tuple(
|
|
34
|
+
head
|
|
35
|
+
for _, head, listing_mode in osc_tap_service._attr_map
|
|
36
|
+
if listing_mode in (column_util.LIST_BOTH, column_util.LIST_LONG_ONLY)
|
|
37
|
+
)
|
|
38
|
+
sorted_attr_map = sorted(osc_tap_service._attr_map, key=operator.itemgetter(1))
|
|
39
|
+
sorted_columns = tuple(col for col, _, _ in sorted_attr_map)
|
|
40
|
+
sorted_headers = tuple(head for _, head, _ in sorted_attr_map)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def _get_data(attrs, columns=sorted_columns):
|
|
44
|
+
return osc_utils.get_dict_properties(attrs, columns)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class TestCreateTapService(network_fakes.TestNetworkV2):
|
|
48
|
+
columns = (
|
|
49
|
+
'description',
|
|
50
|
+
'id',
|
|
51
|
+
'name',
|
|
52
|
+
'port_id',
|
|
53
|
+
'project_id',
|
|
54
|
+
'status',
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
def setUp(self):
|
|
58
|
+
super().setUp()
|
|
59
|
+
self.cmd = osc_tap_service.CreateTapService(self.app, None)
|
|
60
|
+
|
|
61
|
+
def test_create_tap_service(self):
|
|
62
|
+
"""Test Create Tap Service."""
|
|
63
|
+
port_id = str(uuid.uuid4())
|
|
64
|
+
fake_port = network_fakes.create_one_port(attrs={'id': port_id})
|
|
65
|
+
fake_tap_service = sdk_fakes.generate_fake_resource(
|
|
66
|
+
tap_service.TapService, **{'port_id': port_id}
|
|
67
|
+
)
|
|
68
|
+
self.app.client_manager.network.create_tap_service.return_value = (
|
|
69
|
+
fake_tap_service
|
|
70
|
+
)
|
|
71
|
+
self.app.client_manager.network.find_port.return_value = fake_port
|
|
72
|
+
self.app.client_manager.network.find_tap_service.side_effect = (
|
|
73
|
+
lambda _, name_or_id: {'id': name_or_id}
|
|
74
|
+
)
|
|
75
|
+
arg_list = [
|
|
76
|
+
'--name',
|
|
77
|
+
fake_tap_service['name'],
|
|
78
|
+
'--port',
|
|
79
|
+
fake_tap_service['port_id'],
|
|
80
|
+
]
|
|
81
|
+
|
|
82
|
+
verify_list = [
|
|
83
|
+
('name', fake_tap_service['name']),
|
|
84
|
+
('port_id', fake_tap_service['port_id']),
|
|
85
|
+
]
|
|
86
|
+
|
|
87
|
+
parsed_args = self.check_parser(self.cmd, arg_list, verify_list)
|
|
88
|
+
self.app.client_manager.network.find_tap_service.return_value = (
|
|
89
|
+
fake_tap_service
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
93
|
+
create_tap_s_mock = self.app.client_manager.network.create_tap_service
|
|
94
|
+
create_tap_s_mock.assert_called_once_with(
|
|
95
|
+
**{
|
|
96
|
+
'name': fake_tap_service['name'],
|
|
97
|
+
'port_id': fake_tap_service['port_id'],
|
|
98
|
+
}
|
|
99
|
+
)
|
|
100
|
+
self.assertEqual(self.columns, columns)
|
|
101
|
+
fake_data = _get_data(
|
|
102
|
+
fake_tap_service, osc_tap_service._get_columns(fake_tap_service)[1]
|
|
103
|
+
)
|
|
104
|
+
self.assertEqual(fake_data, data)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
class TestListTapService(network_fakes.TestNetworkV2):
|
|
108
|
+
def setUp(self):
|
|
109
|
+
super().setUp()
|
|
110
|
+
self.cmd = osc_tap_service.ListTapService(self.app, None)
|
|
111
|
+
|
|
112
|
+
def test_list_tap_service(self):
|
|
113
|
+
"""Test List Tap Service."""
|
|
114
|
+
fake_tap_services = list(
|
|
115
|
+
sdk_fakes.generate_fake_resources(tap_service.TapService, count=4)
|
|
116
|
+
)
|
|
117
|
+
self.app.client_manager.network.tap_services.return_value = (
|
|
118
|
+
fake_tap_services
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
arg_list = []
|
|
122
|
+
verify_list = []
|
|
123
|
+
|
|
124
|
+
parsed_args = self.check_parser(self.cmd, arg_list, verify_list)
|
|
125
|
+
|
|
126
|
+
headers, data = self.cmd.take_action(parsed_args)
|
|
127
|
+
|
|
128
|
+
self.app.client_manager.network.tap_services.assert_called_once()
|
|
129
|
+
self.assertEqual(headers, list(headers_long))
|
|
130
|
+
self.assertCountEqual(
|
|
131
|
+
list(data),
|
|
132
|
+
[
|
|
133
|
+
_get_data(fake_tap_service, columns_long)
|
|
134
|
+
for fake_tap_service in fake_tap_services
|
|
135
|
+
],
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
class TestDeleteTapService(network_fakes.TestNetworkV2):
|
|
140
|
+
def setUp(self):
|
|
141
|
+
super().setUp()
|
|
142
|
+
self.app.client_manager.network.find_tap_service.side_effect = (
|
|
143
|
+
lambda name_or_id, ignore_missing: tap_service.TapService(
|
|
144
|
+
id=name_or_id
|
|
145
|
+
)
|
|
146
|
+
)
|
|
147
|
+
self.cmd = osc_tap_service.DeleteTapService(self.app, None)
|
|
148
|
+
|
|
149
|
+
def test_delete_tap_service(self):
|
|
150
|
+
"""Test Delete tap service."""
|
|
151
|
+
|
|
152
|
+
fake_tap_service = sdk_fakes.generate_fake_resource(
|
|
153
|
+
tap_service.TapService
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
arg_list = [
|
|
157
|
+
fake_tap_service['id'],
|
|
158
|
+
]
|
|
159
|
+
verify_list = [
|
|
160
|
+
(osc_tap_service.TAP_SERVICE, [fake_tap_service['id']]),
|
|
161
|
+
]
|
|
162
|
+
|
|
163
|
+
parsed_args = self.check_parser(self.cmd, arg_list, verify_list)
|
|
164
|
+
result = self.cmd.take_action(parsed_args)
|
|
165
|
+
|
|
166
|
+
mock_delete_tap_s = self.app.client_manager.network.delete_tap_service
|
|
167
|
+
mock_delete_tap_s.assert_called_once_with(fake_tap_service['id'])
|
|
168
|
+
self.assertIsNone(result)
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
class TestShowTapService(network_fakes.TestNetworkV2):
|
|
172
|
+
columns = (
|
|
173
|
+
'description',
|
|
174
|
+
'id',
|
|
175
|
+
'name',
|
|
176
|
+
'port_id',
|
|
177
|
+
'project_id',
|
|
178
|
+
'status',
|
|
179
|
+
)
|
|
180
|
+
|
|
181
|
+
def setUp(self):
|
|
182
|
+
super().setUp()
|
|
183
|
+
self.app.client_manager.network.find_tap_service.side_effect = (
|
|
184
|
+
lambda name_or_id, ignore_missing: tap_service.TapService(
|
|
185
|
+
id=name_or_id
|
|
186
|
+
)
|
|
187
|
+
)
|
|
188
|
+
self.cmd = osc_tap_service.ShowTapService(self.app, None)
|
|
189
|
+
|
|
190
|
+
def test_show_tap_service(self):
|
|
191
|
+
"""Test Show tap service."""
|
|
192
|
+
|
|
193
|
+
fake_tap_service = sdk_fakes.generate_fake_resource(
|
|
194
|
+
tap_service.TapService
|
|
195
|
+
)
|
|
196
|
+
self.app.client_manager.network.get_tap_service.return_value = (
|
|
197
|
+
fake_tap_service
|
|
198
|
+
)
|
|
199
|
+
arg_list = [
|
|
200
|
+
fake_tap_service['id'],
|
|
201
|
+
]
|
|
202
|
+
verify_list = [
|
|
203
|
+
(osc_tap_service.TAP_SERVICE, fake_tap_service['id']),
|
|
204
|
+
]
|
|
205
|
+
|
|
206
|
+
parsed_args = self.check_parser(self.cmd, arg_list, verify_list)
|
|
207
|
+
|
|
208
|
+
headers, data = self.cmd.take_action(parsed_args)
|
|
209
|
+
|
|
210
|
+
mock_get_tap_s = self.app.client_manager.network.get_tap_service
|
|
211
|
+
mock_get_tap_s.assert_called_once_with(fake_tap_service['id'])
|
|
212
|
+
self.assertEqual(self.columns, headers)
|
|
213
|
+
fake_data = _get_data(
|
|
214
|
+
fake_tap_service, osc_tap_service._get_columns(fake_tap_service)[1]
|
|
215
|
+
)
|
|
216
|
+
self.assertEqual(fake_data, data)
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
class TestUpdateTapService(network_fakes.TestNetworkV2):
|
|
220
|
+
_new_name = 'new_name'
|
|
221
|
+
|
|
222
|
+
columns = (
|
|
223
|
+
'description',
|
|
224
|
+
'id',
|
|
225
|
+
'name',
|
|
226
|
+
'port_id',
|
|
227
|
+
'project_id',
|
|
228
|
+
'status',
|
|
229
|
+
)
|
|
230
|
+
|
|
231
|
+
def setUp(self):
|
|
232
|
+
super().setUp()
|
|
233
|
+
self.cmd = osc_tap_service.UpdateTapService(self.app, None)
|
|
234
|
+
self.app.client_manager.network.find_tap_service.side_effect = (
|
|
235
|
+
lambda name_or_id, ignore_missing: tap_service.TapService(
|
|
236
|
+
id=name_or_id
|
|
237
|
+
)
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
def test_update_tap_service(self):
|
|
241
|
+
"""Test update tap service"""
|
|
242
|
+
fake_tap_service = sdk_fakes.generate_fake_resource(
|
|
243
|
+
tap_service.TapService
|
|
244
|
+
)
|
|
245
|
+
new_tap_service = copy.deepcopy(fake_tap_service)
|
|
246
|
+
new_tap_service['name'] = self._new_name
|
|
247
|
+
|
|
248
|
+
self.app.client_manager.network.update_tap_service.return_value = (
|
|
249
|
+
new_tap_service
|
|
250
|
+
)
|
|
251
|
+
|
|
252
|
+
arg_list = [
|
|
253
|
+
fake_tap_service['id'],
|
|
254
|
+
'--name',
|
|
255
|
+
self._new_name,
|
|
256
|
+
]
|
|
257
|
+
verify_list = [('name', self._new_name)]
|
|
258
|
+
|
|
259
|
+
parsed_args = self.check_parser(self.cmd, arg_list, verify_list)
|
|
260
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
261
|
+
attrs = {'name': self._new_name}
|
|
262
|
+
|
|
263
|
+
mock_update_tap_s = self.app.client_manager.network.update_tap_service
|
|
264
|
+
mock_update_tap_s.assert_called_once_with(
|
|
265
|
+
fake_tap_service['id'], **attrs
|
|
266
|
+
)
|
|
267
|
+
self.assertEqual(self.columns, columns)
|
|
268
|
+
fake_data = _get_data(
|
|
269
|
+
new_tap_service, osc_tap_service._get_columns(new_tap_service)[1]
|
|
270
|
+
)
|
|
271
|
+
self.assertEqual(fake_data, data)
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
# under the License.
|
|
12
12
|
#
|
|
13
13
|
|
|
14
|
-
from unittest import mock
|
|
15
14
|
from unittest.mock import call
|
|
16
15
|
|
|
17
16
|
from osc_lib import exceptions
|
|
@@ -58,8 +57,8 @@ class TestCreateAddressGroup(TestAddressGroup):
|
|
|
58
57
|
|
|
59
58
|
def setUp(self):
|
|
60
59
|
super().setUp()
|
|
61
|
-
self.network_client.create_address_group =
|
|
62
|
-
|
|
60
|
+
self.network_client.create_address_group.return_value = (
|
|
61
|
+
self.new_address_group
|
|
63
62
|
)
|
|
64
63
|
|
|
65
64
|
# Get the command object to test
|
|
@@ -145,7 +144,7 @@ class TestDeleteAddressGroup(TestAddressGroup):
|
|
|
145
144
|
|
|
146
145
|
def setUp(self):
|
|
147
146
|
super().setUp()
|
|
148
|
-
self.network_client.delete_address_group =
|
|
147
|
+
self.network_client.delete_address_group.return_value = None
|
|
149
148
|
self.network_client.find_address_group = (
|
|
150
149
|
network_fakes.get_address_groups(
|
|
151
150
|
address_groups=self._address_groups
|
|
@@ -206,9 +205,7 @@ class TestDeleteAddressGroup(TestAddressGroup):
|
|
|
206
205
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
207
206
|
|
|
208
207
|
find_mock_result = [self._address_groups[0], exceptions.CommandError]
|
|
209
|
-
self.network_client.find_address_group =
|
|
210
|
-
side_effect=find_mock_result
|
|
211
|
-
)
|
|
208
|
+
self.network_client.find_address_group.side_effect = find_mock_result
|
|
212
209
|
|
|
213
210
|
try:
|
|
214
211
|
self.cmd.take_action(parsed_args)
|
|
@@ -251,9 +248,7 @@ class TestListAddressGroup(TestAddressGroup):
|
|
|
251
248
|
|
|
252
249
|
def setUp(self):
|
|
253
250
|
super().setUp()
|
|
254
|
-
self.network_client.address_groups =
|
|
255
|
-
return_value=self.address_groups
|
|
256
|
-
)
|
|
251
|
+
self.network_client.address_groups.return_value = self.address_groups
|
|
257
252
|
|
|
258
253
|
# Get the command object to test
|
|
259
254
|
self.cmd = address_group.ListAddressGroup(self.app, None)
|
|
@@ -333,13 +328,15 @@ class TestSetAddressGroup(TestAddressGroup):
|
|
|
333
328
|
|
|
334
329
|
def setUp(self):
|
|
335
330
|
super().setUp()
|
|
336
|
-
self.network_client.update_address_group =
|
|
337
|
-
self.network_client.find_address_group =
|
|
338
|
-
|
|
331
|
+
self.network_client.update_address_group.return_value = None
|
|
332
|
+
self.network_client.find_address_group.return_value = (
|
|
333
|
+
self._address_group
|
|
339
334
|
)
|
|
340
|
-
|
|
341
|
-
|
|
335
|
+
|
|
336
|
+
self.network_client.add_addresses_to_address_group.return_value = (
|
|
337
|
+
self._address_group
|
|
342
338
|
)
|
|
339
|
+
|
|
343
340
|
# Get the command object to test
|
|
344
341
|
self.cmd = address_group.SetAddressGroup(self.app, None)
|
|
345
342
|
|
|
@@ -442,8 +439,8 @@ class TestShowAddressGroup(TestAddressGroup):
|
|
|
442
439
|
|
|
443
440
|
def setUp(self):
|
|
444
441
|
super().setUp()
|
|
445
|
-
self.network_client.find_address_group =
|
|
446
|
-
|
|
442
|
+
self.network_client.find_address_group.return_value = (
|
|
443
|
+
self._address_group
|
|
447
444
|
)
|
|
448
445
|
|
|
449
446
|
# Get the command object to test
|
|
@@ -486,12 +483,12 @@ class TestUnsetAddressGroup(TestAddressGroup):
|
|
|
486
483
|
|
|
487
484
|
def setUp(self):
|
|
488
485
|
super().setUp()
|
|
489
|
-
self.network_client.find_address_group =
|
|
490
|
-
|
|
491
|
-
)
|
|
492
|
-
self.network_client.remove_addresses_from_address_group = mock.Mock(
|
|
493
|
-
return_value=self._address_group
|
|
486
|
+
self.network_client.find_address_group.return_value = (
|
|
487
|
+
self._address_group
|
|
494
488
|
)
|
|
489
|
+
|
|
490
|
+
self.network_client.remove_addresses_from_address_group.return_value = self._address_group
|
|
491
|
+
|
|
495
492
|
# Get the command object to test
|
|
496
493
|
self.cmd = address_group.UnsetAddressGroup(self.app, None)
|
|
497
494
|
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
# under the License.
|
|
12
12
|
#
|
|
13
13
|
|
|
14
|
-
from unittest import mock
|
|
15
14
|
from unittest.mock import call
|
|
16
15
|
|
|
17
16
|
from osc_lib import exceptions
|
|
@@ -52,8 +51,8 @@ class TestCreateAddressScope(TestAddressScope):
|
|
|
52
51
|
|
|
53
52
|
def setUp(self):
|
|
54
53
|
super().setUp()
|
|
55
|
-
self.network_client.create_address_scope =
|
|
56
|
-
|
|
54
|
+
self.network_client.create_address_scope.return_value = (
|
|
55
|
+
self.new_address_scope
|
|
57
56
|
)
|
|
58
57
|
|
|
59
58
|
# Get the command object to test
|
|
@@ -160,7 +159,7 @@ class TestDeleteAddressScope(TestAddressScope):
|
|
|
160
159
|
|
|
161
160
|
def setUp(self):
|
|
162
161
|
super().setUp()
|
|
163
|
-
self.network_client.delete_address_scope =
|
|
162
|
+
self.network_client.delete_address_scope.return_value = None
|
|
164
163
|
self.network_client.find_address_scope = (
|
|
165
164
|
network_fakes.get_address_scopes(
|
|
166
165
|
address_scopes=self._address_scopes
|
|
@@ -222,9 +221,7 @@ class TestDeleteAddressScope(TestAddressScope):
|
|
|
222
221
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
223
222
|
|
|
224
223
|
find_mock_result = [self._address_scopes[0], exceptions.CommandError]
|
|
225
|
-
self.network_client.find_address_scope =
|
|
226
|
-
side_effect=find_mock_result
|
|
227
|
-
)
|
|
224
|
+
self.network_client.find_address_scope.side_effect = find_mock_result
|
|
228
225
|
|
|
229
226
|
try:
|
|
230
227
|
self.cmd.take_action(parsed_args)
|
|
@@ -267,9 +264,7 @@ class TestListAddressScope(TestAddressScope):
|
|
|
267
264
|
|
|
268
265
|
def setUp(self):
|
|
269
266
|
super().setUp()
|
|
270
|
-
self.network_client.address_scopes =
|
|
271
|
-
return_value=self.address_scopes
|
|
272
|
-
)
|
|
267
|
+
self.network_client.address_scopes.return_value = self.address_scopes
|
|
273
268
|
|
|
274
269
|
# Get the command object to test
|
|
275
270
|
self.cmd = address_scope.ListAddressScope(self.app, None)
|
|
@@ -398,9 +393,9 @@ class TestSetAddressScope(TestAddressScope):
|
|
|
398
393
|
|
|
399
394
|
def setUp(self):
|
|
400
395
|
super().setUp()
|
|
401
|
-
self.network_client.update_address_scope =
|
|
402
|
-
self.network_client.find_address_scope =
|
|
403
|
-
|
|
396
|
+
self.network_client.update_address_scope.return_value = None
|
|
397
|
+
self.network_client.find_address_scope.return_value = (
|
|
398
|
+
self._address_scope
|
|
404
399
|
)
|
|
405
400
|
|
|
406
401
|
# Get the command object to test
|
|
@@ -488,8 +483,8 @@ class TestShowAddressScope(TestAddressScope):
|
|
|
488
483
|
|
|
489
484
|
def setUp(self):
|
|
490
485
|
super().setUp()
|
|
491
|
-
self.network_client.find_address_scope =
|
|
492
|
-
|
|
486
|
+
self.network_client.find_address_scope.return_value = (
|
|
487
|
+
self._address_scope
|
|
493
488
|
)
|
|
494
489
|
|
|
495
490
|
# Get the command object to test
|