Example #1
0
    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'))
Example #2
0
    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!")
Example #3
0
 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()
Example #4
0
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)
Example #5
0
    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!")
Example #6
0
    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))
Example #7
0
            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):