# Copyright (C) 2016 Custodia Project Contributors - see LICENSE file import yaml from requests.exceptions import HTTPError from custodia.client import CustodiaSimpleClient class CustodiaSimpleConstructor(object): yaml_tag = u'!custodia/simple' def __init__(self, url): self.client = CustodiaSimpleClient(url) def __call__(self, loader, node): value = loader.construct_scalar(node) return self.client.get_secret(value) def demo(): constructor = CustodiaSimpleConstructor( 'http+unix://%2E%2Fserver_socket/secrets' ) constructor.client.headers['REMOTE_USER'] = 'user' # create entries try: c = constructor.client.list_container('test') except HTTPError: constructor.client.create_container('test') c = [] if 'key' not in c: constructor.client.set_secret('test/key', 'secret password') yaml.add_constructor(CustodiaSimpleConstructor.yaml_tag, constructor) yaml_str = 'password: !custodia/simple test/key' print(yaml_str) result = yaml.load(yaml_str) print(result) if __name__ == '__main__': demo()