test case added to test reserved ip addresses are not assigned to server

Change-Id: I02039c1f15dddad8b1d4862811f186f16d67a097
This commit is contained in:
Basavaraj Lamani 2019-01-03 16:53:52 +05:30
parent 64141f0afa
commit a26496abc4
2 changed files with 90 additions and 20 deletions

View File

@ -88,7 +88,7 @@ class TestFixedIPsMultiple(NetworkingComputeFixture):
"""
self._add_fixed_ips_network(self.server, self.pub_net_id,
number_fixed_ips=self.FIXED_IPS_TO_ADD)
self._remove_all_ips(self.server, self.pub_net_id,
self._remove_all_ips_re_add_ips(self.server, self.pub_net_id,
self.ini_ips_count)
@tags('admin', 'negative')
@ -98,7 +98,7 @@ class TestFixedIPsMultiple(NetworkingComputeFixture):
"""
self._add_fixed_ips_network(self.server, self.pri_net_id,
number_fixed_ips=self.FIXED_IPS_TO_ADD)
self._remove_all_ips(self.server, self.pri_net_id,
self._remove_all_ips_re_add_ips(self.server, self.pri_net_id,
self.ini_ips_count)
@tags('admin', 'negative')
@ -108,7 +108,7 @@ class TestFixedIPsMultiple(NetworkingComputeFixture):
"""
self._add_fixed_ips_network(self.server, self.iso_net_id,
number_fixed_ips=self.FIXED_IPS_TO_ADD)
self._remove_all_ips(self.server, self.iso_net_id,
self._remove_all_ips_re_add_ips(self.server, self.iso_net_id,
self.ini_ips_count)
def _add_fixed_ips_network(self, server, network, number_fixed_ips):
@ -116,10 +116,10 @@ class TestFixedIPsMultiple(NetworkingComputeFixture):
for _ in range(number_fixed_ips):
self.servers_client.add_fixed_ip(server.id, network)
def _remove_all_ips(self, server, port_type, ini_ips_count):
def _remove_all_ips_re_add_ips(self, server, port_type, ini_ips_count):
"""
Tries to remove all network IPs from a server and verifies
that the last IP of a network can NOT be removed
Tries to remove all network IPs from a server and re-adds
the ip based on port_type
"""
persona_args = {"server": self.server, "keypair": self.keypair,
"pnet": True, "snet": True, "inet": True,
@ -147,17 +147,13 @@ class TestFixedIPsMultiple(NetworkingComputeFixture):
removed_ip_response = self.servers_client.\
remove_fixed_ip(self.server.id, ip_to_remove)
ip_count -= 1
if ip_count >= 1:
self.assertEqual(removed_ip_response.status_code,
NeutronResponseCodes.REMOVE_FIXED_IP,
msg=self.rem_msg.format(
port_type, self.server.id,
removed_ip_response))
else:
msg = ('Tried to remove last IP of {0} network in server {1} '
'Unexpected Response: {2}'.
format(port_type, server.id,
removed_ip_response.status_code))
self.assertEqual(removed_ip_response.status_code,
NeutronResponseCodes.REMOVE_FIXED_IP, msg)
self.assertServerPersonaFixedIps(self.server_persona)
self.assertEqual(removed_ip_response.status_code,
NeutronResponseCodes.REMOVE_FIXED_IP,
msg=self.rem_msg.format(
port_type, self.server.id,
removed_ip_response))
self.assertServerPersonaFixedIps(self.server_persona)
# Re-adding ip's to the server and verifying fixed ip's count
self._add_fixed_ips_network(server, port_type,
number_fixed_ips=self.FIXED_IPS_TO_ADD)
self.assertServerPersonaFixedIps(self.server_persona)

View File

@ -0,0 +1,74 @@
"""
Copyright 2018 Rackspace
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 cafe.drivers.unittest.decorators import tags
from cloudcafe.networking.networks.common.constants \
import IPExcludePolicies
from cloudcafe.networking.networks.personas import ServerPersona
from cloudroast.networking.networks.fixtures import NetworkingComputeFixture
class TestNetworkIPs(NetworkingComputeFixture):
"""
Test Networks functionality
"""
NAMES_PREFIX = "networks_ips"
@classmethod
def setUpClass(cls):
"""
Class setUp - creating the test network and server
"""
super(TestNetworkIPs, cls).setUpClass()
network_name = 'network_{0}'.format(cls.NAMES_PREFIX)
cls.network = cls.create_server_network(name=network_name, ipv4=True)
cls.delete_networks.append(cls.network.id)
keypair_name = 'key_{0}'.format(cls.NAMES_PREFIX)
cls.keypair = cls.create_keypair(name=keypair_name)
cls.delete_keypairs.append(cls.keypair.name)
svr_name = 'svr_{0}'.format(cls.NAMES_PREFIX)
network_ids = [cls.public_network_id, cls.service_network_id,
cls.network.id]
cls.server = cls.create_test_server(
name=svr_name, key_name=cls.keypair.name,
network_ids=network_ids, active_server=True)
cls.server_persona = ServerPersona(
server=cls.server, pnet=True, snet=True, inet=True,
network=cls.network, keypair=cls.keypair, ssh_username='root')
@tags('smoke', 'positive', 'ip_policies')
def test_server_ips(self):
"""
Verifying Melange does NOT hands out reserved addresses to servers.
This test case assumes that we are using /24 subnet.
"""
# Get and verify server addresses
pub_ip = self.server_persona.pnet_fix_ipv4
pri_ip = self.server_persona.snet_fix_ipv4
iso_ip = self.server_persona.inet_fix_ipv4
# Verify the IPv4 addresses do NOT end with a reserved address
for ip, label, exclude in [(pub_ip, 'public',
IPExcludePolicies.publicnet),
(pri_ip, 'private',
IPExcludePolicies.servicenet),
(iso_ip, 'isolated',
IPExcludePolicies.isolatednet)]:
result = ip[0].split('.')
msg = ('Unexpected {0} IPv4 {1} address at Server {2}. Addresses '
'ending with {3} are reserved.').format(
label, ip[0], self.server.id, exclude)
# This test case assumes that we are using /24 subnet.
self.assertNotIn(result[-1], exclude, msg)