使用hvac获取响应代码

时间:2018-01-03 17:43:12

标签: python hashicorp-vault

我正在尝试找到一种方法来获取我所做的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.headurllib.request.urlopen(url).getcode()但是我必须为此编写完整的单独代码,而不是能够重用establishConnection(crt,key)函数。

知道如何才能修改apiCHeck()函数来获取响应代码吗?

1 个答案:

答案 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