def _publish_isos(self, repo, config, progress_callback=None): """ Generate the iso images on the exported repo and publish them to the publish directory. Supports http/https publish. This does not support repo_auth. @param repo: metadata describing the repository to which the configuration applies @type repo: pulp.plugins.model.Repository @param config: plugin configuration instance; the proposed repo configuration is found within @type config: pulp.plugins.config.PluginCallConfiguration @param progress_callback: callback to report progress info to publish_conduit @type progress_callback: function """ # build iso and publish via HTTPS https_publish_dir = iso_util.get_https_publish_iso_dir(config) https_repo_publish_dir = os.path.join(https_publish_dir, repo.id).rstrip('/') prefix = config.get('iso_prefix') or repo.id if config.get("https"): # Publish for HTTPS self.set_progress("publish_https", {"state" : "IN_PROGRESS"}, progress_callback) try: _LOG.info("HTTPS Publishing repo <%s> to <%s>" % (repo.id, https_repo_publish_dir)) isogen = GenerateIsos(self.repo_working_dir, https_repo_publish_dir, prefix=prefix, progress=self.init_progress()) isogen.run(progress_callback=progress_callback) self.summary["https_publish_dir"] = https_repo_publish_dir self.set_progress("publish_https", {"state" : "FINISHED"}, progress_callback) except: self.set_progress("publish_https", {"state" : "FAILED"}, progress_callback) else: self.set_progress("publish_https", {"state" : "SKIPPED"}, progress_callback) if os.path.lexists(https_repo_publish_dir): _LOG.debug("Removing link for %s since https is not set" % https_repo_publish_dir) shutil.rmtree(https_repo_publish_dir) # build iso and publish via HTTP http_publish_dir = iso_util.get_http_publish_iso_dir(config) http_repo_publish_dir = os.path.join(http_publish_dir, repo.id).rstrip('/') if config.get("http"): # Publish for HTTP self.set_progress("publish_http", {"state" : "IN_PROGRESS"}, progress_callback) try: _LOG.info("HTTP Publishing repo <%s> to <%s>" % (repo.id, http_repo_publish_dir)) isogen = GenerateIsos(self.repo_working_dir, http_repo_publish_dir, prefix=prefix, progress=self.init_progress()) isogen.run(progress_callback=progress_callback) self.summary["http_publish_dir"] = http_repo_publish_dir self.set_progress("publish_http", {"state" : "FINISHED"}, progress_callback) except: self.set_progress("publish_http", {"state" : "FAILED"}, progress_callback) else: self.set_progress("publish_http", {"state" : "SKIPPED"}, progress_callback) if os.path.lexists(http_repo_publish_dir): _LOG.debug("Removing link for %s since http is not set" % http_repo_publish_dir) shutil.rmtree(http_repo_publish_dir)
# generate iso images and write them to the publish directory isogen = GenerateIsos(self.group_working_dir, https_repo_publish_dir, prefix=prefix, progress=self.init_progress(), is_cancelled=self.canceled) isogen.run(progress_callback=progress_callback) self.group_summary["https_publish_dir"] = https_repo_publish_dir self.set_progress("publish_https", {"state" : "FINISHED"}, progress_callback) except Exception,e: _LOG.debug(" publish operaation failed due to exception: %s" % e) self.set_progress("publish_https", {"state" : "FAILED"}, progress_callback) else: self.set_progress("publish_https", {"state" : "SKIPPED"}, progress_callback) if os.path.lexists(https_repo_publish_dir): _LOG.debug("Removing link for %s since https is not set" % https_repo_publish_dir) shutil.rmtree(https_repo_publish_dir) # build iso and publish via HTTP http_publish_dir = iso_util.get_http_publish_iso_dir(config) http_repo_publish_dir = os.path.join(http_publish_dir, repo_group.id).rstrip('/') if config.get("http"): # Publish for HTTP self.set_progress("publish_http", {"state" : "IN_PROGRESS"}, progress_callback) try: _LOG.info("HTTP Publishing repo <%s> to <%s>" % (repo_group.id, http_repo_publish_dir)) # generate iso images and write them to the publish directory isogen = GenerateIsos(self.group_working_dir, http_repo_publish_dir, prefix=prefix, progress=self.init_progress(), is_cancelled=self.canceled) isogen.run(progress_callback=progress_callback) self.group_summary["http_publish_dir"] = http_repo_publish_dir self.set_progress("publish_http", {"state" : "FINISHED"}, progress_callback) except Exception,e: _LOG.debug(" publish operaation failed due to exception: %s" % e) self.set_progress("publish_http", {"state" : "FAILED"}, progress_callback) else: