From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 5FF1B138CD1 for ; Sat, 9 May 2015 15:03:19 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id C23E1E087B; Sat, 9 May 2015 15:03:18 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 4D5E2E087B for ; Sat, 9 May 2015 15:03:18 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 2BA4B340FFC for ; Sat, 9 May 2015 15:03:17 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 92C349D4 for ; Sat, 9 May 2015 15:03:13 +0000 (UTC) From: "Magnus Granberg" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Magnus Granberg" Message-ID: <1431183493.f2b047e20193e5cafe00e71846ba84df5fa3cc59.zorry@gentoo> Subject: [gentoo-commits] proj/tinderbox-cluster:master commit in: tbc/pym/, sql/ X-VCS-Repository: proj/tinderbox-cluster X-VCS-Files: sql/structure_dump.sql tbc/pym/build_log.py tbc/pym/check_setup.py tbc/pym/db_mapping.py tbc/pym/jobs.py tbc/pym/package.py tbc/pym/readconf.py tbc/pym/sqlquerys.py tbc/pym/sync.py tbc/pym/updatedb.py X-VCS-Directories: tbc/pym/ sql/ X-VCS-Committer: zorry X-VCS-Committer-Name: Magnus Granberg X-VCS-Revision: f2b047e20193e5cafe00e71846ba84df5fa3cc59 X-VCS-Branch: master Date: Sat, 9 May 2015 15:03:13 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 0b2612dc-4614-4ec2-996f-6a351f4285c7 X-Archives-Hash: da5fdb32a1ecbaa98ccbcd86b4c1cb3c commit: f2b047e20193e5cafe00e71846ba84df5fa3cc59 Author: Magnus Granberg gentoo org> AuthorDate: Sat May 9 14:58:13 2015 +0000 Commit: Magnus Granberg gentoo org> CommitDate: Sat May 9 14:58:13 2015 +0000 URL: https://gitweb.gentoo.org/proj/tinderbox-cluster.git/commit/?id=f2b047e2 Add repoman and qa info to db, fix buildjob check and some smaller fix. sql/structure_dump.sql | 93 +++++++++++++++++++++++++------------------------- tbc/pym/build_log.py | 24 ++++++------- tbc/pym/check_setup.py | 15 +++++--- tbc/pym/db_mapping.py | 14 +++++++- tbc/pym/jobs.py | 20 ++--------- tbc/pym/package.py | 2 +- tbc/pym/readconf.py | 8 ++--- tbc/pym/sqlquerys.py | 35 ++++++++++++++----- tbc/pym/sync.py | 44 ++++++++++++++++++++---- tbc/pym/updatedb.py | 2 +- 10 files changed, 153 insertions(+), 104 deletions(-) diff --git a/sql/structure_dump.sql b/sql/structure_dump.sql index 5fe548b..9d9ecba 100644 --- a/sql/structure_dump.sql +++ b/sql/structure_dump.sql @@ -3,7 +3,7 @@ -- http://www.phpmyadmin.net -- -- Host: localhost --- Generation Time: Apr 18, 2015 at 08:31 PM +-- Generation Time: May 09, 2015 at 02:34 PM -- Server version: 10.0.15-MariaDB-log -- PHP Version: 5.6.5-pl0-gentoo @@ -17,7 +17,7 @@ SET time_zone = "+00:00"; /*!40101 SET NAMES utf8 */; -- --- Database: `tbc` +-- Database: `zobcs` -- DELIMITER $$ @@ -57,10 +57,10 @@ CREATE TABLE IF NOT EXISTS `build_jobs` ( `setup_id` int(11) NOT NULL, `config_id` int(11) NOT NULL, `status` enum('Waiting','Building','Looked') NOT NULL DEFAULT 'Waiting', - `build_now` tinyint(1) NOT NULL DEFAULT '0', + `build_now` tinyint(1) NOT NULL, `removebin` tinyint(1) NOT NULL, `time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=MyISAM AUTO_INCREMENT=1325 DEFAULT CHARSET=utf8 COMMENT='The build work list'; +) ENGINE=MyISAM AUTO_INCREMENT=3113 DEFAULT CHARSET=utf8 COMMENT='The build work list'; -- -------------------------------------------------------- @@ -99,7 +99,7 @@ CREATE TABLE IF NOT EXISTS `build_jobs_use` ( `build_job_id` int(11) NOT NULL, `use_id` int(11) NOT NULL, `status` tinyint(1) NOT NULL DEFAULT '0' -) ENGINE=MyISAM AUTO_INCREMENT=6067 DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=17343 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -115,7 +115,7 @@ CREATE TABLE IF NOT EXISTS `build_logs` ( `log_hash` varchar(100) NOT NULL, `bug_id` int(10) NOT NULL DEFAULT '0', `time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=MyISAM AUTO_INCREMENT=15154 DEFAULT CHARSET=utf8 COMMENT='Main log info for the builds'; +) ENGINE=MyISAM AUTO_INCREMENT=17625 DEFAULT CHARSET=utf8 COMMENT='Main log info for the builds'; -- -------------------------------------------------------- @@ -130,7 +130,7 @@ CREATE TABLE IF NOT EXISTS `build_logs_config` ( `einfo_id` int(11) NOT NULL, `logname` varchar(150) NOT NULL COMMENT 'filename of the log', `time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=MyISAM AUTO_INCREMENT=41689 DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=44160 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -154,7 +154,7 @@ CREATE TABLE IF NOT EXISTS `build_logs_errors` ( `id` int(11) NOT NULL, `build_log_id` int(11) NOT NULL, `error_id` int(11) NOT NULL -) ENGINE=MyISAM AUTO_INCREMENT=2616 DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=3379 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -168,7 +168,7 @@ CREATE TABLE IF NOT EXISTS `build_logs_hilight` ( `start_line` int(11) NOT NULL, `end_line` int(11) NOT NULL, `hilight_css_id` int(11) NOT NULL -) ENGINE=MyISAM AUTO_INCREMENT=350435 DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=413189 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -190,9 +190,9 @@ CREATE TABLE IF NOT EXISTS `build_logs_qa` ( CREATE TABLE IF NOT EXISTS `build_logs_repoman` ( `id` int(11) NOT NULL, - `build_logs_id` int(11) NOT NULL, + `build_log_id` int(11) NOT NULL, `summery_text` text NOT NULL -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=51 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -205,7 +205,7 @@ CREATE TABLE IF NOT EXISTS `build_logs_use` ( `build_log_id` int(11) NOT NULL, `use_id` int(11) NOT NULL, `status` tinyint(1) NOT NULL -) ENGINE=MyISAM AUTO_INCREMENT=66200 DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=76204 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -281,7 +281,7 @@ CREATE TABLE IF NOT EXISTS `ebuilds` ( `checksum` varchar(100) NOT NULL, `active` tinyint(1) NOT NULL DEFAULT '0', `time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=MyISAM AUTO_INCREMENT=78536 DEFAULT CHARSET=utf8 COMMENT='Version main table (V)'; +) ENGINE=MyISAM AUTO_INCREMENT=81657 DEFAULT CHARSET=utf8 COMMENT='Version main table (V)'; -- -------------------------------------------------------- @@ -294,7 +294,7 @@ CREATE TABLE IF NOT EXISTS `ebuilds_iuse` ( `ebuild_id` int(11) NOT NULL, `use_id` int(11) NOT NULL, `status` tinyint(1) NOT NULL -) ENGINE=MyISAM AUTO_INCREMENT=427416 DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=456109 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -307,7 +307,7 @@ CREATE TABLE IF NOT EXISTS `ebuilds_keywords` ( `ebuild_id` int(11) NOT NULL, `keyword_id` int(11) NOT NULL, `status` enum('Stable','Unstable','Negative') NOT NULL -) ENGINE=MyISAM AUTO_INCREMENT=532825 DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=559659 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -319,7 +319,7 @@ CREATE TABLE IF NOT EXISTS `ebuilds_metadata` ( `id` int(11) NOT NULL, `ebuild_id` int(11) NOT NULL, `revision` varchar(10) NOT NULL COMMENT 'CVS revision' -) ENGINE=MyISAM AUTO_INCREMENT=78536 DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=81657 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -331,7 +331,7 @@ CREATE TABLE IF NOT EXISTS `ebuilds_restrictions` ( `id` int(11) NOT NULL, `ebuild_id` int(11) NOT NULL, `restriction_id` int(11) NOT NULL -) ENGINE=MyISAM AUTO_INCREMENT=13453 DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=14328 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -342,7 +342,7 @@ CREATE TABLE IF NOT EXISTS `ebuilds_restrictions` ( CREATE TABLE IF NOT EXISTS `emails` ( `email_id` int(11) NOT NULL, `email` varchar(150) NOT NULL -) ENGINE=MyISAM AUTO_INCREMENT=675 DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=679 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -353,7 +353,7 @@ CREATE TABLE IF NOT EXISTS `emails` ( CREATE TABLE IF NOT EXISTS `emerge_info` ( `einfo_id` int(11) NOT NULL, `emerge_info_text` text NOT NULL -) ENGINE=MyISAM AUTO_INCREMENT=16164 DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=18635 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -445,7 +445,7 @@ CREATE TABLE IF NOT EXISTS `logs` ( `log_type` enum('info','error','debug','qa') NOT NULL, `msg` text NOT NULL, `time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=MyISAM AUTO_INCREMENT=9536253 DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=22201403 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -461,7 +461,7 @@ CREATE TABLE IF NOT EXISTS `packages` ( `checksum` varchar(100) NOT NULL, `active` tinyint(1) NOT NULL, `time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=MyISAM AUTO_INCREMENT=18476 DEFAULT CHARSET=utf8 COMMENT='Packages main table (P)'; +) ENGINE=MyISAM AUTO_INCREMENT=18514 DEFAULT CHARSET=utf8 COMMENT='Packages main table (P)'; -- -------------------------------------------------------- @@ -473,7 +473,7 @@ CREATE TABLE IF NOT EXISTS `packages_emails` ( `id` int(11) NOT NULL, `package_id` int(11) NOT NULL, `email_id` int(11) NOT NULL -) ENGINE=MyISAM AUTO_INCREMENT=22297 DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=22365 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -485,7 +485,7 @@ CREATE TABLE IF NOT EXISTS `packages_metadata` ( `id` int(11) NOT NULL, `package_id` int(11) NOT NULL, `checksum` varchar(100) NOT NULL -) ENGINE=MyISAM AUTO_INCREMENT=18475 DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=18513 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -517,7 +517,8 @@ CREATE TABLE IF NOT EXISTS `restrictions` ( CREATE TABLE IF NOT EXISTS `setups` ( `setup_id` int(11) NOT NULL, - `setup` varchar(100) NOT NULL + `setup` varchar(100) NOT NULL, + `profile` varchar(150) NOT NULL ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -529,7 +530,7 @@ CREATE TABLE IF NOT EXISTS `setups` ( CREATE TABLE IF NOT EXISTS `uses` ( `use_id` int(11) NOT NULL, `flag` varchar(50) NOT NULL -) ENGINE=MyISAM AUTO_INCREMENT=6153 DEFAULT CHARSET=utf8 COMMENT='Use flags main table'; +) ENGINE=MyISAM AUTO_INCREMENT=6180 DEFAULT CHARSET=utf8 COMMENT='Use flags main table'; -- -- Indexes for dumped tables @@ -599,7 +600,7 @@ ALTER TABLE `build_logs_qa` -- Indexes for table `build_logs_repoman` -- ALTER TABLE `build_logs_repoman` - ADD PRIMARY KEY (`id`), ADD KEY `build_logs_id` (`build_logs_id`); + ADD PRIMARY KEY (`id`), ADD KEY `build_logs_id` (`build_log_id`); -- -- Indexes for table `build_logs_use` @@ -765,7 +766,7 @@ ALTER TABLE `uses` -- AUTO_INCREMENT for table `build_jobs` -- ALTER TABLE `build_jobs` -MODIFY `build_job_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=1325; +MODIFY `build_job_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=3113; -- -- AUTO_INCREMENT for table `build_jobs_emerge_options` -- @@ -780,17 +781,17 @@ MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; -- AUTO_INCREMENT for table `build_jobs_use` -- ALTER TABLE `build_jobs_use` -MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=6067; +MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=17343; -- -- AUTO_INCREMENT for table `build_logs` -- ALTER TABLE `build_logs` -MODIFY `build_log_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=15154; +MODIFY `build_log_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=17625; -- -- AUTO_INCREMENT for table `build_logs_config` -- ALTER TABLE `build_logs_config` -MODIFY `log_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=41689; +MODIFY `log_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=44160; -- -- AUTO_INCREMENT for table `build_logs_emerge_options` -- @@ -800,12 +801,12 @@ MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; -- AUTO_INCREMENT for table `build_logs_errors` -- ALTER TABLE `build_logs_errors` -MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2616; +MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=3379; -- -- AUTO_INCREMENT for table `build_logs_hilight` -- ALTER TABLE `build_logs_hilight` -MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=350435; +MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=413189; -- -- AUTO_INCREMENT for table `build_logs_qa` -- @@ -815,12 +816,12 @@ MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; -- AUTO_INCREMENT for table `build_logs_repoman` -- ALTER TABLE `build_logs_repoman` -MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; +MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=51; -- -- AUTO_INCREMENT for table `build_logs_use` -- ALTER TABLE `build_logs_use` -MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=66200; +MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=76204; -- -- AUTO_INCREMENT for table `categories` -- @@ -845,37 +846,37 @@ MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=7; -- AUTO_INCREMENT for table `ebuilds` -- ALTER TABLE `ebuilds` -MODIFY `ebuild_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=78536; +MODIFY `ebuild_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=81657; -- -- AUTO_INCREMENT for table `ebuilds_iuse` -- ALTER TABLE `ebuilds_iuse` -MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=427416; +MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=456109; -- -- AUTO_INCREMENT for table `ebuilds_keywords` -- ALTER TABLE `ebuilds_keywords` -MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=532825; +MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=559659; -- -- AUTO_INCREMENT for table `ebuilds_metadata` -- ALTER TABLE `ebuilds_metadata` -MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=78536; +MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=81657; -- -- AUTO_INCREMENT for table `ebuilds_restrictions` -- ALTER TABLE `ebuilds_restrictions` -MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=13453; +MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=14328; -- -- AUTO_INCREMENT for table `emails` -- ALTER TABLE `emails` -MODIFY `email_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=675; +MODIFY `email_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=679; -- -- AUTO_INCREMENT for table `emerge_info` -- ALTER TABLE `emerge_info` -MODIFY `einfo_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=16164; +MODIFY `einfo_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=18635; -- -- AUTO_INCREMENT for table `emerge_options` -- @@ -910,22 +911,22 @@ MODIFY `keyword_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'keyword index',AUTO -- AUTO_INCREMENT for table `logs` -- ALTER TABLE `logs` -MODIFY `log_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=9536253; +MODIFY `log_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=22201403; -- -- AUTO_INCREMENT for table `packages` -- ALTER TABLE `packages` -MODIFY `package_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=18476; +MODIFY `package_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=18514; -- -- AUTO_INCREMENT for table `packages_emails` -- ALTER TABLE `packages_emails` -MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=22297; +MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=22365; -- -- AUTO_INCREMENT for table `packages_metadata` -- ALTER TABLE `packages_metadata` -MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=18475; +MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=18513; -- -- AUTO_INCREMENT for table `repos` -- @@ -945,7 +946,7 @@ MODIFY `setup_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4; -- AUTO_INCREMENT for table `uses` -- ALTER TABLE `uses` -MODIFY `use_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=6153; +MODIFY `use_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=6180; DELIMITER $$ -- -- Events diff --git a/tbc/pym/build_log.py b/tbc/pym/build_log.py index a7d5314..bfbe8ec 100644 --- a/tbc/pym/build_log.py +++ b/tbc/pym/build_log.py @@ -23,16 +23,16 @@ portage.proxy.lazyimport.lazyimport(globals(), from tbc.repoman_tbc import tbc_repoman from tbc.text import get_log_text_dict from tbc.package import tbc_package -from tbc.readconf import get_conf_settings +from zobcs.readconf import read_config_settings from tbc.flags import tbc_use_flags from tbc.ConnectionManager import NewConnection from tbc.sqlquerys import add_tbc_logs, get_config_id, get_ebuild_id_db, add_new_buildlog, \ get_package_info, get_build_job_id, get_use_id, get_config_info, get_hilight_info, get_error_info_list, \ add_e_info, get_fail_times, add_fail_times, update_fail_times, del_old_build_jobs, add_old_ebuild, \ - update_buildjobs_status + update_buildjobs_status, update_manifest_sql, add_repoman_qa from sqlalchemy.orm import sessionmaker -def get_build_dict_db(session, config_id, settings, pkg): +def get_build_dict_db(session, config_id, settings, tbc_settings_dict, pkg): myportdb = portage.portdbapi(mysettings=settings) cpvr_list = catpkgsplit(pkg.cpv, silent=1) categories = cpvr_list[0] @@ -77,10 +77,10 @@ def get_build_dict_db(session, config_id, settings, pkg): log_msg = "%s:%s Don't have any ebuild_id!" % (pkg.cpv, repo,) add_tbc_logs(session, log_msg, "info", config_id) update_manifest_sql(session, build_dict['package_id'], "0") - init_package = tbc_package(session, settings, myportdb) + init_package = tbc_package(session, settings, myportdb, config_id, tbc_settings_dict) init_package.update_package_db(build_dict['package_id']) ebuild_id_list, status = get_ebuild_id_db(session, build_dict['checksum'], build_dict['package_id']) - if status and ebuild_id is None: + if status and ebuild_id_list is None: log_msg = "%s:%s Don't have any ebuild_id!" % (pkg.cpv, repo,) add_tbc_logs(session, log_msg, "error", config_id) else: @@ -209,8 +209,12 @@ def get_buildlog_info(session, settings, pkg, build_dict): repoman_error_list = init_repoman.check_repoman(build_dict['cpv'], pkg.repo) if repoman_error_list != []: sum_build_log_list.append("1") # repoman = 1 + else: + repoman_error_list = False if qa_error_list != []: sum_build_log_list.append("2") # qa = 2 + else: + qa_error_list = False error_search_line = "^ \\* ERROR: " for error_log_line in error_log_list: if re.search(error_search_line, error_log_line): @@ -234,8 +238,7 @@ def get_emerge_info_id(settings, trees, session, config_id): return "\n".join(emerge_info_list) def add_buildlog_main(settings, pkg, trees): - reader=get_conf_settings() - tbc_settings_dict=reader.read_tbc_settings_all() + tbc_settings_dict = read_config_settings() config = tbc_settings_dict['tbc_config'] hostname =tbc_settings_dict['hostname'] host_config = hostname + "/" + config @@ -245,7 +248,7 @@ def add_buildlog_main(settings, pkg, trees): if pkg.type_name == "binary": build_dict = None else: - build_dict = get_build_dict_db(session, config_id, settings, pkg) + build_dict = get_build_dict_db(session, config_id, settings, tbc_settings_dict, pkg) if build_dict is None: log_msg = "Package %s:%s is NOT logged." % (pkg.cpv, pkg.repo,) add_tbc_logs(session, log_msg, "info", config_id) @@ -273,6 +276,7 @@ def add_buildlog_main(settings, pkg, trees): log_msg = "Package %s:%s is NOT logged." % (pkg.cpv, pkg.repo,) add_tbc_logs(session, log_msg, "info", config_id) else: + add_repoman_qa(session, build_log_dict, log_id) os.chmod(settings.get("PORTAGE_LOG_FILE"), 0o664) log_msg = "Package: %s:%s is logged." % (pkg.cpv, pkg.repo,) add_tbc_logs(session, log_msg, "info", config_id) @@ -291,13 +295,9 @@ def log_fail_queru(session, build_dict, settings): else: build_log_dict = {} error_log_list = [] - qa_error_list = [] - repoman_error_list = [] sum_build_log_list = [] sum_build_log_list.append("2") error_log_list.append(build_dict['type_fail']) - build_log_dict['repoman_error_list'] = repoman_error_list - build_log_dict['qa_error_list'] = qa_error_list build_log_dict['summary_error_list'] = sum_build_log_list if build_dict['type_fail'] == 'merge fail': error_log_list = [] diff --git a/tbc/pym/check_setup.py b/tbc/pym/check_setup.py index 46d4391..afd6580 100644 --- a/tbc/pym/check_setup.py +++ b/tbc/pym/check_setup.py @@ -9,16 +9,19 @@ import errno from portage.exception import DigestException, FileNotFound, ParseError, PermissionDenied from tbc.text import get_file_text from tbc.sqlquerys import get_config_all_info, add_tbc_logs, get_configmetadata_info, get_setup_info +from tbc.sync import git_pull def check_make_conf(session, config_id, tbc_settings_dict): log_msg = "Checking configs for changes and errors" add_tbc_logs(session, log_msg, "info", config_id) + git_repo = tbc_settings_dict['tbc_gitrepopath'] + "/" + git_pull(session, git_repo, config_id) configsDict = {} for ConfigInfo in get_config_all_info(session): attDict={} # Set the config dir SetupInfo = get_setup_info(session, ConfigInfo.ConfigId) - check_config_dir = "/var/cache/tbc/" + tbc_settings_dict['tbc_gitreponame'] + "/" + ConfigInfo.Hostname +"/" + SetupInfo.Setup + "/" + check_config_dir = tbc_settings_dict['tbc_gitrepopath'] + "/" + ConfigInfo.Hostname +"/" + SetupInfo.Setup + "/" make_conf_file = check_config_dir + "etc/portage/make.conf" ConfigsMetaDataInfo = get_configmetadata_info(session, ConfigInfo.ConfigId) # Check if we can take a checksum on it. @@ -48,7 +51,9 @@ def check_make_conf(session, config_id, tbc_settings_dict): log_msg = "Checking configs for changes and errors ... Done" add_tbc_logs(session, log_msg, "info", config_id) -def check_make_conf_guest(session, config_id): +def check_make_conf_guest(session, tbc_settings_dict, config_id): + git_repo = tbc_settings_dict['tbc_gitrepopath'] + "/" + git_pull(session, git_repo, config_id) make_conf_file = "/etc/portage/make.conf" # Check if we can open the file and close it # Check if we have some error in the file (portage.util.getconfig) @@ -68,7 +73,7 @@ def check_make_conf_guest(session, config_id): return False return True -def check_configure_guest(session, config_id): - pass_make_conf = check_make_conf_guest(session, config_id) +def check_configure_guest(session, tbc_settings_dict, config_id): + pass_make_conf = check_make_conf_guest(session, tbc_settings_dict, config_id) print(pass_make_conf) - return pass_make_conf \ No newline at end of file + return pass_make_conf diff --git a/tbc/pym/db_mapping.py b/tbc/pym/db_mapping.py index c215456..31e1b66 100644 --- a/tbc/pym/db_mapping.py +++ b/tbc/pym/db_mapping.py @@ -16,6 +16,7 @@ class Keywords(Base): class Setups(Base): SetupId = Column('setup_id', Integer, primary_key=True) Setup = Column('setup', String(100)) + Profile = Column('profile', String(150)) __tablename__ = 'setups' class Configs(Base): @@ -46,7 +47,6 @@ class Jobs(Base): class ConfigsMetaData(Base): Id = Column('id', Integer, primary_key=True) ConfigId = Column('config_id', Integer, ForeignKey('configs.config_id')) - Profile = Column('profile', String(150)) KeywordId = Column('keyword_id', Integer, ForeignKey('keywords.keyword_id')) MakeConfText = Column('make_conf_text', Text) Checksum = Column('checksum', String(100)) @@ -216,6 +216,18 @@ class BuildLogsUse(Base): Status = Column('status', Boolean, default=False) __tablename__ = 'build_logs_use' +class BuildLogsQA(Base): + Id = Column('id', Integer, primary_key=True) + BuildLogId = Column('build_log_id', Integer, ForeignKey('build_logs.build_log_id')) + SummeryText = Column('summery_text', Text) + __tablename__ = 'build_logs_qa' + +class BuildLogsRepoman(Base): + Id = Column('id', Integer, primary_key=True) + BuildLogId = Column('build_log_id', Integer, ForeignKey('build_logs.build_log_id')) + SummeryText = Column('summery_text', Text) + __tablename__ = 'build_logs_repoman' + class ErrorsInfo(Base): ErrorId = Column('error_id', Integer, primary_key=True) ErrorName = Column('error_name', String) diff --git a/tbc/pym/jobs.py b/tbc/pym/jobs.py index 840932e..8559cf5 100644 --- a/tbc/pym/jobs.py +++ b/tbc/pym/jobs.py @@ -43,26 +43,11 @@ def jobs_main(session, config_id): # update_job_list(session, "Fail", job_id) # log_msg = "Job %s did fail." % (job_id,) # add_tbc_logs(session, log_msg, "info", config_id) - elif job == "gsync": - update_job_list(session, "Runing", job_id) - log_msg = "Job %s is runing." % (job_id,) - add_tbc_logs(session, log_msg, "info", config_id) - result = True - # result = git_pull(session) - if result: - update_job_list(session, "Done", job_id) - log_msg = "Job %s is done.." % (job_id,) - add_tbc_logs(session, log_msg, "info", config_id) - else: - update_job_list(session, "Fail", job_id) - log_msg = "Job %s did fail." % (job_id,) - add_tbc_logs(session, log_msg, "info", config_id) elif job == "esync": update_job_list(session, "Runing", job_id) log_msg = "Job %s is runing." % (job_id,) add_tbc_logs(session, log_msg, "info", config_id) - result = sync_tree(session) - if result: + if sync_tree(session) and update_db_main(session, config_id): update_job_list(session, "Done", job_id) log_msg = "Job %s is done.." % (job_id,) add_tbc_logs(session, log_msg, "info", config_id) @@ -74,8 +59,7 @@ def jobs_main(session, config_id): update_job_list(session, "Runing", job_id) log_msg = "Job %s is runing." % (job_id,) add_tbc_logs(session, log_msg, "info", config_id) - result = update_db_main(session, config_id) - if result: + ifupdate_db_main(session, config_id): update_job_list(session, "Done", job_id) log_msg = "Job %s is done.." % (job_id,) add_tbc_logs(session, log_msg, "info", config_id) diff --git a/tbc/pym/package.py b/tbc/pym/package.py index af1bff5..5f172cb 100644 --- a/tbc/pym/package.py +++ b/tbc/pym/package.py @@ -26,7 +26,7 @@ class tbc_package(object): def change_config(self, host_config): # Change config_root config_setup = table config - my_new_setup = "/var/cache/tbc/" + self._tbc_settings_dict['tbc_gitreponame'] + "/" + host_config + "/" + my_new_setup = tbc_settings_dict['tbc_gitrepopath'] + "/" + host_config + "/" mysettings_setup = portage.config(config_root = my_new_setup) return mysettings_setup diff --git a/tbc/pym/readconf.py b/tbc/pym/readconf.py index db1056e..39131db 100644 --- a/tbc/pym/readconf.py +++ b/tbc/pym/readconf.py @@ -32,10 +32,10 @@ class get_conf_settings(object): if element[0] == 'SQLPASSWD': # Password get_sql_passwd = element[1] # Buildhost root (dir for host/setup on host) - if element[0] == 'ZOBCSGITREPONAME': - get_tbc_gitreponame = element[1] + if element[0] == 'TBCREPOPATH': + get_tbc_gitrepopath = element[1] # Buildhost setup (host/setup on guest) - if element[0] == 'ZOBCSCONFIG': + if element[0] == 'TBCCONFIG': get_tbc_config = element[1] # if element[0] == 'LOGFILE': # get_tbc_logfile = element[1] @@ -47,7 +47,7 @@ class get_conf_settings(object): tbc_settings_dict['sql_host'] = get_sql_host.rstrip('\n') tbc_settings_dict['sql_user'] = get_sql_user.rstrip('\n') tbc_settings_dict['sql_passwd'] = get_sql_passwd.rstrip('\n') - tbc_settings_dict['tbc_gitreponame'] = get_tbc_gitreponame.rstrip('\n') + tbc_settings_dict['tbc_gitrepopath'] = get_tbc_gitrepopath.rstrip('\n') tbc_settings_dict['tbc_config'] = get_tbc_config.rstrip('\n') tbc_settings_dict['hostname'] = getfqdn() # tbc_settings_dict['tbc_logfile'] = get_tbc_logfile.rstrip('\n') diff --git a/tbc/pym/sqlquerys.py b/tbc/pym/sqlquerys.py index 623f0b0..f9fc8b4 100644 --- a/tbc/pym/sqlquerys.py +++ b/tbc/pym/sqlquerys.py @@ -7,7 +7,7 @@ from tbc.db_mapping import Configs, Logs, ConfigsMetaData, Jobs, BuildJobs, Pack Uses, ConfigsEmergeOptions, EmergeOptions, HiLight, BuildLogs, BuildLogsConfig, BuildJobsUse, BuildJobsRedo, \ HiLightCss, BuildLogsHiLight, BuildLogsEmergeOptions, BuildLogsErrors, ErrorsInfo, EmergeInfo, BuildLogsUse, \ BuildJobsEmergeOptions, EbuildsMetadata, EbuildsIUse, Restrictions, EbuildsRestrictions, EbuildsKeywords, \ - Keywords, PackagesMetadata, Emails, PackagesEmails, Setups + Keywords, PackagesMetadata, Emails, PackagesEmails, Setups, BuildLogsQA, BuildLogsRepoman from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound from sqlalchemy import and_, or_ @@ -69,15 +69,17 @@ def is_build_job_done(session, build_job_id): def get_packages_to_build(session, config_id): SetupInfo = get_setup_info(session, config_id) BuildJobsTmp = session.query(BuildJobs).filter(BuildJobs.SetupId==SetupInfo.SetupId). \ - order_by(BuildJobs.BuildJobId) - if session.query(BuildJobs).filter_by(SetupId = SetupInfo.SetupId).filter_by(BuildNow = True).filter_by(Status = 'Waiting').all() == [] and session.query(BuildJobs).filter_by(SetupId = SetupInfo.SetupId).filter_by(Status = 'Waiting').all() == []: + order_by(BuildJobs.BuildJobId).filter_by(Status = 'Waiting') + if BuildJobsTmp.all() == []: return None - if not BuildJobsTmp.filter_by(BuildNow = True).first() is None: - BuildJobsInfo = session.query(BuildJobs).filter_by(SetupId = SetupInfo.SetupId).filter_by(BuildNow = True). \ - filter_by(Status = 'Waiting').order_by(BuildJobs.BuildJobId).first() + elif BuildJobsTmp.filter_by(BuildNow = True).all() != []: + BuildJobsInfo = BuildJobsTmp.filter_by(BuildNow = True).first() + elif BuildJobsTmp.filter_by(BuildNow = False).all() != []: + BuildJobsInfo = BuildJobsTmp.filter_by(BuildNow = False).first() else: - BuildJobsInfo = session.query(BuildJobs).filter_by(SetupId = SetupInfo.SetupId).filter_by(Status = 'Waiting').\ - order_by(BuildJobs.BuildJobId).first() + log_msg = "BuildJobsTmp found job but the if state mant did not." + add_zobcs_logs(session, log_msg, "error", config_id) + return None update_buildjobs_status(session, BuildJobsInfo.BuildJobId, 'Looked', config_id) EbuildsInfo = session.query(Ebuilds).filter_by(EbuildId = BuildJobsInfo.EbuildId).one() PackagesInfo, CategoriesInfo = session.query(Packages, Categories).filter(Packages.PackageId==EbuildsInfo.PackageId).filter(Packages.CategoryId==Categories.CategoryId).one() @@ -266,6 +268,22 @@ def add_new_buildlog(session, build_dict, build_log_dict): del_old_build_jobs(session, build_dict['build_job_id']) return build_log_id +def add_repoman_qa(session, build_log_dict, log_id): + repoman_error = "" + qa_error = "" + if build_log_dict['qa_error_list']: + for qa_text in build_log_dict['qa_error_list']: + qa_error = qa_error + build_log_dict['qa_error_list'] + NewBuildLogQA = BuildLogsQA(BuildLogId = log_id, SummeryText = qa_error) + session.add(NewBuildLogQA) + session.commit() + if build_log_dict['repoman_error_list']: + for repoman_text in build_log_dict['repoman_error_list']: + repoman_error = repoman_error + repoman_text + NewBuildLogRepoman = BuildLogsRepoman(BuildLogId = log_id, SummeryText = repoman_error) + session.add(NewBuildLogRepoman) + session.commit() + def update_fail_times(session, FailInfo): NewBuildJobs = session.query(BuildJobs).filter_by(BuildJobId = FailInfo.BuildJobId).one() NewBuildJobs.TimeStamp = datetime.datetime.utcnow() @@ -279,7 +297,6 @@ def get_fail_times(session, build_dict): return True def add_fail_times(session, fail_querue_dict): - print(fail_querue_dict) NewBuildJobsRedo = BuildJobsRedo(BuildJobId = fail_querue_dict['build_job_id'], FailType = fail_querue_dict['fail_type'], FailTimes = fail_querue_dict['fail_times']) session.add(NewBuildJobsRedo) session.commit() diff --git a/tbc/pym/sync.py b/tbc/pym/sync.py index a75562f..f1bc56a 100644 --- a/tbc/pym/sync.py +++ b/tbc/pym/sync.py @@ -7,9 +7,10 @@ import os import errno import sys import time +from pygit2 import Repository, GIT_MERGE_ANALYSIS_FASTFORWARD, GIT_MERGE_ANALYSIS_NORMAL, \ + GIT_MERGE_ANALYSIS_UP_TO_DATE from _emerge.main import emerge_main -from tbc.readconf import get_conf_settings from tbc.sqlquerys import get_config_id, add_tbc_logs, get_config_all_info, get_configmetadata_info from tbc.updatedb import update_db_main from tbc.readconf import read_config_settings @@ -20,7 +21,7 @@ def sync_tree(session): _config = tbc_settings_dict['tbc_config'] config_id = get_config_id(session, _config, _hostname) host_config = _hostname +"/" + _config - default_config_root = "/var/cache/tbc/" + tbc_settings_dict['tbc_gitreponame'] + "/" + host_config + "/" + default_config_root = tbc_settings_dict['tbc_gitrepopath'] + "/" + host_config + "/" mysettings = portage.config(config_root = default_config_root) GuestBusy = True log_msg = "Waiting for Guest to be idel" @@ -65,9 +66,38 @@ def sync_tree(session): pass log_msg = "Emerge --sync ... Done." add_tbc_logs(session, log_msg, "info", config_id) - result = update_db_main(session, config_id) - if result: - return True + return True + +def git_pull(session, git_repo, config_id): + log_msg = "Git pull" + add_zobcs_logs(session, log_msg, "info", config_id) + repo = Repository(git_repo + ".git") + remote = repo.remotes["origin"] + remote.fetch() + remote_master_id = repo.lookup_reference('refs/remotes/origin/master').target + merge_result, _ = repo.merge_analysis(remote_master_id) + if merge_result & GIT_MERGE_ANALYSIS_UP_TO_DATE: + log_msg = "Repo is up to date" + add_zobcs_logs(session, log_msg, "info", config_id) + elif merge_result & GIT_MERGE_ANALYSIS_FASTFORWARD: + repo.checkout_tree(repo.get(remote_master_id)) + master_ref = repo.lookup_reference('refs/heads/master') + master_ref.set_target(remote_master_id) + repo.head.set_target(remote_master_id) + elif merge_result & GIT_MERGE_ANALYSIS_NORMAL: + repo.merge(remote_master_id) + assert repo.index.conflicts is None, 'Conflicts, ahhhh!' + user = repo.default_signature + tree = repo.index.write_tree() + commit = repo.create_commit('HEAD', + user, + user, + 'Merge!', + tree, + [repo.head.target, remote_master_id]) + repo.state_cleanup() else: - log_msg = "Updatedb fail" - add_tbc_logs(session, log_msg, "info", config_id) + raise AssertionError('Unknown merge analysis result') + log_msg = "Git pull ... Done" + add_zobcs_logs(session, log_msg, "info", config_id) + return True diff --git a/tbc/pym/updatedb.py b/tbc/pym/updatedb.py index 12b94c5..90a9e0a 100644 --- a/tbc/pym/updatedb.py +++ b/tbc/pym/updatedb.py @@ -25,7 +25,7 @@ def init_portage_settings(session, config_id, tbc_settings_dict): # Get default config from the configs table and default_config=1 host_config = tbc_settings_dict['hostname'] +"/" + tbc_settings_dict['tbc_config'] - default_config_root = "/var/cache/tbc/" + tbc_settings_dict['tbc_gitreponame'] + "/" + host_config + "/" + default_config_root = tbc_settings_dict['tbc_gitrepopath'] + "/" + host_config + "/" # Set config_root (PORTAGE_CONFIGROOT) to default_config_root mysettings = portage.config(config_root = default_config_root)