Skip to content

Commit

Permalink
Merge b861414 into 6952aab
Browse files Browse the repository at this point in the history
  • Loading branch information
Camilo Valderruten committed Nov 13, 2018
2 parents 6952aab + b861414 commit a60e17f
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 0 deletions.
27 changes: 27 additions & 0 deletions coolfig/providers.py
@@ -1,5 +1,7 @@
import errno
import os
from furl import furl
import requests
from functools import partial


Expand Down Expand Up @@ -82,4 +84,29 @@ def iterprefixed(self, prefix):
yield k, v


class VaultProvider(DictConfig):
def __init__(self, url, path, role, prefix=""):
self.furl = furl(url)
self.path = path
self.role = role
self.vault_auth = None

self.login()
super(VaultProvider, self).__init__(self.get_dict(), prefix)

def login(self):
url = self.furl.set(path="/v1/auth/kubernetes/login").url
token = open("/run/secrets/kubernetes.io/serviceaccount/token").read()
response = requests.post(url, json={"role": self.role, "jwt": token})
self.vault_auth = response.json()['auth']

def get_dict(self):
path = "/v1/secret/{}".format(self.path)
headers = {"X-Vault-Token": self.vault_auth['client_token']}
url = self.furl.set(path=path).url
response = requests.get(url, headers=headers)
data = response.json().get('data', {})
return {str(k): str(v) for k, v in data.items()}


EnvConfig = partial(DictConfig, os.environ)
2 changes: 2 additions & 0 deletions requirements.txt
@@ -1 +1,3 @@
six>=1.9.0
requests
furl

0 comments on commit a60e17f

Please sign in to comment.