Chef_Processors/ChefAttributeList.py (49 lines of code) (raw):

#!/usr/bin/python # -*- coding: utf-8 -*- # # Copyright (c) Facebook, Inc. and its affiliates. # # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree.# """See docstring for ChefAttributeList class.""" from __future__ import absolute_import import os.path from autopkglib import Processor __all__ = ["ChefAttributeList"] class ChefAttributeList(Processor): """Class for Attribute List.""" description = ( "Produces a Chef attribute variable for a list of items. " "The attribute prefixes correspond to node settings - i.e. " "default[category][prefix][attribute]." ) input_variables = { "attribute_version": { "required": True, "description": "Version of Munki this applies to.", }, "attribute": {"required": True, "description": "Name of attribute."}, "value": { "required": True, "description": ( "Single string containing list of items, separated by commas." ), }, "path_prefix": { "required": False, "description": "Path to prepend to each found item.", "default": "", }, } output_variables = { "chef_block": {"description": "Chef attribute block."}, "attribute_variable": {"description": "Full name of variable."}, } __doc__ = description def main(self): """Main.""" att_prefix = "munki['%s']['%s']" % ( self.env["attribute_version"], self.env["attribute"], ) self.env["chef_block"] = att_prefix + " = [\n" for value in self.env["value"].split(","): # attribute = '%s = [\n' # print "Value: %s" % value self.env["chef_block"] += " '%s',\n" % str( os.path.join(self.env["path_prefix"], value) ) self.env["chef_block"] += "]\n" self.output("Chef block: %s" % self.env["chef_block"]) self.env["attribute_variable"] = att_prefix.replace("default", "node") if __name__ == "__main__": PROCESSOR = ChefAttributeList() PROCESSOR.execute_shell()