所以我甚至不确定我想做的事是否可行,但我想我会问清楚的
我想通过python构建一个chef“databag”。这几乎只是一本python字典。对于这个封装在databag类中的databag,还需要做其他事情
现在是问题的实质。。。
我想向这个字典添加键/值,但需要以易于扩展的方式构建它。注意:autodict
是一个类,它使您可以使用点表示法构建字典
以下是我想做的:
databag = Databag(
LogGroup=Sub("xva-${environment}-${uniqueid}-mygroup"),
RunList=[
"mysetup::default",
"consul::client"
]
)
databag.Consul() <-- Trying to add consul key/values to databag
print(databag.to_dict())
print(databag.to_string_list())
所以您可以看到我如何将“consur”键值添加到已经存在的databag对象中
下面是类定义。我知道这是错误的,这就是为什么我在这里,看看这是否是可能的
Databag Class
class Databag(object):
def __init__(self,uniqueid=Ref("uniqueid"),environment=Ref("environment"),LogGroup=None,RunList=[]):
self.databag = autodict()
self.databag.uniqueid = uniqueid
self.databag.environment = environment
self.databag.log.group = LogGroup
self.runlist=RunList
def to_string_list(self):
return self.convert_databag_to_string(self.databag)
def to_dict(self):
return self.databag
def get_runlist(self):
return self.convert_to_runlist_string(self.runlist)
Consul Class
class Consul(Databag):
def __init__(self, LogGroup=None):
if LogGroup == None:
Databag.consul.log.group = Databag.log.group
else:
Databag.consul.log.group = LogGroup
如您所见,Consul
类应该访问Databag
类的databag
字典,并添加“consur”变量,就像属性一样。但是,我不想每次都向databag类添加一个新函数,否则这个类最终会非常非常大
我能用下面的方法得到这样的东西。尽管我正在寻求一个建议来让这个工作。我刚看了这个链接上的帮助:
http://www.qtrac.eu/pyclassmulti.html
编辑:此方法简单得多:
注意:这使用与旧方法完全相同的实现
consul.py
databag.py
Folder Structure
旧方法-
How I implemented it
lib.py
databay.py
consul.py
Folder Structure
相关问题 更多 >
编程相关推荐