From 8c05019bffe7088b4d5a7d70375d5ef134fb2ab4 Mon Sep 17 00:00:00 2001 From: Mircea Ulinic Date: Mon, 7 May 2018 21:32:01 +0100 Subject: [PATCH 1/5] Adapt OS identifier for NX-OS for a different message format Of course the format is different across versions, e.g., 2018 Apr 20 13:15:07 nexus-switch %ETHPORT-5-IF_DOWN_LINK_FAILURE: Interface Ethernet1/33 is down (Link failure) --- napalm_logs/config/nxos/__init__.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/napalm_logs/config/nxos/__init__.py b/napalm_logs/config/nxos/__init__.py index 02161a67..9cdade9a 100644 --- a/napalm_logs/config/nxos/__init__.py +++ b/napalm_logs/config/nxos/__init__.py @@ -19,11 +19,23 @@ ('message', r'(.*)') ] _RGX_PARTS = OrderedDict(_RGX_PARTS) - _RGX = r'\<{0[pri]}\>{0[host]}: {0[date]} {0[time]} {0[timeZone]}: %{0[tag]}: {0[message]}'.format(_RGX_PARTS) +_ALT_RGX_PARTS = [ + ('pri', r'(\d+)'), + ('date', r'(\d+ \w+ +\d+)'), + ('time', r'(\d\d:\d\d:\d\d)'), + ('host', r'([^ ]+)'), + ('tag', r'([\w\d-]+)'), + ('message', r'(.*)') +] +_ALT_RGX_PARTS = OrderedDict(_ALT_RGX_PARTS) +_ALT_RGX = r'\<{0[pri]}\>{0[date]} {0[time]} {0[host]} %{0[tag]}: {0[message]}'.format(_ALT_RGX_PARTS) + _TIME_FORMAT = ('{date} {time} {timeZone}', '%Y %b %d %H:%M:%S %Z') +_ALT_TIME_FORMAT = ('{date} {time}', '%Y %b %d %H:%M:%S') def extract(msg): - return napalm_logs.utils.extract(_RGX, msg, _RGX_PARTS, _TIME_FORMAT) + return napalm_logs.utils.extract(_RGX, msg, _RGX_PARTS, _TIME_FORMAT) or\ + napalm_logs.utils.extract(_ALT_RGX, msg, _ALT_RGX_PARTS, _ALT_TIME_FORMAT) From 28fb8292cce4cfe5eeb63ea643a1a3dd0d4ab5a1 Mon Sep 17 00:00:00 2001 From: Mircea Ulinic Date: Mon, 7 May 2018 21:33:07 +0100 Subject: [PATCH 2/5] Add INTERFACE_DOWN notification for nxos --- napalm_logs/config/nxos/INTERFACE_DOWN.yml | 15 +++++++++ .../nxos/INTERFACE_DOWN/default/syslog.msg | 1 + .../nxos/INTERFACE_DOWN/default/yang.json | 32 +++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 napalm_logs/config/nxos/INTERFACE_DOWN.yml create mode 100644 tests/config/nxos/INTERFACE_DOWN/default/syslog.msg create mode 100644 tests/config/nxos/INTERFACE_DOWN/default/yang.json diff --git a/napalm_logs/config/nxos/INTERFACE_DOWN.yml b/napalm_logs/config/nxos/INTERFACE_DOWN.yml new file mode 100644 index 00000000..1c9602e5 --- /dev/null +++ b/napalm_logs/config/nxos/INTERFACE_DOWN.yml @@ -0,0 +1,15 @@ +# Interface Ethernet1/33 is down (Link failure) + +messages: + - error: INTERFACE_DOWN + tag: ETHPORT-5-IF_DOWN_LINK_FAILURE + values: + interface: (\w+[\.\-\d\/\w+]+) + reason: (.*) + line: 'Interface {interface} is down ({reason})' + model: openconfig-interfaces + mapping: + variables: + interfaces//interface//{interface}//state//change_reason: reason + static: + interfaces//interface//{interface}//state//admin_status: DOWN diff --git a/tests/config/nxos/INTERFACE_DOWN/default/syslog.msg b/tests/config/nxos/INTERFACE_DOWN/default/syslog.msg new file mode 100644 index 00000000..ccd21deb --- /dev/null +++ b/tests/config/nxos/INTERFACE_DOWN/default/syslog.msg @@ -0,0 +1 @@ +<190>2018 Apr 20 13:15:07 nexus-switch %ETHPORT-5-IF_DOWN_LINK_FAILURE: Interface Ethernet1/33 is down (Link failure) diff --git a/tests/config/nxos/INTERFACE_DOWN/default/yang.json b/tests/config/nxos/INTERFACE_DOWN/default/yang.json new file mode 100644 index 00000000..3339f14c --- /dev/null +++ b/tests/config/nxos/INTERFACE_DOWN/default/yang.json @@ -0,0 +1,32 @@ +{ + "ip": "127.0.0.1", + "host": "nexus-switch", + "error": "INTERFACE_DOWN", + "yang_message": { + "interfaces": { + "interface": { + "Ethernet1/33": { + "state": { + "admin_status": "DOWN", + "change_reason": "Link failure" + } + } + } + } + }, + "facility": 23, + "yang_model": "openconfig-interfaces", + "os": "nxos", + "severity": 6, + "message_details": { + "date": "2018 Apr 20", + "tag": "ETHPORT-5-IF_DOWN_LINK_FAILURE", + "host": "nexus-switch", + "message": "Interface Ethernet1/33 is down (Link failure)", + "facility": 23, + "severity": 6, + "pri": "190", + "time": "13:15:07" + }, + "timestamp": 1524230107 +} From 7004ded46f293ee162c988fb7c83e28dec0c7f77 Mon Sep 17 00:00:00 2001 From: Mircea Ulinic Date: Mon, 7 May 2018 21:40:24 +0100 Subject: [PATCH 3/5] Add INTERFACE_DOWN notification for individual port down --- napalm_logs/config/nxos/INTERFACE_DOWN.yml | 10 ++++++ .../individual_port_down/syslog.msg | 1 + .../individual_port_down/yang.json | 31 +++++++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 tests/config/nxos/INTERFACE_DOWN/individual_port_down/syslog.msg create mode 100644 tests/config/nxos/INTERFACE_DOWN/individual_port_down/yang.json diff --git a/napalm_logs/config/nxos/INTERFACE_DOWN.yml b/napalm_logs/config/nxos/INTERFACE_DOWN.yml index 1c9602e5..7381f732 100644 --- a/napalm_logs/config/nxos/INTERFACE_DOWN.yml +++ b/napalm_logs/config/nxos/INTERFACE_DOWN.yml @@ -13,3 +13,13 @@ messages: interfaces//interface//{interface}//state//change_reason: reason static: interfaces//interface//{interface}//state//admin_status: DOWN + - error: INTERFACE_DOWN + tag: ETH_PORT_CHANNEL-5-PORT_INDIVIDUAL_DOWN + values: + interface: (\w+[\.\-\d\/\w+]+) + line: 'individual port {interface} is down' + model: openconfig-interfaces + mapping: + variables: {} + static: + interfaces//interface//{interface}//state//admin_status: DOWN diff --git a/tests/config/nxos/INTERFACE_DOWN/individual_port_down/syslog.msg b/tests/config/nxos/INTERFACE_DOWN/individual_port_down/syslog.msg new file mode 100644 index 00000000..094a41ed --- /dev/null +++ b/tests/config/nxos/INTERFACE_DOWN/individual_port_down/syslog.msg @@ -0,0 +1 @@ +<190>2018 Apr 20 13:15:07 nexus-switch %ETH_PORT_CHANNEL-5-PORT_INDIVIDUAL_DOWN: individual port Ethernet1/33 is down diff --git a/tests/config/nxos/INTERFACE_DOWN/individual_port_down/yang.json b/tests/config/nxos/INTERFACE_DOWN/individual_port_down/yang.json new file mode 100644 index 00000000..926c8275 --- /dev/null +++ b/tests/config/nxos/INTERFACE_DOWN/individual_port_down/yang.json @@ -0,0 +1,31 @@ +{ + "ip": "127.0.0.1", + "message_details": { + "message": "individual port Ethernet1/33 is down", + "time": "13:15:07", + "date": "2018 Apr 20", + "facility": 23, + "severity": 6, + "tag": "ETH_PORT_CHANNEL-5-PORT_INDIVIDUAL_DOWN", + "pri": "190", + "host": "nexus-switch" + }, + "error": "INTERFACE_DOWN", + "yang_model": "openconfig-interfaces", + "facility": 23, + "severity": 6, + "yang_message": { + "interfaces": { + "interface": { + "Ethernet1/33": { + "state": { + "admin_status": "DOWN" + } + } + } + } + }, + "host": "nexus-switch", + "timestamp": 1524230107, + "os": "nxos" +} From b9ea45a648812a6ca1ca92802a7da896e1f56c5f Mon Sep 17 00:00:00 2001 From: Mircea Ulinic Date: Mon, 7 May 2018 21:50:57 +0100 Subject: [PATCH 4/5] Add INTERFACE_UP notification for mode trunk --- napalm_logs/config/nxos/INTERFACE_UP.yml | 15 ++++++++ .../nxos/INTERFACE_UP/mode_trunk/syslog.msg | 1 + .../nxos/INTERFACE_UP/mode_trunk/yang.json | 38 +++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 napalm_logs/config/nxos/INTERFACE_UP.yml create mode 100644 tests/config/nxos/INTERFACE_UP/mode_trunk/syslog.msg create mode 100644 tests/config/nxos/INTERFACE_UP/mode_trunk/yang.json diff --git a/napalm_logs/config/nxos/INTERFACE_UP.yml b/napalm_logs/config/nxos/INTERFACE_UP.yml new file mode 100644 index 00000000..5c63bb3d --- /dev/null +++ b/napalm_logs/config/nxos/INTERFACE_UP.yml @@ -0,0 +1,15 @@ +# Interface Ethernet1/33 is up in mode trunk + +messages: + - error: INTERFACE_UP + tag: ETHPORT-5-IF_UP + values: + interface: (\w+[\.\-\d\/\w+]+) + mode|upper: (\w+) + line: 'Interface {interface} is up in mode {mode}' + model: openconfig-interfaces + mapping: + variables: + interfaces//interface//{interface}//ethernet//switched_vlan//state//interface_mode: mode + static: + interfaces//interface//{interface}//state//admin_status: UP diff --git a/tests/config/nxos/INTERFACE_UP/mode_trunk/syslog.msg b/tests/config/nxos/INTERFACE_UP/mode_trunk/syslog.msg new file mode 100644 index 00000000..a25dbaa7 --- /dev/null +++ b/tests/config/nxos/INTERFACE_UP/mode_trunk/syslog.msg @@ -0,0 +1 @@ +<190>2018 Apr 20 13:15:38 nexus-switch %ETHPORT-5-IF_UP: Interface Ethernet1/33 is up in mode trunk diff --git a/tests/config/nxos/INTERFACE_UP/mode_trunk/yang.json b/tests/config/nxos/INTERFACE_UP/mode_trunk/yang.json new file mode 100644 index 00000000..3ef9fd04 --- /dev/null +++ b/tests/config/nxos/INTERFACE_UP/mode_trunk/yang.json @@ -0,0 +1,38 @@ +{ + "facility": 23, + "yang_model": "openconfig-interfaces", + "yang_message": { + "interfaces": { + "interface": { + "Ethernet1/33": { + "ethernet": { + "switched_vlan": { + "state": { + "interface_mode": "TRUNK" + } + } + }, + "state": { + "admin_status": "UP" + } + } + } + } + }, + "ip": "127.0.0.1", + "host": "nexus-switch", + "message_details": { + "facility": 23, + "pri": "190", + "date": "2018 Apr 20", + "message": "Interface Ethernet1/33 is up in mode trunk", + "severity": 6, + "time": "13:15:38", + "host": "nexus-switch", + "tag": "ETHPORT-5-IF_UP" + }, + "severity": 6, + "os": "nxos", + "error": "INTERFACE_UP", + "timestamp": 1524230138 +} From 19ac2bb7d4444120d38fd7bc0d03493680c23a22 Mon Sep 17 00:00:00 2001 From: Mircea Ulinic Date: Mon, 7 May 2018 22:04:51 +0100 Subject: [PATCH 5/5] Add new INTERFACE_DUPLEX_MODE notification, currently only for nxos --- .../config/nxos/INTERFACE_DUPLEX_MODE.yml | 19 +++++++++++ .../INTERFACE_DUPLEX_MODE/default/syslog.msg | 1 + .../INTERFACE_DUPLEX_MODE/default/yang.json | 33 +++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 napalm_logs/config/nxos/INTERFACE_DUPLEX_MODE.yml create mode 100644 tests/config/nxos/INTERFACE_DUPLEX_MODE/default/syslog.msg create mode 100644 tests/config/nxos/INTERFACE_DUPLEX_MODE/default/yang.json diff --git a/napalm_logs/config/nxos/INTERFACE_DUPLEX_MODE.yml b/napalm_logs/config/nxos/INTERFACE_DUPLEX_MODE.yml new file mode 100644 index 00000000..ab170f95 --- /dev/null +++ b/napalm_logs/config/nxos/INTERFACE_DUPLEX_MODE.yml @@ -0,0 +1,19 @@ +# This message type is received when there's a notification that the interface +# changed the duplex mode, e.g., +# +# .. code-block:: text +# +# Interface Ethernet1/33, operational duplex mode changed to Full + +messages: + - error: INTERFACE_DUPLEX_MODE + tag: ETHPORT-5-IF_DUPLEX + values: + interface: (\w+[\.\-\d\/\w+]+) + mode|upper: (\w+) + line: 'Interface {interface}, operational duplex mode changed to {mode}' + model: openconfig-interfaces + mapping: + variables: + interfaces//interface//{interface}//ethernet//state//duplex_mode: mode + static: {} diff --git a/tests/config/nxos/INTERFACE_DUPLEX_MODE/default/syslog.msg b/tests/config/nxos/INTERFACE_DUPLEX_MODE/default/syslog.msg new file mode 100644 index 00000000..a10d429c --- /dev/null +++ b/tests/config/nxos/INTERFACE_DUPLEX_MODE/default/syslog.msg @@ -0,0 +1 @@ +<190>2018 Apr 20 13:15:15 nexus-switch %ETHPORT-5-IF_DUPLEX: Interface Ethernet1/33, operational duplex mode changed to Full diff --git a/tests/config/nxos/INTERFACE_DUPLEX_MODE/default/yang.json b/tests/config/nxos/INTERFACE_DUPLEX_MODE/default/yang.json new file mode 100644 index 00000000..809fadbc --- /dev/null +++ b/tests/config/nxos/INTERFACE_DUPLEX_MODE/default/yang.json @@ -0,0 +1,33 @@ +{ + "severity": 6, + "yang_message": { + "interfaces": { + "interface": { + "Ethernet1/33": { + "ethernet": { + "state": { + "duplex_mode": "FULL" + } + } + } + } + } + }, + "yang_model": "openconfig-interfaces", + "ip": "127.0.0.1", + "facility": 23, + "host": "nexus-switch", + "error": "INTERFACE_DUPLEX_MODE", + "os": "nxos", + "message_details": { + "date": "2018 Apr 20", + "message": "Interface Ethernet1/33, operational duplex mode changed to Full", + "facility": 23, + "host": "nexus-switch", + "severity": 6, + "pri": "190", + "tag": "ETHPORT-5-IF_DUPLEX", + "time": "13:15:15" + }, + "timestamp": 1524230115 +}