Save information about the deployment in the database.

This test for check that task save information about the deployment
in the database was done correctly.
Also it check that cluster settings the same before and after deploy.

Closes bug: 1564363

Change-Id: I706e24cf05e9151eb8628f866757067f61c8034b
This commit is contained in:
Mikhail Samoylov 2016-04-07 15:33:17 +03:00
parent 19c47926a6
commit 8401359bf3
3 changed files with 76 additions and 1 deletions

View File

@ -690,4 +690,4 @@ Test for ssl components
Test for network outage
-----------------------
.. automodule:: fuelweb_test.tests.tests_strength.test_network_outage
:members:
:members:

View File

@ -806,11 +806,17 @@ class FuelWebClient(object):
def deploy_cluster_wait(self, cluster_id, is_feature=False,
timeout=help_data.DEPLOYMENT_TIMEOUT, interval=30,
check_services=True):
cluster_attributes = self.client.get_cluster_attributes(cluster_id)
self.client.generate_ip_address_before_deploy_start(cluster_id)
network_settings = self.client.get_networks(cluster_id)
if not is_feature and help_data.DEPLOYMENT_RETRIES == 1:
logger.info('Deploy cluster %s', cluster_id)
task = self.deploy_cluster(cluster_id)
self.assert_task_success(task, interval=interval, timeout=timeout)
self.check_deploy_state(cluster_id, check_services)
self.check_cluster_settings(cluster_id, cluster_attributes)
self.check_network_settings(cluster_id, network_settings)
self.check_deployment_info_save_in_db(cluster_id)
return
logger.info('Provision nodes of a cluster %s', cluster_id)
@ -823,6 +829,42 @@ class FuelWebClient(object):
task = self.client.deploy_nodes(cluster_id)
self.assert_task_success(task, timeout=timeout, interval=interval)
self.check_deploy_state(cluster_id, check_services)
self.check_cluster_settings(cluster_id, cluster_attributes)
self.check_network_settings(cluster_id, network_settings)
self.check_deployment_info_save_in_db(cluster_id)
@logwrap
def check_cluster_settings(self, cluster_id, cluster_attributes):
task_id = self.client.get_last_task_id(cluster_id, 'deployment')
cluster_settings = self.client.get_cluster_settings(task_id)
logger.debug('Cluster settings before deploy {}'.format(
cluster_attributes))
logger.debug('Cluster settings after deploy {}'.format(
cluster_settings))
assert_equal(cluster_attributes, cluster_settings,
message='Cluser attributes before deploy are not equal'
' with cluster settings after deploy')
@logwrap
def check_network_settings(self, cluster_id, network_settings):
task_id = self.client.get_last_task_id(cluster_id, 'deployment')
network_configuration = self.client.get_network_configuration(task_id)
logger.debug('Network settings before deploy {}'.format(
network_settings))
logger.debug('Network settings after deploy {}'.format(
network_configuration))
assert_equal(network_settings, network_configuration,
message='Network settings from cluster configuration '
'and deployment task are not equal')
@logwrap
def check_deployment_info_save_in_db(self, cluster_id):
try:
task_id = self.client.get_last_task_id(cluster_id, 'deployment')
self.client.get_deployment_info(task_id)
except Exception:
logger.error(
"Cannot get infromation about deployment from database")
def deploy_cluster_wait_progress(self, cluster_id, progress,
return_task=None):

View File

@ -68,6 +68,12 @@ class NailgunClient(object):
)
)
@logwrap
def generate_ip_address_before_deploy_start(self, cluster_id):
self.client.get(
'/api/v1/clusters/{}/orchestrator/deployment/defaults/'.format(
cluster_id))
@logwrap
@json_parse
def verify_networks(self, cluster_id):
@ -167,6 +173,15 @@ class NailgunClient(object):
def get_tasks(self):
return self.client.get("/api/tasks")
@logwrap
def get_last_task_id(self, cluster_id, task_name):
tasks = self.get_tasks()
tasks_ids = []
for task in tasks:
if task['cluster'] == cluster_id and task['name'] == task_name:
tasks_ids.append(task['id'])
return min(tasks_ids)
@logwrap
@json_parse
def get_releases(self):
@ -694,3 +709,21 @@ class NailgunClient(object):
"""
url = '/api/v1/nodes/{}/attributes/'.format(node_id)
return self.client.get(url)
@logwrap
@json_parse
def get_deployment_info(self, task_id):
return self.client.get(
'/api/transactions/{}/deployment_info'.format(task_id))
@logwrap
@json_parse
def get_cluster_settings(self, task_id):
return self.client.get(
'/api/transactions/{}/settings'.format(task_id))
@logwrap
@json_parse
def get_network_configuration(self, task_id):
return self.client.get(
'/api/transactions/{}/network_configuration/'.format(task_id))