commit: 12c4aa125889ef4518a7ecc8232a10d55b129301
Author: Magnus Granberg <zorry <AT> gentoo <DOT> org>
AuthorDate: Sun Jan 10 21:40:48 2021 +0000
Commit: Magnus Granberg <zorry <AT> gentoo <DOT> org>
CommitDate: Sun Jan 10 21:40:48 2021 +0000
URL:
https://gitweb.gentoo.org/proj/tinderbox-cluster.git/commit/?id=12c4aa12
Add CheckCGentooCiProject on BuildFactory update_db_cp
Signed-off-by: Magnus Granberg <zorry <AT> gentoo.org>
buildbot_gentoo_ci/config/buildfactorys.py | 4 +-
buildbot_gentoo_ci/db/categorys.py | 76 ++++++++++++++++++++++++++++++
buildbot_gentoo_ci/db/connector.py | 2 +
buildbot_gentoo_ci/db/model.py | 10 ++--
buildbot_gentoo_ci/steps/category.py | 58 +++++++++++++++++++++++
5 files changed, 143 insertions(+), 7 deletions(-)
diff --git a/buildbot_gentoo_ci/config/buildfactorys.py
b/buildbot_gentoo_ci/config/buildfactorys.py
index 3fae376..4a0ffcd 100644
--- a/buildbot_gentoo_ci/config/buildfactorys.py
+++ b/buildbot_gentoo_ci/config/buildfactorys.py
@@ -5,7 +5,7 @@ from buildbot.plugins import steps as buildbot_steps
from buildbot.plugins import util
from buildbot_gentoo_ci.steps import update_db
-#from buildbot_gentoo_ci.steps import category
+from buildbot_gentoo_ci.steps import category
#from buildbot_gentoo_ci.steps import package
def update_db_check():
@@ -37,7 +37,7 @@ def update_db_cp():
# else
# add category to db step
# return category_data
- #f.addStep(category.CheckCGentooCiProject())
+ f.addStep(category.CheckCGentooCiProject())
# if package in db
# return package_data
# add check package path step at end
diff --git a/buildbot_gentoo_ci/db/categorys.py
b/buildbot_gentoo_ci/db/categorys.py
new file mode 100644
index 0000000..f2bfde4
--- /dev/null
+++ b/buildbot_gentoo_ci/db/categorys.py
@@ -0,0 +1,76 @@
+# This file has parts from Buildbot and is modifyed by Gentoo Authors.
+# Buildbot is free software: you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation, version 2.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 51
+# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Copyright Buildbot Team Members
+# Origins: buildbot.db.*
+# Modifyed by Gentoo Authors.
+# Copyright 2021 Gentoo Authors
+
+import uuid
+import sqlalchemy as sa
+
+from twisted.internet import defer
+
+from buildbot.db import base
+
+class CategorysConnectorComponent(base.DBConnectorComponent):
+
+ @defer.inlineCallbacks
+ def getCategoryByName(self, name):
+ def thd(conn):
+ tbl = self.db.model.categorys
+ q = tbl.select()
+ q = q.where(tbl.c.name == name)
+ res = conn.execute(q)
+ row = res.fetchone()
+ if not row:
+ return None
+ return self._row2dict(conn, row)
+ res = yield self.db.pool.do(thd)
+ return res
+
+ @defer.inlineCallbacks
+ def getCategoryByUuid(self, uuid):
+ def thd(conn):
+ tbl = self.db.model.categorys
+ q = tbl.select()
+ q = q.where(tbl.c.uuid == uuid)
+ res = conn.execute(q)
+ row = res.fetchone()
+ if not row:
+ return None
+ return self._row2dict(conn, row)
+ res = yield self.db.pool.do(thd)
+ return res
+
+ @defer.inlineCallbacks
+ def addCategory(self, name):
+ def thd(conn, no_recurse=False):
+ try:
+ tbl = self.db.model.categorys
+ q = tbl.insert()
+ r = conn.execute(q, dict(name=name))
+ except (sa.exc.IntegrityError, sa.exc.ProgrammingError):
+ uuid = None
+ else:
+ uuid = r.inserted_primary_key[0]
+ return uuid
+ res = yield self.db.pool.do(thd)
+ return res
+
+ def _row2dict(self, conn, row):
+ return dict(
+ uuid=row.uuid,
+ name=row.name
+ )
diff --git a/buildbot_gentoo_ci/db/connector.py
b/buildbot_gentoo_ci/db/connector.py
index f95a121..c10fc49 100644
--- a/buildbot_gentoo_ci/db/connector.py
+++ b/buildbot_gentoo_ci/db/connector.py
@@ -32,6 +32,7 @@ from buildbot.util import service
from buildbot_gentoo_ci.db import model
from buildbot_gentoo_ci.db import projects
from buildbot_gentoo_ci.db import repositorys
+from buildbot_gentoo_ci.db import categorys
upgrade_message = textwrap.dedent("""\
@@ -73,6 +74,7 @@ class DBConnector(service.ReconfigurableServiceMixin,
self.model = model.Model(self)
self.projects = projects.ProjectsConnectorComponent(self)
self.repositorys = repositorys.RepositorysConnectorComponent(self)
+ self.categorys = categorys.CategorysConnectorComponent(self)
@defer.inlineCallbacks
def setup(self, config, check_version=True, verbose=True):
diff --git a/buildbot_gentoo_ci/db/model.py b/buildbot_gentoo_ci/db/model.py
index 1ab5990..e01462f 100644
--- a/buildbot_gentoo_ci/db/model.py
+++ b/buildbot_gentoo_ci/db/model.py
@@ -138,7 +138,7 @@ class Model(base.DBConnectorComponent):
)
categorys = sautils.Table(
- "categories", metadata,
+ "categorys", metadata,
sa.Column('uuid', sa.String(36), primary_key=True,
default=lambda: str(uuid.uuid4())
),
@@ -152,7 +152,7 @@ class Model(base.DBConnectorComponent):
),
sa.Column('name', sa.String(255), nullable=False),
sa.Column('category_uuid', sa.String(36),
- sa.ForeignKey('categories.uuid', ondelete='CASCADE'),
+ sa.ForeignKey('categorys.uuid', ondelete='CASCADE'),
nullable=False),
sa.Column('repository_uuid', sa.String(36),
sa.ForeignKey('repositorys.uuid', ondelete='CASCADE'),
@@ -175,14 +175,14 @@ class Model(base.DBConnectorComponent):
sa.Column('deleted_at', sa.Integer, nullable=True),
)
- ebuildkeywords = sautils.Table(
- "ebuildkeywords", metadata,
+ ebuilds_keywords = sautils.Table(
+ "ebuilds_keywords", metadata,
# unique id per project
sa.Column('id', sa.Integer, primary_key=True),
# project's name
sa.Column('keyword_id', sa.Integer,
sa.ForeignKey('keywords.id', ondelete='CASCADE')),
- sa.Column('ebuild_uuid', sa.String(36),
+ sa.Column('ebuilds_uuid', sa.String(36),
sa.ForeignKey('ebuilds.uuid', ondelete='CASCADE')),
sa.Column('status', sa.String(255), nullable=False),
)
diff --git a/buildbot_gentoo_ci/steps/category.py
b/buildbot_gentoo_ci/steps/category.py
new file mode 100644
index 0000000..e641a97
--- /dev/null
+++ b/buildbot_gentoo_ci/steps/category.py
@@ -0,0 +1,58 @@
+# Copyright 2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+import re
+import os
+
+from portage.xml.metadata import MetaDataXML
+from portage.checksum import perform_checksum
+
+from twisted.internet import defer
+from twisted.python import log
+
+from buildbot.process.buildstep import BuildStep
+from buildbot.process.results import SUCCESS
+from buildbot.process.results import FAILURE
+
+class AddCategory(BuildStep):
+ def __init__(self, **kwargs):
+ super().__init__(**kwargs)
+
+ @defer.inlineCallbacks
+ def run(self):
+ self.gentooci =
self.master.namedServices['services'].namedServices['gentooci']
+ self.category = self.getProperty("category")
+ self.category_data = {}
+ self.category_data['name'] = self.category
+ self.category_data['uuid'] = yield
self.gentooci.db.categorys.addCategory(self.category)
+ print(self.category_data)
+ self.setProperty("category_data", self.category_data, 'category_data')
+ self.setProperty("config_root", self.getProperty("config_root"),
'config_root')
+ self.setProperty("project_data", self.getProperty("project_data"),
'project_data')
+ self.setProperty("repository", self.getProperty("repository"),
'repository')
+ self.setProperty("cpv", self.getProperty("cpv"), 'cpv')
+ return SUCCESS
+
+class CheckCGentooCiProject(BuildStep):
+ def __init__(self, **kwargs):
+ super().__init__(**kwargs)
+
+ @defer.inlineCallbacks
+ def run(self):
+ self.gentooci =
self.master.namedServices['services'].namedServices['gentooci']
+ self.category = yield self.getProperty("cpv").split('/')[0]
+ print(self.category)
+ self.category_data = yield
self.gentooci.db.categorys.getCategoryByName(self.category)
+ self.setProperty("config_root", self.getProperty("config_root"),
'config_root')
+ self.setProperty("project_data", self.getProperty("project_data"),
'project_data')
+ self.setProperty("repository", self.getProperty("repository"),
'repository')
+ self.setProperty("cpv", self.getProperty("cpv"), 'cpv')
+ print(self.category_data)
+ if self.category_data is None:
+ self.setProperty("category", self.category, 'category')
+ yield self.build.addStepsAfterCurrentStep([AddCategory()])
+ #yield self.build.addStepsAfterLastStep([AddMetadataCategory()])
+ return SUCCESS
+ self.setProperty("category_data", self.category_data, 'category_data')
+ #yield self.build.addStepsAfterLastStep([CheckPathCategory()])
+ return SUCCESS