Получение кода ответа с помощью hvac

Я пытаюсь найти способ получить код ответа на вызов API, который я делаю.

Я подключаюсь к серверу хранилища и пытаюсь получить имена пользователей и пароли. Но мои требования изменились, и теперь я просто хочу отслеживать HTTP-ответ на мой вызов API.

Мой код:

#/usr/bin/python
import os
import hvac
import requests

def establishConnection(crt,key):
    client = hvac.Client(url='https://127.0.0.1:8200',
                         verify=False,
                         cert=(crt, key))
    try:
        client.auth_tls()
    except (ConnectionRefusedError, requests.exceptions.ConnectionError, requests.packages.urllib3.exceptions.ProtocolError, hvac.exceptions.VaultDown):
        print("establishConnection() failed.")
    return client

def apiCheck(crt, key):
    client = establishConnection(crt, key)

    result = client.read('secret/prometheus')['data']['password']
    # In the above line, rather than having the value returned , I want the response code. 

Я пытался найти несколько решений, но, похоже, ни одно hvac конкретный.

Я мог бы использовать requests.head или же urllib.request.urlopen(url).getcode() но тогда мне придется написать для этого целый отдельный кусок кода, а не использовать повторно establishConnection(crt,key) функция.

Любая идея, как я могу изменить только apiCHeck() функция, чтобы получить код ответа?

1 ответ

У меня был быстрый взгляд на код hvac, у вас нет доступа к базовому статусу, и он не сохраняется. Вы можете создать подкласс нового модуля HVAC и немного изменить его. Но ваш вопрос заключается в том, можете ли вы просто изменить одну функцию. Хотя я бы так не поступил, я думаю, что это отвечает на вопрос:

result = client._get('/v1/secret/prometheus').status_code

Или вы можете сделать это так:

result = client._get('/v1/secret/prometheus')
result.json() # has the json return value and
result.status_code # this is the number you are looking for
Другие вопросы по тегам