def run(self): """ Run the plugin. """ if self.workflow.build_process_failed: self.log.info('Build failed, skipping koji tagging') return if is_scratch_build(self.workflow): self.log.info('scratch build, skipping plugin') return if not self.target: self.log.info('no koji target provided, skipping plugin') return build_id = self.workflow.exit_results.get(KojiImportPlugin.key) if not build_id: self.log.info('No koji build from %s', KojiImportPlugin.key) return session = get_koji_session(self.workflow) build_tag = tag_koji_build(session, build_id, self.target, poll_interval=self.poll_interval) return build_tag
def test_tagging(self, task_state, failure): session = flexmock() task_id = 9876 build_id = 1234 target_name = 'target' tag_name = 'images-candidate' target_info = {'dest_tag_name': tag_name} task_info = {'state': koji.TASK_STATES[task_state]} (session.should_receive('getBuildTarget').with_args( target_name).and_return(target_info)) (session.should_receive('tagBuild').with_args( tag_name, build_id).and_return(task_id)) (session.should_receive('taskFinished').with_args(task_id).and_return( True)) (session.should_receive('getTaskInfo').with_args( task_id, request=True).and_return(task_info)) if failure: with pytest.raises(RuntimeError): tag_koji_build(session, build_id, target_name) else: build_tag = tag_koji_build(session, build_id, target_name) assert build_tag == tag_name