python запрашивает ошибку check-mk API - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь добавить данные словаря в наш веб-API check-mk с запросами Python, но получаю сообщение об ошибке отсутствия ключей:

{"result": "Check_MK exception: Missing required key(s): aux_tags, tag_groups", "result_code": 1}

Вот мой код:

import json
import requests

params_get = (
    ('action', 'get_hosttags'),
    ('_username', 'user'),
    ('_secret', 'secret'),
    ('request_format', 'json'),
)

params_set = (
    ('action', 'set_hosttags'),
    ('_username', 'user'),
    ('_secret', 'secret'),
    ('request_format', 'json'),
)

url = 'http://monitoringtest.local.domain/test/check_mk/webapi.py'

tags = ['tag1', 'tag2']

response_data = requests.get(url, params=params_get)
data = response_data.json()

new_data_tags = data['result']['tag_groups']
new_data = data['result']

# new_tags = []

for tag in tags:
    new_data['aux_tags'].append({'id': tag, 'title': 'tags in datacenter'})
    # new_tags.extend([{'aux_tags': [], 'id': tag, 'title': tag.upper() + ' Tag'}])

# all_tags = new_data_tags.extend([{'tags': new_tags, 'id': 'group1', 'title': 'tags in datacenter'}])

json.dump(data['result'], open("new_file", "w"))
response_data_new = requests.get(url, params=params_set, json=json.dumps(data['result']))
# response_data_new = requests.put(url, params=params_set)
# requests.post(url, params=params_set)
print(response_data_new.text)

# print(data['result'])
# json.dump(data['result'], open("new_file", "w"))

Когда я использую curl, все хорошо работает с сообщением об успехе:

{"result": null, "result_code": 0}

У вас есть идеи, что вызывает ошибку? Спасибо

1 Ответ

0 голосов
/ 29 августа 2018

Я нашел ошибку, она была просто не сфокусирована. Переменная Data содержит два ключа, которые также отправляются result в начале и result_code в конце, которые должны быть усечены. Мне просто нужно было изменить ответ следующим образом и отправить данные с POST:

resp = requests.post(url, params=params_set, data={'request': json.dumps(data['result'])})

Спасибо @ DeepSpace

...