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)
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)
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())
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")
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
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')
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
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
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
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
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()
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)
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()
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()
#!/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))