Проблема с выводом при использовании python и jinja2 для создания панелей графана json для панелей мониторинга - PullRequest
0 голосов
/ 05 марта 2020

Я работаю над кодом для создания панели инструментов json файлов, специфицирующих c для Solarwinds.

Мне нужно создать набор панелей для мониторинга всех критических ссылок в солнечных ветрах. Проблема, с которой я сталкиваюсь, находится в текстовой панели Grafana, которая должна содержать описание каждой ссылки. Нет запросов, я подаю в суд на CSV-файл, созданный со всеми ссылками соответствующей информации.

Python код для загрузки CSV-файла

# Python source to read csv fileSource csv file
## load list with csv data
with open('crit_links.csv', newline='') as f:
    reader = csv.reader(f)
    data = list(reader)

Пример строки файла CSV

образец crilinks.csv

businesshq;17;SWLINKS-bus;121;Unit: 1 Slot: 0 Port: 2 Gbit - Level · L2L_HLD-area_comp;111.111.111.110;103;OSPF;FALSE;02/03/20 05:19;;;;

Python код, который генерирует список панелей для панель инструментов

grid_Xa = [0,6,8,10]
grid_Xb = [12,18,20,22]
for i, row in enumerate(data):
    rowlist = str(row).split(';')
    if i == 0: 
        titlerow = rowlist #row of titles froms list columns dos items da lista
        grid_y = initial_y
        continue

    if i % 2 == 1:
        for x in grid_Xa:
            if x == 0:
                panelsList.append(createTextPanel(rowlist[0],rowlist[2],rowlist[4],x,grid_y, i+1))
                continue

createTextPanel python функция

def createTextPanel(siteName,nodeName,interfaceName,grid_X,grid_Y,g_id):
    template = jenv.get_or_select_template('p-text.json.jinja') 
    return template.render( site=siteName, node=nodeName,interface=interfaceName ,grid_x = grid_X, grid_y = grid_Y,id=g_id)

шаблон дзиндзя:

{
  "content": "Site: " + {{site}} + "Node: " +  {{node}} + "Interface: " + {{interface}},
  "gridPos": {
    "h": 3,
    "w": 6,
    "x": {{ grid_x }},
    "y": {{ grid_y }}
  },...}

Проблема:

Строка {{site}} в выходных данных. json появляется с [', и это приводит к падению кавычек

output json:

{
  "content": "Site: " + ['businessh1 + "Node: " +  SWLINKS-bus + "Interface: " + Unit: 1 Slot: 0 Port: 2 Gbit - Level · L2L_HLD-area_comp,
  "gridPos": {
    "h": 3,
    "w": 6,
    "x": 0,
    "y": 3
  },
  ...}

Мое намерение состояло в том, чтобы содержимое: параметр вывода выглядел следующим образом:

"output": "Site: businessh1 Node: SWLINKS-bus Interface: Unit: 1 Slot: 0 Port: 2 Gbit - Level · L2L_HLD-area_comp..."

Спасибо!

1 Ответ

0 голосов
/ 06 марта 2020

Мне удалось решить эту проблему, изменив следующее:

С:

# Python source to read csv fileSource csv file
## load list with csv data
with open('crit_links.csv', newline='') as f:
    reader = csv.reader(f)
    data = list(reader)

Кому:

# load list with csv data
with open('crit_links.csv') as f:
data = list(csv.reader(f, delimiter=','))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...