我正在尝试找到一种方法来获取我所做的API调用的响应代码。
我正在连接到Vault服务器并尝试获取用户名和密码。 但是我的要求发生了变化,现在我只想监视对API调用的HTTP响应。
我的代码是:
#/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()
函数来获取响应代码吗?
答案 0 :(得分:0)
我对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