Implement buildroot_connect for copr

This commit is contained in:
Jakub Kadlčík
2016-11-09 06:41:32 +01:00
committed by Ralph Bean
parent a625bc89a1
commit ebb71af659

View File

@@ -808,6 +808,8 @@ class CoprModuleBuilder(GenericBuilder):
self.tag_name = tag_name
self.repos = []
self.client = CoprModuleBuilder._get_client(config)
self.__prep = False
self.copr = None
@classmethod
def _get_client(cls, config):
@@ -822,7 +824,19 @@ class CoprModuleBuilder(GenericBuilder):
Koji Example: create tag, targets, set build tag inheritance...
"""
pass
self.copr = self._get_copr()
if self.copr and self.copr.projectname and self.copr.username:
self.__prep = True
log.info("%r buildroot sucessfully connected." % self)
def _get_copr(self):
from copr.exceptions import CoprRequestException
# @TODO how the authentication is designed?
username, copr = "@copr", "modules"
try:
return self.client.get_project_details(copr, username=username).handle
except CoprRequestException:
return self.client.create_project(username, copr, ["fedora-24-x86_64"]).handle
def buildroot_ready(self, artifacts=None):
"""
@@ -856,9 +870,7 @@ class CoprModuleBuilder(GenericBuilder):
def buildroot_add_repos(self, dependencies):
log.info("%r adding deps on %r" % (self, dependencies))
self.repos = [GenericBuilder.tag_to_repo("copr", self.config, d, "x86_64") for d in dependencies]
username, copr = "@copr", "modules"
self.client.modify_project(copr, username=username, repos=self.repos)
self.client.modify_project(self.copr.projectname, username=self.copr.username, repos=self.repos)
def build(self, artifact_name, source):
"""
@@ -880,11 +892,11 @@ class CoprModuleBuilder(GenericBuilder):
"""
log.info("Copr build")
# @TODO how the authentication is designed?
username, copr = "@copr", "modules"
if not self.__prep:
raise RuntimeError("Buildroot is not prep-ed")
# Build package from `source`
response = self.client.create_new_build(copr, [source], username=username)
response = self.client.create_new_build(self.copr.projectname, [source], username=self.copr.username)
if response.output != "ok":
log.error(response.error)
@@ -893,8 +905,8 @@ class CoprModuleBuilder(GenericBuilder):
m1 = ModuleBuild.query.filter(ModuleBuild.name == self.module_str).first()
m1.mmd().dump(modulemd)
data = {"modulemd": modulemd}
result = self.client.create_new_build_module(username=username, projectname=copr, **data)
kwargs = {"username": self.copr.username, "projectname": self.copr.projectname, "modulemd": modulemd}
result = self.client.create_new_build_module(**kwargs)
if result.output != "ok":
log.error(result.error)
return