totest_images_repo defaults to product_repo if unset. That's not exactly the same behaviour as before (following the releasetarget), but should cover all current projects.
86 lines
2.7 KiB
Python
Executable File
86 lines
2.7 KiB
Python
Executable File
#!/usr/bin/python2
|
|
# -*- coding: utf-8 -*-
|
|
#
|
|
# (C) 2014 mhrusecky@suse.cz, openSUSE.org
|
|
# (C) 2014 tchvatal@suse.cz, openSUSE.org
|
|
# (C) 2014 aplanas@suse.de, openSUSE.org
|
|
# (C) 2014 coolo@suse.de, openSUSE.org
|
|
# (C) 2017 okurz@suse.de, openSUSE.org
|
|
# (C) 2018 dheidler@suse.de, openSUSE.org
|
|
# Distribute under GPLv2 or GPLv3
|
|
|
|
from __future__ import print_function
|
|
import yaml
|
|
from osclib.core import attribute_value_load
|
|
|
|
class ImageProduct(object):
|
|
def __init__(self, package, archs):
|
|
self.package = package
|
|
self.archs = archs
|
|
|
|
class ToTest(object):
|
|
|
|
"""Base class to store the basic interface"""
|
|
|
|
def __init__(self, project, apiurl):
|
|
self.name = project
|
|
|
|
# set the defaults
|
|
self.do_not_release = False
|
|
self.need_same_build_number = False
|
|
self.set_snapshot_number = False
|
|
self.take_source_from_product = False
|
|
self.arch = 'x86_64'
|
|
self.openqa_server = None
|
|
|
|
self.product_repo = 'images'
|
|
self.product_arch = 'local'
|
|
self.livecd_repo = 'images'
|
|
self.totest_container_repo = 'containers'
|
|
# Repo for image_products. If not set, uses product_repo.
|
|
self.totest_images_repo = None
|
|
|
|
self.main_products = []
|
|
self.ftp_products = []
|
|
self.container_products = []
|
|
self.livecd_products = []
|
|
self.image_products = []
|
|
|
|
self.test_subproject = 'ToTest'
|
|
self.base = project.split(':')[0]
|
|
|
|
self.jobs_num = 42
|
|
self.load_config(apiurl)
|
|
self.test_project = '%s:%s' % (project, self.test_subproject)
|
|
|
|
def load_config(self, apiurl):
|
|
config = yaml.safe_load(attribute_value_load(apiurl, self.name, 'ToTestManagerConfig'))
|
|
for key, value in config.items():
|
|
if key == 'products':
|
|
self.set_products(value)
|
|
else:
|
|
setattr(self, key, value)
|
|
|
|
# Set default for totest_images_repo
|
|
if self.totest_images_repo is None:
|
|
self.totest_images_repo = self.product_repo
|
|
|
|
def parse_images(self, products):
|
|
parsed = []
|
|
for package in products:
|
|
# there is only one
|
|
for key, value in package.items():
|
|
parsed.append(ImageProduct(key, value))
|
|
|
|
return parsed
|
|
|
|
def set_products(self, products):
|
|
# plain arrays
|
|
setattr(self, 'main_products', products.get('main', []))
|
|
setattr(self, 'ftp_products', products.get('ftp', []))
|
|
|
|
# image products
|
|
setattr(self, 'livecd_products', self.parse_images(products.get('livecds', [])))
|
|
setattr(self, 'image_products', self.parse_images(products.get('images', [])))
|
|
setattr(self, 'container_products', self.parse_images(products.get('container', [])))
|