Fuel release info added into plugins CSV report

Packages info also added into plugins CSV report.

Change-Id: I2b28acfb21ff9de56b41c5b5ac52f4dd69acfa9f
Closes-Bug: #1536639
This commit is contained in:
Alexander Kislitsky 2016-02-02 14:38:33 +03:00
parent 820770807f
commit 154a24df0f
4 changed files with 59 additions and 7 deletions

View File

@ -133,6 +133,7 @@ INSTALLATION_INFO_SKELETON = {
'production': None,
'release': None
},
'fuel_packages': [],
'unallocated_nodes_num': None,
'user_information': {
'company': None,

View File

@ -85,7 +85,9 @@ class StatsToCsv(object):
plugin_skeleton.pop('releases', None)
plugin_key_paths = export_utils.get_keys_paths(plugin_skeleton)
structure_key_paths = [['master_node_uid']]
structure_key_paths = [['master_node_uid'],
['structure', 'fuel_packages'],
['structure', 'fuel_release', 'release']]
cluster_key_paths = [['cluster_id']]
result_key_paths = plugin_key_paths + cluster_key_paths + \
structure_key_paths

View File

@ -15,6 +15,7 @@
# under the License.
import csv
import datetime
import mock
import six
import types
@ -24,6 +25,8 @@ from fuel_analytics.test.api.resources.utils.inst_structure_test import \
from fuel_analytics.test.base import DbTest
from fuel_analytics.api.app import app
from fuel_analytics.api.app import db
from fuel_analytics.api.db import model
from fuel_analytics.api.resources.utils.stats_to_csv import StatsToCsv
@ -32,12 +35,15 @@ class PluginsToCsvExportTest(InstStructureTest, DbTest):
def test_get_plugin_keys_paths(self):
exporter = StatsToCsv()
_, _, _, csv_keys_paths = exporter.get_plugin_keys_paths()
self.assertTrue(['cluster_id' in csv_keys_paths])
self.assertTrue(['master_node_uid' in csv_keys_paths])
self.assertTrue(['name' in csv_keys_paths])
self.assertTrue(['version' in csv_keys_paths])
self.assertTrue(['fuel_version' in csv_keys_paths])
self.assertTrue(['package_version' in csv_keys_paths])
self.assertTrue(['cluster_id'] in csv_keys_paths)
self.assertTrue(['master_node_uid'] in csv_keys_paths)
self.assertTrue(['name'] in csv_keys_paths)
self.assertTrue(['version'] in csv_keys_paths)
self.assertTrue(['fuel_version'] in csv_keys_paths)
self.assertTrue(['package_version'] in csv_keys_paths)
self.assertTrue(['structure', 'fuel_packages'] in csv_keys_paths)
self.assertTrue(['structure', 'fuel_release', 'release'] in
csv_keys_paths)
def test_get_flatten_plugins(self):
installations_num = 10
@ -92,3 +98,45 @@ class PluginsToCsvExportTest(InstStructureTest, DbTest):
plugins_paths, inst_structures)
# Checking only invalid data is not exported
self.assertEqual(num - 1, len(list(flatten_plugins)))
def test_fuel_release_info_in_flatten_plugins(self):
release = '8.0'
packages = ['z', 'a', 'c']
inst_structures = [
model.InstallationStructure(
master_node_uid='one',
creation_date=datetime.datetime.utcnow(),
is_filtered=False,
structure={
'fuel_release': {'release': release},
'fuel_packages': packages,
'clusters': [{
'id': 1, 'nodes': [],
'installed_plugins': [{
'name': 'plugin_a',
'version': 'plugin_version_0',
'releases': [],
'fuel_version': ['8.0', '7.0'],
'package_version': 'package_version_0'
}],
}]
}
)
]
for structure in inst_structures:
db.session.add(structure)
db.session.flush()
exporter = StatsToCsv()
structure_paths, cluster_paths, plugins_paths, csv_paths = \
exporter.get_plugin_keys_paths()
flatten_plugins = exporter.get_flatten_plugins(
structure_paths, cluster_paths, plugins_paths, inst_structures)
pos_release = csv_paths.index(['structure', 'fuel_release',
'release'])
pos_packages = csv_paths.index(['structure', 'fuel_packages'])
for flatten_plugin in flatten_plugins:
self.assertEqual(release, flatten_plugin[pos_release])
self.assertEqual(' '.join(packages),
flatten_plugin[pos_packages])

View File

@ -73,6 +73,7 @@ class StatsToCsvExportTest(InstStructureTest, DbTest):
csv_keys_paths)
self.assertIn(['structure', 'fuel_release', 'fuel-library_sha'],
csv_keys_paths)
self.assertIn(['structure', 'fuel_packages'], csv_keys_paths)
self.assertNotIn(['structure', 'clusters'], csv_keys_paths)
self.assertNotIn(['installed_plugins'], csv_keys_paths)