Working with noop for vif_pool_driver
Update vif_pool_driver to noop and test that for every new pod only one neutron port is created Update driver to the previous value and test that for every new pod number of neutron ports is equal to ports_pool_batch value Depends-On: If06e540a74f7b7f74d84b5cff739f31889141c7d Change-Id: I98eaefd261d865bef5e586b2e7d286585cbcc6a5
This commit is contained in:
parent
7f84979019
commit
6f3f24123d
|
@ -194,8 +194,10 @@ class BaseKuryrScenarioTest(manager.NetworkScenarioTest):
|
|||
return condition.status
|
||||
|
||||
@classmethod
|
||||
def get_pod_readiness(cls, pod_name, namespace="default"):
|
||||
return cls.get_readiness_state(pod_name, namespace=namespace)
|
||||
def get_pod_readiness(cls, pod_name, namespace="default",
|
||||
container_name=None):
|
||||
return cls.get_readiness_state(pod_name, namespace=namespace,
|
||||
container_name=container_name)
|
||||
|
||||
@classmethod
|
||||
def get_container_readiness(cls, pod_name, namespace="default",
|
||||
|
@ -860,6 +862,24 @@ class BaseKuryrScenarioTest(manager.NetworkScenarioTest):
|
|||
self.k8s_client.CoreV1Api().replace_namespaced_config_map(
|
||||
namespace=namespace, name=name, body=conf_map)
|
||||
|
||||
@classmethod
|
||||
def get_config_map_ini_value(
|
||||
cls, name, conf_for_get, section, keys,
|
||||
namespace=CONF.kuryr_kubernetes.kube_system_namespace):
|
||||
# get the config map ini values according to the provided keys
|
||||
port_pool_dict = dict()
|
||||
conf_map = cls.k8s_client.CoreV1Api().read_namespaced_config_map(
|
||||
namespace=namespace, name=name)
|
||||
conf_parser = six.moves.configparser.ConfigParser()
|
||||
conf_parser.readfp(six.moves.StringIO(conf_map.data[conf_for_get]))
|
||||
for key in keys:
|
||||
try:
|
||||
port_pool_dict[key] = conf_parser.get(section, key)
|
||||
except six.moves.configparser.NoOptionError:
|
||||
port_pool_dict[key] = ''
|
||||
|
||||
return port_pool_dict
|
||||
|
||||
def restart_kuryr_controller(self):
|
||||
system_namespace = CONF.kuryr_kubernetes.kube_system_namespace
|
||||
kube_system_pods = self.get_pod_name_list(
|
||||
|
@ -893,7 +913,7 @@ class BaseKuryrScenarioTest(manager.NetworkScenarioTest):
|
|||
# kuryr-controller is ready
|
||||
res = test_utils.call_until_true(
|
||||
self.get_pod_readiness, 30, 1, kube_system_pod,
|
||||
namespace=system_namespace)
|
||||
namespace=system_namespace, container_name='controller')
|
||||
self.assertTrue(res, 'Timed out waiting for '
|
||||
'kuryr-controller to reload pools.')
|
||||
|
||||
|
|
|
@ -25,6 +25,9 @@ CONF = config.CONF
|
|||
|
||||
|
||||
class TestPortPoolScenario(base.BaseKuryrScenarioTest):
|
||||
CONFIG_MAP_NAME = 'kuryr-config'
|
||||
CONF_TO_UPDATE = 'kuryr.conf'
|
||||
VIF_POOL_SECTION = 'vif_pool'
|
||||
|
||||
@classmethod
|
||||
def skip_checks(cls):
|
||||
|
@ -36,6 +39,14 @@ class TestPortPoolScenario(base.BaseKuryrScenarioTest):
|
|||
raise cls.skipException(
|
||||
"Port pool feature should be enabled to run these tests.")
|
||||
|
||||
@classmethod
|
||||
def resource_setup(cls):
|
||||
super(TestPortPoolScenario, cls).resource_setup()
|
||||
cls.PORTS_POOL_DEFAULT_DICT = cls.get_config_map_ini_value(
|
||||
name=cls.CONFIG_MAP_NAME, conf_for_get=cls.CONF_TO_UPDATE,
|
||||
section=cls.VIF_POOL_SECTION, keys=[
|
||||
'ports_pool_batch', 'ports_pool_min', 'ports_pool_max'])
|
||||
|
||||
def get_subnet_id_for_ns(self, namespace_name):
|
||||
subnet_name = 'ns/' + namespace_name + '-subnet'
|
||||
subnets_list = self.os_admin.subnets_client.list_subnets()
|
||||
|
@ -53,7 +64,6 @@ class TestPortPoolScenario(base.BaseKuryrScenarioTest):
|
|||
# check the original length of list of ports for new ns
|
||||
port_list_num = len(self.os_admin.ports_client.list_ports(
|
||||
fixed_ips='subnet_id=%s' % subnet_id)['ports'])
|
||||
|
||||
# create a pod to test the port pool increase
|
||||
pod_name1, _ = self.create_pod(namespace=namespace_name,
|
||||
labels={'type': 'demo'})
|
||||
|
@ -61,8 +71,11 @@ class TestPortPoolScenario(base.BaseKuryrScenarioTest):
|
|||
# port number should increase by ports_pool_batch value
|
||||
updated_port_list_num = len(self.os_admin.ports_client.list_ports(
|
||||
fixed_ips='subnet_id=%s' % subnet_id)['ports'])
|
||||
|
||||
num_to_compare = updated_port_list_num - CONF.vif_pool.ports_pool_batch
|
||||
LOG.info("Updated_port_list_num = %s while ports_pool_batch_conf = %s"
|
||||
% (updated_port_list_num, self.PORTS_POOL_DEFAULT_DICT[
|
||||
'ports_pool_batch']))
|
||||
num_to_compare = updated_port_list_num - int(
|
||||
self.PORTS_POOL_DEFAULT_DICT['ports_pool_batch'])
|
||||
self.assertEqual(num_to_compare, port_list_num)
|
||||
|
||||
# create additional pod
|
||||
|
@ -107,29 +120,26 @@ class TestPortPoolScenario(base.BaseKuryrScenarioTest):
|
|||
@decorators.idempotent_id('bddd5441-1244-429d-a125-b55ddfb134a9')
|
||||
@lockutils.synchronized('port-pool-restarts')
|
||||
def test_port_pool_update(self):
|
||||
UPDATED_POOL_BATCH = 5
|
||||
CONFIG_MAP_NAME = 'kuryr-config'
|
||||
CONF_TO_UPDATE = 'kuryr.conf'
|
||||
UPDATED_POOL_BATCH = 3
|
||||
SECTION_TO_UPDATE = 'vif_pool'
|
||||
|
||||
# Check resources are created
|
||||
namespace_name, namespace = self.create_namespace()
|
||||
self.addCleanup(self.delete_namespace, namespace_name)
|
||||
subnet_id = self.get_subnet_id_for_ns(namespace_name)
|
||||
|
||||
self.update_config_map_ini_section_and_restart(
|
||||
name=CONFIG_MAP_NAME,
|
||||
conf_to_update=CONF_TO_UPDATE,
|
||||
name=self.CONFIG_MAP_NAME,
|
||||
conf_to_update=self.CONF_TO_UPDATE,
|
||||
section=SECTION_TO_UPDATE,
|
||||
ports_pool_max=0,
|
||||
ports_pool_batch=UPDATED_POOL_BATCH,
|
||||
ports_pool_min=1)
|
||||
self.addCleanup(
|
||||
self.update_config_map_ini_section_and_restart, CONFIG_MAP_NAME,
|
||||
CONF_TO_UPDATE, SECTION_TO_UPDATE,
|
||||
ports_pool_batch=CONF.vif_pool.ports_pool_batch,
|
||||
ports_pool_max=CONF.vif_pool.ports_pool_max,
|
||||
ports_pool_min=CONF.vif_pool.ports_pool_min)
|
||||
self.update_config_map_ini_section_and_restart,
|
||||
self.CONFIG_MAP_NAME, self.CONF_TO_UPDATE, SECTION_TO_UPDATE,
|
||||
ports_pool_batch=self.PORTS_POOL_DEFAULT_DICT['ports_pool_batch'],
|
||||
ports_pool_max=self.PORTS_POOL_DEFAULT_DICT['ports_pool_max'],
|
||||
ports_pool_min=self.PORTS_POOL_DEFAULT_DICT['ports_pool_min'])
|
||||
|
||||
# check the original length of list of ports for new ns
|
||||
port_list_num = len(self.os_admin.ports_client.list_ports(
|
||||
|
@ -161,3 +171,83 @@ class TestPortPoolScenario(base.BaseKuryrScenarioTest):
|
|||
dst_ip=pod_ip)]
|
||||
self.assertEqual(self.exec_command_in_pod(
|
||||
pod_name2, cmd, namespace=namespace_name), '0')
|
||||
|
||||
@decorators.idempotent_id('bddd5441-1244-459d-a133-b56ddfb147a6')
|
||||
@lockutils.synchronized('port-pool-restarts')
|
||||
def test_port_pool_noop_update(self):
|
||||
KUBERNETES_SECTION = 'kubernetes'
|
||||
VIF_POOL_SECTION = 'vif_pool'
|
||||
|
||||
# Check resources are created
|
||||
namespace_name, namespace = self.create_namespace()
|
||||
self.addCleanup(self.delete_namespace, namespace_name)
|
||||
subnet_id = self.get_subnet_id_for_ns(namespace_name)
|
||||
|
||||
# Read the value of the drivers
|
||||
update_pools_vif_drivers = self.get_config_map_ini_value(
|
||||
name=self.CONFIG_MAP_NAME, conf_for_get=self.CONF_TO_UPDATE,
|
||||
section=VIF_POOL_SECTION,
|
||||
keys=['pools_vif_drivers'])['pools_vif_drivers']
|
||||
vif_pool_driver = self.get_config_map_ini_value(
|
||||
name=self.CONFIG_MAP_NAME, conf_for_get=self.CONF_TO_UPDATE,
|
||||
section=KUBERNETES_SECTION,
|
||||
keys=['vif_pool_driver'])['vif_pool_driver']
|
||||
|
||||
if update_pools_vif_drivers:
|
||||
self.update_config_map_ini_section(
|
||||
name=self.CONFIG_MAP_NAME,
|
||||
conf_to_update=self.CONF_TO_UPDATE,
|
||||
section=VIF_POOL_SECTION,
|
||||
pools_vif_drivers='')
|
||||
self.addCleanup(
|
||||
self.update_config_map_ini_section,
|
||||
self.CONFIG_MAP_NAME, self.CONF_TO_UPDATE, VIF_POOL_SECTION,
|
||||
pools_vif_drivers=update_pools_vif_drivers)
|
||||
|
||||
self.update_config_map_ini_section_and_restart(
|
||||
name=self.CONFIG_MAP_NAME,
|
||||
conf_to_update=self.CONF_TO_UPDATE,
|
||||
section=KUBERNETES_SECTION,
|
||||
vif_pool_driver='noop')
|
||||
self.addCleanup(
|
||||
self.update_config_map_ini_section_and_restart,
|
||||
self.CONFIG_MAP_NAME, self.CONF_TO_UPDATE, KUBERNETES_SECTION,
|
||||
vif_pool_driver=vif_pool_driver)
|
||||
|
||||
# check the original length of list of ports for new ns
|
||||
port_list_num = len(self.os_admin.ports_client.list_ports(
|
||||
fixed_ips='subnet_id=%s' % subnet_id)['ports'])
|
||||
# create a pod to test the port pool increase by 1
|
||||
self.create_pod(namespace=namespace_name, labels={'type': 'demo'})
|
||||
|
||||
# port number should increase by 1
|
||||
new_port_list_num = len(self.os_admin.ports_client.list_ports(
|
||||
fixed_ips='subnet_id=%s' % subnet_id)['ports'])
|
||||
|
||||
self.assertEqual(port_list_num+1, new_port_list_num)
|
||||
|
||||
# update pools_vif_drivers and vif_pool_driver to the previous values
|
||||
if update_pools_vif_drivers:
|
||||
self.update_config_map_ini_section(
|
||||
name=self.CONFIG_MAP_NAME,
|
||||
conf_to_update=self.CONF_TO_UPDATE,
|
||||
section=VIF_POOL_SECTION,
|
||||
pools_vif_drivers='')
|
||||
|
||||
self.update_config_map_ini_section_and_restart(
|
||||
name=self.CONFIG_MAP_NAME,
|
||||
conf_to_update=self.CONF_TO_UPDATE,
|
||||
section=KUBERNETES_SECTION,
|
||||
vif_pool_driver=vif_pool_driver)
|
||||
|
||||
# check that everything works as before when returning back from noop
|
||||
# configuration for vif_pool_driver
|
||||
self.create_pod(namespace=namespace_name,
|
||||
affinity={'podAffinity': consts.POD_AFFINITY})
|
||||
|
||||
# port number should increase by default ports_pool_batch value
|
||||
updated_port_list_num = len(self.os_admin.ports_client.list_ports(
|
||||
fixed_ips='subnet_id=%s' % subnet_id)['ports'])
|
||||
num_to_compare = updated_port_list_num - int(
|
||||
self.PORTS_POOL_DEFAULT_DICT['ports_pool_batch'])
|
||||
self.assertEqual(num_to_compare, new_port_list_num)
|
||||
|
|
Loading…
Reference in New Issue