in Chef_Processors/ChefTemplate.py [0:0]
def main(self):
extra_formatting = ""
block_name = "template"
end_text = "end\n"
self.env["chef_block"] = ""
if not isinstance(self.env["resource_name"], basestring):
# Not a string, assume it's an array of strings
each_do_beginning = "[\n"
each_do_end = "].each do |item|\n\t"
self.env["chef_block"] = each_do_beginning
for resource_name in self.env["resource_name"]:
self.env["chef_block"] += "\t%s,\n" % resource_name
self.env["chef_block"] += each_do_end
name = "item"
# insert an extra tab before everything
extra_formatting = "\t"
end_text = "\tend\nend\n"
else:
name = self.env["resource_name"]
notif_text = "\tnot_if"
onlyif_text = "\tonly_if"
input_list = sorted(self.input_variables.keys())
# Start the block
self.env["chef_block"] += "%s %s do\n" % (block_name, name)
# Place not_if guards first
if self.env.get("not_if"):
self.env["chef_block"] += "%s\t%s %s\n" % (
extra_formatting,
notif_text,
self.env["not_if"],
)
input_list.remove("not_if")
# Place only_if guards next
if self.env.get("only_if"):
self.env["chef_block"] += "%s\t%s %s\n" % (
extra_formatting,
onlyif_text,
self.env["only_if"],
)
input_list.remove("only_if")
input_list.remove("resource_name")
# Loop through all keys
for key in input_list:
if self.env.get(key, ""):
key_text = "\t%s" % key
self.env["chef_block"] += "%s\t%s %s\n" % (
extra_formatting,
key_text,
self.env[key],
)
# clear out the key so it doesn't poison future runs
self.env[key] = ""
# end it
self.env["chef_block"] += end_text
self.output("Chef block:\n%s" % self.env["chef_block"])