我使用一个定制的YAML标签来定义配置中的秘密。配置密钥的路径决定密钥存储中密钥的路径。你知道吗
import yaml
import pdb
yaml_str="""
databases:
master:
user: 'admin'
pass: !KMS
"""
class KMSSecret(yaml.YAMLObject):
def __repr__(self):
pdb.set_trace()
secret_path = '/' + '/'.join(self._find_key(config))
return secret_path
def _find_key(self, data):
pdb.set_trace()
for key, value in data.items():
if isinstance(value, dict) or isinstance(value, list):
path_item = self._find_key(value)
if path_item:
return [key] + path_item
elif value is self:
return [key]
@classmethod
def from_yaml(self, loader, node):
return KMSSecret()
yaml.add_constructor(u'!KMS', KMSSecret.from_yaml)
config = yaml.load(yaml_str)
在__repr__
或_find_key
中设置断点无效。你知道吗
由于加载后检查config
变量会显示预期的表示,因此必须在某个点执行代码。你知道吗
在上述代码段末尾添加print(config)
时,断点起作用。你知道吗
我想更多地了解正在发生的事情以及我应该读什么。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐