コード例 #1
0
 def __init__(self, amqp_prefix, openqa_url):
     super(Listener, self).__init__(amqp_prefix,
                                    logging.getLogger(__name__))
     self.projects = []
     self.amqp_prefix = amqp_prefix
     self.openqa_url = openqa_url
     self.openqa = OpenQA_Client(server=openqa_url)
コード例 #2
0
 def __init__(self, apiurl, opts):
     self.projects = []
     self.opts = opts
     self.apiurl = apiurl
     if apiurl.endswith('suse.de'):
         openqa_url = 'https://openqa.suse.de'
     else:
         openqa_url = 'https://openqa.opensuse.org'
     self.openqa = OpenQA_Client(openqa_url)
コード例 #3
0
 def __init__(self, project, dryrun=False):
     self.project = project
     self.dryrun = dryrun
     self.api = StagingAPI(osc.conf.config['apiurl'],
                           project='openSUSE:%s' % project)
     self.openqa = OpenQA_Client(server='https://openqa.opensuse.org')
     self.issues_to_ignore = []
     self.issuefile = "{}_{}".format(self.project, ISSUE_FILE)
     if os.path.isfile(self.issuefile):
         with open(self.issuefile, 'r') as f:
             for line in f.readlines():
                 self.issues_to_ignore.append(line.strip())
コード例 #4
0
 def get_latest_job(self, filter):
     try:
         client = OpenQA_Client(server=self._instance)
         result = client.openqa_request('GET', 'jobs', filter)
         jobs = sorted(result['jobs'], key=lambda x: str(x['t_finished']))
         if jobs:
             return ([[job] for job in jobs
                      if job['result'] in ['passed', 'softfailed']][-1][0])
         else:
             raise LatestJobNotFound("no such job found")
     except Exception:
         raise LatestJobNotFound("no such job found")
コード例 #5
0
    def setup_checker(self):
        bot = ReviewBot.CommandLineInterface.setup_checker(self)

        if self.options.force:
            bot.force = True
        bot.do_comments = self.options.comment
        if not self.options.openqa:
            raise osc.oscerr.WrongArgs("missing openqa url")
        bot.openqa = OpenQA_Client(server=self.options.openqa)

        global logger
        logger = self.logger

        return bot
コード例 #6
0
 def __init__(self, project, dryrun=False, norelease=False, api_url=None, openqa_server='https://openqa.opensuse.org', test_subproject=None):
     self.project = project
     self.dryrun = dryrun
     self.norelease = norelease
     if not api_url:
         api_url = osc.conf.config['apiurl']
     self.api = StagingAPI(api_url, project=project)
     self.openqa_server = openqa_server
     if not test_subproject:
         test_subproject = 'ToTest'
     self.test_project = '%s:%s' % (self.project, test_subproject)
     self.openqa = OpenQA_Client(server=openqa_server)
     self.load_issues_to_ignore()
     self.project_base = project.split(':')[0]
     self.update_pinned_descr = False
     self.amqp_url = osc.conf.config.get('ttm_amqp_url')
コード例 #7
0
def _get_conf(jobid, srv):
    client = OpenQA_Client(server='http://%s' % srv)
    conf = client.openqa_request('GET', 'jobs/%s' % jobid)

    testname = conf['job']['settings']['TEST_SUITE_NAME']
    jobvars = {}
    jobvars['name'] = testname
    suitevars = client.openqa_request('GET', 'test_suites')

    vars_generator = (settings for settings in suitevars['TestSuites'])

    for v in vars_generator:
        if testname == v.get('name'):
            jobvars.update(v)
            break
    return jobvars
コード例 #8
0
    def setup_checker(self):
        bot = ReviewBot.CommandLineInterface.setup_checker(self)

        if self.options.force:
            bot.force = True

        bot.do_comments = self.options.comment

        if not self.options.openqa:
            raise osc.oscerr.WrongArgs("missing openqa url")

        bot.openqa = OpenQA_Client(server=self.options.openqa)
        project, target, api = self._load_metadata()
        bot.api_map = api
        bot.tgt_repo = target
        bot.project_settings = project

        return bot
コード例 #9
0
def _get_conf(jobid, srv):
    client = OpenQA_Client(server='http://%s' % srv)
    conf = client.openqa_request('GET', 'jobs/%s' % jobid)

    testname = conf['job']['test']
    jobvars = {}
    jobvars['name'] = testname
    suitevars = client.openqa_request('GET', 'test_suites')

    vars_generator = (settings for settings in suitevars['TestSuites'])

    for v in vars_generator:
        # there are test jobs that the name is modified in job group and is run with
        # another name than the name in 'TestSuites' ex installer_extended_textmode
        # Because ususally the name just appends the name we just check if it startswith
        if testname.startswith(v['name']):
            jobvars.update(v)
    return jobvars
コード例 #10
0
 def __init__(self, project, dryrun=False, api_url=None, openqa_server='https://openqa.opensuse.org', test_subproject=None):
     self.project = project
     self.dryrun = dryrun
     if not api_url:
         api_url = osc.conf.config['apiurl']
     self.api = StagingAPI(api_url, project=project)
     self.openqa_server = openqa_server
     if not test_subproject:
         test_subproject = 'ToTest'
     self.test_project = '%s:%s' % (self.project, test_subproject)
     self.openqa = OpenQA_Client(server=openqa_server)
     self.issues_to_ignore = []
     self.issuefile = "{}_{}".format(self.project, ISSUE_FILE)
     if os.path.isfile(self.issuefile):
         with open(self.issuefile, 'r') as f:
             for line in f.readlines():
                 self.issues_to_ignore.append(line.strip())
     self.project_base = project.split(':')[0]
     self.update_pinned_descr = False
コード例 #11
0
    def __init__(self, *args, **kwargs):
        self.force = False
        self.openqa = None
        self.do_comments = True
        if 'force' in kwargs:
            if kwargs['force'] is True:
                self.force = True
            del kwargs['force']
        if 'openqa' in kwargs:
            self.openqa = OpenQA_Client(server=kwargs['openqa'])
            del kwargs['openqa']
        if 'do_comments' in kwargs:
            if kwargs['do_comments'] is not None:
                self.do_comments = kwargs['do_comments']
            del kwargs['do_comments']

        ReviewBot.ReviewBot.__init__(self, *args, **kwargs)

        self.logger.debug(self.do_comments)

        self.commentapi = CommentAPI(self.apiurl)
        self.update_test_builds = dict()
コード例 #12
0
    parser.add_argument('--openqa', type=str, required=True, help='OpenQA URL')
    parser.add_argument('--repos',
                        type=str,
                        required=True,
                        help='Directory to read from')
    parser.add_argument('--to',
                        type=str,
                        required=True,
                        help='Directory to commit into')

    global args
    args = parser.parse_args()
    global logger
    logging.basicConfig(level=logging.DEBUG)
    logger = logging.getLogger(__name__)

    openqa = OpenQA_Client(server=args.openqa)

    interesting_repos = dict()
    list = openqa.openqa_request('GET', 'obs_rsync')
    for repopair in list:
        project, repository = repopair
        interesting_repos[f'{project}_-_{repository}'] = 1

    openqa = OpenQA_Client(server=args.openqa)
    for state in glob.glob('{}/*.yaml'.format(args.repos)):
        state = basename(state).replace('.yaml', '')
        if not state in interesting_repos:
            continue
        notify_project(openqa, state)
コード例 #13
0
 def setup(self, project):
     super(ToTestPublisher, self).setup(project)
     self.openqa = OpenQA_Client(server=self.project.openqa_server)
     self.update_pinned_descr = False
     self.load_issues_to_ignore()
コード例 #14
0
ファイル: kotd-ci.py プロジェクト: frankenmichl/kotd-ci
def start_amqp():
    pending_jobs = 0
    connection = pika.BlockingConnection(
        pika.URLParameters(config["rabbit_server"]))
    channel = connection.channel()

    channel.exchange_declare(exchange='pubsub',
                             exchange_type='topic',
                             passive=True,
                             durable=True)

    result = channel.queue_declare(exclusive=True)
    queue_name = result.method.queue

    channel.queue_bind(exchange='pubsub',
                       queue=queue_name,
                       routing_key=config["amqp_obskey"])
    channel.queue_bind(exchange='pubsub',
                       queue=queue_name,
                       routing_key=config["amqp_openqakey"])

    channel.basic_consume(callback, queue=queue_name, no_ack=True)

    channel.start_consuming()


client = OpenQA_Client(server=config["openqa_url"])
print(' [*] Waiting for SLE12-SP4 kernel builds. Abort with CTRL+C')
start_amqp()
コード例 #15
0
#!/usr/bin/python3

import sys

from openqa_client.client import OpenQA_Client

client = OpenQA_Client(server='openqa.qubes-os.org')
params = {
    'DISTRI': 'qubesos',
    'VERSION': sys.argv[1],
    'FLAVOR': 'install-iso',
    'ARCH': 'x86_64',
    'BUILD': sys.argv[2],
    'ISO_URL': f'https://qubes.notset.fr/iso/{sys.argv[3]}',
    'KERNEL_VERSION': "latest" if "kernel-latest" in sys.argv[2] else "stable"
}
print(client.openqa_request('POST', 'isos', params))