diff --git a/packstack/modules/ospluginutils.py b/packstack/modules/ospluginutils.py index d8ddbae93..fe3fe5b21 100644 --- a/packstack/modules/ospluginutils.py +++ b/packstack/modules/ospluginutils.py @@ -10,7 +10,7 @@ PUPPET_DIR = os.path.join(basedefs.DIR_PROJECT_DIR, "puppet") PUPPET_TEMPLATE_DIR = os.path.join(PUPPET_DIR, "templates") class NovaConfig(object): - """ + """ Helper class to create puppet manifest entries for nova_config """ def __init__(self): @@ -25,19 +25,20 @@ class NovaConfig(object): return entry entry += "nova_config{\n" - for k,v in self.options.items(): - entry += ' "%s": value => "%s";\n'%(k,v) + for k, v in self.options.items(): + entry += ' "%s": value => "%s";\n' % (k, v) entry += "}" return entry + class ManifestFiles(object): def __init__(self): self.filelist = [] - # continuous manifest file that have the same marker can be + # continuous manifest file that have the same marker can be # installed in parallel, if on different servers def addFile(self, filename, marker): - for f,p in self.filelist: + for f, p in self.filelist: if f == filename: return self.filelist.append((filename, marker,)) @@ -46,9 +47,11 @@ class ManifestFiles(object): return [f for f in self.filelist] manifestfiles = ManifestFiles() + def getManifestTemplate(template_name): with open(os.path.join(PUPPET_TEMPLATE_DIR, template_name)) as fp: - return fp.read()%controller.CONF + return fp.read() % controller.CONF + def appendManifestFile(manifest_name, data, marker=''): if not os.path.exists(basedefs.PUPPET_MANIFEST_DIR): @@ -58,10 +61,11 @@ def appendManifestFile(manifest_name, data, marker=''): with open(manifestfile, 'a') as fp: fp.write("\n") fp.write(data) - + + def gethostlist(CONF): hosts = [] - for key,value in CONF.items(): + for key, value in CONF.items(): if key.endswith("_HOST"): value = value.split('/')[0] if value not in hosts: diff --git a/packstack/plugins/puppet_950.py b/packstack/plugins/puppet_950.py index 47b9e357b..82dd50702 100644 --- a/packstack/plugins/puppet_950.py +++ b/packstack/plugins/puppet_950.py @@ -20,9 +20,10 @@ PLUGIN_NAME_COLORED = utils.getColoredText(PLUGIN_NAME, basedefs.BLUE) logging.debug("plugin %s loaded", __name__) -PUPPETDIR = os.path.abspath(os.path.join(basedefs.DIR_PROJECT_DIR, 'puppet')) +PUPPETDIR = os.path.abspath(os.path.join(basedefs.DIR_PROJECT_DIR, 'puppet')) MODULEDIR = os.path.join(PUPPETDIR, "modules") + def initConfig(controllerObject): global controller controller = controllerObject @@ -30,12 +31,12 @@ def initConfig(controllerObject): paramsList = [ ] - groupDict = { "GROUP_NAME" : "PUPPET", - "DESCRIPTION" : "Puppet Config paramaters", - "PRE_CONDITION" : utils.returnYes, - "PRE_CONDITION_MATCH" : "yes", - "POST_CONDITION" : False, - "POST_CONDITION_MATCH" : True} + groupDict = {"GROUP_NAME" : "PUPPET", + "DESCRIPTION" : "Puppet Config paramaters", + "PRE_CONDITION" : utils.returnYes, + "PRE_CONDITION_MATCH" : "yes", + "POST_CONDITION" : False, + "POST_CONDITION_MATCH" : True} controller.addGroup(groupDict, paramsList) @@ -53,29 +54,33 @@ def initSequences(controller): ] controller.addSequence("Puppet", [], [], puppetsteps) + def runCleanup(): localserver = utils.ScriptRunner() - localserver.append("rm -rf %s/*pp"%basedefs.PUPPET_MANIFEST_DIR) + localserver.append("rm -rf %s/*pp" % basedefs.PUPPET_MANIFEST_DIR) localserver.execute() + def installpuppet(): for hostname in gethostlist(controller.CONF): server = utils.ScriptRunner(hostname) server.append("rpm -q puppet || yum install -y puppet") server.execute() + def copyPuppetModules(): server = utils.ScriptRunner() tar_opts = "" if platform.linux_distribution()[0] == "Fedora": tar_opts += "--exclude create_resources " for hostname in gethostlist(controller.CONF): - server.append("cd %s/puppet"%basedefs.DIR_PROJECT_DIR) - server.append("tar %s --dereference -czf - modules | ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@%s tar -C %s -xzf -"%(tar_opts, hostname, basedefs.VAR_DIR)) - server.append("cd %s"%basedefs.PUPPET_MANIFEST_DIR) - server.append("tar %s --dereference -czf - ../manifests | ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@%s tar -C %s -xzf -"%(tar_opts, hostname, basedefs.VAR_DIR)) + server.append("cd %s/puppet" % basedefs.DIR_PROJECT_DIR) + server.append("tar %s --dereference -czf - modules | ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@%s tar -C %s -xzf -" % (tar_opts, hostname, basedefs.VAR_DIR)) + server.append("cd %s" % basedefs.PUPPET_MANIFEST_DIR) + server.append("tar %s --dereference -czf - ../manifests | ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@%s tar -C %s -xzf -" % (tar_opts, hostname, basedefs.VAR_DIR)) server.execute() + def waitforpuppet(currently_running): while currently_running: for hostname, log in currently_running: @@ -103,16 +108,17 @@ def applyPuppetManifest(): if lastmarker != None and lastmarker != marker: waitforpuppet(currently_running) lastmarker = marker - - for hostname in gethostlist(controller.CONF): - if "/%s_"%hostname not in manifest: continue - print "Applying "+ manifest + for hostname in gethostlist(controller.CONF): + if "/%s_" % hostname not in manifest: + continue + + print "Applying " + manifest server = utils.ScriptRunner(hostname) - logfile = "%s.log"%manifest + logfile = "%s.log" % manifest currently_running.append((hostname, logfile)) - command = "( flock %s/ps.lock puppet apply --modulepath %s/modules %s > %s_ 2>&1 < /dev/null ; mv %s_ %s ) > /dev/null 2>&1 < /dev/null &"%(basedefs.VAR_DIR, basedefs.VAR_DIR, manifest, logfile, logfile, logfile) + command = "( flock %s/ps.lock puppet apply --modulepath %s/modules %s > %s_ 2>&1 < /dev/null ; mv %s_ %s ) > /dev/null 2>&1 < /dev/null &" % (basedefs.VAR_DIR, basedefs.VAR_DIR, manifest, logfile, logfile, logfile) server.append(command) server.execute()