Version info from OSWL is used in the CSV report
Proper name for fuel_version info is used in the CSV reports generation process. If version_info is not provided by OSWL, than OpenStack version, OS name and release are fetched from cluster data. Change-Id: If3e7442a5b336af5c1a4f5c257f280e332ab81cf Closes-Bug: #1547565
This commit is contained in:
parent
e9ec2111a7
commit
91ea0c8876
@ -96,12 +96,12 @@ class OswlStatsToCsv(object):
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
def _add_oswl_to_clusters_versions_cache(self, oswl, clusters_versions):
|
def _add_oswl_to_clusters_versions_cache(self, oswl, clusters_versions):
|
||||||
"""Adds oswl clusters info into clusters_versions cache.
|
"""Adds oswl clusters version_info into clusters_versions cache.
|
||||||
|
|
||||||
:param oswl: OSWL DB object
|
:param oswl: OSWL DB object
|
||||||
:type oswl: fuel_analytics.api.db.model.OpenStackWorkloadStats
|
:type oswl: fuel_analytics.api.db.model.OpenStackWorkloadStats
|
||||||
:param clusters_versions: cache for saving cluster versions with
|
:param clusters_versions: cache for saving cluster versions with
|
||||||
structure {mn_uid: {cluster_id: fuel_release}}
|
structure {mn_uid: {cluster_id: version_info}}
|
||||||
:type clusters_versions: dict
|
:type clusters_versions: dict
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -119,9 +119,18 @@ class OswlStatsToCsv(object):
|
|||||||
clusters_versions[mn_uid] = {}
|
clusters_versions[mn_uid] = {}
|
||||||
|
|
||||||
for cluster in oswl.clusters:
|
for cluster in oswl.clusters:
|
||||||
fuel_release = cluster.get('fuel_release')
|
fuel_version = cluster.get('fuel_version')
|
||||||
if fuel_release:
|
if not fuel_version:
|
||||||
clusters_versions[mn_uid][cluster['id']] = fuel_release
|
continue
|
||||||
|
|
||||||
|
version_info = {'fuel_version': fuel_version}
|
||||||
|
release = cluster.get('release')
|
||||||
|
if release:
|
||||||
|
version_info['release_version'] = release.get('version')
|
||||||
|
version_info['release_os'] = release.get('os')
|
||||||
|
version_info['release_name'] = release.get('name')
|
||||||
|
|
||||||
|
clusters_versions[mn_uid][cluster['id']] = version_info
|
||||||
|
|
||||||
def handle_empty_version_info(self, oswl, clusters_versions):
|
def handle_empty_version_info(self, oswl, clusters_versions):
|
||||||
"""Handles empty version info in oswl object
|
"""Handles empty version info in oswl object
|
||||||
@ -129,8 +138,8 @@ class OswlStatsToCsv(object):
|
|||||||
For OSWLs with empty version_info data we compose version_info
|
For OSWLs with empty version_info data we compose version_info
|
||||||
from InstallationStructure data and assign it to oswl object.
|
from InstallationStructure data and assign it to oswl object.
|
||||||
We bound InstallationStructure.structure.clusters to the oswl
|
We bound InstallationStructure.structure.clusters to the oswl
|
||||||
and extract fuel_release from clusters data. If fuel_release
|
and extract fuel_version and fuel_release from clusters data.
|
||||||
info doesn't provided by clusters data then
|
If fuel_version info doesn't provided by clusters data then
|
||||||
InstallationStructure.structure.fuel_release is used.
|
InstallationStructure.structure.fuel_release is used.
|
||||||
|
|
||||||
:param oswl: OSWL DB object
|
:param oswl: OSWL DB object
|
||||||
@ -147,18 +156,19 @@ class OswlStatsToCsv(object):
|
|||||||
mn_uid = oswl.master_node_uid
|
mn_uid = oswl.master_node_uid
|
||||||
cluster_id = oswl.cluster_id
|
cluster_id = oswl.cluster_id
|
||||||
|
|
||||||
# Fetching fuel_release info from cache
|
# Fetching version_info info from cache
|
||||||
fuel_release = clusters_versions.get(mn_uid, {}).get(cluster_id)
|
version_info = clusters_versions.get(mn_uid, {}).get(cluster_id)
|
||||||
|
|
||||||
# If clusters data doesn't contain fuel_release info we are using
|
# If clusters data doesn't contain fuel_version we are using
|
||||||
# info from installation info
|
# data from installation info
|
||||||
if fuel_release is None:
|
if not version_info:
|
||||||
fuel_release = oswl.fuel_release_from_inst_info or {}
|
release = oswl.fuel_release_from_inst_info or {}
|
||||||
fuel_release = fuel_release.get('release')
|
version_info = {
|
||||||
|
'fuel_version': release.get('release'),
|
||||||
|
'release_version': release.get('openstack_version')
|
||||||
|
}
|
||||||
|
|
||||||
oswl.version_info = {
|
oswl.version_info = version_info
|
||||||
'fuel_release': fuel_release
|
|
||||||
}
|
|
||||||
|
|
||||||
def get_flatten_resources(self, resource_type, oswl_keys_paths,
|
def get_flatten_resources(self, resource_type, oswl_keys_paths,
|
||||||
resource_keys_paths, oswls):
|
resource_keys_paths, oswls):
|
||||||
|
@ -166,7 +166,7 @@ OSWL_SKELETONS = {
|
|||||||
'stats_on_date': None,
|
'stats_on_date': None,
|
||||||
'resource_type': None,
|
'resource_type': None,
|
||||||
'version_info': {
|
'version_info': {
|
||||||
'fuel_release': None,
|
'fuel_version': None,
|
||||||
'release_version': None,
|
'release_version': None,
|
||||||
'release_os': None,
|
'release_os': None,
|
||||||
'release_name': None,
|
'release_name': None,
|
||||||
|
@ -47,7 +47,7 @@ class OswlStatsToCsvTest(OswlTest, DbTest):
|
|||||||
self.assertNotIn(['external_id'], oswl_keys_paths)
|
self.assertNotIn(['external_id'], oswl_keys_paths)
|
||||||
self.assertNotIn(['updated_time'], oswl_keys_paths)
|
self.assertNotIn(['updated_time'], oswl_keys_paths)
|
||||||
self.assertNotIn(['release'], oswl_keys_paths)
|
self.assertNotIn(['release'], oswl_keys_paths)
|
||||||
self.assertIn(['version_info', 'fuel_release'], oswl_keys_paths)
|
self.assertIn(['version_info', 'fuel_version'], oswl_keys_paths)
|
||||||
self.assertIn(['version_info', 'release_version'],
|
self.assertIn(['version_info', 'release_version'],
|
||||||
oswl_keys_paths)
|
oswl_keys_paths)
|
||||||
self.assertIn(['version_info', 'release_name'], oswl_keys_paths)
|
self.assertIn(['version_info', 'release_name'], oswl_keys_paths)
|
||||||
@ -588,7 +588,7 @@ class OswlStatsToCsvTest(OswlTest, DbTest):
|
|||||||
|
|
||||||
# Checking release value in flatten resources
|
# Checking release value in flatten resources
|
||||||
release_pos = csv_keys_paths.index(
|
release_pos = csv_keys_paths.index(
|
||||||
['version_info', 'fuel_release'])
|
['version_info', 'fuel_version'])
|
||||||
flatten_resources = exporter.get_flatten_resources(
|
flatten_resources = exporter.get_flatten_resources(
|
||||||
resource_type, oswl_keys_paths, resource_keys_paths, oswls)
|
resource_type, oswl_keys_paths, resource_keys_paths, oswls)
|
||||||
for flatten_resource in flatten_resources:
|
for flatten_resource in flatten_resources:
|
||||||
@ -678,11 +678,11 @@ class OswlStatsToCsvTest(OswlTest, DbTest):
|
|||||||
resource_checksum='with_version_info',
|
resource_checksum='with_version_info',
|
||||||
resource_data={'current': [{'id': 1}]},
|
resource_data={'current': [{'id': 1}]},
|
||||||
version_info={
|
version_info={
|
||||||
'fuel_release': 'fr',
|
'release_version': 'liberty-9.0',
|
||||||
'release_version': 'osr',
|
'release_os': 'Ubuntu',
|
||||||
'release_os': 'osos',
|
'release_name': 'Liberty on Ubuntu 14.04',
|
||||||
'release_name': 'osn',
|
'fuel_version': '9.0',
|
||||||
'environment_version': '7.0'
|
'environment_version': '9.0'
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
@ -696,7 +696,7 @@ class OswlStatsToCsvTest(OswlTest, DbTest):
|
|||||||
oswl_keys_paths, resource_keys_paths, csv_keys_paths = \
|
oswl_keys_paths, resource_keys_paths, csv_keys_paths = \
|
||||||
exporter.get_resource_keys_paths(resource_type)
|
exporter.get_resource_keys_paths(resource_type)
|
||||||
fuel_release_pos = csv_keys_paths.index(
|
fuel_release_pos = csv_keys_paths.index(
|
||||||
['version_info', 'fuel_release'])
|
['version_info', 'fuel_version'])
|
||||||
flatten_resources = list(exporter.get_flatten_resources(
|
flatten_resources = list(exporter.get_flatten_resources(
|
||||||
resource_type, oswl_keys_paths, resource_keys_paths, oswls))
|
resource_type, oswl_keys_paths, resource_keys_paths, oswls))
|
||||||
|
|
||||||
@ -860,18 +860,26 @@ class OswlStatsToCsvTest(OswlTest, DbTest):
|
|||||||
exporter = OswlStatsToCsv()
|
exporter = OswlStatsToCsv()
|
||||||
resource_type = consts.OSWL_RESOURCE_TYPES.vm
|
resource_type = consts.OSWL_RESOURCE_TYPES.vm
|
||||||
version_from_cluster = '7.0'
|
version_from_cluster = '7.0'
|
||||||
|
release_version_from_cluster = 'from_cluster_7.0'
|
||||||
version_from_version_info = '9.0'
|
version_from_version_info = '9.0'
|
||||||
|
release_version_from_version_info = 'from_version_info_9.0'
|
||||||
|
|
||||||
version_from_installation_info = '8.0'
|
version_from_installation_info = '8.0'
|
||||||
|
release_version_from_inst_info = 'from_inst_info_8.0'
|
||||||
installation_date = datetime.utcnow().date() - timedelta(days=3)
|
installation_date = datetime.utcnow().date() - timedelta(days=3)
|
||||||
|
|
||||||
# Upgraded Fuel and not upgraded cluster
|
# Upgraded Fuel and not upgraded cluster
|
||||||
structure = InstallationStructure(
|
structure = InstallationStructure(
|
||||||
master_node_uid=master_node_uid,
|
master_node_uid=master_node_uid,
|
||||||
structure={
|
structure={
|
||||||
'fuel_release': {'release': version_from_installation_info},
|
'fuel_release': {
|
||||||
|
'release': version_from_installation_info,
|
||||||
|
'openstack_version': release_version_from_inst_info
|
||||||
|
},
|
||||||
'clusters_num': 2,
|
'clusters_num': 2,
|
||||||
'clusters': [
|
'clusters': [
|
||||||
{'id': 1, 'fuel_release': version_from_cluster},
|
{'id': 1, 'fuel_version': version_from_cluster,
|
||||||
|
'release': {'version': release_version_from_cluster}},
|
||||||
{'id': 2}
|
{'id': 2}
|
||||||
],
|
],
|
||||||
'unallocated_nodes_num_range': 0,
|
'unallocated_nodes_num_range': 0,
|
||||||
@ -905,7 +913,10 @@ class OswlStatsToCsvTest(OswlTest, DbTest):
|
|||||||
resource_checksum='info_from_version_info',
|
resource_checksum='info_from_version_info',
|
||||||
resource_data={'current': [{'id': 1}],
|
resource_data={'current': [{'id': 1}],
|
||||||
'added': [], 'modified': [], 'removed': []},
|
'added': [], 'modified': [], 'removed': []},
|
||||||
version_info={'fuel_release': version_from_version_info}
|
version_info={
|
||||||
|
'fuel_version': version_from_version_info,
|
||||||
|
'release_version': release_version_from_version_info
|
||||||
|
}
|
||||||
),
|
),
|
||||||
OpenStackWorkloadStats(
|
OpenStackWorkloadStats(
|
||||||
master_node_uid=master_node_uid,
|
master_node_uid=master_node_uid,
|
||||||
@ -929,20 +940,28 @@ class OswlStatsToCsvTest(OswlTest, DbTest):
|
|||||||
oswl_keys_paths, resource_keys_paths, csv_keys_paths = \
|
oswl_keys_paths, resource_keys_paths, csv_keys_paths = \
|
||||||
exporter.get_resource_keys_paths(resource_type)
|
exporter.get_resource_keys_paths(resource_type)
|
||||||
fuel_release_pos = csv_keys_paths.index(
|
fuel_release_pos = csv_keys_paths.index(
|
||||||
['version_info', 'fuel_release'])
|
['version_info', 'fuel_version'])
|
||||||
|
release_version_pos = csv_keys_paths.index(
|
||||||
|
['version_info', 'release_version'])
|
||||||
flatten_resources = list(exporter.get_flatten_resources(
|
flatten_resources = list(exporter.get_flatten_resources(
|
||||||
resource_type, oswl_keys_paths, resource_keys_paths, oswls_data))
|
resource_type, oswl_keys_paths, resource_keys_paths, oswls_data))
|
||||||
|
|
||||||
self.assertEqual(len(oswls), len(flatten_resources))
|
self.assertEqual(len(oswls), len(flatten_resources))
|
||||||
|
|
||||||
# Checking release info fetched from cluster
|
# Checking version info fetched from cluster
|
||||||
self.assertEqual(version_from_cluster,
|
self.assertEqual(version_from_cluster,
|
||||||
flatten_resources[0][fuel_release_pos])
|
flatten_resources[0][fuel_release_pos])
|
||||||
|
self.assertEqual(release_version_from_cluster,
|
||||||
|
flatten_resources[0][release_version_pos])
|
||||||
|
|
||||||
# Checking release info fetched from oswl.version_info
|
# Checking version info fetched from oswl.version_info
|
||||||
self.assertEqual(version_from_version_info,
|
self.assertEqual(version_from_version_info,
|
||||||
flatten_resources[1][fuel_release_pos])
|
flatten_resources[1][fuel_release_pos])
|
||||||
|
self.assertEqual(release_version_from_version_info,
|
||||||
|
flatten_resources[1][release_version_pos])
|
||||||
|
|
||||||
# Checking release info fetched from installation info
|
# Checking version info fetched from installation info
|
||||||
self.assertEqual(version_from_installation_info,
|
self.assertEqual(version_from_installation_info,
|
||||||
flatten_resources[2][fuel_release_pos])
|
flatten_resources[2][fuel_release_pos])
|
||||||
|
self.assertEqual(release_version_from_inst_info,
|
||||||
|
flatten_resources[2][release_version_pos])
|
||||||
|
Loading…
Reference in New Issue
Block a user