diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/config/network_settings_duplicate_nic.yaml | 115 | ||||
-rw-r--r-- | tests/config/network_settings_missing_required_nic.yaml | 113 | ||||
-rw-r--r-- | tests/config/network_settings_nic1_reserved.yaml | 113 | ||||
-rw-r--r-- | tests/config/network_settings_nics_not_specified.yaml | 107 | ||||
-rw-r--r-- | tests/test_apex_network_settings.py | 45 |
5 files changed, 489 insertions, 4 deletions
diff --git a/tests/config/network_settings_duplicate_nic.yaml b/tests/config/network_settings_duplicate_nic.yaml new file mode 100644 index 00000000..24dd5ca0 --- /dev/null +++ b/tests/config/network_settings_duplicate_nic.yaml @@ -0,0 +1,115 @@ +# This configuration file defines Network Environment for a +# Baremetal Deployment of OPNFV. It contains default values +# for 4 following networks: +# +# - admin +# - private* +# - public +# - storage* +# +# *) optional networks +# +# Any values missing from this configuration file will be +# auto-detected by deployment script from the existing network +# configuration of the jumphost. +# +# Optional networks will be consolidated with the admin network +# if not explicitely configured. +# +# See short description of the networks in the comments below. +# + +# DNS Servers for all nodes, comma delimited list +dns_servers: ["8.8.8.8", "8.8.4.4"] + +# "admin" is the short name for Control Plane Network. +# During OPNFV deployment it is used for node provisioning so +# PXE boot should be enabled for the related interfaces on all +# the nodes in the OPNFV cluster. After the deployment this +# network is used as the OpenStack management network which +# carries e.g. communication between its internal components. +# +admin_network: + enabled: true + network_type: bridged + bridged_interface: '' + bond_interfaces: '' + compute_interface: eth1 + controller_interface: eth2 + usable_ip_range: 192.0.2.11,192.0.2.99 + gateway: 192.0.2.1 + provisioner_ip: 192.0.2.1 + cidr: 192.0.2.0/24 + dhcp_range: 192.0.2.2,192.0.2.10 + introspection_range: 192.0.2.100,192.0.2.120 + +# "private" is an optional network used as underlying physical +# network for virtual provider and tenant networks created by +# users. Traffic between virtual machines is carried by this +# network. +# +private_network: + enabled: true + vlan: native + cidr: 11.0.0.0/24 + compute_interface: enp0s4 + controller_interface: nic3 + +# "public" network is used for external connectivity. +# The external network provides Internet access for virtual +# machines. If floating IP range is defined for this network, +# floating IP addresses can be used for accessing virtual +# machines from outside of OPNFV cluster. Also external REST +# API calls use this network. +# +public_network: + enabled: true + network_type: '' + bridged_interface: '' + compute_interface: eth1 + controller_interface: enp0s3 + vlan: native + cidr: 192.168.37.0/24 + gateway: 192.168.37.1 + floating_ip_range: 192.168.37.200,192.168.37.220 + usable_ip_range: 192.168.37.10,192.168.37.199 + provisioner_ip: 192.168.37.1 + +# "storage" is an optional network used by storage backends. +# You can configure this network in order to reduce load on +# Control Plane Network. +# +storage_network: + enabled: true + vlan: native + cidr: 12.0.0.0/24 + compute_interface: eth5 + controller_interface: eth6 + +#admin_network: +# enabled: true +# network_type: bridged #Indicates if this network will be bridged to an interface, or to a bond +# bridged_interface: '' #Interface to bridge to for installer VM +# bond_interfaces: '' #Interfaces to create bond with for installer VM +# compute_interface: nic4 #Interface used for this network on the compute node. Can either be logical nic name like "nic1" or real name like "eth1" +# controller_interface: nic4 #Interface used for this network on the controller node. Can either be logical nic name like "nic1" or real name like "eth1" +# vlan: native #VLAN tag to use, native means none +# usable_ip_range: 192.0.2.11,192.0.2.99 #Usable ip range, if empty entire range is usable, ex. 192.168.1.10,192.168.1.20 +# gateway: 192.0.2.1 #Gateway (only needed when public_network is disabled), if empty it is auto-detected +# provisioner_ip: 192.0.2.1 #installer VM IP, if empty it is the next available IP in the admin subnet +# cidr: 192.0.2.0/24 #subnet in CIDR format 192.168.1.0/24, if empty it will be auto-detected +# dhcp_range: 192.0.2.2,192.0.2.10 #dhcp range for the admin network, if empty it will be automatically provisioned +# introspection_range: 192.0.2.100,192.0.2.120 #Range used for introspection phase (examining nodes) +#private_network: +# enabled: false #If disabled, internal api traffic will collapse to admin_network +#public_network: +# enabled: true #If disabled, public_network traffic will collapse to admin network +# network_type: '' +# bridged_interface: '' +# cidr: 192.168.37.0/24 +# gateway: 192.168.37.1 +# floating_ip_range: 192.168.37.200,192.168.37.220 #Range to allocate to floating IPs for the public network with Neutron +# usable_ip_range: 192.168.37.10,192.168.37.199 #Usable IP range on the public network, usually this is a shared subnet +# provisioner_ip: 192.168.37.1 +#storage_network: +# enabled: false #If disabled, storage_network traffic will collapse to admin network diff --git a/tests/config/network_settings_missing_required_nic.yaml b/tests/config/network_settings_missing_required_nic.yaml new file mode 100644 index 00000000..18886278 --- /dev/null +++ b/tests/config/network_settings_missing_required_nic.yaml @@ -0,0 +1,113 @@ +# This configuration file defines Network Environment for a +# Baremetal Deployment of OPNFV. It contains default values +# for 4 following networks: +# +# - admin +# - private* +# - public +# - storage* +# +# *) optional networks +# +# Any values missing from this configuration file will be +# auto-detected by deployment script from the existing network +# configuration of the jumphost. +# +# Optional networks will be consolidated with the admin network +# if not explicitely configured. +# +# See short description of the networks in the comments below. +# + +# DNS Servers for all nodes, comma delimited list +dns_servers: ["8.8.8.8", "8.8.4.4"] + +# "admin" is the short name for Control Plane Network. +# During OPNFV deployment it is used for node provisioning so +# PXE boot should be enabled for the related interfaces on all +# the nodes in the OPNFV cluster. After the deployment this +# network is used as the OpenStack management network which +# carries e.g. communication between its internal components. +# +admin_network: + enabled: true + network_type: bridged + bridged_interface: '' + bond_interfaces: '' + compute_interface: eth1 + controller_interface: eth2 + usable_ip_range: 192.0.2.11,192.0.2.99 + gateway: 192.0.2.1 + provisioner_ip: 192.0.2.1 + cidr: 192.0.2.0/24 + dhcp_range: 192.0.2.2,192.0.2.10 + introspection_range: 192.0.2.100,192.0.2.120 + +# "private" is an optional network used as underlying physical +# network for virtual provider and tenant networks created by +# users. Traffic between virtual machines is carried by this +# network. +# +private_network: + enabled: true + vlan: native + cidr: 11.0.0.0/24 + compute_interface: enp0s4 + controller_interface: nic3 + +# "public" network is used for external connectivity. +# The external network provides Internet access for virtual +# machines. If floating IP range is defined for this network, +# floating IP addresses can be used for accessing virtual +# machines from outside of OPNFV cluster. Also external REST +# API calls use this network. +# +public_network: + enabled: true + network_type: '' + bridged_interface: '' + vlan: native + cidr: 192.168.37.0/24 + gateway: 192.168.37.1 + floating_ip_range: 192.168.37.200,192.168.37.220 + usable_ip_range: 192.168.37.10,192.168.37.199 + provisioner_ip: 192.168.37.1 + +# "storage" is an optional network used by storage backends. +# You can configure this network in order to reduce load on +# Control Plane Network. +# +storage_network: + enabled: true + vlan: native + cidr: 12.0.0.0/24 + compute_interface: eth5 + controller_interface: eth6 + +#admin_network: +# enabled: true +# network_type: bridged #Indicates if this network will be bridged to an interface, or to a bond +# bridged_interface: '' #Interface to bridge to for installer VM +# bond_interfaces: '' #Interfaces to create bond with for installer VM +# compute_interface: nic4 #Interface used for this network on the compute node. Can either be logical nic name like "nic1" or real name like "eth1" +# controller_interface: nic4 #Interface used for this network on the controller node. Can either be logical nic name like "nic1" or real name like "eth1" +# vlan: native #VLAN tag to use, native means none +# usable_ip_range: 192.0.2.11,192.0.2.99 #Usable ip range, if empty entire range is usable, ex. 192.168.1.10,192.168.1.20 +# gateway: 192.0.2.1 #Gateway (only needed when public_network is disabled), if empty it is auto-detected +# provisioner_ip: 192.0.2.1 #installer VM IP, if empty it is the next available IP in the admin subnet +# cidr: 192.0.2.0/24 #subnet in CIDR format 192.168.1.0/24, if empty it will be auto-detected +# dhcp_range: 192.0.2.2,192.0.2.10 #dhcp range for the admin network, if empty it will be automatically provisioned +# introspection_range: 192.0.2.100,192.0.2.120 #Range used for introspection phase (examining nodes) +#private_network: +# enabled: false #If disabled, internal api traffic will collapse to admin_network +#public_network: +# enabled: true #If disabled, public_network traffic will collapse to admin network +# network_type: '' +# bridged_interface: '' +# cidr: 192.168.37.0/24 +# gateway: 192.168.37.1 +# floating_ip_range: 192.168.37.200,192.168.37.220 #Range to allocate to floating IPs for the public network with Neutron +# usable_ip_range: 192.168.37.10,192.168.37.199 #Usable IP range on the public network, usually this is a shared subnet +# provisioner_ip: 192.168.37.1 +#storage_network: +# enabled: false #If disabled, storage_network traffic will collapse to admin network diff --git a/tests/config/network_settings_nic1_reserved.yaml b/tests/config/network_settings_nic1_reserved.yaml new file mode 100644 index 00000000..8abcfc85 --- /dev/null +++ b/tests/config/network_settings_nic1_reserved.yaml @@ -0,0 +1,113 @@ +# This configuration file defines Network Environment for a +# Baremetal Deployment of OPNFV. It contains default values +# for 4 following networks: +# +# - admin +# - private* +# - public +# - storage* +# +# *) optional networks +# +# Any values missing from this configuration file will be +# auto-detected by deployment script from the existing network +# configuration of the jumphost. +# +# Optional networks will be consolidated with the admin network +# if not explicitely configured. +# +# See short description of the networks in the comments below. +# + +# DNS Servers for all nodes, comma delimited list +dns_servers: ["8.8.8.8", "8.8.4.4"] + +# "admin" is the short name for Control Plane Network. +# During OPNFV deployment it is used for node provisioning so +# PXE boot should be enabled for the related interfaces on all +# the nodes in the OPNFV cluster. After the deployment this +# network is used as the OpenStack management network which +# carries e.g. communication between its internal components. +# +admin_network: + enabled: true + network_type: bridged + bridged_interface: '' + bond_interfaces: '' + usable_ip_range: 192.0.2.11,192.0.2.99 + gateway: 192.0.2.1 + provisioner_ip: 192.0.2.1 + cidr: 192.0.2.0/24 + dhcp_range: 192.0.2.2,192.0.2.10 + introspection_range: 192.0.2.100,192.0.2.120 + +# "private" is an optional network used as underlying physical +# network for virtual provider and tenant networks created by +# users. Traffic between virtual machines is carried by this +# network. +# +private_network: + enabled: true + vlan: native + cidr: 11.0.0.0/24 + compute_interface: enp0s4 + controller_interface: nic3 + +# "public" network is used for external connectivity. +# The external network provides Internet access for virtual +# machines. If floating IP range is defined for this network, +# floating IP addresses can be used for accessing virtual +# machines from outside of OPNFV cluster. Also external REST +# API calls use this network. +# +public_network: + enabled: true + network_type: '' + bridged_interface: '' + compute_interface: nic1 + controller_interface: enp0s3 + vlan: native + cidr: 192.168.37.0/24 + gateway: 192.168.37.1 + floating_ip_range: 192.168.37.200,192.168.37.220 + usable_ip_range: 192.168.37.10,192.168.37.199 + provisioner_ip: 192.168.37.1 + +# "storage" is an optional network used by storage backends. +# You can configure this network in order to reduce load on +# Control Plane Network. +# +storage_network: + enabled: true + vlan: native + cidr: 12.0.0.0/24 + compute_interface: eth5 + controller_interface: eth6 + +#admin_network: +# enabled: true +# network_type: bridged #Indicates if this network will be bridged to an interface, or to a bond +# bridged_interface: '' #Interface to bridge to for installer VM +# bond_interfaces: '' #Interfaces to create bond with for installer VM +# overcloud_compute_interface: nic4 #Interface used for this network on the compute node. Can either be logical nic name like "nic1" or real name like "eth1" +# overcloud_controller_interface: nic4 #Interface used for this network on the controller node. Can either be logical nic name like "nic1" or real name like "eth1" +# vlan: native #VLAN tag to use, native means none +# usable_ip_range: 192.0.2.11,192.0.2.99 #Usable ip range, if empty entire range is usable, ex. 192.168.1.10,192.168.1.20 +# gateway: 192.0.2.1 #Gateway (only needed when public_network is disabled), if empty it is auto-detected +# provisioner_ip: 192.0.2.1 #installer VM IP, if empty it is the next available IP in the admin subnet +# cidr: 192.0.2.0/24 #subnet in CIDR format 192.168.1.0/24, if empty it will be auto-detected +# dhcp_range: 192.0.2.2,192.0.2.10 #dhcp range for the admin network, if empty it will be automatically provisioned +# introspection_range: 192.0.2.100,192.0.2.120 #Range used for introspection phase (examining nodes) +#private_network: +# enabled: false #If disabled, internal api traffic will collapse to admin_network +#public_network: +# enabled: true #If disabled, public_network traffic will collapse to admin network +# network_type: '' +# bridged_interface: '' +# cidr: 192.168.37.0/24 +# gateway: 192.168.37.1 +# floating_ip_range: 192.168.37.200,192.168.37.220 #Range to allocate to floating IPs for the public network with Neutron +# usable_ip_range: 192.168.37.10,192.168.37.199 #Usable IP range on the public network, usually this is a shared subnet +# provisioner_ip: 192.168.37.1 +#storage_network: +# enabled: false #If disabled, storage_network traffic will collapse to admin network diff --git a/tests/config/network_settings_nics_not_specified.yaml b/tests/config/network_settings_nics_not_specified.yaml new file mode 100644 index 00000000..e5089435 --- /dev/null +++ b/tests/config/network_settings_nics_not_specified.yaml @@ -0,0 +1,107 @@ +# This configuration file defines Network Environment for a +# Baremetal Deployment of OPNFV. It contains default values +# for 4 following networks: +# +# - admin +# - private* +# - public +# - storage* +# +# *) optional networks +# +# Any values missing from this configuration file will be +# auto-detected by deployment script from the existing network +# configuration of the jumphost. +# +# Optional networks will be consolidated with the admin network +# if not explicitely configured. +# +# See short description of the networks in the comments below. +# + +# DNS Servers for all nodes, comma delimited list +dns_servers: ["8.8.8.8", "8.8.4.4"] + +# "admin" is the short name for Control Plane Network. +# During OPNFV deployment it is used for node provisioning so +# PXE boot should be enabled for the related interfaces on all +# the nodes in the OPNFV cluster. After the deployment this +# network is used as the OpenStack management network which +# carries e.g. communication between its internal components. +# +admin_network: + enabled: true + network_type: bridged + bridged_interface: '' + bond_interfaces: '' + usable_ip_range: 192.0.2.11,192.0.2.99 + gateway: 192.0.2.1 + provisioner_ip: 192.0.2.1 + cidr: 192.0.2.0/24 + dhcp_range: 192.0.2.2,192.0.2.10 + introspection_range: 192.0.2.100,192.0.2.120 + +# "private" is an optional network used as underlying physical +# network for virtual provider and tenant networks created by +# users. Traffic between virtual machines is carried by this +# network. +# +private_network: + enabled: true + vlan: native + cidr: 11.0.0.0/24 + +# "public" network is used for external connectivity. +# The external network provides Internet access for virtual +# machines. If floating IP range is defined for this network, +# floating IP addresses can be used for accessing virtual +# machines from outside of OPNFV cluster. Also external REST +# API calls use this network. +# +public_network: + enabled: true + network_type: '' + bridged_interface: '' + vlan: native + cidr: 192.168.37.0/24 + gateway: 192.168.37.1 + floating_ip_range: 192.168.37.200,192.168.37.220 + usable_ip_range: 192.168.37.10,192.168.37.199 + provisioner_ip: 192.168.37.1 + +# "storage" is an optional network used by storage backends. +# You can configure this network in order to reduce load on +# Control Plane Network. +# +storage_network: + enabled: true + vlan: native + cidr: 12.0.0.0/24 + +#admin_network: +# enabled: true +# network_type: bridged #Indicates if this network will be bridged to an interface, or to a bond +# bridged_interface: '' #Interface to bridge to for installer VM +# bond_interfaces: '' #Interfaces to create bond with for installer VM +# compute_interface: nic4 #Interface used for this network on the compute node. Can either be logical nic name like "nic1" or real name like "eth1" +# controller_interface: nic4 #Interface used for this network on the controller node. Can either be logical nic name like "nic1" or real name like "eth1" +# vlan: native #VLAN tag to use, native means none +# usable_ip_range: 192.0.2.11,192.0.2.99 #Usable ip range, if empty entire range is usable, ex. 192.168.1.10,192.168.1.20 +# gateway: 192.0.2.1 #Gateway (only needed when public_network is disabled), if empty it is auto-detected +# provisioner_ip: 192.0.2.1 #installer VM IP, if empty it is the next available IP in the admin subnet +# cidr: 192.0.2.0/24 #subnet in CIDR format 192.168.1.0/24, if empty it will be auto-detected +# dhcp_range: 192.0.2.2,192.0.2.10 #dhcp range for the admin network, if empty it will be automatically provisioned +# introspection_range: 192.0.2.100,192.0.2.120 #Range used for introspection phase (examining nodes) +#private_network: +# enabled: false #If disabled, internal api traffic will collapse to admin_network +#public_network: +# enabled: true #If disabled, public_network traffic will collapse to admin network +# network_type: '' +# bridged_interface: '' +# cidr: 192.168.37.0/24 +# gateway: 192.168.37.1 +# floating_ip_range: 192.168.37.200,192.168.37.220 #Range to allocate to floating IPs for the public network with Neutron +# usable_ip_range: 192.168.37.10,192.168.37.199 #Usable IP range on the public network, usually this is a shared subnet +# provisioner_ip: 192.168.37.1 +#storage_network: +# enabled: false #If disabled, storage_network traffic will collapse to admin network diff --git a/tests/test_apex_network_settings.py b/tests/test_apex_network_settings.py index a891473f..45c26ed4 100644 --- a/tests/test_apex_network_settings.py +++ b/tests/test_apex_network_settings.py @@ -7,10 +7,16 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -from apex.network_settings import NetworkSettings +from apex.network_settings import ( + NetworkSettings, + NetworkSettingsException, +) -from nose.tools import assert_equal -from nose.tools import assert_is_instance +from nose.tools import ( + assert_equal, + assert_is_instance, + assert_raises +) class TestNetworkSettings(object): @@ -29,7 +35,7 @@ class TestNetworkSettings(object): """This method is run once after _each_ test method is executed""" def test_init(self): - ns = NetworkSettings('../config/network/network_settings.yaml', True) + NetworkSettings('../config/network/network_settings.yaml', True) def test_dump_bash(self): ns = NetworkSettings('../config/network/network_settings.yaml', True) @@ -39,7 +45,38 @@ class TestNetworkSettings(object): def test_get_network_settings(self): ns = NetworkSettings('../config/network/network_settings.yaml', True) assert_is_instance(ns.get_network_settings(), dict) + for role in ['controller', 'compute']: + nic_index = 1 + for network in ['admin_network', 'private_network', + 'public_network', 'storage_network']: + nic = 'nic' + str(nic_index) + assert_equal(ns.nics[role][network], nic) + nic_index += 1 + + def test_get_network_settings_unspecified_nics(self): + ns = NetworkSettings( + '../tests/config/network_settings_nics_not_specified.yaml', + True) + assert_is_instance(ns.get_network_settings(), dict) + for role in ['controller', 'compute']: + nic_index = 1 + for network in ['admin_network', 'private_network', + 'public_network', 'storage_network']: + nic = 'nic' + str(nic_index) + assert_equal(ns.nics[role][network], nic) + nic_index += 1 def test_get_enabled_networks(self): ns = NetworkSettings('../config/network/network_settings.yaml', True) assert_is_instance(ns.get_enabled_networks(), list) + + def test_negative_network_settings(self): + assert_raises(NetworkSettingsException, NetworkSettings, + '../tests/config/network_settings_duplicate_nic.yaml', + True) + assert_raises(NetworkSettingsException, NetworkSettings, + '../tests/config/network_settings_nic1_reserved.yaml', + True) + assert_raises(NetworkSettingsException, NetworkSettings, + '../tests/config/network_settings_missing_required_nic' + '.yaml', True) |