Release info added into OSWLs CSV reports

Release info used for filtering OSWLs reports data by release.

Change-Id: I00b3f657c26bc1ce429f701f3fdf0a4d4e95edde
Closes-Bug: #1470807
This commit is contained in:
Alexander Kislitsky 2015-07-02 15:48:40 +03:00
parent c3d01fd10a
commit 8968a916e2
5 changed files with 42 additions and 8 deletions

View File

@ -179,6 +179,7 @@ def get_oswls_query(resource_type, from_date=None, to_date=None):
OSWS.resource_type, OSWS.resource_data,
IS.creation_date.label('installation_created_date'),
IS.modification_date.label('installation_updated_date'),
IS.structure['fuel_release'].label('fuel_release'),
IS.is_filtered).\
join(IS, IS.master_node_uid == OSWS.master_node_uid).\
filter(OSWS.resource_type == resource_type).\

View File

@ -107,6 +107,8 @@ class OswlStatsToCsv(object):
app.logger.debug("Getting OSWL flatten %s info started", resource_type)
for oswl in oswls:
try:
fuel_release = oswl.fuel_release or {}
setattr(oswl, 'release', fuel_release.get('release'))
flatten_oswl = export_utils.get_flatten_data(oswl_keys_paths,
oswl)
resource_data = oswl.resource_data

View File

@ -152,6 +152,7 @@ OSWL_SKELETONS = {
'cluster_id': None,
'stats_on_date': None,
'resource_type': None,
'release': None,
},
consts.OSWL_RESOURCE_TYPES.vm: {
'id': None,

View File

@ -316,7 +316,8 @@ class OswlTest(BaseTest):
creation_date_range=(2, 10),
modification_date_range=(2, 5),
is_modified_date_nullable=True,
is_filtered_values=(False, None)):
is_filtered_values=(False, None),
releases=('6.0', '6.1')):
mn_uids = set()
for oswl in oswls:
@ -330,12 +331,17 @@ class OswlTest(BaseTest):
modification_date = (datetime.utcnow() - timedelta(
days=random.randint(*modification_date_range))).\
date().isoformat()
structure = {
'fuel_release': {
'release': random.choice(releases)
}
}
obj = InstallationStructure(
master_node_uid=oswl.master_node_uid,
creation_date=creation_date,
modification_date=modification_date,
is_filtered=random.choice(is_filtered_values),
structure={},
structure=structure,
)
mn_uids.add(oswl.master_node_uid)
yield obj

View File

@ -44,12 +44,13 @@ class OswlStatsToCsvTest(OswlTest, DbTest):
exporter = OswlStatsToCsv()
oswl_keys_paths, resource_keys_paths, csv_keys_paths = \
exporter.get_resource_keys_paths(resource_type)
self.assertFalse(['external_id'] in oswl_keys_paths)
self.assertFalse(['updated_time'] in oswl_keys_paths)
self.assertTrue([resource_type, 'id'] in resource_keys_paths)
self.assertTrue([resource_type, 'is_added'] in csv_keys_paths)
self.assertTrue([resource_type, 'is_modified'] in csv_keys_paths)
self.assertTrue([resource_type, 'is_removed'] in csv_keys_paths)
self.assertNotIn(['external_id'], oswl_keys_paths)
self.assertNotIn(['updated_time'], oswl_keys_paths)
self.assertIn(['release'], oswl_keys_paths)
self.assertIn([resource_type, 'id'], resource_keys_paths)
self.assertIn([resource_type, 'is_added'], csv_keys_paths)
self.assertIn([resource_type, 'is_modified'], csv_keys_paths)
self.assertIn([resource_type, 'is_removed'], csv_keys_paths)
def test_get_flatten_resources(self):
for resource_type in self.RESOURCE_TYPES:
@ -563,3 +564,26 @@ class OswlStatsToCsvTest(OswlTest, DbTest):
self.assertEqual(not_filtered_num, len(oswls))
for oswl in oswls:
self.assertIn(oswl.is_filtered, (False, None))
def test_release_info_in_oswl(self):
exporter = OswlStatsToCsv()
releases = ('6.0', '6.1', None)
num = 30
for resource_type in self.RESOURCE_TYPES:
# Creating OSWLs
oswls = self.get_saved_oswls(num, resource_type)
self.get_saved_inst_structs(oswls, releases=releases)
with app.test_request_context():
oswls = get_oswls_query(resource_type).all()
oswl_keys_paths, resource_keys_paths, csv_keys_paths = \
exporter.get_resource_keys_paths(resource_type)
# Checking release value in flatten resources
release_pos = csv_keys_paths.index(['release'])
flatten_resources = exporter.get_flatten_resources(
resource_type, oswl_keys_paths, resource_keys_paths, oswls)
for flatten_resource in flatten_resources:
release = flatten_resource[release_pos]
self.assertIn(release, releases)