openSUSE Project Management Tool: Issueshttps://progress.opensuse.org/https://progress.opensuse.org/themes/openSUSE/favicon/favicon.ico?15829177842023-03-30T09:47:18ZopenSUSE Project Management Tool
Redmine QA - action #126953 (Resolved): [tools] mtui hangs on disconnect if network is offlinehttps://progress.opensuse.org/issues/1269532023-03-30T09:47:18Zosukup
<p>see - <a href="https://github.com/openSUSE/mtui/issues/11" class="external">https://github.com/openSUSE/mtui/issues/11</a></p>
QA - action #123523 (Resolved): [tools] osc-plugin-qam throws traceback on Tumbleweed size:Mhttps://progress.opensuse.org/issues/1235232023-01-23T10:07:23Zosukup
<p>as reported here: <a href="https://suse.slack.com/archives/C02CUAYSFDL/p1674466273700499" class="external">https://suse.slack.com/archives/C02CUAYSFDL/p1674466273700499</a></p>
<p>it looks like new osc-1.0.0 has change in <code>do_*something*</code> API and it breaks osc-plugin-qam:</p>
<pre><code>/usr/lib/python3.10/site-packages/osc/cmdln.py:267: FutureWarning: do_qam() handler has deprecated signature. It takes the following args: ['subcmd', 'opts', 'args', 'kwargs'], while it should be taking ['subcmd', 'opts'] and handling positional arguments explicitly via @cmdln.option.
warnings.warn(
Traceback (most recent call last):
File "/usr/bin/osc", line 33, in <module>
sys.exit(load_entry_point('osc==1.0.0b3', 'console_scripts', 'osc')())
File "/usr/lib/python3.10/site-packages/osc/babysitter.py", line 208, in main
sys.exit(run(commandline.Osc()))
File "/usr/lib/python3.10/site-packages/osc/babysitter.py", line 56, in run
return prg.main(argv)
File "/usr/lib/python3.10/site-packages/osc/cmdln.py", line 274, in main
cmd(self.options.command, self.options, *self.args)
File "/usr/lib/osc-plugins/qam.py", line 648, in do_qam
interp.optparser = cmdln.SubCmdOptionParser()
AttributeError: module 'osc.cmdln' has no attribute 'SubCmdOptionParser'
error: Assign failed: Command '['osc', '-A', 'https://api.suse.de', 'qam', 'assign', '288537']' returned non-zero exit status 1.
</code></pre>
<a name="Suggestions"></a>
<h2 >Suggestions<a href="#Suggestions" class="wiki-anchor">¶</a></h2>
<ul>
<li>Look at maybe-related PR in osc: <a href="https://github.com/openSUSE/osc/pull/991" class="external">https://github.com/openSUSE/osc/pull/991</a></li>
</ul>
QA - action #123367 (Resolved): [tools] drop old testplatform code from teregen, repose and produ...https://progress.opensuse.org/issues/1233672023-01-19T10:08:27Zosukup
<a name="Motivation"></a>
<h2 >Motivation<a href="#Motivation" class="wiki-anchor">¶</a></h2>
<p>We finally have all refhosts in metadata described in the new format so we can safely drop old testplatform.</p>
<p>current situation: Teregen generates testplatform in two different formats based on two different product definitions which leads to data duplication and confuse users which data file need to be updated for correctly working template generation. Repose can generate two different yaml formats, it was changed to defaults in new but user still can post old format, so removing this possibility will reduce user related errors when maintaining refhosts files.</p>
<a name="Acceptance-criteria"></a>
<h2 >Acceptance criteria<a href="#Acceptance-criteria" class="wiki-anchor">¶</a></h2>
<ul>
<li><strong>AC1:</strong> No old testplatform generated by teregen</li>
<li><strong>AC2:</strong> productsdef.pm file dropped from metadata</li>
<li><strong>AC3:</strong> old yaml format removed from repose</li>
</ul>
<a name="Links"></a>
<h2 >Links<a href="#Links" class="wiki-anchor">¶</a></h2>
<ul>
<li><a href="https://gitlab.suse.de/qa-maintenance/teregen" class="external">https://gitlab.suse.de/qa-maintenance/teregen</a></li>
<li><a href="https://gitlab.suse.de/qa-maintenance/metadata/-/blob/master/productdefs.pm" class="external">https://gitlab.suse.de/qa-maintenance/metadata/-/blob/master/productdefs.pm</a></li>
<li><a href="https://github.com/openSUSE/repose" class="external">https://github.com/openSUSE/repose</a></li>
<li><a href="https://confluence.suse.com/display/maintenanceqa/Repose+Usage" class="external">https://confluence.suse.com/display/maintenanceqa/Repose+Usage</a></li>
</ul>
<a name="Suggestions"></a>
<h2 >Suggestions<a href="#Suggestions" class="wiki-anchor">¶</a></h2>
<ul>
<li>Disable relevant module in teregen template generator</li>
<li>Drop <code>--yaml-old</code> option in repose (keep <code>--yaml-ng</code>)</li>
</ul>
QA - action #115103 (Resolved): [tools] osc-plugin-qam reads Incident Priority from IBS but that ...https://progress.opensuse.org/issues/1151032022-08-08T13:32:38Zosukup
<p>In past Incident priority was stored as Incident attribute in IBS.<br>
In recent time maintenance stopped using this and Priority is held by SMELT, and attribute is used only for over-ride.</p>
<p>So osc-plugin-qam needs to read priority from IBS and if its empty read correct value from SMELT</p>
<a name="Acceptance-criteria"></a>
<h2 >Acceptance criteria<a href="#Acceptance-criteria" class="wiki-anchor">¶</a></h2>
<ul>
<li><strong>AC1</strong>: correct value of priority is shown</li>
</ul>
QA - action #113087 (Resolved): [qa-tools][qem-bot] malformed data in smelt incident causes smelt...https://progress.opensuse.org/issues/1130872022-06-27T16:51:08Zosukup
<p><a href="https://gitlab.suse.de/qa-maintenance/bot-ng/-/jobs/1032830" class="external">https://gitlab.suse.de/qa-maintenance/bot-ng/-/jobs/1032830</a></p>
<pre><code>ERROR: Expecting value: line 1 column 1 (char 0)
8889Traceback (most recent call last):
8890 File "/builds/qa-maintenance/bot-ng/qem-bot/openqabot/loader/smelt.py", line 64, in get_incident
8891 inc_result = requests.get(SMELT, params={"query": query}, verify=False).json()
8892 File "/usr/lib/python3.6/site-packages/requests/models.py", line 898, in json
8893 return complexjson.loads(self.text, **kwargs)
8894 File "/usr/lib64/python3.6/site-packages/simplejson/__init__.py", line 525, in loads
8895 return _default_decoder.decode(s)
8896 File "/usr/lib64/python3.6/site-packages/simplejson/decoder.py", line 370, in decode
8897 obj, end = self.raw_decode(s)
8898 File "/usr/lib64/python3.6/site-packages/simplejson/decoder.py", line 400, in raw_decode
8899 return self.scan_once(s, idx=_w(s, idx).end())
8900simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
</code></pre> QA - action #112430 (Resolved): [qa-tools] [qem-bot] Incident schedule fails in preparation Incid...https://progress.opensuse.org/issues/1124302022-06-14T17:10:56Zosukup
<p>from log:</p>
<pre><code class="python syntaxhl" data-language="python"><span class="n">INFO</span><span class="p">:</span> <span class="mi">2022</span><span class="o">-</span><span class="mi">06</span><span class="o">-</span><span class="mi">14</span> <span class="mi">17</span><span class="p">:</span><span class="mi">03</span><span class="p">:</span><span class="mf">40.405480</span><span class="p">:</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">download</span><span class="p">.</span><span class="n">suse</span><span class="p">.</span><span class="n">de</span><span class="o">/</span><span class="n">ibs</span><span class="o">/</span><span class="n">SUSE</span><span class="p">:</span><span class="o">/</span><span class="n">Maintenance</span><span class="p">:</span><span class="o">/</span><span class="mi">24419</span><span class="o">/</span><span class="n">SUSE_Updates_SLE</span><span class="o">-</span><span class="n">WE_12</span><span class="o">-</span><span class="n">SP5_x86_64</span><span class="o">/</span><span class="n">repodata</span><span class="o">/</span><span class="n">repomd</span><span class="p">.</span><span class="n">xml</span> <span class="ow">not</span> <span class="n">found</span> <span class="o">--</span> <span class="n">skip</span> <span class="n">incident</span>
<span class="n">INFO</span><span class="p">:</span> <span class="n">Project</span> <span class="n">SUSE</span><span class="p">:</span><span class="n">Maintenance</span><span class="p">:</span><span class="mi">24419</span> <span class="n">can</span><span class="sh">'</span><span class="s">t calculate repohash .. skipping
INFO: Project SUSE:Maintenance:24462 has empty channels - check incident in SMELT
Traceback (most recent call last):
File </span><span class="sh">"</span><span class="s">./qem-bot/bot-ng.py</span><span class="sh">"</span><span class="s">, line 7, in <module>
main()
File </span><span class="sh">"</span><span class="s">/builds/qa-maintenance/bot-ng/qem-bot/openqabot/main.py</span><span class="sh">"</span><span class="s">, line 41, in main
sys.exit(cfg.func(cfg))
File </span><span class="sh">"</span><span class="s">/builds/qa-maintenance/bot-ng/qem-bot/openqabot/args.py</span><span class="sh">"</span><span class="s">, line 24, in do_incident_schedule
bot = OpenQABot(args)
File </span><span class="sh">"</span><span class="s">/builds/qa-maintenance/bot-ng/qem-bot/openqabot/openqabot.py</span><span class="sh">"</span><span class="s">, line 23, in __init__
self.incidents = get_incidents(self.token)
File </span><span class="sh">"</span><span class="s">/builds/qa-maintenance/bot-ng/qem-bot/openqabot/loader/qem.py</span><span class="sh">"</span><span class="s">, line 41, in get_incidents
xs.append(Incident(i))
File </span><span class="sh">"</span><span class="s">/builds/qa-maintenance/bot-ng/qem-bot/openqabot/types/incident.py</span><span class="sh">"</span><span class="s">, line 27, in __init__
for r in incident[</span><span class="sh">"</span><span class="s">channels</span><span class="sh">"</span><span class="s">]
File </span><span class="sh">"</span><span class="s">/builds/qa-maintenance/bot-ng/qem-bot/openqabot/types/incident.py</span><span class="sh">"</span><span class="s">, line 25, in <listcomp>
for p, v, a in (
ValueError: not enough values to unpack (expected 3, got 2)
</span></code></pre> QA - action #111710 (Resolved): [qa-tools] [tools] remove usage of *_TEST_TEMPLATE vars in qem-b...https://progress.opensuse.org/issues/1117102022-05-27T14:23:36Zosukup
<a name="Current-state"></a>
<h2 >Current state:<a href="#Current-state" class="wiki-anchor">¶</a></h2>
<p>Now QEM uses in aggregate jobs pretty complicated system to add repositories under test to jobs itself:</p>
<p><em>qem-bot</em> post jobs with <code>*_TEST_ISUES</code> variable.<br>
In <em>osd</em> are defined media with templates in corresponding <code>*_TEST_TEMPLATE</code></p>
<p>when is job started from this vars is calculated variable <code>MAINT_TEST_REPO</code> using <code>SCC_ADDONS</code></p>
<p>used code for this transformation:</p>
<p><code>main_common.pm</code> -> <a href="https://github.com/os-autoinst/os-autoinst-distri-opensuse/blob/master/lib/main_common.pm#L773-L789" class="external">https://github.com/os-autoinst/os-autoinst-distri-opensuse/blob/master/lib/main_common.pm#L773-L789</a><br>
SLE <code>main.pm</code> -> <a href="https://github.com/os-autoinst/os-autoinst-distri-opensuse/blob/master/products/sle/main.pm#L323-L373" class="external">https://github.com/os-autoinst/os-autoinst-distri-opensuse/blob/master/products/sle/main.pm#L323-L373</a></p>
<a name="Cons"></a>
<h3 >Cons:<a href="#Cons" class="wiki-anchor">¶</a></h3>
<ul>
<li>pretty complex settings for medium with high probability of error</li>
<li>code used for this in os-autoinst-distri-opensuse is pretty complex</li>
</ul>
<a name="Proposal"></a>
<h2 >Proposal:<a href="#Proposal" class="wiki-anchor">¶</a></h2>
<p>modify <em>qem-bot</em> to post new vars (<code>*_TEST_REPO</code>) with corresponding repositories and the use simpler code to construct <code>MAINT_TEST_REPO</code> by simply joining this vars still using SCC_ADDONS to join correct products/modules</p>
<p>qem-bot has all needed info for generate this vars which removes one layer of possible human errors (still can be problem in qa-metadata, but it is simpler to spot and debug)</p>
<a name="Pros"></a>
<h3 >Pro's:<a href="#Pros" class="wiki-anchor">¶</a></h3>
<ul>
<li>remove mess from media settings</li>
<li>cleaner/simpler code in os-autoinst-distri-opensuse</li>
</ul>
<a name="Cons-2"></a>
<h3 >Cons:<a href="#Cons-2" class="wiki-anchor">¶</a></h3>
<ul>
<li>lights more complex code in qem-bot ( Aggregate class )</li>
<li>longer command line presented by qem-bot for aggregates</li>
</ul>
<a name="Acceptance-criteria"></a>
<h2 >Acceptance criteria<a href="#Acceptance-criteria" class="wiki-anchor">¶</a></h2>
<p><strong>AC1</strong>: implement needed changes in qem-bot<br>
<strong>AC2</strong>: implement needed changes in os-autoinst-distri-opensuse<br>
<strong>AC3</strong>: (optional) cleanup media definitions in OSD</p>
<a name="O3"></a>
<h2 >O3<a href="#O3" class="wiki-anchor">¶</a></h2>
<p>Note: this changes only handling for OSD, O3 uses different <code>bot</code> so poo is not related ( but can be also implemented ? on O3 side)</p>
QA - action #111506 (Resolved): qa-tools: qem-bot - Development results leaked to dashboard size:Mhttps://progress.opensuse.org/issues/1115062022-05-24T08:17:00Zosukup
<a name="Observation"></a>
<h2 >Observation<a href="#Observation" class="wiki-anchor">¶</a></h2>
<p>Development group 'pstivanin-security@Server-DVD-Updates' results synced to qem dashboard</p>
<p>We already filter out development jobs in <a href="https://github.com/openSUSE/qem-bot/blob/master/openqabot/aggrsync.py#L53-L68" class="external">https://github.com/openSUSE/qem-bot/blob/master/openqabot/aggrsync.py#L53-L68</a> in case of aggregates or <a href="https://github.com/openSUSE/qem-bot/blob/master/openqabot/incsyncres.py#L48-L61" class="external">https://github.com/openSUSE/qem-bot/blob/master/openqabot/incsyncres.py#L48-L61</a> but today <a href="https://openqa.suse.de/tests/overview?version=15-SP3&groupid=431&flavor=Server-DVD-Updates&distri=sle&build=20220523-1" class="external">pstivanin-security</a> leaked to qem-dashboard in <a href="http://dashboard.qam.suse.de/incident/24199" class="external">http://dashboard.qam.suse.de/incident/24199</a> when it shouldn't show it.</p>
<a name="Acceptance-criteria"></a>
<h2 >Acceptance criteria<a href="#Acceptance-criteria" class="wiki-anchor">¶</a></h2>
<ul>
<li><strong>AC1:</strong> Development jobs should not be part of incident approval</li>
<li><strong>AC2:</strong> Dashboard no longer shows development jobs</li>
</ul>
<a name="Suggestions"></a>
<h2 >Suggestions<a href="#Suggestions" class="wiki-anchor">¶</a></h2>
<ul>
<li>Don't let the bot submit development jobs to the dashboard</li>
<li>Prevent duplication in <a href="https://github.com/openSUSE/qem-bot/blob/master/openqabot/aggrsync.py#L53-L68" class="external">https://github.com/openSUSE/qem-bot/blob/master/openqabot/aggrsync.py#L53-L68</a> and <a href="https://github.com/openSUSE/qem-bot/blob/master/openqabot/incsyncres.py#L48-L61" class="external">https://github.com/openSUSE/qem-bot/blob/master/openqabot/incsyncres.py#L48-L61</a></li>
<li>Also exclude jobs that are part of any parent job group regardless of the job group names</li>
</ul>
<a name="Further-notes"></a>
<h2 >Further notes<a href="#Further-notes" class="wiki-anchor">¶</a></h2>
<ul>
<li>A "development job" is a job in a job group or in a parent job group where the name contains "Development".</li>
</ul>
QA - action #109977 (Resolved): qem-bot - approve pipeline failed with 403 forbidden size:Mhttps://progress.opensuse.org/issues/1099772022-04-14T10:45:36Zosukup
<p>Gitlab CI <a href="https://gitlab.suse.de/qa-maintenance/bot-ng/-/jobs/929031">https://gitlab.suse.de/qa-maintenance/bot-ng/-/jobs/929031</a></p>
<p>after look to IBS , RR (release request) was accepted before but info about this didn't propagate to dashboard (some latency is excepted IBS->SMELT->Dashboard), so new try to accept accepted RR ends with error</p>
<pre><code>INFO: Accepting review for SUSE:Maintenace:23688:269540
ERROR: HTTP Error 403: Forbidden
Traceback (most recent call last):
File "/builds/qa-maintenance/bot-ng/qem-bot/openqabot/approver.py", line 117, in osc_approve
message=msg,
File "/usr/lib/python3.6/site-packages/osc/core.py", line 4323, in change_review_state
f = http_POST(u, data=message)
File "/usr/lib/python3.6/site-packages/osc/core.py", line 3422, in http_POST
def http_POST(*args, **kwargs): return http_request('POST', *args, **kwargs)
File "/usr/lib/python3.6/site-packages/osc/core.py", line 3410, in http_request
fd = urlopen(req, data=data)
File "/usr/lib64/python3.6/urllib/request.py", line 223, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib64/python3.6/urllib/request.py", line 532, in open
response = meth(req, response)
File "/usr/lib64/python3.6/urllib/request.py", line 642, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib64/python3.6/urllib/request.py", line 564, in error
result = self._call_chain(*args)
File "/usr/lib64/python3.6/urllib/request.py", line 504, in _call_chain
result = func(*args)
File "/usr/lib64/python3.6/urllib/request.py", line 1059, in http_error_401
url, req, headers)
File "/usr/lib64/python3.6/urllib/request.py", line 1007, in http_error_auth_reqed
return self.retry_http_basic_auth(host, req, realm)
File "/usr/lib64/python3.6/urllib/request.py", line 1022, in retry_http_basic_auth
return self.parent.open(req, timeout=req.timeout)
File "/usr/lib64/python3.6/urllib/request.py", line 532, in open
response = meth(req, response)
File "/usr/lib64/python3.6/urllib/request.py", line 642, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib64/python3.6/urllib/request.py", line 570, in error
return self._call_chain(*args)
File "/usr/lib64/python3.6/urllib/request.py", line 504, in _call_chain
result = func(*args)
File "/usr/lib64/python3.6/urllib/request.py", line 650, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden
</code></pre>
<a name="Acceptance-criteria"></a>
<h1 >Acceptance criteria<a href="#Acceptance-criteria" class="wiki-anchor">¶</a></h1>
<ul>
<li><strong>AC1:</strong> Approve runs without error in case RR is already processed</li>
</ul>
<a name="Suggestions"></a>
<h1 >Suggestions<a href="#Suggestions" class="wiki-anchor">¶</a></h1>
<ul>
<li>Check response before throwing exception and act accordingly</li>
<li>Check IBS RR if really has open review for <code>qam-openqa</code></li>
<li>The meaning of the 403 response code here is that we try to accept something that is already accepted. How about catching the case where the XML indicates the specific error, logging and ignoring the case.</li>
<li>Log server response (not just return code)</li>
<li>Suggest a better response (and response code) to OBS upstream</li>
</ul>
QA - action #109878 (Resolved): bot-ng schedule/approve abortedhttps://progress.opensuse.org/issues/1098782022-04-12T16:18:40Zosukup
<a name="Observation"></a>
<h2 >Observation<a href="#Observation" class="wiki-anchor">¶</a></h2>
<p>postgresql container on qam2.suse.de changed again IP and after this dashboard lost connection with database</p>
<p>after restart of dashboard service ( and reconnect to database using new ip) service for some time worked, but sometimes connection between container and host seems broken.</p>
<pre><code>-- Logs begin at Tue 2022-04-12 18:07:21 CEST. --
dub 12 18:07:26 qam2 dnsmasq-dhcp[616]: DHCPREQUEST(br0) 192.168.0.48 aa:5d:de:99:79:13
dub 12 18:07:26 qam2 dnsmasq-dhcp[616]: DHCPACK(br0) 192.168.0.48 aa:5d:de:99:79:13 postgresql
dub 12 18:13:27 qam2 dnsmasq-dhcp[616]: DHCPDISCOVER(br0) aa:5d:de:99:79:13
dub 12 18:13:27 qam2 dnsmasq-dhcp[616]: DHCPOFFER(br0) 192.168.0.168 aa:5d:de:99:79:13
dub 12 18:13:27 qam2 dnsmasq-dhcp[616]: DHCPREQUEST(br0) 192.168.0.48 aa:5d:de:99:79:13
dub 12 18:13:27 qam2 dnsmasq-dhcp[616]: DHCPACK(br0) 192.168.0.48 aa:5d:de:99:79:13 postgresql
dub 12 18:13:37 qam2 dnsmasq-dhcp[616]: DHCPDISCOVER(br0) aa:5d:de:99:79:13
dub 12 18:13:37 qam2 dnsmasq-dhcp[616]: DHCPOFFER(br0) 192.168.0.168 aa:5d:de:99:79:13
dub 12 18:13:37 qam2 dnsmasq-dhcp[616]: DHCPREQUEST(br0) 192.168.0.48 aa:5d:de:99:79:13
dub 12 18:13:37 qam2 dnsmasq-dhcp[616]: DHCPACK(br0) 192.168.0.48 aa:5d:de:99:79:13 postgresql
</code></pre>
<a name="Acceptance-crtieria"></a>
<h2 >Acceptance crtieria<a href="#Acceptance-crtieria" class="wiki-anchor">¶</a></h2>
<ul>
<li><strong>AC1</strong>: Pipeline doesn't fail due dashboard connection problems with db</li>
</ul>
<a name="Suggestions"></a>
<h2 >Suggestions<a href="#Suggestions" class="wiki-anchor">¶</a></h2>
<ul>
<li>implement <a href="https://progress.opensuse.org/issues/106547" class="external">https://progress.opensuse.org/issues/106547</a></li>
</ul>
QA - action #109512 (Resolved): qem-bot - add vars with GitlabCI job link and qem-dashboard linkhttps://progress.opensuse.org/issues/1095122022-04-05T18:11:21Zosukup
<a name="Motivation"></a>
<h2 >Motivation<a href="#Motivation" class="wiki-anchor">¶</a></h2>
<p>made easy to find which Gitlab CI job scheduled incident / aggregate in openQA </p>
<a name="Acceptance-criteria"></a>
<h2 >Acceptance criteria<a href="#Acceptance-criteria" class="wiki-anchor">¶</a></h2>
<ul>
<li><strong>AC1:</strong> added variables with clickable URLs to Schedule and QEM dashboard to job variables</li>
</ul>
QA - action #109509 (New): qem-dashboard - show better info about time of actualization of datahttps://progress.opensuse.org/issues/1095092022-04-05T18:07:39Zosukup
<a name="Motivation"></a>
<h2 >Motivation<a href="#Motivation" class="wiki-anchor">¶</a></h2>
<p>We already have a "last updated" in the dashboard which can be misleading. </p>
<p>We should have - last time of SMELT sync, last time of Incidents schedule and last time of Aggregates Schedule</p>
<a name="Acceptance-criteria"></a>
<h2 >Acceptance criteria<a href="#Acceptance-criteria" class="wiki-anchor">¶</a></h2>
<ul>
<li><strong>AC1:</strong> Correct update datetime is shown on dashboard</li>
</ul>
QA - action #109491 (New): Flow diagram for Maintenance jobs scheduling https://progress.opensuse.org/issues/1094912022-04-05T13:26:40Zosukup
<a name="Motivation"></a>
<h2 >Motivation<a href="#Motivation" class="wiki-anchor">¶</a></h2>
<p>For better understanding how are Maintenance Incidents scheduled and workflow around incidents in QEM + openQA</p>
<a name="Acceptance-criteria"></a>
<h2 >Acceptance criteria<a href="#Acceptance-criteria" class="wiki-anchor">¶</a></h2>
<ul>
<li><strong>AC1</strong>: Flow diagram in our wiki or qem-bot/qem-dashboard docs</li>
</ul>
QA - action #109488 (Resolved): qem-bot - better logginghttps://progress.opensuse.org/issues/1094882022-04-05T13:21:31Zosukup
<p>As followup 5-Why's</p>
<p>-> many log lines with "ERROR" about missing repomd.xml -> turn to INFO</p>
<p>-> log message "WARNING: Missing product in /etc/openqabot" -> "DEBUG: Skipping obsolete openQABot config /etc/openqabot/bot.yml"</p>
<p>-> log message "DEBUG: Incident … does not have x86_64 arch in 12-SP3" -> so what? -> maybe we can simply remove that message and ignore that, or move to TRACE</p>
<p>-> log message "DEBUG: No channels in … for …" -> Can we put some hints to the readers there what it means or what they could check, e.g. is there no valid smelt_channel to openQA product mapping in metadata? Maybe incident is obsolete and should be closed, removed, etc.?</p>
<p>-> log message "NOT SCHEDULE:" -> lowercase and use "not scheduling"</p>
<p>-> log message "Project ... can't calculate repohash" -> would be useful to have a timestamp of last update from OBS</p>
<p>-> log message for aggregates "Posting ... jobs" is ambiguous or wrong, should be more like "Triggering ... openQA products" or similar, or "openqa isos post calls"</p>
<p>-> we found a problem with an exception as openQA API returns with 404 on post isos as a product is missing in openQA. This error is ignored and we continue the job. We should handle that better.</p>
<p>-> add a concluding log message after triggering tests, like "Triggering done ... jobs" or so.</p>
<a name="Acceptance-criteria"></a>
<h2 >Acceptance criteria:<a href="#Acceptance-criteria" class="wiki-anchor">¶</a></h2>
<ul>
<li><strong>AC1</strong>: better logs from qem-bot</li>
</ul>
QA - action #97994 (New): bot-ng - sometimes doesn't update smelt data in dashboardhttps://progress.opensuse.org/issues/979942021-09-02T16:31:29Zosukup
<p>see <a href="https://gitlab.suse.de/qa-maintenance/bot-ng/-/jobs/557971#L321" class="external">https://gitlab.suse.de/qa-maintenance/bot-ng/-/jobs/557971#L321</a></p>
<pre><code>ERROR: Smelt Incidents wern't synced to dashboard
</code></pre>
<a name="Acceptance-criteria"></a>
<h2 >Acceptance criteria<a href="#Acceptance-criteria" class="wiki-anchor">¶</a></h2>
<ul>
<li><strong>AC1:</strong> Incidents are always synced</li>
</ul>
<a name="Suggestions"></a>
<h2 >Suggestions<a href="#Suggestions" class="wiki-anchor">¶</a></h2>
<ul>
<li>Make the error message useful</li>
<li>Investigate why we have error 400</li>
<li>Look at the dashboard side of it also</li>
</ul>
<a name="Work-around"></a>
<h2 >Work-around<a href="#Work-around" class="wiki-anchor">¶</a></h2>
<ul>
<li>We trust the next pipline runs cover retry sufficiently</li>
</ul>