George Keishing | e7e9171 | 2021-09-03 11:28:44 -0500 | [diff] [blame] | 1 | #!/usr/bin/env python3 -u |
Brian Ma | 139f1da | 2024-10-18 13:34:14 +0800 | [diff] [blame] | 2 | import importlib.util |
George Keishing | b1d2f49 | 2022-12-15 13:33:42 -0600 | [diff] [blame] | 3 | import string as string |
Patrick Williams | 20f3871 | 2022-12-08 06:18:26 -0600 | [diff] [blame] | 4 | |
| 5 | from robot.libraries.BuiltIn import BuiltIn |
Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 6 | |
| 7 | |
Brian Ma | 139f1da | 2024-10-18 13:34:14 +0800 | [diff] [blame] | 8 | def load_source(name, module_path): |
| 9 | spec = importlib.util.spec_from_file_location(name, module_path) |
| 10 | module = importlib.util.module_from_spec(spec) |
| 11 | spec.loader.exec_module(module) |
| 12 | return module |
| 13 | |
| 14 | |
Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 15 | def get_sensor(module_name, value): |
Brian Ma | 139f1da | 2024-10-18 13:34:14 +0800 | [diff] [blame] | 16 | m = load_source("module.name", module_name) |
Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 17 | |
Patrick Williams | 20f3871 | 2022-12-08 06:18:26 -0600 | [diff] [blame] | 18 | for i in m.ID_LOOKUP["SENSOR"]: |
| 19 | if m.ID_LOOKUP["SENSOR"][i] == value: |
Gunnar Mills | dca3579 | 2018-03-26 10:05:38 -0500 | [diff] [blame] | 20 | return i |
Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 21 | |
Gunnar Mills | dca3579 | 2018-03-26 10:05:38 -0500 | [diff] [blame] | 22 | return 0xFF |
Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 23 | |
Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 24 | |
Gunnar Mills | dca3579 | 2018-03-26 10:05:38 -0500 | [diff] [blame] | 25 | def get_inventory_sensor(module_name, value): |
Brian Ma | 139f1da | 2024-10-18 13:34:14 +0800 | [diff] [blame] | 26 | m = load_source("module.name", module_name) |
Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 27 | |
Patrick Williams | 20f3871 | 2022-12-08 06:18:26 -0600 | [diff] [blame] | 28 | value = string.replace(value, m.INVENTORY_ROOT, "<inventory_root>") |
Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 29 | |
Patrick Williams | 20f3871 | 2022-12-08 06:18:26 -0600 | [diff] [blame] | 30 | for i in m.ID_LOOKUP["SENSOR"]: |
| 31 | if m.ID_LOOKUP["SENSOR"][i] == value: |
Gunnar Mills | dca3579 | 2018-03-26 10:05:38 -0500 | [diff] [blame] | 32 | return i |
| 33 | |
| 34 | return 0xFF |
Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 35 | |
| 36 | |
| 37 | def get_inventory_list(module_name): |
George Keishing | e635ddc | 2022-12-08 07:38:02 -0600 | [diff] [blame] | 38 | inventory_list = [] |
Brian Ma | 139f1da | 2024-10-18 13:34:14 +0800 | [diff] [blame] | 39 | m = load_source("module.name", module_name) |
George Keishing | e635ddc | 2022-12-08 07:38:02 -0600 | [diff] [blame] | 40 | |
Patrick Williams | 20f3871 | 2022-12-08 06:18:26 -0600 | [diff] [blame] | 41 | for i in m.ID_LOOKUP["FRU"]: |
| 42 | s = m.ID_LOOKUP["FRU"][i] |
| 43 | s = s.replace("<inventory_root>", m.INVENTORY_ROOT) |
Joy Onyerikwu | 004ad3c | 2018-06-11 16:29:56 -0500 | [diff] [blame] | 44 | inventory_list.append(s) |
Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 45 | |
Joy Onyerikwu | 004ad3c | 2018-06-11 16:29:56 -0500 | [diff] [blame] | 46 | return inventory_list |
Gunnar Mills | dca3579 | 2018-03-26 10:05:38 -0500 | [diff] [blame] | 47 | |
Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 48 | |
| 49 | def get_inventory_fru_type_list(module_name, fru_type): |
Joy Onyerikwu | 004ad3c | 2018-06-11 16:29:56 -0500 | [diff] [blame] | 50 | inventory_list = [] |
Brian Ma | 139f1da | 2024-10-18 13:34:14 +0800 | [diff] [blame] | 51 | m = load_source("module.name", module_name) |
Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 52 | |
Gunnar Mills | dca3579 | 2018-03-26 10:05:38 -0500 | [diff] [blame] | 53 | for i in m.FRU_INSTANCES.keys(): |
Patrick Williams | 20f3871 | 2022-12-08 06:18:26 -0600 | [diff] [blame] | 54 | if m.FRU_INSTANCES[i]["fru_type"] == fru_type: |
| 55 | s = i.replace("<inventory_root>", m.INVENTORY_ROOT) |
Joy Onyerikwu | 004ad3c | 2018-06-11 16:29:56 -0500 | [diff] [blame] | 56 | inventory_list.append(s) |
Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 57 | |
Joy Onyerikwu | 004ad3c | 2018-06-11 16:29:56 -0500 | [diff] [blame] | 58 | return inventory_list |
Gunnar Mills | dca3579 | 2018-03-26 10:05:38 -0500 | [diff] [blame] | 59 | |
Chris Austen | b29d2e8 | 2016-06-07 12:25:35 -0500 | [diff] [blame] | 60 | |
| 61 | def call_keyword(keyword): |
Gunnar Mills | dca3579 | 2018-03-26 10:05:38 -0500 | [diff] [blame] | 62 | return BuiltIn().run_keyword(keyword) |
Tony Lee | 1e303ca | 2020-02-27 10:53:47 +0800 | [diff] [blame] | 63 | |
| 64 | |
| 65 | def get_FRU_component_name_list(module_name): |
| 66 | name_list = [] |
Brian Ma | 139f1da | 2024-10-18 13:34:14 +0800 | [diff] [blame] | 67 | m = load_source("module.name", module_name) |
Tony Lee | 1e303ca | 2020-02-27 10:53:47 +0800 | [diff] [blame] | 68 | |
| 69 | for name in m.FRU_COMPONENT_NAME: |
| 70 | name_list.append(name) |
| 71 | print(name) |
| 72 | |
| 73 | return name_list |
| 74 | |
| 75 | |
| 76 | def get_ipmi_rest_fru_field_map(module_name): |
Brian Ma | 139f1da | 2024-10-18 13:34:14 +0800 | [diff] [blame] | 77 | m = load_source("module.name", module_name) |
Tony Lee | 1e303ca | 2020-02-27 10:53:47 +0800 | [diff] [blame] | 78 | |
| 79 | ipmi_rest_fru_field_map = dict.copy(m.ipmi_rest_fru_field_map) |
| 80 | |
| 81 | return ipmi_rest_fru_field_map |