1 |
|
# -*- coding: utf-8 -*- |
2 |
|
|
3 |
|
# Copyright 2020 Whitestack, LLC |
4 |
|
# ************************************************************* |
5 |
|
# |
6 |
|
# This file is part of OSM NBI module |
7 |
|
# All Rights Reserved to Whitestack, LLC |
8 |
|
# |
9 |
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may |
10 |
|
# not use this file except in compliance with the License. You may obtain |
11 |
|
# a copy of the License at |
12 |
|
# |
13 |
|
# http://www.apache.org/licenses/LICENSE-2.0 |
14 |
|
# |
15 |
|
# Unless required by applicable law or agreed to in writing, software |
16 |
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
17 |
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
18 |
|
# License for the specific language governing permissions and limitations |
19 |
|
# under the License. |
20 |
|
# |
21 |
|
# For those usages not covered by the Apache License, Version 2.0 please |
22 |
|
# contact: fbravo@whitestack.com or agarcia@whitestack.com |
23 |
|
## |
24 |
1 |
from cefevent import CEFEvent |
25 |
1 |
from osm_nbi import version |
26 |
|
|
27 |
|
|
28 |
1 |
def find_in_list(the_list, condition_lambda): |
29 |
1 |
for item in the_list: |
30 |
1 |
if condition_lambda(item): |
31 |
1 |
return item |
32 |
|
else: |
33 |
1 |
return None |
34 |
|
|
35 |
|
|
36 |
1 |
def filter_in_list(the_list, condition_lambda): |
37 |
1 |
ret = [] |
38 |
1 |
for item in the_list: |
39 |
1 |
if condition_lambda(item): |
40 |
1 |
ret.append(item) |
41 |
1 |
return ret |
42 |
|
|
43 |
|
|
44 |
1 |
def find_index_in_list(the_list, condition_lambda): |
45 |
0 |
for index, item in enumerate(the_list): |
46 |
0 |
if condition_lambda(item): |
47 |
0 |
return index |
48 |
|
else: |
49 |
0 |
return -1 |
50 |
|
|
51 |
|
|
52 |
1 |
def deep_update_dict(data, updated_data): |
53 |
1 |
if isinstance(data, list): |
54 |
1 |
processed_items_data = [] |
55 |
1 |
for index, item in enumerate(data): |
56 |
1 |
processed_items_data.append(deep_update_dict(item, updated_data[index])) |
57 |
1 |
return processed_items_data |
58 |
|
|
59 |
1 |
if isinstance(data, dict): |
60 |
1 |
for key in data.keys(): |
61 |
1 |
if key in updated_data: |
62 |
1 |
if not isinstance(data[key], dict) and not isinstance(data[key], list): |
63 |
1 |
data[key] = updated_data[key] |
64 |
|
else: |
65 |
1 |
data[key] = deep_update_dict(data[key], updated_data[key]) |
66 |
1 |
return data |
67 |
|
|
68 |
1 |
return data |
69 |
|
|
70 |
|
|
71 |
1 |
def cef_event(cef_logger, cef_fields): |
72 |
1 |
for key, value in cef_fields.items(): |
73 |
1 |
cef_logger.set_field(key, value) |
74 |
|
|
75 |
|
|
76 |
1 |
def cef_event_builder(config): |
77 |
1 |
cef_logger = CEFEvent() |
78 |
1 |
cef_fields = { |
79 |
|
"version": config["version"], |
80 |
|
"deviceVendor": config["deviceVendor"], |
81 |
|
"deviceProduct": config["deviceProduct"], |
82 |
|
"deviceVersion": get_version(), |
83 |
|
"message": "CEF Logger", |
84 |
|
"sourceUserName": "admin", |
85 |
|
"severity": 1, |
86 |
|
} |
87 |
1 |
cef_event(cef_logger, cef_fields) |
88 |
1 |
cef_logger.build_cef() |
89 |
1 |
return cef_logger |
90 |
|
|
91 |
|
|
92 |
1 |
def get_version(): |
93 |
1 |
osm_version = version.split("+") |
94 |
1 |
return osm_version[0] |