def test_config_file(self): self.assertFalse(config.Config().load('hello')) self.assertFalse(config.ClientConfig().load('utest_config_client1.conf')) self.assertTrue(config.ClientConfig().load('/etc/yumtools.conf')) self.assertFalse(config.ServerConfig().load('utest_config_server1.conf')) self.assertTrue(config.ServerConfig().load('/etc/yumtools-serv.conf'))
def procSetbranch(self, skt, first_pdu): pdu = first_pdu # check package_name package_name = pdu.get("package_name") if not utils.isValidPackageName(package_name): return False, self._makeResponsePdu(net.PDU_ERROR_SETBRANCHERR, "package name is not a valid value.") # check version version = pdu.get("version") if not utils.isValidVersion(version): return False, self._makeResponsePdu(net.PDU_ERROR_SETBRANCHERR, "version is not a valid value.") # check release release = pdu.get("release") # check os_version os_version = pdu.get("os_version") if os_version not in self.cfg.os_version_list: return False, self._makeResponsePdu(net.PDU_ERROR_SETBRANCHERR, "os version not a valid value.") # check arch arch = pdu.get("arch") if arch not in self.cfg.arch_list: return False, self._makeResponsePdu(net.PDU_ERROR_SETBRANCHERR, "arch not a valid value.") # from branch from_branch = pdu.get("from_branch") # to branch to_branch = pdu.get("to_branch") if (from_branch not in self.cfg.branches) or (to_branch not in self.cfg.branches): return False, self._makeResponsePdu(net.PDU_ERROR_SETBRANCHERR, "branch name not exists") # generate dist file name from_file_name = self._makePackageFullName(from_branch, release, os_version, arch, package_name, version) dest_file_name = self._makePackageFullName(to_branch, release, os_version, arch, package_name, version) if not os.path.exists(from_file_name): return False, self._makeResponsePdu(net.PDU_ERROR_SETBRANCHERR, "file not exists in branch %s" % from_branch) if os.path.exists(dest_file_name): return False, self._makeResponsePdu(net.PDU_ERROR_SETBRANCHERR, "file already exists in branch %s" % to_branch) text = u"设置分支\n" subject = MAIL_SUBJECT_TEMPLATE % (self.operator_name, u"setbranch", package_name, version, release, os_version, arch, from_branch, to_branch) sendMail(config.ServerConfig().mail_sender, config.ServerConfig().mail_receiver, subject, text) # move file shutil.move(from_file_name, dest_file_name) # put to queue self.app.queue_createrepo.put(self._makePackagePath(from_branch, release, os_version, arch)) self.app.queue_createrepo.put(self._makePackagePath(to_branch, release, os_version, arch)) return True, self._makeResponsePdu(net.PDU_ERROR_SUCCESSED, "setbranch successed!")
def __init__(self): super(WorkerBase, self).__init__() self.is_running = True self.loop_delay = 1 self.daemon = True self.cfg = config.ServerConfig() self.app = application.Application() self.init()
def main(): cfg = config.ServerConfig() io.use_colored = False if not cfg.load('/etc/yumtools-serv.conf'): io.error('yumtools-serv', 'load config failed.') return d = YumtoolsServDaemon("yumtools-serv", cfg.pid_file, cfg.verbose) d.doshell(sys.argv)
def procRemove(self, skt, first_pdu): pdu = first_pdu # check package_name package_name = pdu.get("package_name") if not utils.isValidPackageName(package_name): return False, self._makeResponsePdu(net.PDU_ERROR_REMOVEERR, "package name is not a valid value.") # check version version = pdu.get("version") if not utils.isValidVersion(version): return False, self._makeResponsePdu(net.PDU_ERROR_REMOVEERR, "version is not a valid value.") # check release release = pdu.get("release") # check os_version os_version = pdu.get("os_version") if os_version not in self.cfg.os_version_list: return False, self._makeResponsePdu(net.PDU_ERROR_REMOVEERR, "os version not a valid value.") # check arch arch = pdu.get("arch") if arch not in self.cfg.arch_list: return False, self._makeResponsePdu(net.PDU_ERROR_REMOVEERR, "arch not a valid value.") # branch branch = pdu.get("branch") if branch not in self.cfg.branches: return False, self._makeResponsePdu(net.PDU_ERROR_REMOVEERR, "branch name not exists") # generate dist file name dest_file_name = self._makePackageFullName(branch, release, os_version, arch, package_name, version) if not os.path.exists(dest_file_name): io.debug('setbranch', '%s not exists' % dest_file_name) return False, self._makeResponsePdu(net.PDU_ERROR_REMOVEERR, "file not exists in branch %s" % branch) # move file os.unlink(dest_file_name) # put to queue self.app.queue_createrepo.put(self._makePackagePath(branch, release, os_version, arch)) text = u"删除分支\n" subject = MAIL_SUBJECT_TEMPLATE % (self.operator_name, u"remove", package_name, version, release, os_version, arch, branch, U"") sendMail(config.ServerConfig().mail_sender, config.ServerConfig().mail_receiver, subject, text) return True, self._makeResponsePdu(net.PDU_ERROR_SUCCESSED, "remove successed!")
def run(self): cfg = config.ServerConfig() cfg.load('/etc/yumtools-serv.conf') # push all repo files app = Application() for branch_key, branch_path in cfg.branches.items(): for el_ver in cfg.os_version_list: for arch in cfg.arch_list: repo_path = os.path.join(cfg.base_dir, branch_path, str(el_ver), arch) app.queue_createrepo.put(repo_path) # start workers crworker, servworker, cmdprocworker = self._getWorkers() self._startWorkers((crworker, servworker, cmdprocworker)) self._waitWorkers((crworker, servworker, cmdprocworker))
os.system(u'echo RPM包信息 > /usr/share/yumtools/rpm_basic.info') os.system(u'echo 安装信息 > /usr/share/yumtools/rpm_install.info') os.system(u'rpm -qip %s > /usr/share/yumtools/rpm_basic.info' % dest_file_name) os.system(u'rpm -qlp %s > /usr/share/yumtools/rpm_install.info' % dest_file_name) basic_info = open('/usr/share/yumtools/rpm_basic.info', 'r') install_info = open('/usr/share/yumtools/rpm_install.info', 'r') for i in basic_info: text = text + i.encode('utf8') text = text + u'--------------------------------------------------------\n' for i in install_info: text = text + i.encode('utf8') except Exception, _ex: io.error("rpm info error", str(_ex)) pass subject = MAIL_SUBJECT_TEMPLATE % (self.operator_name, u"upload", package_name, version, release, os_version, arch, u"", u"") sendMail(config.ServerConfig().mail_sender, config.ServerConfig().mail_receiver, subject, text) upload_branch_dirname = self.cfg.branches[self.cfg.upload_branch] # put to queue self.app.queue_createrepo.put(self._makePackagePath(self.cfg.upload_branch, release, os_version, arch)) io.log('upload', '%s successed.' % dest_file_name) return True, self._makeResponsePdu(net.PDU_ERROR_SUCCESSED, "upload successed!") def procSetbranch(self, skt, first_pdu): pdu = first_pdu # check package_name package_name = pdu.get("package_name") if not utils.isValidPackageName(package_name):