New fields names in the fuel-release handled
ostf_sha was renamed to fuel-ostf_sha. fuellib_sha was renamed to fuel-library_sha. python-fuelclient_sha was added. Change-Id: Ica4a7d479e1db3f417ec84785aa303f4e12efd41 Closes-Bug: #1447962
This commit is contained in:
parent
833ba91921
commit
3ffe67073d
|
@ -124,9 +124,12 @@ INSTALLATION_INFO_SKELETON = {
|
|||
'build_number': None,
|
||||
'feature_groups': [{}],
|
||||
'fuellib_sha': None,
|
||||
'fuel-library_sha': None,
|
||||
'fuelmain_sha': None,
|
||||
'nailgun_sha': None,
|
||||
'ostf_sha': None,
|
||||
'fuel-ostf_sha': None,
|
||||
'python-fuelclient_sha': None,
|
||||
'production': None,
|
||||
'release': None
|
||||
},
|
||||
|
|
|
@ -124,20 +124,42 @@ class InstStructureTest(BaseTest):
|
|||
})
|
||||
return plugins_info
|
||||
|
||||
def generate_structure(self, clusters_num_range=(0, 10),
|
||||
unallocated_nodes_num_range=(0, 20),
|
||||
plugins_num_range=(0, 5)):
|
||||
clusters_num = random.randint(*clusters_num_range)
|
||||
fuel_release = {
|
||||
'release': random.choice(("6.0-techpreview", "6.0-ga")),
|
||||
def _fuel_release_gen(self, releases):
|
||||
return {
|
||||
'release': random.choice(releases),
|
||||
'api': 1,
|
||||
'nailgun_sha': "Unknown build",
|
||||
'astute_sha': "Unknown build",
|
||||
'fuellib_sha': "Unknown build",
|
||||
'ostf_sha': "Unknown build",
|
||||
'nailgun_sha': "Unknown build nailgun",
|
||||
'astute_sha': "Unknown build astute",
|
||||
'fuellib_sha': "Unknown build fuellib",
|
||||
'ostf_sha': "Unknown build ostf",
|
||||
'fuelmain_sha': "Unknown build fuelmain",
|
||||
'feature_groups': ['experimental', 'mirantis']
|
||||
}
|
||||
|
||||
def _fuel_release_gen_2015_04(self, releases):
|
||||
return {
|
||||
'release': random.choice(releases),
|
||||
'api': 1,
|
||||
'nailgun_sha': "Unknown build nailgun",
|
||||
'astute_sha': "Unknown build astute astute",
|
||||
'fuel-ostf_sha': "Unknown build fuel-ostf",
|
||||
'python-fuelclient_sha': "Unknown build python-fuelclient",
|
||||
'fuel-library_sha': "Unknown build fuel-library",
|
||||
'fuelmain_sha': "Unknown build fuelmain",
|
||||
'feature_groups': ['experimental', 'mirantis']
|
||||
}
|
||||
|
||||
def generate_structure(self, clusters_num_range=(0, 10),
|
||||
unallocated_nodes_num_range=(0, 20),
|
||||
plugins_num_range=(0, 5),
|
||||
release_generators=('_fuel_release_gen',
|
||||
'_fuel_release_gen_2015_04'),
|
||||
releases=("6.0-techpreview", "6.0-ga")):
|
||||
clusters_num = random.randint(*clusters_num_range)
|
||||
|
||||
release_generator = random.choice(release_generators)
|
||||
fuel_release = getattr(self, release_generator)(releases)
|
||||
|
||||
structure = {
|
||||
'fuel_release': fuel_release,
|
||||
'clusters_num': clusters_num,
|
||||
|
@ -154,16 +176,19 @@ class InstStructureTest(BaseTest):
|
|||
structure['allocated_nodes_num'] += cluster['nodes_num']
|
||||
return structure
|
||||
|
||||
def generate_inst_structures(self, installations_num=100,
|
||||
creation_date_range=(1, 10),
|
||||
modification_date_range=(1, 10),
|
||||
clusters_num_range=(0, 10),
|
||||
plugins_num_range=(0, 5)):
|
||||
def generate_inst_structures(
|
||||
self, installations_num=100, creation_date_range=(1, 10),
|
||||
modification_date_range=(1, 10), clusters_num_range=(0, 10),
|
||||
plugins_num_range=(0, 5), releases=("6.0-techpreview", "6.0-ga"),
|
||||
release_generators=('_fuel_release_gen',
|
||||
'_fuel_release_gen_2015_04')):
|
||||
for _ in xrange(installations_num):
|
||||
mn_uid = '{}'.format(uuid.uuid4())
|
||||
structure = self.generate_structure(
|
||||
clusters_num_range=clusters_num_range,
|
||||
plugins_num_range=plugins_num_range)
|
||||
plugins_num_range=plugins_num_range,
|
||||
releases=releases,
|
||||
release_generators=release_generators)
|
||||
creation_date = datetime.utcnow() - timedelta(
|
||||
days=random.randint(*creation_date_range))
|
||||
modification_date = datetime.utcnow() - timedelta(
|
||||
|
|
|
@ -64,6 +64,16 @@ class StatsToCsvExportTest(InstStructureTest, DbTest):
|
|||
csv_keys_paths)
|
||||
self.assertIn(['vmware_attributes', 'vmware_az_nova_computes_num'],
|
||||
csv_keys_paths)
|
||||
self.assertIn(['structure', 'fuel_release', 'ostf_sha'],
|
||||
csv_keys_paths)
|
||||
self.assertIn(['structure', 'fuel_release', 'fuel-ostf_sha'],
|
||||
csv_keys_paths)
|
||||
self.assertIn(['structure', 'fuel_release', 'python-fuelclient_sha'],
|
||||
csv_keys_paths)
|
||||
self.assertIn(['structure', 'fuel_release', 'fuellib_sha'],
|
||||
csv_keys_paths)
|
||||
self.assertIn(['structure', 'fuel_release', 'fuel-library_sha'],
|
||||
csv_keys_paths)
|
||||
self.assertNotIn(['structure', 'clusters'], csv_keys_paths)
|
||||
self.assertNotIn(['installed_plugins'], csv_keys_paths)
|
||||
|
||||
|
@ -232,6 +242,56 @@ class StatsToCsvExportTest(InstStructureTest, DbTest):
|
|||
for _ in result:
|
||||
pass
|
||||
|
||||
def test_fuel_release(self):
|
||||
exporter = StatsToCsv()
|
||||
# Calculating positions of the params in the flatten data
|
||||
structure_keys_paths, cluster_keys_paths, csv_keys_paths = \
|
||||
exporter.get_cluster_keys_paths()
|
||||
ostf_pos = csv_keys_paths.index(['structure', 'fuel_release',
|
||||
'ostf_sha'])
|
||||
f_ostf_pos = csv_keys_paths.index(['structure', 'fuel_release',
|
||||
'fuel-ostf_sha'])
|
||||
f_lib_pos = csv_keys_paths.index(['structure', 'fuel_release',
|
||||
'fuellib_sha'])
|
||||
f_libbrary_pos = csv_keys_paths.index(['structure', 'fuel_release',
|
||||
'fuel-library_sha'])
|
||||
f_cli_pos = csv_keys_paths.index(['structure', 'fuel_release',
|
||||
'python-fuelclient_sha'])
|
||||
|
||||
# Checking fuel_release structure before 2015.04
|
||||
inst_structures = self.generate_inst_structures(
|
||||
release_generators=('_fuel_release_gen',)
|
||||
)
|
||||
flatten_clusters = exporter.get_flatten_clusters(
|
||||
structure_keys_paths, cluster_keys_paths,
|
||||
inst_structures, [])
|
||||
|
||||
for flatten_cluster in flatten_clusters:
|
||||
self.assertIsNotNone(flatten_cluster[ostf_pos])
|
||||
self.assertIsNone(flatten_cluster[f_ostf_pos])
|
||||
|
||||
self.assertIsNotNone(flatten_cluster[f_lib_pos])
|
||||
self.assertIsNone(flatten_cluster[f_libbrary_pos])
|
||||
|
||||
self.assertIsNone(flatten_cluster[f_cli_pos])
|
||||
|
||||
# Checking fuel_release structure after 2015.04
|
||||
inst_structures = self.generate_inst_structures(
|
||||
release_generators=('_fuel_release_gen_2015_04',)
|
||||
)
|
||||
flatten_clusters = exporter.get_flatten_clusters(
|
||||
structure_keys_paths, cluster_keys_paths,
|
||||
inst_structures, [])
|
||||
|
||||
for flatten_cluster in flatten_clusters:
|
||||
self.assertIsNone(flatten_cluster[ostf_pos])
|
||||
self.assertIsNotNone(flatten_cluster[f_ostf_pos])
|
||||
|
||||
self.assertIsNone(flatten_cluster[f_lib_pos])
|
||||
self.assertIsNotNone(flatten_cluster[f_libbrary_pos])
|
||||
|
||||
self.assertIsNotNone(flatten_cluster[f_cli_pos])
|
||||
|
||||
def test_cluster_invalid_data(self):
|
||||
exporter = StatsToCsv()
|
||||
num = 10
|
||||
|
|
|
@ -18,18 +18,28 @@
|
|||
"properties": {
|
||||
"release": {"type": "string"},
|
||||
"ostf_sha": {"type": "string"},
|
||||
"fuel-ostf_sha": {"type": "string"},
|
||||
"astute_sha": {"type": "string"},
|
||||
"nailgun_sha": {"type": "string"},
|
||||
"fuellib_sha": {"type": "string"},
|
||||
"fuel-library_sha": {"type": "string"},
|
||||
"python-fuelclient_sha": {"type": "string"},
|
||||
"fuelmain_sha": {"type": "string"},
|
||||
"feature_groups": {
|
||||
"type": "array",
|
||||
"items": {"type": "string"}
|
||||
},
|
||||
"api": {"type": "string"}
|
||||
},
|
||||
"required": ["release", "ostf_sha", "astute_sha",
|
||||
"nailgun_sha", "fuellib_sha", "api",
|
||||
"feature_groups"]
|
||||
"required": ["release", "astute_sha",
|
||||
"nailgun_sha", "api",
|
||||
"feature_groups"],
|
||||
"oneOf": [
|
||||
{"required": [
|
||||
"fuel-ostf_sha", "python-fuelclient_sha",
|
||||
"fuel-library_sha"]},
|
||||
{"required": ["ostf_sha", "fuellib_sha"]}
|
||||
]
|
||||
},
|
||||
"clusters": {
|
||||
"type": "array",
|
||||
|
|
|
@ -140,3 +140,50 @@ class TestInstallationStructure(DbTest):
|
|||
self.assertDictEqual(struct, obj_upd.structure)
|
||||
self.assertIsNotNone(obj_upd.creation_date)
|
||||
self.assertIsNotNone(obj_upd.modification_date)
|
||||
|
||||
def test_valid_fuel_release_content(self):
|
||||
master_node_uid = 'x'
|
||||
structs = [
|
||||
{
|
||||
'master_node_uid': master_node_uid,
|
||||
'fuel_release': {
|
||||
'release': 'r',
|
||||
'ostf_sha': 'o_sha',
|
||||
'astute_sha': 'a_sha',
|
||||
'nailgun_sha': 'n_sha',
|
||||
'fuellib_sha': 'fl_sha',
|
||||
'feature_groups': ['experimental'],
|
||||
'api': 'v1'
|
||||
},
|
||||
'allocated_nodes_num': 4,
|
||||
'unallocated_nodes_num': 4,
|
||||
'clusters_num': 2,
|
||||
'clusters': []
|
||||
},
|
||||
{
|
||||
# ostf_sha renamed, python-fuelclient_sha added
|
||||
'master_node_uid': master_node_uid,
|
||||
'fuel_release': {
|
||||
'release': 'r',
|
||||
'fuel-ostf_sha': 'f-o_sha',
|
||||
'python-fuelclient_sha': 'p-fc_sha',
|
||||
'astute_sha': 'a_sha',
|
||||
'fuelmain_sha': 'a_sha',
|
||||
'nailgun_sha': 'n_sha',
|
||||
'fuel-library_sha': 'fl_sha',
|
||||
'feature_groups': ['experimental'],
|
||||
'api': 'v1'
|
||||
},
|
||||
'allocated_nodes_num': 4,
|
||||
'unallocated_nodes_num': 4,
|
||||
'clusters_num': 2,
|
||||
'clusters': []
|
||||
},
|
||||
]
|
||||
|
||||
for struct in structs:
|
||||
resp = self.post(
|
||||
'/api/v1/installation_structure/',
|
||||
{'installation_structure': struct}
|
||||
)
|
||||
self.check_response_ok(resp, codes=(200, 201))
|
||||
|
|
Loading…
Reference in New Issue