Files
python-vault-db/vaultdatabaseengine/__init__.py
2021-03-23 12:58:18 +01:00

56 lines
1.8 KiB
Python

import requests as rq
import datetime as dt
class Database:
def __init__(self, dbname, vault_url, token, vault_port=8200):
self.dbname = dbname
self.url = vault_url + ":" + str(vault_port) + "/v1/database/creds/" + dbname
self.lastReq = None #TODO some datetime in here
self.ttl = None
self.token = token
self.username = ""
self.password = ""
self.get_creds()
def check_valid(self):
#TODO check datetime for current datetime
if self.ttl == None:
return False
return True
def update_creds(self):
r = rq.get(url=self.url, headers={"X-Vault-Token": self.token, "Content-Type": "application/json"})
# print(r.status_code)
# print(r.text)
if r.status_code != 200:
raise Exception("status code was nog 200")
data = r.json()
# TODO set datetime for current datetime
# TODO set these to the correct response values
self.username = data["data"]["username"]
self.password = data["data"]["password"]
self.lease_id = data["lease_id"]
self.request_id = data["request_id"]
self.wrap_info = data["wrap_info"]
self.warnings = data["warnings"]
self.auth = data["auth"]
self.ttl = dt.datetime.now() + dt.timedelta(seconds=float(data["lease_duration"]))
def get_creds(self):
if not (self.check_valid()):
self.update_creds()
return {"username": self.username, "password": self.password}
def get_username(self):
if not (self.check_valid()):
self.update_creds()
return self.username
def get_password(self):
if not (self.check_valid()):
self.update_creds()
return self.password