From 85178d53c1a708da341b91480c2d2f0e40d3881a Mon Sep 17 00:00:00 2001 From: Alexander Kislitsky Date: Wed, 27 Apr 2016 15:47:32 +0300 Subject: [PATCH] Interfaces detailed info added into nodes report Interfaces info changes: - interfaces details added - offloading modes added - interface properties added: SR-IOV, mtu, dpdk, numa_node Meta info about numa topology added: numa nodes, hugepages, distances Node error_type field removed. This field doesn't reflect actual node state. Check that all node attributes were exported added into test. Change-Id: I9b5f45dad43fefb0e60a563123dab833293e4332 Closes-Bug: #1575669 Closes-Bug: #1575666 --- .../api/resources/utils/skeleton.py | 50 ++++++++++++- .../api/resources/utils/test_nodes_to_csv.py | 74 ++++++++++++++++++- 2 files changed, 120 insertions(+), 4 deletions(-) diff --git a/analytics/fuel_analytics/api/resources/utils/skeleton.py b/analytics/fuel_analytics/api/resources/utils/skeleton.py index a871ca9..9598b69 100644 --- a/analytics/fuel_analytics/api/resources/utils/skeleton.py +++ b/analytics/fuel_analytics/api/resources/utils/skeleton.py @@ -89,7 +89,6 @@ INSTALLATION_INFO_SKELETON = { { 'bond_interfaces': count, 'nic_interfaces': count, - 'error_type': None, 'group_id': None, 'id': None, 'manufacturer': None, @@ -141,7 +140,54 @@ INSTALLATION_INFO_SKELETON = { 'version': None, 'manufacturer': None }, - 'interfaces': count + 'interfaces': [ + { + 'pxe': None, + 'name': None, + 'driver': None, + 'state': None, + 'max_speed': None, + 'current_speed': None, + 'offloading_modes': [ + { + 'state': None, + 'name': None, + 'sub': [ + { + 'state': None, + 'name': None, + } + ] + } + ], + 'interface_properties': { + 'mtu': None, + 'numa_node': None, + 'disable_offloading': None, + 'sriov': { + 'available': None, + 'enabled': None, + 'physnet': None, + 'sriov_numvfs': None, + 'sriov_totalvfs': None + }, + 'dpdk': { + 'enabled': None + } + } + } + ], + 'numa_topology': { + 'numa_nodes': [ + { + 'memory': None, + 'id': None, + 'cpus': count + } + ], + 'supported_hugepages': [None], + 'distances': [None] + } } } ], diff --git a/analytics/fuel_analytics/test/api/resources/utils/test_nodes_to_csv.py b/analytics/fuel_analytics/test/api/resources/utils/test_nodes_to_csv.py index 2b193db..5d44a2c 100644 --- a/analytics/fuel_analytics/test/api/resources/utils/test_nodes_to_csv.py +++ b/analytics/fuel_analytics/test/api/resources/utils/test_nodes_to_csv.py @@ -34,17 +34,87 @@ class NodesToCsvExportTest(InstStructureTest, DbTest): def test_get_node_keys_paths(self): exporter = StatsToCsv() _, _, _, csv_keys_paths = exporter.get_node_keys_paths() - self.assertTrue(['cluster_id'] in csv_keys_paths) + self.assertTrue(['id'] in csv_keys_paths) + self.assertTrue(['group_id'] in csv_keys_paths) self.assertTrue(['cluster_fuel_version'] in csv_keys_paths) self.assertTrue(['master_node_uid'] in csv_keys_paths) self.assertTrue(['os'] in csv_keys_paths) self.assertTrue(['roles', 0] in csv_keys_paths) + self.assertTrue(['pending_addition'] in csv_keys_paths) + self.assertTrue(['pending_deletion'] in csv_keys_paths) self.assertTrue(['pending_roles', 0] in csv_keys_paths) self.assertTrue(['status'] in csv_keys_paths) self.assertTrue(['online'] in csv_keys_paths) self.assertTrue(['platform_name'] in csv_keys_paths) self.assertTrue(['manufacturer'] in csv_keys_paths) - self.assertTrue(['error_type'] in csv_keys_paths) + + self.assertTrue(['meta', 'cpu', 'real'] in csv_keys_paths) + self.assertTrue(['meta', 'cpu', 'total'] in csv_keys_paths) + self.assertTrue(['meta', 'cpu', 'spec', 0, 'frequency'] + in csv_keys_paths) + self.assertTrue(['meta', 'cpu', 'spec', 0, 'model'] + in csv_keys_paths) + + self.assertTrue(['meta', 'memory', 'slots'] in csv_keys_paths) + self.assertTrue(['meta', 'memory', 'total'] in csv_keys_paths) + self.assertTrue(['meta', 'memory', 'maximum_capacity'] + in csv_keys_paths) + self.assertTrue(['meta', 'memory', 'devices', 0, 'frequency'] + in csv_keys_paths) + self.assertTrue(['meta', 'memory', 'devices', 0, 'type'] + in csv_keys_paths) + self.assertTrue(['meta', 'memory', 'devices', 0, 'size'] + in csv_keys_paths) + + self.assertTrue(['meta', 'disks', 0, 'name'] in csv_keys_paths) + self.assertTrue(['meta', 'disks', 0, 'removable'] in csv_keys_paths) + self.assertTrue(['meta', 'disks', 0, 'model'] in csv_keys_paths) + self.assertTrue(['meta', 'disks', 0, 'size'] in csv_keys_paths) + + self.assertTrue(['meta', 'system', 'product'] in csv_keys_paths) + self.assertTrue(['meta', 'system', 'family'] in csv_keys_paths) + self.assertTrue(['meta', 'system', 'version'] in csv_keys_paths) + self.assertTrue(['meta', 'system', 'manufacturer'] in csv_keys_paths) + + self.assertTrue(['meta', 'numa_topology', 'numa_nodes', 0, 'memory'] + in csv_keys_paths) + self.assertTrue(['meta', 'numa_topology', 'numa_nodes', 0, 'id'] + in csv_keys_paths) + self.assertTrue(['meta', 'numa_topology', 'supported_hugepages', 0] + in csv_keys_paths) + self.assertTrue(['meta', 'numa_topology', 'distances', 0] + in csv_keys_paths) + + self.assertTrue(['meta', 'interfaces', 0, 'name'] in csv_keys_paths) + self.assertTrue(['meta', 'interfaces', 0, 'pxe'] in csv_keys_paths) + self.assertTrue(['meta', 'interfaces', 0, 'driver'] in csv_keys_paths) + self.assertTrue(['meta', 'interfaces', 0, 'max_speed'] + in csv_keys_paths) + self.assertTrue(['meta', 'interfaces', 0, 'offloading_modes', + 0, 'state'] in csv_keys_paths) + self.assertTrue(['meta', 'interfaces', 0, 'offloading_modes', + 0, 'name'] in csv_keys_paths) + self.assertTrue(['meta', 'interfaces', 0, 'offloading_modes', + 0, 'sub', 0, 'name'] in csv_keys_paths) + + self.assertTrue(['meta', 'interfaces', 0, 'interface_properties', + 'sriov', 'available'] in csv_keys_paths) + self.assertTrue(['meta', 'interfaces', 0, 'interface_properties', + 'sriov', 'enabled'] in csv_keys_paths) + self.assertTrue(['meta', 'interfaces', 0, 'interface_properties', + 'sriov', 'physnet'] in csv_keys_paths) + self.assertTrue(['meta', 'interfaces', 0, 'interface_properties', + 'sriov', 'sriov_numvfs'] in csv_keys_paths) + self.assertTrue(['meta', 'interfaces', 0, 'interface_properties', + 'sriov', 'sriov_totalvfs'] in csv_keys_paths) + self.assertTrue(['meta', 'interfaces', 0, 'interface_properties', + 'dpdk', 'enabled'] in csv_keys_paths) + self.assertTrue(['meta', 'interfaces', 0, 'interface_properties', + 'mtu'] in csv_keys_paths) + self.assertTrue(['meta', 'interfaces', 0, 'interface_properties', + 'disable_offloading'] in csv_keys_paths) + self.assertTrue(['meta', 'interfaces', 0, 'interface_properties', + 'numa_node'] in csv_keys_paths) def test_get_flatten_nodes(self): installations_num = 10