def __init__(self, config, name, version=None, force=False): self.config = config self.force = force self.rules_name = name self.log = kaizen.logging.getLogger(self) self.handler = RulesHandler(config, name, version, force) self.db = Db(config) self._init_signals() self.init_sequences()
class RulesManager(object): url = [] patches = [] def __init__(self, config, name, version=None, force=False): self.config = config self.force = force self.rules_name = name self.log = kaizen.logging.getLogger(self) self.handler = RulesHandler(config, name, version, force) self.db = Db(config) self._init_signals() self.init_sequences() def init_sequences(self): self.download_seq = self.handler.download_seq self.extract_seq = self.handler.extract_seq self.patch_seq = self.handler.patch_seq self.configure_seq = self.handler.configure_seq self.build_seq = self.handler.build_seq self.destroot_seq = self.handler.destroot_seq self.activate_seq = self.handler.activate_seq self.deactivate_seq = self.handler.deactivate_seq self.delete_destroot_seq = self.handler.delete_destroot_seq self.delete_build_seq = self.handler.delete_build_seq self.distclean_seq = self.handler.distclean_seq self.unpatch_seq = self.handler.unpatch_seq self.delete_source_seq = self.handler.delete_source_seq self.delete_download_seq = self.handler.delete_download_seq self.install_seq = self.activate_seq self.uninstall_seq = self.delete_source_seq # self.install_seq = Sequence("install", # phases_list.get("None"), # phases_list.get("Activated"), [], # False, self.activate_seq) # self.uninstall_seq = UnSequence("uninstall", # phases_list.get("Extracted"), # phases_list.get("Downloaded"), # phases_list.get("Extracted"), # [""], False, # self.delete_source_seq) def _init_signals(self): self.already_activated = \ ForwardSignal(self.handler.already_activated) def _install_dependencies(self, depanalyzer): dependencies = depanalyzer.analyse() missing = depanalyzer.get_missing() if missing: raise UnresolvedDependencies(self.rules_name, missing) for dependency in DependencyEvaluator(dependencies).list(): if not dependency.get_type() == Dependency.SESSION: continue if not phases_list.get("Activated") in \ dependency.rules.get_phases(): self.install_seq(dependency.rules) def install_dependencies(self): depanalyzer = DependencyAnalyser(self.config, self.handler) self._install_dependencies(depanalyzer) def install_runtime_dependencies(self): depanalyzer = RuntimeDependencyAnalyser(self.config, self.handler) self._install_dependencies(depanalyzer) def download(self, all=False, resume_on_error=True): if all: dependencies = self.handler.build_depends() for dependency in dependencies.itervalues(): if not dependency.get_type() == Dependency.SESSION: continue if not resume_on_error: self.download_seq(dependency.rules) else: try: self.download_seq(dependency.rules) except Error, e: self.log.err("Error while downloading " + "rules '%s': %s" %\ (dependency.name, e)) self.download_seq(self.handler, self.force)