diff --git a/collections/inv.objectmodels/Electron/KO-01M.json b/collections/inv.objectmodels/Electron/KO-01M.json new file mode 100644 index 0000000000000000000000000000000000000000..1ccdfcc05e4041c7584ab6973b07a03dd7287a0c --- /dev/null +++ b/collections/inv.objectmodels/Electron/KO-01M.json @@ -0,0 +1,150 @@ +{ + "name": "Electron | КО-01М", + "$collection": "inv.objectmodels", + "uuid": "a4332eb7-43a3-46c5-894c-d604f2e9a0da", + "vendor__code": "ELECTRON", + "description": " Контроллер предназначен для сбора информации о состоянии датчиков и точек контроля на объекте, а так же показаний счетчиков электрической энергии и передачи этой информации с объекта в центр мониторинга по имеющимся между ними каналам связи.", + "cr_context": "CHASSIS", + "connections": [ + { + "description": null, + "direction": "s", + "gender": "f", + "name": "eth0", + "protocols": ["10BASET"], + "type__name": "Electrical | RJ45" + }, + { + "description": "+U пит", + "direction": "s", + "gender": "f", + "name": "+5V", + "type__name": "Power | MSTB 2.5/3-ST-5.08" + }, + { + "description": "GND", + "direction": "s", + "gender": "f", + "name": "1", + "type__name": "Power | MSTB 2.5/16-ST-5.08" + }, + { + "description": "OUT", + "direction": "s", + "gender": "f", + "name": "2", + "type__name": "Power | MSTB 2.5/16-ST-5.08" + }, + { + "description": "Универсальные порт 1", + "direction": "s", + "gender": "f", + "name": "3", + "type__name": "Power | MSTB 2.5/16-ST-5.08" + }, + { + "description": "GND", + "direction": "s", + "gender": "f", + "name": "4", + "type__name": "Power | MSTB 2.5/16-ST-5.08" + }, + { + "description": "Универсальные порт 2", + "direction": "s", + "gender": "f", + "name": "5", + "type__name": "Power | MSTB 2.5/16-ST-5.08" + }, + { + "description": "GND", + "direction": "s", + "gender": "f", + "name": "6", + "type__name": "Power | MSTB 2.5/16-ST-5.08" + }, + { + "description": "Универсальные порт 3", + "direction": "s", + "gender": "f", + "name": "7", + "type__name": "Power | MSTB 2.5/16-ST-5.08" + }, + { + "description": "GND", + "direction": "s", + "gender": "f", + "name": "8", + "type__name": "Power | MSTB 2.5/16-ST-5.08" + }, + { + "description": "Универсальные порт 4", + "direction": "s", + "gender": "f", + "name": "9", + "type__name": "Power | MSTB 2.5/16-ST-5.08" + }, + { + "description": "GND", + "direction": "s", + "gender": "f", + "name": "10", + "type__name": "Power | MSTB 2.5/16-ST-5.08" + }, + { + "description": "Универсальные порт 5", + "direction": "s", + "gender": "f", + "name": "11", + "type__name": "Power | MSTB 2.5/16-ST-5.08" + }, + { + "description": "GND", + "direction": "s", + "gender": "f", + "name": "12", + "type__name": "Power | MSTB 2.5/16-ST-5.08" + }, + { + "description": "IMP+", + "direction": "s", + "gender": "f", + "name": "13", + "type__name": "Power | MSTB 2.5/16-ST-5.08" + }, + { + "description": "IMP-", + "direction": "s", + "gender": "f", + "name": "14", + "type__name": "Power | MSTB 2.5/3-ST-5.08" + } + ], + "data": { + "asset": { + "part_no": ["KO-01M", "KO01M"] + }, + "dimensions": { + "depth": 35, + "height": 80, + "width": 80 + }, + "management": { + "managed": true + } + }, + "sensors": [ + { + "description": "Внутренний датчик температуры", + "name": "temp", + "snmp_oid": "1.3.6.1.4.1.35419.20.1.140.0", + "units__name": "Celsius" + }, + { + "description": "Датчик числа импульсов", + "name": "pulse", + "snmp_oid": "1.3.6.1.4.1.35419.20.1.160.0", + "units__name": "Unknown" + } + ] +} diff --git a/collections/inv.vendors/ELECTRONR.json b/collections/inv.vendors/ELECTRONR.json index 451eab26ed1c7a7e79d0fd5508108f402e3ba899..530808951b4b6945c448113c585e64d7f5e18306 100644 --- a/collections/inv.vendors/ELECTRONR.json +++ b/collections/inv.vendors/ELECTRONR.json @@ -2,7 +2,7 @@ "name": "ElectronR", "uuid": "833744e0-db0a-4c7d-9baf-dc5ed41c8845", "full_name": "ELECTRON", - "code": ["ELECTRONR"], + "code": ["ELECTRONR", "ELECTRON"], "site": "http://electron-ru.com/", "$collection": "inv.vendors" } diff --git a/sa/profiles/ElectronR/KO01M/get_interfaces.py b/sa/profiles/ElectronR/KO01M/get_interfaces.py index 47d6e0f77d3f878704f74d90841c2aa8d6d8b4d0..70f7584fea4624f4a43b9c19858b8edfe5ae7e66 100644 --- a/sa/profiles/ElectronR/KO01M/get_interfaces.py +++ b/sa/profiles/ElectronR/KO01M/get_interfaces.py @@ -15,41 +15,8 @@ class Script(BaseScript): interface = IGetInterfaces def execute_snmp(self): - i = [1, 2, 3, 4, 5] - interfaces = [] - interfaces += [ - { - "type": "physical", - "name": "Temperature", - "admin_status": True, - "oper_status": True, - "snmp_ifindex": 140, - "subinterfaces": [], - } - ] - interfaces += [ - { - "type": "physical", - "name": "Pulse", - "admin_status": True, - "oper_status": True, - "snmp_ifindex": 160, - "subinterfaces": [], - } - ] - for ii in i: - status = self.snmp.get("1.3.6.1.4.1.35419.20.1.10%s.0" % ii) - interfaces += [ - { - "type": "physical", - "name": ii, - "admin_status": status, - "oper_status": status, - "snmp_ifindex": ii, - "subinterfaces": [], - } - ] - interfaces += [ + + interfaces = [ { "type": "physical", "name": "eth0", diff --git a/sa/profiles/ElectronR/KO01M/get_inventory.py b/sa/profiles/ElectronR/KO01M/get_inventory.py new file mode 100644 index 0000000000000000000000000000000000000000..2a70eba3e33293c7f009e3db31ba19a05dffd05a --- /dev/null +++ b/sa/profiles/ElectronR/KO01M/get_inventory.py @@ -0,0 +1,54 @@ +# --------------------------------------------------------------------- +# ElectronR.KO01M.get_inventory +# --------------------------------------------------------------------- +# Copyright (C) 2007-2019 The NOC Project +# See LICENSE for details +# --------------------------------------------------------------------- + +# NOC modules +from noc.sa.profiles.Generic.get_inventory import Script as BaseScript +from noc.sa.interfaces.igetinventory import IGetInventory + + +class Script(BaseScript): + name = "ElectronR.KO01M.get_inventory" + interface = IGetInventory + + def get_chassis_sensors(self): + r = [ + # tempIN + { + "name": "temp", + "status": True, + "description": "Значение температуры с внутреннего датчика", + "measurement": "Celsius", + "snmp_oid": "1.3.6.1.4.1.35419.20.1.140.0", + }, + { + "name": "Pulse", + "status": True, + "description": "Датчик числа импульсов", + "measurement": "Unknown", + "snmp_oid": "1.3.6.1.4.1.35419.20.1.160.0", + }, + ] + # Optron input for 1 to 6 + for i in range(1, 6): + mode = self.snmp.get(f"1.3.6.1.4.1.35419.20.1.{110 + i}.0") + r += [ + { + "name": f"in{i}", + "status": bool(mode), + "description": f"Цифровой вход номер {i}", + "measurement": "Unknown", + "snmp_oid": f"1.3.6.1.4.1.35419.20.1.{100 + i}.0", + } + ] + return r + + def execute_snmp(self): + r = self.get_inv_from_version() + sensors = self.get_chassis_sensors() + if sensors: + r[0]["sensors"] = sensors + return r diff --git a/sa/profiles/Ttronics/KUB/get_inventory.py b/sa/profiles/Ttronics/KUB/get_inventory.py index 291692936a560530d16a487db36c26ba98b66eca..1631db31a8267fc1db1a66b4c44db9d93df53671 100644 --- a/sa/profiles/Ttronics/KUB/get_inventory.py +++ b/sa/profiles/Ttronics/KUB/get_inventory.py @@ -255,17 +255,17 @@ class Script(BaseScript): ] # Universal input for num in range(1, 7): - in_config = self.snmp.get(f".1.3.6.1.3.55.1.3.1.2.{num - 1}") + in_config = self.snmp.get(f"1.3.6.1.3.55.1.3.1.2.{num - 1}") if in_config not in self.femto_input_config_map: self.logger.warning("Unknown type of port") continue - oid = self.get_oid(self.femto_input_config_map[num]["type"], num) + oid = self.get_oid(self.femto_input_config_map[in_config]["type"], num) r += [ { - "name": f'{self.femto_input_config_map[num]["type"]}{num}', + "name": f'{self.femto_input_config_map[in_config]["type"]}{num}', "status": True, "description": f"Универсальных вход {num}", - "measurement": self.femto_input_config_map[num]["units"], + "measurement": self.femto_input_config_map[in_config]["units"], "snmp_oid": oid, } ] diff --git a/sa/profiles/Ttronics/KUB/profile.py b/sa/profiles/Ttronics/KUB/profile.py index a2733c9711fc0195f91757f4432e36d9b4704b00..dbf4be33e56de391450ea7b3b6623dc7bd2e68fc 100644 --- a/sa/profiles/Ttronics/KUB/profile.py +++ b/sa/profiles/Ttronics/KUB/profile.py @@ -29,7 +29,7 @@ class Profile(BaseProfile): rx_discrete_name = re.compile(r"^\d+/\d+$") matchers = { - "is_femto": {"platform": {"$regex": "FEMTO"}}, + "is_femto": {"platform": {"$regex": "FEMTO|Femto"}}, } SENSORS_TYPE = {3: 15, 4: 16, 5: 17, 6: 18}