
As discussed at the Epoxy PTG meeting, run an automated upgrade tool to make code python 3.9+ compliant. This patch is for pylint. Result of running: $ pyupgrade --py39-plus $(git ls-files | grep ".py$") Fixed PEP8 errors introduced by pyupgrade by running: $ autopep8 --select=E127,E128,E501 --max-line-length 79 -r \ --in-place neutron_vpnaas Also did manual updates as necessary to fix other errors and warnings after above commands. Inspired by Octavia and Nova [0]. [0] https://review.opendev.org/c/openstack/nova/+/896986 Change-Id: I610efe1a9f20a2a799c40bcf62b98e65e70f0982
195 lines
8.2 KiB
Python
195 lines
8.2 KiB
Python
# (c) Copyright 2015 NEC Corporation, All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
import copy
|
|
from unittest import mock
|
|
|
|
from oslo_utils import uuidutils
|
|
from webob import exc
|
|
|
|
from neutron.tests.unit.api.v2 import test_base as test_api_v2
|
|
from neutron_lib.plugins import constants as nconstants
|
|
|
|
from neutron_vpnaas.extensions import vpn_endpoint_groups
|
|
from neutron_vpnaas.extensions import vpnaas
|
|
from neutron_vpnaas.services.vpn.common import constants
|
|
from neutron_vpnaas.tests import base
|
|
|
|
_uuid = uuidutils.generate_uuid
|
|
_get_path = test_api_v2._get_path
|
|
|
|
|
|
class VpnEndpointGroupsTestPlugin(
|
|
vpnaas.VPNPluginBase,
|
|
vpn_endpoint_groups.VPNEndpointGroupsPluginBase):
|
|
pass
|
|
|
|
|
|
class VpnEndpointGroupsTestCase(base.ExtensionTestCase):
|
|
|
|
fmt = 'json'
|
|
|
|
def setUp(self):
|
|
super().setUp()
|
|
plural_mappings = {'endpoint_group': 'endpoint-groups'}
|
|
self.setup_extension(
|
|
'neutron_vpnaas.tests.unit.extensions.test_vpn_endpoint_groups.'
|
|
'VpnEndpointGroupsTestPlugin',
|
|
nconstants.VPN,
|
|
vpn_endpoint_groups.Vpn_endpoint_groups,
|
|
'vpn', plural_mappings=plural_mappings,
|
|
use_quota=True)
|
|
|
|
def helper_test_endpoint_group_create(self, data):
|
|
"""Check that the endpoint_group_create works.
|
|
|
|
Uses passed in endpoint group information, which specifies an
|
|
endpoint type and values.
|
|
"""
|
|
data['endpoint_group'].update({'tenant_id': _uuid(),
|
|
'name': 'my endpoint group',
|
|
'description': 'my description'})
|
|
return_value = copy.copy(data['endpoint_group'])
|
|
return_value.update({'id': _uuid()})
|
|
|
|
instance = self.plugin.return_value
|
|
instance.create_endpoint_group.return_value = return_value
|
|
res = self.api.post(_get_path('vpn/endpoint-groups', fmt=self.fmt),
|
|
self.serialize(data),
|
|
content_type='application/%s' % self.fmt)
|
|
self.assertEqual(1, instance.create_endpoint_group.call_count)
|
|
self.assertEqual(exc.HTTPCreated.code, res.status_int)
|
|
res = self.deserialize(res)
|
|
self.assertIn('endpoint_group', res)
|
|
self.assertDictSupersetOf(return_value, res['endpoint_group'])
|
|
|
|
def test_create_cidr_endpoint_group_create(self):
|
|
"""Test creation of CIDR type endpoint group."""
|
|
data = {'endpoint_group':
|
|
{'type': constants.CIDR_ENDPOINT,
|
|
'endpoints': ['10.10.10.0/24', '20.20.20.0/24']}}
|
|
self.helper_test_endpoint_group_create(data)
|
|
|
|
def test_create_subnet_endpoint_group_create(self):
|
|
"""Test creation of subnet type endpoint group."""
|
|
data = {'endpoint_group':
|
|
{'type': constants.SUBNET_ENDPOINT,
|
|
'endpoints': [_uuid(), _uuid()]}}
|
|
self.helper_test_endpoint_group_create(data)
|
|
|
|
def test_create_vlan_endpoint_group_create(self):
|
|
"""Test creation of VLAN type endpoint group."""
|
|
data = {'endpoint_group':
|
|
{'type': constants.VLAN_ENDPOINT,
|
|
'endpoints': ['100', '200', '300', '400']}}
|
|
self.helper_test_endpoint_group_create(data)
|
|
|
|
def test_get_endpoint_group(self):
|
|
"""Test show for endpoint group."""
|
|
endpoint_group_id = _uuid()
|
|
return_value = {'id': endpoint_group_id,
|
|
'tenant_id': _uuid(),
|
|
'name': 'my-endpoint-group',
|
|
'description': 'my endpoint group',
|
|
'type': constants.CIDR_ENDPOINT,
|
|
'endpoints': ['10.10.10.0/24']}
|
|
|
|
instance = self.plugin.return_value
|
|
instance.get_endpoint_group.return_value = return_value
|
|
|
|
res = self.api.get(_get_path('vpn/endpoint-groups',
|
|
id=endpoint_group_id,
|
|
fmt=self.fmt))
|
|
|
|
instance.get_endpoint_group.assert_called_with(mock.ANY,
|
|
endpoint_group_id,
|
|
fields=mock.ANY)
|
|
self.assertEqual(res.status_int, exc.HTTPOk.code)
|
|
res = self.deserialize(res)
|
|
self.assertIn('endpoint_group', res)
|
|
self.assertEqual(res['endpoint_group'], return_value)
|
|
|
|
def test_endpoint_group_list(self):
|
|
"""Test listing all endpoint groups."""
|
|
return_value = [{'id': _uuid(),
|
|
'tenant_id': _uuid(),
|
|
'name': 'my-endpoint-group',
|
|
'description': 'my endpoint group',
|
|
'type': constants.CIDR_ENDPOINT,
|
|
'endpoints': ['10.10.10.0/24']},
|
|
{'id': _uuid(),
|
|
'tenant_id': _uuid(),
|
|
'name': 'another-endpoint-group',
|
|
'description': 'second endpoint group',
|
|
'type': constants.VLAN_ENDPOINT,
|
|
'endpoints': ['100', '200', '300']}]
|
|
|
|
instance = self.plugin.return_value
|
|
instance.get_endpoint_groups.return_value = return_value
|
|
|
|
res = self.api.get(_get_path('vpn/endpoint-groups', fmt=self.fmt))
|
|
|
|
instance.get_endpoint_groups.assert_called_with(mock.ANY,
|
|
fields=mock.ANY,
|
|
filters=mock.ANY)
|
|
self.assertEqual(res.status_int, exc.HTTPOk.code)
|
|
|
|
def test_endpoint_group_delete(self):
|
|
"""Test deleting an endpoint group."""
|
|
self._test_entity_delete('endpoint_group')
|
|
|
|
def test_endpoint_group_update(self):
|
|
"""Test updating endpoint_group."""
|
|
endpoint_group_id = _uuid()
|
|
update_data = {'endpoint_group': {'description': 'new description'}}
|
|
return_value = {'id': endpoint_group_id,
|
|
'tenant_id': _uuid(),
|
|
'name': 'my-endpoint-group',
|
|
'description': 'new_description',
|
|
'type': constants.CIDR_ENDPOINT,
|
|
'endpoints': ['10.10.10.0/24']}
|
|
|
|
instance = self.plugin.return_value
|
|
instance.update_endpoint_group.return_value = return_value
|
|
|
|
res = self.api.put(_get_path('vpn/endpoint-groups',
|
|
id=endpoint_group_id,
|
|
fmt=self.fmt),
|
|
self.serialize(update_data))
|
|
|
|
instance.update_endpoint_group.assert_called_with(
|
|
mock.ANY, endpoint_group_id, endpoint_group=update_data)
|
|
self.assertEqual(res.status_int, exc.HTTPOk.code)
|
|
res = self.deserialize(res)
|
|
self.assertIn('endpoint_group', res)
|
|
self.assertEqual(res['endpoint_group'], return_value)
|
|
|
|
def test_fail_updating_endpoints_in_endpoint_group(self):
|
|
"""Test fails to update the endpoints in an endpoint group.
|
|
|
|
This documents that we are not allowing endpoints to be updated
|
|
(currently), as doing so, implies that the connection using the
|
|
enclosing endpoint group would also need to be updated. For now,
|
|
a new endpoint group can be created, and the connection can be
|
|
updated to point to the new endpoint group.
|
|
"""
|
|
endpoint_group_id = _uuid()
|
|
update_data = {'endpoint_group': {'endpoints': ['10.10.10.0/24']}}
|
|
res = self.api.put(_get_path('vpn/endpoint-groups',
|
|
id=endpoint_group_id,
|
|
fmt=self.fmt),
|
|
params=self.serialize(update_data),
|
|
expect_errors=True)
|
|
self.assertEqual(exc.HTTPBadRequest.code, res.status_int)
|