:param segmentation_id: the id of the segmentation
(this is required when network_type is 'vlan')
:param subnets or subnet_settings: List of SubnetConfig objects.
+ :param mtu: MTU setting (optional)
:return:
"""
if not self.name or len(self.name) < 1:
raise NetworkConfigError('Name required for networks')
+ self.mtu = kwargs.get('mtu')
+
def get_project_id(self, os_creds):
"""
Returns the project ID for a given project_name or None
out['provider:segmentation_id'] = self.segmentation_id
if self.external:
out['router:external'] = self.external
+ if self.mtu:
+ out['mtu'] = self.mtu
return {'network': out}
self.assertIsNone(settings.network_type)
self.assertIsNone(settings.segmentation_id)
self.assertEqual(0, len(settings.subnet_settings))
+ self.assertIsNone(settings.mtu)
def test_config_with_name_only(self):
settings = NetworkConfig(**{'name': 'foo'})
self.assertIsNone(settings.network_type)
self.assertIsNone(settings.segmentation_id)
self.assertEqual(0, len(settings.subnet_settings))
+ self.assertIsNone(settings.mtu)
def test_all(self):
sub_settings = SubnetConfig(name='foo-subnet', cidr='10.0.0.0/24')
settings = NetworkConfig(
name='foo', admin_state_up=False, shared=True, project_name='bar',
external=True, network_type='vlan', physical_network='phy',
- segmentation_id=2366, subnet_settings=[sub_settings])
+ segmentation_id=2366, subnet_settings=[sub_settings], mtu=999)
self.assertEqual('foo', settings.name)
self.assertFalse(settings.admin_state_up)
self.assertTrue(settings.shared)
self.assertEqual(2366, settings.segmentation_id)
self.assertEqual(1, len(settings.subnet_settings))
self.assertEqual('foo-subnet', settings.subnet_settings[0].name)
+ self.assertEqual(999, settings.mtu)
def test_config_all(self):
settings = NetworkConfig(
'segmentation_id': 2366,
'subnets':
[{'subnet': {'name': 'foo-subnet',
- 'cidr': '10.0.0.0/24'}}]})
+ 'cidr': '10.0.0.0/24'}}],
+ 'mtu': 999})
self.assertEqual('foo', settings.name)
self.assertFalse(settings.admin_state_up)
self.assertTrue(settings.shared)
self.assertEqual(2366, settings.segmentation_id)
self.assertEqual(1, len(settings.subnet_settings))
self.assertEqual('foo-subnet', settings.subnet_settings[0].name)
+ self.assertEqual(999, settings.mtu)
class SubnetConfigUnitTests(unittest.TestCase):
self.external = kwargs.get('router:external', kwargs.get('external'))
self.type = kwargs.get('provider:network_type', kwargs.get('type'))
self.subnets = kwargs.get('subnets', list())
+ self.mtu = kwargs.get('mtu')
def __eq__(self, other):
return (self.name == other.name and self.id == other.id and
self.admin_state_up == other.admin_state_up and
self.shared == other.shared and
self.external == other.external and
- self.subnets == other.subnets)
+ self.subnets == other.subnets and
+ self.mtu == other.mtu)
class Subnet:
network = Network(
**{'name': 'foo', 'id': 'bar', 'project_id': 'proj1',
'provider:network_type': 'flat', 'admin_state_up': False,
- 'shared': True, 'router:external': False, 'subnets': [subnet]})
+ 'shared': True, 'router:external': False, 'subnets': [subnet],
+ 'mtu': 999})
self.assertEqual('foo', network.name)
self.assertEqual('bar', network.id)
self.assertEqual('proj1', network.project_id)
self.assertFalse(network.external)
self.assertTrue(network.shared)
self.assertEqual([subnet], network.subnets)
+ self.assertEqual(999, network.mtu)
def test_construction_kwargs_2(self):
subnet = Subnet(
#os_auth_url: http://<host>:<port>/
#project_name: admin
#identity_api_version: 3
-#ext_net: <external network name>
\ No newline at end of file
+#ext_net: <external network name>
+
+flavor_metadata:
+ hw:mem_page_size: large
guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
self.net_config = openstack_tests.get_pub_net_config(
project_name=self.os_creds.project_name,
- net_name=guid + '-pub-net', subnet_name=guid + '-pub-subnet',
- router_name=guid + '-pub-router', external_net=self.ext_net_name,
+ net_name="{}-{}".format(guid, 'pub-net'), mtu=999,
+ subnet_name="{}-{}".format(guid, 'pub-subnet'),
+ router_name="{}-{}".format(guid, 'pub-router'),
+ external_net=self.ext_net_name,
netconf_override=self.netconf_override)
self.neutron = neutron_utils.neutron_client(
self.assertTrue(neutron_utils_tests.validate_network(
self.neutron, self.keystone,
self.net_creator.network_settings.name, True,
- self.os_creds.project_name))
+ self.os_creds.project_name, mtu=999))
# Validate subnets
self.assertTrue(neutron_utils_tests.validate_subnet(
self.assertTrue(neutron_utils_tests.validate_network(
self.neutron, self.keystone,
self.net_creator.network_settings.name, True,
- self.os_creds.project_name))
+ self.os_creds.project_name, mtu=999))
neutron_utils.delete_network(
self.neutron, self.net_creator.get_network())
self.assertTrue(neutron_utils_tests.validate_network(
self.neutron, self.keystone,
self.net_creator.network_settings.name, True,
- self.os_creds.project_name))
+ self.os_creds.project_name, mtu=999))
# Validate subnets
self.assertTrue(neutron_utils_tests.validate_subnet(
self.image_creator = OpenStackImage(
self.os_creds, openstack_tests.cirros_image_settings(
- name=self.guid + '-image',
+ name="{}-{}".format(self.guid, 'image'),
image_metadata=self.image_metadata))
self.image_creator.create()
+ flavor_config = openstack_tests.get_flavor_config(
+ name="{}-{}".format(self.guid, 'flavor-name'), ram=256, disk=10,
+ vcpus=1, metadata=self.flavor_metadata)
self.flavor_creator = OpenStackFlavor(
- self.admin_os_creds,
- FlavorConfig(
- name=self.guid + '-flavor-name', ram=256, disk=10, vcpus=1))
+ self.admin_os_creds, flavor_config)
self.flavor_creator.create()
env_values = {
'snaps.openstack.tests.heat', 'agent.yaml')
stack_settings = StackConfig(
- name=self.__class__.__name__ + '-' + str(self.guid) + '-stack',
+ name="{}-{}".format(
+ self.__class__.__name__, str(self.guid) + '-stack'),
template_path=heat_tmplt_path,
resource_files=[heat_resource_path],
env_values=env_values)
ram: 1024
vcpus: 2
disk: 2
+ extra_specs:
+ hw:mem_page_size: large
flavor2:
type: OS::Nova::Flavor
properties:
ram: 1024
vcpus: 2
disk: 2
+ extra_specs:
+ hw:mem_page_size: large
network:
type: OS::Neutron::Net
public=public)
-def get_priv_net_config(project_name, net_name, subnet_name, router_name=None,
- cidr='10.55.0.0/24', external_net=None,
- netconf_override=None):
+def get_priv_net_config(project_name, net_name, mtu=None, subnet_name=None,
+ router_name=None, cidr='10.55.0.0/24',
+ external_net=None, netconf_override=None):
return OSNetworkConfig(
- project_name, net_name, subnet_name, cidr, router_name,
+ project_name, net_name, mtu, subnet_name, cidr, router_name,
external_gateway=external_net, netconf_override=netconf_override)
def get_pub_net_config(
- project_name, net_name, subnet_name=None, router_name=None,
+ project_name, net_name, mtu=None, subnet_name=None, router_name=None,
cidr='10.55.1.0/24', external_net=None, netconf_override=None):
- return OSNetworkConfig(project_name, net_name, subnet_name, cidr,
+ return OSNetworkConfig(project_name, net_name, mtu, subnet_name, cidr,
router_name, external_gateway=external_net,
netconf_override=netconf_override)
physical_network and segmentation_id
"""
- def __init__(self, project_name, net_name, subnet_name=None,
+ def __init__(self, project_name, net_name, mtu=None, subnet_name=None,
subnet_cidr=None, router_name=None, external_gateway=None,
netconf_override=None):
"""
"""
if subnet_name and subnet_cidr:
network_conf = NetworkConfig(
- name=net_name, subnet_settings=[
+ name=net_name, mtu=mtu, subnet_settings=[
SubnetConfig(cidr=subnet_cidr, name=subnet_name)])
else:
network_conf = NetworkConfig(name=net_name)
test_conf = file_utils.read_yaml(dev_os_env_file)
self.ext_net_name = test_conf.get('ext_net')
- self.flavor_metadata = flavor_metadata
+ if flavor_metadata:
+ self.flavor_metadata = flavor_metadata
+ else:
+ os_env_dict = file_utils.read_yaml(dev_os_env_file)
+ flavor_metadata = os_env_dict.get('flavor_metadata')
+ if flavor_metadata:
+ self.flavor_metadata = {'metadata': flavor_metadata}
self.image_metadata = image_metadata
@staticmethod
"""
subnet_setting = self.net_config.network_settings.subnet_settings[0]
self.net_config = openstack_tests.OSNetworkConfig(
- self.os_creds.project_name, self.net_config.network_settings.name,
- subnet_setting.name, subnet_setting.cidr,
- self.net_config.router_settings.name, self.ext_net_name)
+ project_name=self.os_creds.project_name,
+ net_name=self.net_config.network_settings.name,
+ subnet_name=subnet_setting.name, subnet_cidr=subnet_setting.cidr,
+ router_name=self.net_config.router_settings.name,
+ external_gateway=self.ext_net_name)
self.router = neutron_utils.create_router(
self.neutron, self.os_creds, self.net_config.router_settings)
validate_router(
"""
-def validate_network(neutron, keystone, name, exists, project_name):
+def validate_network(neutron, keystone, name, exists, project_name, mtu=None):
"""
Returns true if a network for a given name DOES NOT exist if the exists
parameter is false conversely true. Returns false if a network for a given
return True
if not exists and not network:
return True
+ if mtu:
+ return mtu == network.mtu
return False
self.image_creator.create()
network_settings = openstack_tests.get_priv_net_config(
- self.os_creds.project_name, guid + '-net',
- guid + '-subnet').network_settings
+ project_name=self.os_creds.project_name,
+ net_name="{}-{}".format(guid, 'net'),
+ subnet_name="{}-{}".format(guid, 'subnet')).network_settings
self.network_creator = OpenStackNetwork(
self.os_creds, network_settings)
self.network_creator.create()
- self.flavor_creator = OpenStackFlavor(
- self.os_creds,
- FlavorConfig(
- name=guid + '-flavor-name', ram=256, disk=10, vcpus=1))
+ flavor_config = openstack_tests.get_flavor_config(
+ name="{}-{}".format(guid, 'flavor-name'), ram=256, disk=10,
+ vcpus=1, metadata=self.flavor_metadata)
+ self.flavor_creator = OpenStackFlavor(self.os_creds, flavor_config)
self.flavor_creator.create()
port_settings = PortConfig(
self.image_creator.create()
network_settings = openstack_tests.get_priv_net_config(
- self.os_creds.project_name, guid + '-net',
- guid + '-subnet').network_settings
+ project_name=self.os_creds.project_name,
+ net_name="{}-{}".format(guid, 'net'),
+ subnet_name="{}-{}".format(guid, 'subnet')).network_settings
+
self.network_creator = OpenStackNetwork(
self.os_creds, network_settings)
self.network_creator.create()
import pkg_resources
from scp import SCPClient
-from snaps.config.flavor import FlavorConfig
from snaps.config.keypair import KeypairConfig
from snaps.config.network import PortConfig
from snaps.config.security_group import (
os_image_settings = openstack_tests.ubuntu_image_settings(
name=guid + '-' + '-image',
image_metadata=self.image_metadata)
- self.image_creator = create_image.OpenStackImage(self.os_creds,
- os_image_settings)
+ self.image_creator = create_image.OpenStackImage(
+ self.os_creds, os_image_settings)
self.image_creator.create()
# First network is public
self.pub_net_config = openstack_tests.get_pub_net_config(
project_name=self.os_creds.project_name,
- net_name=guid + '-pub-net', subnet_name=guid + '-pub-subnet',
+ net_name=guid + '-pub-net',
+ mtu=1450, subnet_name=guid + '-pub-subnet',
router_name=guid + '-pub-router',
external_net=self.ext_net_name)
flavor_metadata = None
if arguments.flavor_metadata:
- flavor_metadata = json.loads(arguments.flavor_metadata)
+ flavor_metadata = {
+ 'metadata': {'hw:mem_page_size': arguments.flavor_metadata}}
image_metadata = None
if arguments.image_metadata_file:
'network and is able to create users and groups')
parser.add_argument(
'-fm', '--flavor-meta', dest='flavor_metadata',
- help='JSON string to be used as flavor metadata for all test instances'
- ' created')
+ help='hw:mem_page_size flavor setting value (i.e. large). '
+ 'Required for DPDK')
parser.add_argument(
'-im', '--image-meta', dest='image_metadata_file', default=None,
help='Location of YAML file containing the image metadata')