Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package openSUSE-release-tools for
openSUSE:Factory checked in at 2026-02-11 18:48:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old)
and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.1670 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-release-tools"
Wed Feb 11 18:48:45 2026 rev:549 rq:1332386 version:20260204.08a2a831
Changes:
--------
---
/work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes
2026-01-27 16:16:26.620348682 +0100
+++
/work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.1670/openSUSE-release-tools.changes
2026-02-11 18:50:00.044283108 +0100
@@ -1,0 +2,37 @@
+Wed Feb 04 07:04:24 UTC 2026 - [email protected]
+
+- Update to version 20260204.08a2a831:
+ * gocd: sles.target: release SLES_immutable images
+
+-------------------------------------------------------------------
+Tue Feb 03 13:30:10 UTC 2026 - [email protected]
+
+- Update to version 20260203.323cb26b:
+ * feat: add branch info in gitea request implementation
+
+-------------------------------------------------------------------
+Tue Feb 03 13:13:41 UTC 2026 - [email protected]
+
+- Update to version 20260203.ca9d7371:
+ * BCI Pipelines: Remove SP6
+
+-------------------------------------------------------------------
+Tue Feb 03 12:37:42 UTC 2026 - [email protected]
+
+- Update to version 20260203.00c4d09a:
+ * Remove BCI pipelines for SP5
+ * Remove trailing whitespace
+
+-------------------------------------------------------------------
+Tue Feb 03 10:28:51 UTC 2026 - [email protected]
+
+- Update to version 20260203.280e785a:
+ * update RPM spec file for gitea support
+
+-------------------------------------------------------------------
+Wed Jan 28 14:13:03 UTC 2026 - [email protected]
+
+- Update to version 20260128.b75a72c2:
+ * Hardcode base project name to openSUSE
+
+-------------------------------------------------------------------
Old:
----
openSUSE-release-tools-20260120.7ecaa0c8.obscpio
New:
----
openSUSE-release-tools-20260204.08a2a831.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openSUSE-release-tools.spec ++++++
--- /var/tmp/diff_new_pack.TAqeap/_old 2026-02-11 18:50:01.112327960 +0100
+++ /var/tmp/diff_new_pack.TAqeap/_new 2026-02-11 18:50:01.112327960 +0100
@@ -21,7 +21,7 @@
%define announcer_filename factory-package-news
%define services osrt-slsa.target [email protected]
[email protected] [email protected] [email protected]
Name: openSUSE-release-tools
-Version: 20260120.7ecaa0c8
+Version: 20260204.08a2a831
Release: 0
Summary: Tools to aid in staging and release work for openSUSE/SUSE
License: GPL-2.0-or-later AND MIT
@@ -33,7 +33,6 @@
BuildRequires: osc >= 0.165.1
BuildRequires: python3-PyYAML
BuildRequires: python3-cmdln
-BuildRequires: python3-colorama
BuildRequires: python3-lxml
BuildRequires: python3-pycurl
BuildRequires: python3-python-dateutil
@@ -54,7 +53,6 @@
Requires: python3-PyYAML
Requires: python3-cmdln
-Requires: python3-colorama
Requires: python3-lxml
# issue-diff.py, legal-auto.py, and openqa-maintenance.py
Requires: python3-pycurl
@@ -105,6 +103,24 @@
%description announcer
OBS product release announcer for generating email diffs summaries.
+%package plat
+Summary: Platform implementations used in %{name}
+Group: Development/Languages/Python
+Requires: python3-DateTime
+Requires: python3-requests
+
+%description plat
+Platform implementations used by scripts in %{name}.
+
+%package scm
+Summary: SCM implementations used in %{name}
+Group: Development/Languages/Python
+Requires: osc
+Requires: python3-GitPython
+
+%description scm
+VCS implementations used by scripts in %{name}.
+
%package check-source
Summary: Check source review bot
Group: Development/Tools/Other
@@ -113,6 +129,8 @@
Requires: obs-service-source_validator
Requires: osclib = %{version}
Requires: perl-Text-Diff
+Requires: %{name}-plat
+Requires: %{name}-scm
Requires(pre): shadow
BuildArch: noarch
@@ -309,6 +327,7 @@
# devel-project.py needs 0.160.0 for get_request_list(withfullhistory) param.
Requires: osc >= 0.160.0
Requires: osclib = %{version}
+Requires: python3-colorama
BuildArch: noarch
%description -n osc-plugin-staging
@@ -336,6 +355,11 @@
install -Dpm0644 slsa/osrt-slsa-user.conf
%{buildroot}%{_sysusersdir}/%{name}.conf
+for dir in plat scm; do
+ mkdir -p %{buildroot}%{python_sitelib}/$dir
+ cp -r $dir/* %{buildroot}%{python_sitelib}/$dir/
+done
+
%pre -f %{name}.pre
%service_add_pre %{name}.service
@@ -464,6 +488,12 @@
%config(noreplace) %{_sysconfdir}/openSUSE-release-tools/announcer
%config(noreplace) %{_sysconfdir}/rsyslog.d/%{announcer_filename}.conf
+%files plat
+%{python_sitelib}/plat/
+
+%files scm
+%{python_sitelib}/scm/
+
%files check-source
%{_bindir}/osrt-check_source
%if 0%{?suse_version} > 1500
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.TAqeap/_old 2026-02-11 18:50:01.212332159 +0100
+++ /var/tmp/diff_new_pack.TAqeap/_new 2026-02-11 18:50:01.220332496 +0100
@@ -1,7 +1,7 @@
<servicedata>
<service name="tar_scm">
<param
name="url">https://github.com/openSUSE/openSUSE-release-tools.git</param>
- <param
name="changesrevision">7ecaa0c8dab4bef7846cd5e32952dcc43b4bd9b8</param>
+ <param
name="changesrevision">08a2a8313d34d8c639396b29ed5731d3a1572f23</param>
</service>
</servicedata>
++++++ openSUSE-release-tools-20260120.7ecaa0c8.obscpio ->
openSUSE-release-tools-20260204.08a2a831.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20260120.7ecaa0c8/dist/package/openSUSE-release-tools.spec
new/openSUSE-release-tools-20260204.08a2a831/dist/package/openSUSE-release-tools.spec
---
old/openSUSE-release-tools-20260120.7ecaa0c8/dist/package/openSUSE-release-tools.spec
2026-01-20 12:58:00.000000000 +0100
+++
new/openSUSE-release-tools-20260204.08a2a831/dist/package/openSUSE-release-tools.spec
2026-02-04 08:02:28.000000000 +0100
@@ -33,7 +33,6 @@
BuildRequires: osc >= 0.165.1
BuildRequires: python3-PyYAML
BuildRequires: python3-cmdln
-BuildRequires: python3-colorama
BuildRequires: python3-lxml
BuildRequires: python3-pycurl
BuildRequires: python3-python-dateutil
@@ -54,7 +53,6 @@
Requires: python3-PyYAML
Requires: python3-cmdln
-Requires: python3-colorama
Requires: python3-lxml
# issue-diff.py, legal-auto.py, and openqa-maintenance.py
Requires: python3-pycurl
@@ -105,6 +103,24 @@
%description announcer
OBS product release announcer for generating email diffs summaries.
+%package plat
+Summary: Platform implementations used in %{name}
+Group: Development/Languages/Python
+Requires: python3-DateTime
+Requires: python3-requests
+
+%description plat
+Platform implementations used by scripts in %{name}.
+
+%package scm
+Summary: SCM implementations used in %{name}
+Group: Development/Languages/Python
+Requires: osc
+Requires: python3-GitPython
+
+%description scm
+VCS implementations used by scripts in %{name}.
+
%package check-source
Summary: Check source review bot
Group: Development/Tools/Other
@@ -113,6 +129,8 @@
Requires: obs-service-source_validator
Requires: osclib = %{version}
Requires: perl-Text-Diff
+Requires: %{name}-plat
+Requires: %{name}-scm
Requires(pre): shadow
BuildArch: noarch
@@ -309,6 +327,7 @@
# devel-project.py needs 0.160.0 for get_request_list(withfullhistory) param.
Requires: osc >= 0.160.0
Requires: osclib = %{version}
+Requires: python3-colorama
BuildArch: noarch
%description -n osc-plugin-staging
@@ -336,6 +355,11 @@
install -Dpm0644 slsa/osrt-slsa-user.conf
%{buildroot}%{_sysusersdir}/%{name}.conf
+for dir in plat scm; do
+ mkdir -p %{buildroot}%{python_sitelib}/$dir
+ cp -r $dir/* %{buildroot}%{python_sitelib}/$dir/
+done
+
%pre -f %{name}.pre
%service_add_pre %{name}.service
@@ -464,6 +488,12 @@
%config(noreplace) %{_sysconfdir}/openSUSE-release-tools/announcer
%config(noreplace) %{_sysconfdir}/rsyslog.d/%{announcer_filename}.conf
+%files plat
+%{python_sitelib}/plat/
+
+%files scm
+%{python_sitelib}/scm/
+
%files check-source
%{_bindir}/osrt-check_source
%if 0%{?suse_version} > 1500
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20260120.7ecaa0c8/gocd/bci.gocd.yaml
new/openSUSE-release-tools-20260204.08a2a831/gocd/bci.gocd.yaml
--- old/openSUSE-release-tools-20260120.7ecaa0c8/gocd/bci.gocd.yaml
2026-01-20 12:58:00.000000000 +0100
+++ new/openSUSE-release-tools-20260204.08a2a831/gocd/bci.gocd.yaml
2026-02-04 08:02:28.000000000 +0100
@@ -42,222 +42,6 @@
- script: python3 ./pkglistgen.py -d -A https://api.opensuse.org
update_and_solve -p devel:BCI -s target
- SLE_BCI_15SP5.RelPkgs:
- group: BCI
- lock_behavior: unlockWhenFinished
- timer:
- spec: 0 10 * ? * *
- only_on_changes: false
- materials:
- git:
- git: https://github.com/openSUSE/openSUSE-release-tools.git
- environment_variables:
- OSC_CONFIG: /home/go/config/oscrc-staging-bot
- stages:
- - Create.Release.Packages:
- approval: manual
- resources:
- - repo-checker
- tasks:
- - script: ./pkglistgen.py -A https://api.suse.de update_and_solve -p
SUSE:SLE-15-SP5:Update:BCI -s target --only-release-packages --force
-
- Pkglistgen.SLE_BCI_15SP5:
- group: BCI
- lock_behavior: unlockWhenFinished
- timer:
- spec: 0 10 * ? * *
- only_on_changes: false
- materials:
- repos:
- git: git://botmaster.suse.de/suse-repos.git
- auto_update: true
- destination: repos
- whitelist:
- - SUSE:SLE-15-SP5:Update_-_standard.yaml
- scripts:
- auto_update: true
- git: https://github.com/openSUSE/openSUSE-release-tools.git
- whitelist:
- - DO_NOT_TRIGGER
- destination: scripts
- environment_variables:
- OSC_CONFIG: /home/go/config/oscrc-staging-bot
- stages:
- - pkglistgen:
- approval:
- type: manual
- jobs:
- BCI_target:
- resources:
- - repo-checker
- tasks:
- - script: ./scripts/pkglistgen.py -d -A https://api.suse.de
update_and_solve -p SUSE:SLE-15-SP5:Update:BCI -s target
- - Expect.Images.To.Finish:
- resources:
- - staging-bot
- tasks:
- - script: |
- export PYTHONPATH=scripts
- ./scripts/gocd/verify-repo-built-successful.py -A
https://api.suse.de -p SUSE:SLE-15-SP5:Update:BCI -r images
-
- - Release.Images.to.Product:
- approval: manual
- roles:
- - BCI
- environment_variables:
- OSC_CONFIG: /home/go/config/oscrc-totest-manager
- BCI_TOKEN: '{{SECRET:[opensuse.secrets][BCI_TOKEN]}}'
- resources:
- - staging-bot
- tasks:
- # can't use osc command due to
https://github.com/openSUSE/osc/issues/1194
- - script: |-
- SPRJ=SUSE:SLE-15-SP5:Update:BCI
- for arch in aarch64 ppc64le s390x x86_64 ; do
- PKG="000product:SLE_BCI-ftp-POOL-$arch"
- PRJ="SUSE:Products:SLE-BCI:15-SP5:$arch"
- curl -X POST -H "Authorization: Token $BCI_TOKEN"
"https://api.suse.de/trigger/release?project=${SPRJ}&package=${PKG}&targetproject=${PRJ}&targetrepository=images&filter_source_repository=images"
- done
- for arch in aarch64 ppc64le s390x x86_64 ; do
- sleep 600
- while (osc -A https://api.suse.de/ api
"/build/$PRJ/_result?view=summary&repository=images" | grep "result project" |
grep -v 'code="published" state="published">'); do
- echo PENDING
- sleep 600
- done
- osc -A https://api.suse.de/ api
"/build/$PRJ/_result?view=summary&repository=images" | grep "result project" |
grep 'code="published" state="published">' && echo PUBLISHED
- done
-
- SLE_BCI_15SP5.RepoPublisher:
- group: BCI
- lock_behavior: unlockWhenFinished
- timer:
- spec: 0 23 * ? * *
- only_on_changes: false
- materials:
- git:
- git: https://github.com/openSUSE/openSUSE-release-tools.git
- destination: scripts
- environment_variables:
- OSC_CONFIG: /home/go/config/oscrc-totest-manager
- BCI_TOKEN: '{{SECRET:[opensuse.secrets][BCI_TOKEN]}}'
- stages:
- - Run:
- approval: manual
- resources:
- - staging-bot
- tasks:
- - script: |
- export PYTHONPATH=scripts
- ./scripts/gocd/bci_repo_publish.py -A https://api.suse.de
--verbose --debug run "--token=$BCI_TOKEN" 15-SP5
-
- SLE_BCI_15SP6.RelPkgs:
- group: BCI
- lock_behavior: unlockWhenFinished
- timer:
- spec: 0 10 * ? * *
- only_on_changes: false
- materials:
- git:
- git: https://github.com/openSUSE/openSUSE-release-tools.git
- environment_variables:
- OSC_CONFIG: /home/go/config/oscrc-staging-bot
- stages:
- - Create.Release.Packages:
- approval: manual
- resources:
- - repo-checker
- tasks:
- - script: ./pkglistgen.py -A https://api.suse.de update_and_solve -p
SUSE:SLE-15-SP6:Update:BCI -s target --only-release-packages --force
-
- Pkglistgen.SLE_BCI_15SP6:
- group: BCI
- lock_behavior: unlockWhenFinished
- timer:
- spec: 0 10 * ? * *
- only_on_changes: false
- materials:
- repos:
- git: git://botmaster.suse.de/suse-repos.git
- auto_update: true
- destination: repos
- whitelist:
- - SUSE:SLE-15-SP6:Update_-_standard.yaml
- scripts:
- auto_update: true
- git: https://github.com/openSUSE/openSUSE-release-tools.git
- whitelist:
- - DO_NOT_TRIGGER
- destination: scripts
- environment_variables:
- OSC_CONFIG: /home/go/config/oscrc-staging-bot
- stages:
- - pkglistgen:
- approval:
- type: manual
- jobs:
- BCI_target:
- resources:
- - repo-checker
- tasks:
- - script: ./scripts/pkglistgen.py -d -A https://api.suse.de
update_and_solve -p SUSE:SLE-15-SP6:Update:BCI -s target
- - Expect.Images.To.Finish:
- resources:
- - staging-bot
- tasks:
- - script: |
- export PYTHONPATH=scripts
- ./scripts/gocd/verify-repo-built-successful.py -A
https://api.suse.de -p SUSE:SLE-15-SP6:Update:BCI -r images
-
- - Release.Images.to.Product:
- approval: manual
- roles:
- - BCI
- environment_variables:
- OSC_CONFIG: /home/go/config/oscrc-totest-manager
- BCI_TOKEN: '{{SECRET:[opensuse.secrets][BCI_TOKEN]}}'
- resources:
- - staging-bot
- tasks:
- # can't use osc command due to
https://github.com/openSUSE/osc/issues/1194
- - script: |-
- SPRJ=SUSE:SLE-15-SP6:Update:BCI
- for arch in aarch64 ppc64le s390x x86_64 ; do
- PKG="000product:SLE_BCI-ftp-POOL-$arch"
- PRJ="SUSE:Products:SLE-BCI:15-SP6:$arch"
- curl -X POST -H "Authorization: Token $BCI_TOKEN"
"https://api.suse.de/trigger/release?project=${SPRJ}&package=${PKG}&targetproject=${PRJ}&targetrepository=images&filter_source_repository=images"
- done
- for arch in aarch64 ppc64le s390x x86_64 ; do
- sleep 600
- while (osc -A https://api.suse.de/ api
"/build/$PRJ/_result?view=summary&repository=images" | grep "result project" |
grep -v 'code="published" state="published">'); do
- echo PENDING
- sleep 600
- done
- osc -A https://api.suse.de/ api
"/build/$PRJ/_result?view=summary&repository=images" | grep "result project" |
grep 'code="published" state="published">' && echo PUBLISHED
- done
-
- SLE_BCI_15SP6.RepoPublisher:
- group: BCI
- lock_behavior: unlockWhenFinished
- timer:
- spec: 0 23 * ? * *
- only_on_changes: false
- materials:
- git:
- git: https://github.com/openSUSE/openSUSE-release-tools.git
- destination: scripts
- environment_variables:
- OSC_CONFIG: /home/go/config/oscrc-totest-manager
- BCI_TOKEN: '{{SECRET:[opensuse.secrets][BCI_TOKEN]}}'
- stages:
- - Run:
- approval: manual
- resources:
- - staging-bot
- tasks:
- - script: |
- export PYTHONPATH=scripts
- ./scripts/gocd/bci_repo_publish.py -A https://api.suse.de
--verbose --debug run "--token=$BCI_TOKEN" 15-SP6
-
SLE_BCI_15SP7.RelPkgs:
group: BCI
lock_behavior: unlockWhenFinished
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20260120.7ecaa0c8/gocd/bci.gocd.yaml.erb
new/openSUSE-release-tools-20260204.08a2a831/gocd/bci.gocd.yaml.erb
--- old/openSUSE-release-tools-20260120.7ecaa0c8/gocd/bci.gocd.yaml.erb
2026-01-20 12:58:00.000000000 +0100
+++ new/openSUSE-release-tools-20260204.08a2a831/gocd/bci.gocd.yaml.erb
2026-02-04 08:02:28.000000000 +0100
@@ -41,7 +41,7 @@
tasks:
- script: python3 ./pkglistgen.py -d -A https://api.opensuse.org
update_and_solve -p devel:BCI -s target
-<% ['SP5', 'SP6', 'SP7'].each do |sp| %>
+<% ['SP7'].each do |sp| %>
SLE_BCI_15<%= sp %>.RelPkgs:
group: BCI
lock_behavior: unlockWhenFinished
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20260120.7ecaa0c8/gocd/sles.target.gocd.yaml
new/openSUSE-release-tools-20260204.08a2a831/gocd/sles.target.gocd.yaml
--- old/openSUSE-release-tools-20260120.7ecaa0c8/gocd/sles.target.gocd.yaml
2026-01-20 12:58:00.000000000 +0100
+++ new/openSUSE-release-tools-20260204.08a2a831/gocd/sles.target.gocd.yaml
2026-02-04 08:02:28.000000000 +0100
@@ -38,7 +38,7 @@
tasks:
- script: |-
set -e
- for image in agama-installer-SLES kiwi-templates-Minimal
SLES_transactional; do
+ for image in agama-installer-SLES kiwi-templates-Minimal
SLES_immutable; do
osc -A https://api.suse.de release
--target-project=SUSE:SLFO:Products:SLES:16.1:TEST --target-repository=images
-r images SUSE:SLFO:Products:SLES:16.1 $image
done
osc -A https://api.suse.de release
--target-project=SUSE:SLFO:Products:SLES:16.1:TEST --target-repository=product
-r product SUSE:SLFO:Products:SLES:16.1 000productcompose
@@ -83,7 +83,7 @@
tasks:
- script: |-
set -e
- for image in agama-installer-SLES kiwi-templates-Minimal
SLES_transactional; do
+ for image in agama-installer-SLES kiwi-templates-Minimal
SLES_immutable; do
osc -A https://api.suse.de release
--target-project=SUSE:SLFO:Products:SLES:16.1:PUBLISH
--target-repository=images -r images SUSE:SLFO:Products:SLES:16.1:TEST $image
done
osc -A https://api.suse.de release
--target-project=SUSE:SLFO:Products:SLES:16.1:PUBLISH
--target-repository=product -r product SUSE:SLFO:Products:SLES:16.1:TEST
000productcompose
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20260120.7ecaa0c8/pkglistgen/group.py
new/openSUSE-release-tools-20260204.08a2a831/pkglistgen/group.py
--- old/openSUSE-release-tools-20260120.7ecaa0c8/pkglistgen/group.py
2026-01-20 12:58:00.000000000 +0100
+++ new/openSUSE-release-tools-20260204.08a2a831/pkglistgen/group.py
2026-02-04 08:02:28.000000000 +0100
@@ -28,7 +28,7 @@
self.packages[a] = []
self.unresolvable[a] = dict()
- self.comment = ' ### AUTOMATICALLY GENERATED, DO NOT EDIT ### '
+ self.comment = ' ### AUTOMATICALLY GENERATED, DO NOT EDIT ###'
self.srcpkgs = None
self.develpkgs = dict()
self.silents = set()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20260120.7ecaa0c8/plat/gitea.py
new/openSUSE-release-tools-20260204.08a2a831/plat/gitea.py
--- old/openSUSE-release-tools-20260120.7ecaa0c8/plat/gitea.py 2026-01-20
12:58:00.000000000 +0100
+++ new/openSUSE-release-tools-20260204.08a2a831/plat/gitea.py 2026-02-04
08:02:28.000000000 +0100
@@ -4,6 +4,7 @@
import html
import re
from datetime import datetime, timezone
+from dateutil.parser import isoparse
from urllib.parse import urljoin
@@ -21,14 +22,17 @@
self.base_url = urljoin(url, "/api/v1/")
self.token = self.get_token()
- def request(self, method, path, **kwargs):
+ def request(self, method, path, raise_for_status=True, **kwargs):
arg_headers = kwargs.get('headers') or {}
headers = {'Authorization': f'token {self.token}'}
headers.update(arg_headers)
kwargs['headers'] = headers
url = urljoin(self.base_url, path)
- return requests.request(method, url, **kwargs)
+ ret = requests.request(method, url, **kwargs)
+ if raise_for_status:
+ ret.raise_for_status()
+ return ret
def get(self, path, **kwargs):
return self.request('GET', path, **kwargs)
@@ -50,7 +54,7 @@
def _comment_as_dict(self, comment):
return {
'who': comment["user"]["login"],
- 'when': datetime.fromisoformat(comment["created_at"]),
+ 'when': isoparse(comment["created_at"]),
'id': comment["id"],
'parent': None,
'comment': html.unescape(comment["body"])
@@ -58,12 +62,9 @@
def get_comments(self, request_id, project_name=None, package_name=None):
project_name, package_name, pr_id =
Request.parse_request_id(request_id)
- res =
self.api.get(f'repos/{project_name}/{package_name}/issues/{pr_id}/comments')
- res.raise_for_status()
-
- json = res.json()
+ res =
self.api.get(f'repos/{project_name}/{package_name}/issues/{pr_id}/comments').json()
comments = {}
- for c in json:
+ for c in res:
c = self._comment_as_dict(c)
comments[c['id']] = c
return comments
@@ -71,7 +72,7 @@
def request_as_comment_dict(self, request):
return {
'who': request.creator,
- 'when': datetime.fromisoformat(request.created_at),
+ 'when': isoparse(request.created_at),
'id': '-1',
'parent': None,
'comment': request.description,
@@ -127,12 +128,12 @@
def add_comment(self, request_id=None, project_name=None,
package_name=None, comment=None, _parent_id=None):
- res =
self.api.post(f'repos/{project_name}/{package_name}/issues/{request_id}/comments',
- json={"body": comment})
- res.raise_for_status()
+
self.api.post(f'repos/{project_name}/{package_name}/issues/{request_id}/comments',
+ json={"body": comment})
def delete(self, comment_id, project, package, request):
-
self.api.delete(f'repos/{project}/{package}/issues/{request}/comments/{comment_id}')
+
self.api.delete(f'repos/{project}/{package}/issues/{request}/comments/{comment_id}',
+ raise_for_status=False)
class StagingAPI:
@@ -146,13 +147,25 @@
class RequestAction:
"""Stub action class"""
- def __init__(self, type, src_project, src_package, src_rev, tgt_project,
tgt_package):
+ def _set_attr_from_json(self, attr, json, path):
+ node = json
+ for i in path.split('.'):
+ node = node.get(i)
+ if node is None:
+ return
+
+ setattr(self, attr, node)
+
+ def __init__(self, type, json):
self.type = type
- self.src_project = src_project
- self.src_package = src_package
- self.src_rev = src_rev
- self.tgt_project = tgt_project
- self.tgt_package = tgt_package
+ self._set_attr_from_json('src_project', json, 'head.repo.owner.login')
+ self._set_attr_from_json('src_package', json, 'head.repo.name')
+ self._set_attr_from_json('src_branch', json, 'head.ref')
+ self._set_attr_from_json('src_rev', json, 'head.sha')
+ self._set_attr_from_json('tgt_project', json, 'base.repo.owner.login')
+ self._set_attr_from_json('tgt_package', json, 'base.repo.name')
+ self._set_attr_from_json('tgt_branch', json, 'base.ref')
+ self._set_attr_from_json('tgt_rev', json, 'base.sha')
class Request:
@@ -199,16 +212,13 @@
self.reqid = Request.construct_request_id(owner, repo, json["number"])
self.creator = json["user"]["login"]
self.created_at = json["created_at"]
+ self.updated_at = json["updated_at"]
self.title = json["title"]
self.description = json["body"]
self.state = json["state"]
- self.actions = [RequestAction(
- type="submit",
- src_project=json["head"]["repo"]["owner"]["login"],
- src_package=json["head"]["repo"]["name"],
- src_rev=json["head"]["sha"],
- tgt_project=json["base"]["repo"]["owner"]["login"],
- tgt_package=json["base"]["repo"]["name"])]
+
+ self.actions = [RequestAction(type="submit", json=json)]
+
if json.get("merged"):
self.accept_at = json["merged_at"]
@@ -238,11 +248,10 @@
return self.api.get(path)
def _get_request(self, pr_id, owner, repo):
- res = self.api.get(f'repos/{owner}/{repo}/pulls/{pr_id}')
- res.raise_for_status()
+ res = self.api.get(f'repos/{owner}/{repo}/pulls/{pr_id}').json()
ret = Request()
- ret.read(res.json(), owner=owner, repo=repo)
+ ret.read(res, owner=owner, repo=repo)
return ret
def get_request(self, request_id, with_full_history=False):
@@ -253,7 +262,7 @@
return ProjectConfig()
def get_request_age(self, request):
- return datetime.now(timezone.utc) -
datetime.fromisoformat(request.created_at)
+ return datetime.now(timezone.utc) - isoparse(request.created_at)
def _request_from_issue(self, issue_json):
owner = issue_json["repository"]["owner"]
@@ -267,10 +276,8 @@
if package != '':
repos = [package]
else:
- repo_list_res = self.api.get(f'orgs/{project}/repos')
- repo_list_res.raise_for_status()
- repo_list_json = repo_list_res.json()
- repos = [i["name"] for i in repo_list_json]
+ repo_list = self.api.get(f'orgs/{project}/repos').json()
+ repos = [i["name"] for i in repo_list]
for r in repos:
list_res = self.api.get(f'repos/{project}/{r}/issues?type=pulls')
@@ -290,13 +297,11 @@
while True:
params["page"] = page
page += 1
- search_res = self.api.get('repos/issues/search', params=params)
- search_res.raise_for_status()
- search_json = search_res.json()
- if not search_json:
+ search_res = self.api.get('repos/issues/search',
params=params).json()
+ if not search_res:
break
- for i in search_json:
+ for i in search_res:
yield self._request_from_issue(i)
def can_accept_review(self, req, **kwargs):
@@ -310,5 +315,4 @@
elif newstate == 'declined':
json['event'] = 'REQUEST_CHANGES'
- res =
self.api.post(f'repos/{req._owner}/{req._repo}/pulls/{req._pr_id}/reviews',
json=json)
- res.raise_for_status()
+
self.api.post(f'repos/{req._owner}/{req._repo}/pulls/{req._pr_id}/reviews',
json=json)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20260120.7ecaa0c8/ttm/totest.py
new/openSUSE-release-tools-20260204.08a2a831/ttm/totest.py
--- old/openSUSE-release-tools-20260120.7ecaa0c8/ttm/totest.py 2026-01-20
12:58:00.000000000 +0100
+++ new/openSUSE-release-tools-20260204.08a2a831/ttm/totest.py 2026-02-04
08:02:28.000000000 +0100
@@ -141,7 +141,7 @@
self.openqa_server = None
self.jobs_num = 42
self.test_subproject = 'ToTest'
- self.base = project.split(':')[0]
+ self.base = "openSUSE"
self.products = []
# Defaults for products
++++++ openSUSE-release-tools.obsinfo ++++++
--- /var/tmp/diff_new_pack.TAqeap/_old 2026-02-11 18:50:03.808441182 +0100
+++ /var/tmp/diff_new_pack.TAqeap/_new 2026-02-11 18:50:03.824441853 +0100
@@ -1,5 +1,5 @@
name: openSUSE-release-tools
-version: 20260120.7ecaa0c8
-mtime: 1768910280
-commit: 7ecaa0c8dab4bef7846cd5e32952dcc43b4bd9b8
+version: 20260204.08a2a831
+mtime: 1770188548
+commit: 08a2a8313d34d8c639396b29ed5731d3a1572f23