Add test for reconfiguration of nova CPU allocation ratio
Change-Id: I294f7b0372c5edd5b6659236f7077c16dc76c08f Implements: blueprint test-openstack-config-change
This commit is contained in:
parent
44622a8494
commit
4a5fe75465
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
nova_config:
|
||||
DEFAULT/cpu_allocation_ratio:
|
||||
value: "1.0"
|
|
@ -149,13 +149,13 @@ class Common(object):
|
|||
try:
|
||||
_verify_instance_state()
|
||||
except AssertionError:
|
||||
LOGGER.debug('Instance is not active, '
|
||||
'lets provide it the last chance and sleep 60 sec')
|
||||
LOGGER.debug('Instance is not {0}, lets provide it the last '
|
||||
'chance and sleep 60 sec'.format(expected_state))
|
||||
time.sleep(60)
|
||||
_verify_instance_state()
|
||||
|
||||
def delete_instance(self, server):
|
||||
LOGGER.debug('Try to create instance')
|
||||
LOGGER.debug('Try to delete instance')
|
||||
self.nova.servers.delete(server)
|
||||
|
||||
def create_flavor(self, name, ram, vcpus, disk, flavorid="auto"):
|
||||
|
|
|
@ -18,6 +18,8 @@ from proboscis import test
|
|||
from fuelweb_test.helpers.decorators import log_snapshot_after_test
|
||||
from fuelweb_test.helpers import os_actions
|
||||
from fuelweb_test.helpers import utils
|
||||
from fuelweb_test import settings
|
||||
from fuelweb_test.tests.base_test_case import SetupEnvironment
|
||||
from fuelweb_test.tests.base_test_case import TestBasic
|
||||
from fuelweb_test.tests.test_neutron import NeutronVlanHa
|
||||
|
||||
|
@ -44,6 +46,8 @@ def get_structured_config_dict(config):
|
|||
helper(key, '/etc/neutron/neutron.conf')
|
||||
if key == 'neutron_plugin_ml2':
|
||||
helper(key, '/etc/neutron/plugins/ml2/ml2_conf.ini')
|
||||
if key == 'nova_config':
|
||||
helper(key, '/etc/nova/nova.conf')
|
||||
return structured_conf
|
||||
|
||||
|
||||
|
@ -130,3 +134,119 @@ class ServicesReconfiguration(TestBasic):
|
|||
raise Exception("New configuration was not applied")
|
||||
|
||||
self.env.make_snapshot("reconfigure_ml2_vlan_range", is_make=True)
|
||||
|
||||
@test(depends_on=[SetupEnvironment.prepare_slaves_5],
|
||||
groups=["services_reconfiguration", "reconfigure_overcommit_ratio"])
|
||||
@log_snapshot_after_test
|
||||
def reconfigure_overcommit_ratio(self):
|
||||
"""Tests for reconfiguration nova CPU overcommit ratio.
|
||||
|
||||
Scenario:
|
||||
1. Create cluster
|
||||
2. Add 1 node with compute role
|
||||
3. Add 3 nodes with controller role
|
||||
4. Deploy the cluster
|
||||
5. Verify network
|
||||
6. Run OSTF
|
||||
7. Verify configuration file on each controller
|
||||
8. Apply new CPU overcommit ratio for each controller
|
||||
9. Verify deployment task is finished
|
||||
10. Verify nova-scheduler services uptime
|
||||
11. Boot instances with flavor that occupy all CPU
|
||||
12. Boot extra instance and catch the error
|
||||
|
||||
Snapshot: reconfigure_overcommit_ratio
|
||||
|
||||
"""
|
||||
self.env.revert_snapshot("ready_with_5_slaves")
|
||||
|
||||
self.show_step(1)
|
||||
cluster_id = self.fuel_web.create_cluster(
|
||||
name=self.__class__.__name__,
|
||||
mode=settings.DEPLOYMENT_MODE,
|
||||
settings={
|
||||
"net_provider": 'neutron',
|
||||
"net_segment_type": settings.NEUTRON_SEGMENT_TYPE,
|
||||
}
|
||||
)
|
||||
self.show_step(2)
|
||||
self.show_step(3)
|
||||
|
||||
self.fuel_web.update_nodes(
|
||||
cluster_id,
|
||||
{
|
||||
'slave-01': ['compute'],
|
||||
'slave-02': ['controller'],
|
||||
'slave-03': ['controller'],
|
||||
'slave-04': ['controller']
|
||||
})
|
||||
|
||||
self.show_step(4)
|
||||
self.fuel_web.deploy_cluster_wait(cluster_id, check_services=False)
|
||||
|
||||
self.show_step(5)
|
||||
self.fuel_web.verify_network(cluster_id)
|
||||
|
||||
self.show_step(6)
|
||||
self.fuel_web.run_ostf(cluster_id=cluster_id)
|
||||
|
||||
self.show_step(7)
|
||||
cluster_id = self.fuel_web.get_last_created_cluster()
|
||||
config = utils.get_config_template('nova_cpu')
|
||||
structured_config = get_structured_config_dict(config)
|
||||
self.fuel_web.client.upload_configuration(config, cluster_id)
|
||||
|
||||
service_name = "nova-scheduler"
|
||||
|
||||
controllers = self.fuel_web.get_nailgun_cluster_nodes_by_roles(
|
||||
cluster_id, ['controller'])
|
||||
controllers = [x['ip'] for x in controllers]
|
||||
uptimes = dict(zip(controllers, range(len(controllers))))
|
||||
for controller in controllers:
|
||||
with self.env.d_env.get_ssh_to_remote(controller) as remote:
|
||||
uptimes[controller] = \
|
||||
utils.get_process_uptime(remote, service_name)
|
||||
task = self.fuel_web.client.apply_configuration(cluster_id)
|
||||
|
||||
self.show_step(8)
|
||||
self.fuel_web.assert_task_success(task, timeout=300, interval=5)
|
||||
|
||||
self.show_step(9)
|
||||
self.show_step(10)
|
||||
|
||||
for controller in controllers:
|
||||
with self.env.d_env.get_ssh_to_remote(controller) as remote:
|
||||
uptime = utils.get_process_uptime(remote, service_name)
|
||||
asserts.assert_true(uptime <= uptimes[controller],
|
||||
"Service {0} was not restarted "
|
||||
"on {1}".format(controller, service_name))
|
||||
for configpath, params in structured_config.items():
|
||||
result = remote.open(configpath)
|
||||
conf_for_check = utils.get_ini_config(result)
|
||||
for param in params:
|
||||
utils.check_config(conf_for_check,
|
||||
configpath,
|
||||
param['section'],
|
||||
param['option'],
|
||||
param['value'])
|
||||
|
||||
self.show_step(11)
|
||||
os_conn = os_actions.OpenStackActions(
|
||||
self.fuel_web.get_public_vip(cluster_id))
|
||||
|
||||
net_name = self.fuel_web.get_cluster_predefined_networks_name(
|
||||
cluster_id)['private_net']
|
||||
server = os_conn.create_instance(neutron_network=True,
|
||||
label=net_name,
|
||||
server_name="Test_reconfig",
|
||||
vcpus=2)
|
||||
os_conn.verify_instance_status(server, 'ACTIVE')
|
||||
self.show_step(12)
|
||||
excessive_server = os_conn.create_instance(neutron_network=True,
|
||||
label=net_name,
|
||||
server_name="excessive_VM",
|
||||
flavor_name="overcommit")
|
||||
os_conn.verify_instance_status(excessive_server, 'ERROR')
|
||||
os_conn.delete_instance(excessive_server)
|
||||
self.env.make_snapshot("reconfigure_overcommit_ratio",
|
||||
is_make=True)
|
||||
|
|
Loading…
Reference in New Issue