Stephan Kulow 5dc49a60d2 [oqamaint] Fetch the list of packages for openSUSE
We used to list this from the request, but as this is no longer available,
the settings function itself needs to query it
2018-04-20 15:18:36 +02:00

94 lines
3.2 KiB
Python

# -*- coding: utf-8 -*-
import re
import requests
import osc.core
from update import Update
MINIMALS = {
x.rstrip()
for x in requests.get(
'https://gitlab.suse.de/qa-maintenance/metadata/raw/master/packages-to-be-tested-on-minimal-systems').iter_lines()
if len(x) > 0 and not(x.startswith("#") or x.startswith(' '))}
class SUSEUpdate(Update):
repo_prefix = 'http://download.suse.de/ibs'
maintenance_project = 'SUSE:Maintenance'
def __init__(self, settings):
super(SUSEUpdate, self).__init__(settings)
self.opensuse = False
# we take requests that have a kgraft-patch package as kgraft patch (suprise!)
@staticmethod
def kgraft_target(apiurl, prj):
target = None
skip = False
pattern = re.compile(r"kgraft-patch-([^.]+)\.")
for package in osc.core.meta_get_packagelist(apiurl, prj):
if package.startswith("kernel-"):
skip = True
break
match = re.match(pattern, package)
if match:
target = match.group(1)
if skip:
return None
return target
@staticmethod
def parse_kgraft_version(kgraft_target):
return kgraft_target.lstrip('SLE').split('_')[0]
def add_minimal_settings(self, prj, settings):
minimal = False
for pkg in self.incident_packages(prj):
if pkg in MINIMALS:
minimal = True
if not minimal:
return []
settings = settings.copy()
settings['FLAVOR'] += '-Minimal'
return [settings]
@staticmethod
def add_kernel_settings(settings):
settings = settings.copy()
if settings['BUILD'].split(":")[-1].startswith('kernel-') and settings['FLAVOR'] == 'Server-DVD-Incidents':
settings['FLAVOR'] += '-Kernel'
return [settings]
return []
def settings(self, src_prj, dst_prj):
settings = super(SUSEUpdate, self).settings(src_prj, dst_prj)
# kGraft Handling - Fully supported kGraft lives in own space, but LTSS in standard LTSS channel
for x in range(len(settings)):
if settings[x]['FLAVOR'] == 'Server-DVD-Incidents' and settings[x]['BUILD'].split(
':')[-1].startswith('kgraft-patch'):
settings[x]['FLAVOR'] = 'Server-DVD-Incidents-Kernel'
self.logger.warning("kGraft started from INCIDENTS !!")
if settings[x]['FLAVOR'] == 'Server-DVD-Incidents-Kernel' and not settings[x]['BUILD'].split(
':')[-1].startswith('kgraft-patch'):
del settings[x]
continue
if settings[x]['FLAVOR'] == 'Server-DVD-Incidents-Kernel':
settings[x]['KGRAFT'] = "1"
if settings[x]['VERSION'] == '12':
settings[x]['real_version'] = self.parse_kgraft_version(self.kgraft_target(self.apiurl, src_prj))
if not len(settings):
return []
settings += self.add_minimal_settings(src_prj, settings[0])
settings += self.add_kernel_settings(settings[0])
self.logger.debug("settings are: {}".format(settings))
return settings