Получение кода ответа с помощью 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