Source code for gerrit.accounts.gpg_keys

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author: Jialiang Shi
import logging
import requests
from gerrit.utils.gerritbase import GerritBase
from gerrit.utils.exceptions import GPGKeyNotFoundError, GerritAPIException

logger = logging.getLogger(__name__)


[docs] class GerritAccountGPGKey(GerritBase): def __init__(self, id, account, gerrit): self.id = id self.account = account self.gerrit = gerrit self.endpoint = f"/accounts/{self.account}/gpgkeys/{self.id}" super().__init__(self) def __str__(self): return self.id
[docs] def delete(self): """ Deletes a GPG key of a user. :return: """ self.gerrit.delete(self.endpoint)
[docs] class GerritAccountGPGKeys: def __init__(self, account, gerrit): self.account = account self.gerrit = gerrit self.endpoint = f"/accounts/{self.account}/gpgkeys"
[docs] def list(self): """ Returns the GPG keys of an account. :return: """ result = self.gerrit.get(self.endpoint) keys = [] for key, value in result.items(): gpg_key = value gpg_key.update({"id": key}) keys.append(gpg_key) return keys
[docs] def get(self, id_): """ Retrieves a GPG key of a user. :param id_: GPG key id :return: """ try: result = self.gerrit.get(self.endpoint + f"/{id_}") id = result.get("id") return GerritAccountGPGKey(id=id, account=self.account, gerrit=self.gerrit) except requests.exceptions.HTTPError as error: if error.response.status_code == 404: message = f"GPG key {id_} does not exist" raise GPGKeyNotFoundError(message) raise GerritAPIException from error
[docs] def modify(self, input_): """ Add or delete one or more GPG keys for a user. .. code-block:: python input_ = { "add": [ "-----BEGIN PGP PUBLIC KEY BLOCK-----\\n Version: GnuPG v1\\n\\n mQENBFXUpNcBCACv4paCiyKxZ0EcKy8VaWVNkJlNebRBiyw9WxU85wPOq5Gz/3GT\\n RQwKqeY0SxVdQT8VNBw2sBe2m6eqcfZ2iKmesSlbXMe15DA7k8Bg4zEpQ0tXNG1L\\n hceZDVQ1Xk06T2sgkunaiPsXi82nwN3UWYtDXxX4is5e6xBNL48Jgz4lbqo6+8D5\\n vsVYiYMx4AwRkJyt/oA3IZAtSlY8Yd445nY14VPcnsGRwGWTLyZv9gxKHRUppVhQ\\n E3o6ePXKEVgmONnQ4CjqmkGwWZvjMF2EPtAxvQLAuFa8Hqtkq5cgfgVkv/Vrcln4\\n nQZVoMm3a3f5ODii2tQzNh6+7LL1bpqAmVEtABEBAAG0H0pvaG4gRG9lIDxqb2hu\\n LmRvZUBleGFtcGxlLmNvbT6JATgEEwECACIFAlXUpNcCGwMGCwkIBwMCBhUIAgkK\\n CwQWAgMBAh4BAheAAAoJEJNQnkuvyKSbfjoH/2OcSQOu1kJ20ndjhgY2yNChm7gd\\n tU7TEBbB0TsLeazkrrLtKvrpW5+CRe07ZAG9HOtp3DikwAyrhSxhlYgVsQDhgB8q\\n G0tYiZtQ88YyYrncCQ4hwknrcWXVW9bK3V4ZauxzPv3ADSloyR9tMURw5iHCIeL5\\n fIw/pLvA3RjPMx4Sfow/bqRCUELua39prGw5Tv8a2ZRFbj2sgP5j8lUFegyJPQ4z\\n tJhe6zZvKOzvIyxHO8llLmdrImsXRL9eqroWGs0VYqe6baQpY6xpSjbYK0J5HYcg\\n TO+/u80JI+ROTMHE6unGp5Pgh/xIz6Wd34E0lWL1eOyNfGiPLyRWn1d0yZO5AQ0E\\n VdSk1wEIALUycrH2HK9zQYdR/KJo1yJJuaextLWsYYn881yDQo/p06U5vXOZ28lG\\n Aq/Xs96woVZPbgME6FyQzhf20Z2sbr+5bNo3OcEKaKX3Eo/sWwSJ7bXbGLDxMf4S\\n etfY1WDC+4rTqE30JuC++nQviPRdCcZf0AEgM6TxVhYEMVYwV787YO1IH62EBICM\\n SkIONOfnusNZ4Skgjq9OzakOOpROZ4tki5cH/5oSDgdcaGPy1CFDpL9fG6er2zzk\\n sw3qCbraqZrrlgpinWcAduiao67U/dV18O6OjYzrt33fTKZ0+bXhk1h1gloC21MQ\\n ya0CXlnfR/FOQhvuK0RlbR3cMfhZQscAEQEAAYkBHwQYAQIACQUCVdSk1wIbDAAK\\n CRCTUJ5Lr8ikm8+QB/4uE+AlvFQFh9W8koPdfk7CJF7wdgZZ2NDtktvLL71WuMK8\\n POmf9f5JtcLCX4iJxGzcWogAR5ed20NgUoHUg7jn9Xm3fvP+kiqL6WqPhjazd89h\\n k06v9hPE65kp4wb0fQqDrtWfP1lFGuh77rQgISt3Y4QutDl49vXS183JAfGPxFxx\\n 8FgGcfNwL2LVObvqCA0WLqeIrQVbniBPFGocE3yA/0W9BB/xtolpKfgMMsqGRMeu\\n 9oIsNxB2oE61OsqjUtGsnKQi8k5CZbhJaql4S89vwS+efK0R+mo+0N55b0XxRlCS\\n faURgAcjarQzJnG0hUps2GNO/+nM7UyyJAGfHlh5\\n =EdXO\\n -----END PGP PUBLIC KEY BLOCK-----\\n" ], "delete": [ "DEADBEEF", ] } account = client.accounts.get('kevin.shi') result = account.gpg_keys.modify(input_) :param input_: the GpgKeysInput entity, https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#gpg-keys-input :return: """ return self.gerrit.post( self.endpoint, json=input_, headers=self.gerrit.default_headers )
[docs] def delete(self, id_): """ Deletes a GPG key of a user. :param id_: GPG key id :return: """ self.get(id_) self.gerrit.delete(self.endpoint + f"/{id_}")