143 lines
5.0 KiB
Python
143 lines
5.0 KiB
Python
# Copyright 2014 Mirantis, Inc.
|
|
#
|
|
# 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.
|
|
|
|
from mock import patch
|
|
|
|
from nailgun.test import base
|
|
|
|
from nailgun.extensions.network_manager.serializers import neutron_serializers
|
|
|
|
CREDS = {'tenant': {'value': 'NONDEFAULT'}}
|
|
|
|
|
|
class BaseTestNeutronDeploymentSerializer(base.BaseTestCase):
|
|
env_version = None
|
|
serializer = None
|
|
|
|
def setUp(self):
|
|
super(BaseTestNeutronDeploymentSerializer, self).setUp()
|
|
self.cluster = self.env.create(
|
|
cluster_kwargs={'net_provider': 'neutron'},
|
|
release_kwargs={'version': self.env_version}
|
|
)
|
|
|
|
def check_shared_attrs_of_external_network(self, external_net):
|
|
self.assertEqual(
|
|
external_net['L2'],
|
|
{
|
|
'network_type': 'local',
|
|
'physnet': None,
|
|
'router_ext': True,
|
|
'segment_id': None
|
|
},
|
|
)
|
|
self.assertFalse(external_net['shared'])
|
|
self.assertEqual(external_net['tenant'], 'admin')
|
|
|
|
|
|
@patch('nailgun.orchestrator.deployment_serializers.objects.Cluster.get_creds',
|
|
return_value=CREDS)
|
|
class NetworkTenantNameMixin(object):
|
|
def verify_network_tenant(self, network):
|
|
self.assertEqual(network['tenant'], CREDS['tenant']['value'])
|
|
|
|
def test_internal_network_changes_tenant_name(self, creds):
|
|
int_network = self.serializer._generate_internal_network(self.cluster)
|
|
self.verify_network_tenant(int_network)
|
|
|
|
def test_external_network_changes_tenant_name(self, creds):
|
|
ext_network = self.serializer.generate_external_network(self.cluster)
|
|
self.verify_network_tenant(ext_network)
|
|
|
|
def test_predefined_networks_tenant_name(self, creds):
|
|
predefined_network = self.serializer.generate_predefined_networks(
|
|
self.cluster)
|
|
self.verify_network_tenant(predefined_network['admin_internal_net'])
|
|
self.verify_network_tenant(predefined_network['admin_floating_net'])
|
|
|
|
|
|
class TestNeutronDeploymentSerializer(BaseTestNeutronDeploymentSerializer,
|
|
NetworkTenantNameMixin):
|
|
env_version = '1111-5.1'
|
|
serializer = neutron_serializers.NeutronNetworkDeploymentSerializer
|
|
|
|
|
|
class TestNeutronDeploymentSerializer70(BaseTestNeutronDeploymentSerializer,
|
|
NetworkTenantNameMixin):
|
|
serializer = neutron_serializers.NeutronNetworkDeploymentSerializer70
|
|
env_version = '1111-7.0'
|
|
|
|
def test_external_network(self):
|
|
self.cluster.network_config.floating_ranges = [
|
|
["172.16.0.130", "172.16.0.150"]
|
|
]
|
|
|
|
external_net = self.serializer.generate_external_network(self.cluster)
|
|
self.check_shared_attrs_of_external_network(external_net)
|
|
self.assertEqual(
|
|
external_net['L3'],
|
|
{'enable_dhcp': False,
|
|
'floating': "172.16.0.130:172.16.0.150",
|
|
'gateway': '172.16.0.1',
|
|
'nameservers': [],
|
|
'subnet': '172.16.0.0/24'
|
|
}
|
|
)
|
|
|
|
|
|
class TestNeutronDeploymentSerializer80(BaseTestNeutronDeploymentSerializer,
|
|
NetworkTenantNameMixin):
|
|
serializer = neutron_serializers.NeutronNetworkDeploymentSerializer80
|
|
env_version = '1111-8.0'
|
|
|
|
def test_external_network(self):
|
|
self.cluster.network_config.floating_ranges = [
|
|
["172.16.0.130", "172.16.0.150"],
|
|
["172.16.0.200", "172.16.0.254"]
|
|
]
|
|
|
|
external_net = self.serializer.generate_external_network(self.cluster)
|
|
self.assertEqual(
|
|
external_net['L3'],
|
|
{'enable_dhcp': False,
|
|
'floating': ['172.16.0.130:172.16.0.150',
|
|
'172.16.0.200:172.16.0.254'],
|
|
'gateway': '172.16.0.1',
|
|
'nameservers': [],
|
|
'subnet': '172.16.0.0/24'
|
|
}
|
|
)
|
|
self.assertEqual(
|
|
external_net["L2"],
|
|
{
|
|
'network_type': "flat",
|
|
'physnet': 'physnet1',
|
|
"segment_id": None,
|
|
"router_ext": True,
|
|
}
|
|
)
|
|
self.assertFalse(external_net['shared'])
|
|
self.assertEqual(external_net['tenant'], 'admin')
|
|
|
|
def test_generate_l2(self):
|
|
phys_nets = self.serializer.generate_l2(self.cluster)["phys_nets"]
|
|
self.assertIn("physnet1", phys_nets)
|
|
self.assertEqual(
|
|
phys_nets["physnet1"],
|
|
{
|
|
'bridge': 'br-floating',
|
|
'vlan_range': None
|
|
}
|
|
)
|