public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/tinderbox-cluster:master commit in: sql/, buildbot_gentoo_ci/steps/, buildbot_gentoo_ci/db/
@ 2024-03-03  7:53 Magnus Granberg
  0 siblings, 0 replies; only message in thread
From: Magnus Granberg @ 2024-03-03  7:53 UTC (permalink / raw
  To: gentoo-commits

commit:     d8186f7796fbd57c68beafeb53978d3a2d20fc23
Author:     Magnus Granberg <zorry <AT> gentoo <DOT> org>
AuthorDate: Sun Mar  3 07:53:29 2024 +0000
Commit:     Magnus Granberg <zorry <AT> gentoo <DOT> org>
CommitDate: Sun Mar  3 07:53:29 2024 +0000
URL:        https://gitweb.gentoo.org/proj/tinderbox-cluster.git/commit/?id=d8186f77

Add bugsettings to project

Signed-off-by: Magnus Granberg <zorry <AT> gentoo.org>

 buildbot_gentoo_ci/db/model.py    | 13 +++++++
 buildbot_gentoo_ci/db/projects.py | 41 +++++++++++++++++++++-
 buildbot_gentoo_ci/steps/logs.py  |  8 ++++-
 sql/gentoo_ci_schema.sql          | 71 ++++++++++++++++++++++++++++++++++++++-
 4 files changed, 130 insertions(+), 3 deletions(-)

diff --git a/buildbot_gentoo_ci/db/model.py b/buildbot_gentoo_ci/db/model.py
index dea3e15..448e67f 100644
--- a/buildbot_gentoo_ci/db/model.py
+++ b/buildbot_gentoo_ci/db/model.py
@@ -152,6 +152,18 @@ class Model(base.DBConnectorComponent):
                   nullable=False),
     )
 
+    # projects bugs settings
+    projects_bugs = sautils.Table(
+        "projects_bugs", metadata,
+        sa.Column('id', sa.Integer, primary_key=True),
+        sa.Column('project_uuid', sa.String(36),
+                  sa.ForeignKey('projects.uuid', ondelete='CASCADE'),
+                  nullable=False),
+        sa.Column('enabled', sa.Boolean, default=False),
+        sa.Column('auto_assigne', sa.Boolean, default=False),
+        sa.Column('extra_summery', sa.String(255), nullable=False),
+    )
+
     # What repository's use by projects
     projects_repositorys = sautils.Table(
         "projects_repositorys", metadata,
@@ -167,6 +179,7 @@ class Model(base.DBConnectorComponent):
         sa.Column('build', sa.Boolean, default=False),
         sa.Column('test', sa.Boolean, default=False),
         sa.Column('test_mr', sa.Boolean, default=False),
+        sa.Column('bug', sa.Boolean, default=False),
     )
 
     # projects etc/portage settings

diff --git a/buildbot_gentoo_ci/db/projects.py b/buildbot_gentoo_ci/db/projects.py
index 7ffac97..23cabde 100644
--- a/buildbot_gentoo_ci/db/projects.py
+++ b/buildbot_gentoo_ci/db/projects.py
@@ -79,6 +79,21 @@ class ProjectsConnectorComponent(base.DBConnectorComponent):
         res = yield self.db.pool.do(thd)
         return res
 
+    @defer.inlineCallbacks
+    def getRepositorySettingByProjUuidAndRepoUuid(self, project_uuid, repository_uuid):
+        def thd(conn):
+            tbl = self.db.model.projects_repositorys
+            q = tbl.select()
+            q = q.where(tbl.c.project_uuid == project_uuid)
+            q = q.where(tbl.c.repository_uuid == repository_uuid)
+            res = conn.execute(q)
+            row = res.fetchone()
+            if not row:
+                return None
+            return self._row2dict_projects_repositorys(conn, row)
+        res = yield self.db.pool.do(thd)
+        return res
+
     @defer.inlineCallbacks
     def getRepositorysByProjectUuid(self, uuid, auto=True):
         def thd(conn):
@@ -212,6 +227,20 @@ class ProjectsConnectorComponent(base.DBConnectorComponent):
         res = yield self.db.pool.do(thd)
         return res
 
+    @defer.inlineCallbacks
+    def getBugsSettingsByProjectUuid(self, uuid):
+        def thd(conn):
+            tbl = self.db.model.projects_bugs
+            q = tbl.select()
+            q = q.where(tbl.c.project_uuid == uuid)
+            res = conn.execute(q)
+            row = res.fetchone()
+            if not row:
+                return None
+            return self._row2dict_projects_bugs(conn, row)
+        res = yield self.db.pool.do(thd)
+        return res
+
     def _row2dict(self, conn, row):
         return dict(
             uuid=row.uuid,
@@ -243,7 +272,8 @@ class ProjectsConnectorComponent(base.DBConnectorComponent):
             pkgcheck=pkgcheck,
             build=row.build,
             test=row.test,
-            test_mr=row.test_mr
+            test_mr=row.test_mr,
+            bug=row.bug
             )
 
     def _row2dict_projects_workers(self, conn, row):
@@ -312,3 +342,12 @@ class ProjectsConnectorComponent(base.DBConnectorComponent):
             status=row.status,
             type=row.type
             )
+
+    def _row2dict_projects_bugs(self, conn, row):
+        return dict(
+            id=row.id,
+            project_uuid=row.project_uuid,
+            enabled=row.enabled,
+            auto_assigne=row.auto_assigne,
+            extra_summery=row.extra_summery
+            )

diff --git a/buildbot_gentoo_ci/steps/logs.py b/buildbot_gentoo_ci/steps/logs.py
index 34aee29..84f5058 100644
--- a/buildbot_gentoo_ci/steps/logs.py
+++ b/buildbot_gentoo_ci/steps/logs.py
@@ -494,8 +494,14 @@ class SetupBugReportSteps(BuildStep):
     def run(self):
         self.gentooci = self.master.namedServices['services'].namedServices['gentooci']
         bug_config = self.gentooci.config.project['bug_config']
+        bug_settings_data = yield self.gentooci.db.projects.getBugsSettingsByProjectUuid(self.getProperty("project_data")['uuid'])
+        project_repository_settings = yield self.gentooci.db.projects.getRepositorySettingByProjUuidAndRepoUuid(self.getProperty("project_data")['uuid'], self.getProperty('repository_data')['uuid'])
         # add bug enable profile and repo
+        make_bugreport = False
         if bug_config['enable'] and self.getProperty('status') == 'failed' and self.getProperty('error_dict')['title_found'] and not self.getProperty('bgo'):
+            if bug_settings_data['enable'] and project_repository_settings['bug']:
+                make_bugreport = True
+        if make_bugreport:
             aftersteps_list = []
             #Post
             p = Properties()
@@ -506,7 +512,7 @@ class SetupBugReportSteps(BuildStep):
             bug_args['user'] = bug_config['user']
             bug_args['passwd'] = yield p.render(util.Secret("bugs_password"))
             bug_params = {}
-            title = separator.join([bug_config['extra_summery'], self.getProperty('error_dict')['cpv'], self.getProperty('error_dict')['title_nice']])
+            title = separator.join([bug_config['extra_summery'], bug_settings_data['extra_summery'], self.getProperty('error_dict')['cpv'], self.getProperty('error_dict')['title_nice']])
             # bug title max 170
             if len(title) >= 170:
                 title = title[:167] + '...'

diff --git a/sql/gentoo_ci_schema.sql b/sql/gentoo_ci_schema.sql
index 1a4284f..133b98a 100644
--- a/sql/gentoo_ci_schema.sql
+++ b/sql/gentoo_ci_schema.sql
@@ -503,6 +503,43 @@ CREATE TABLE public.projects (
 
 ALTER TABLE public.projects OWNER TO buildbot;
 
+--
+-- Name: projects_bugs; Type: TABLE; Schema: public; Owner: buildbot
+--
+
+CREATE TABLE public.projects_bugs (
+    id integer NOT NULL,
+    project_uuid character varying(36),
+    enabled boolean,
+    auto_assigne boolean,
+    extra_summery character varying(255)
+);
+
+
+ALTER TABLE public.projects_bugs OWNER TO buildbot;
+
+--
+-- Name: projects_bugs_id_seq; Type: SEQUENCE; Schema: public; Owner: buildbot
+--
+
+CREATE SEQUENCE public.projects_bugs_id_seq
+    AS integer
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE public.projects_bugs_id_seq OWNER TO buildbot;
+
+--
+-- Name: projects_builds_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: buildbot
+--
+
+ALTER SEQUENCE public.projects_bugs_id_seq OWNED BY public.projects_bugs.id;
+
+
 --
 -- Name: projects_builds; Type: TABLE; Schema: public; Owner: buildbot
 --
@@ -760,7 +797,8 @@ CREATE TABLE public.projects_repositorys (
     pkgcheck public.projects_repositorys_pkgcheck,
     build boolean,
     test boolean,
-    test_mr boolean
+    test_mr boolean,
+    bug boolean
 );
 
 
@@ -1031,6 +1069,13 @@ ALTER TABLE public.workers_images OWNER TO buildbot;
 ALTER TABLE ONLY public.portages_makeconf ALTER COLUMN id SET DEFAULT nextval('public.portages_makeconf_id_seq'::regclass);
 
 
+--
+-- Name: projects_bugs id; Type: DEFAULT; Schema: public; Owner: buildbot
+--
+
+ALTER TABLE ONLY public.projects_bugs ALTER COLUMN id SET DEFAULT nextval('public.projects_bugs_id_seq'::regclass);
+
+
 --
 -- Name: projects_builds id; Type: DEFAULT; Schema: public; Owner: buildbot
 --
@@ -1206,6 +1251,22 @@ ALTER TABLE ONLY public.portages_makeconf
     ADD CONSTRAINT portages_makeconf_unique UNIQUE (id);
 
 
+--
+-- Name: projects_builds projects_bugs_pkey; Type: CONSTRAINT; Schema: public; Owner: buildbot
+--
+
+ALTER TABLE ONLY public.projects_bugs
+    ADD CONSTRAINT projects_bugs_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: projects_builds projects_bugs_unique; Type: CONSTRAINT; Schema: public; Owner: buildbot
+--
+
+ALTER TABLE ONLY public.projects_bugs
+    ADD CONSTRAINT projects_bugs_unique UNIQUE (id);
+
+
 --
 -- Name: projects_builds projects_builds_pkey; Type: CONSTRAINT; Schema: public; Owner: buildbot
 --
@@ -1558,6 +1619,14 @@ ALTER TABLE ONLY public.projects_portages_package
     ADD CONSTRAINT project_portage_package_pkey FOREIGN KEY (project_uuid) REFERENCES public.projects(uuid) NOT VALID;
 
 
+--
+-- Name: projects_bugs projects_fkey; Type: FK CONSTRAINT; Schema: public; Owner: buildbot
+--
+
+ALTER TABLE ONLY public.projects_bugs
+    ADD CONSTRAINT projects_fkey FOREIGN KEY (project_uuid) REFERENCES public.projects(uuid) NOT VALID;
+
+
 --
 -- Name: projects_builds projects_fkey; Type: FK CONSTRAINT; Schema: public; Owner: buildbot
 --


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2024-03-03  7:53 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-03  7:53 [gentoo-commits] proj/tinderbox-cluster:master commit in: sql/, buildbot_gentoo_ci/steps/, buildbot_gentoo_ci/db/ Magnus Granberg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox