From: Michael Tremer Date: Thu, 6 Oct 2022 17:31:38 +0000 (+0000) Subject: repositories: Generate a new own key X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ce530aac959e1b66e0b68af6dfd9aa8f6c83715f;p=pbs.git repositories: Generate a new own key Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/keys.py b/src/buildservice/keys.py index 0e5e92de..e38de654 100644 --- a/src/buildservice/keys.py +++ b/src/buildservice/keys.py @@ -45,9 +45,13 @@ class Keys(base.Object): """ return await asyncio.to_thread(self._generate, *args, **kwargs) - def _generate(self, uid, algorithm=None): + def _generate(self, uid, email=None, algorithm=None): log.debug("Generating key for %s (%s)" % (uid, algorithm)) + # Append email if we have any + if email: + uid = "%s <%s>" % (uid, email) + # Launch a new Pakfire instance p = self.backend.pakfire() diff --git a/src/buildservice/repository.py b/src/buildservice/repository.py index dbbcaa6d..d6b0a417 100644 --- a/src/buildservice/repository.py +++ b/src/buildservice/repository.py @@ -61,13 +61,7 @@ class Repositories(base.Object): slug = self._make_slug(name, owner=owner) # Create a key for this repository - if owner: - key = await owner.key.generate_subkey(name) - - # If this is not a personal repository, - # we generate a subkey for the distribution key - else: - key = await distro.key.generate_subkey(name) + key = await self._make_key(distro, name, owner=owner) repo = self._get_repository(""" INSERT INTO @@ -107,6 +101,23 @@ class Repositories(base.Object): if not exists: return slug + async def _make_key(self, distro, name, owner=None): + """ + Generates a new key for the repository + """ + # Generate the UID + uid = "%s - %s" % (distro, name) + + # For personal repositories, we will prepend the owner + if owner: + uid = "%s - %s" % (owner, uid) + + # Fetch an email address + email = owner.email if owner else distro.contact + + # Generate the key + return await self.backend.keys.generate(uid, email=email) + def get_by_id(self, repo_id): return self._get_repository("SELECT * FROM repositories \ WHERE id = %s", repo_id)