Source code for gerrit.projects.webhooks

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author: Jialiang Shi

from gerrit.utils.models import BaseModel


[docs] class GerritProjectWebHook(BaseModel): def __init__(self, **kwargs): super().__init__(**kwargs) self.entity_name = "name" self.endpoint = f"/config/server/webhooks~projects/{self.project}/remotes/{self.name}"
[docs] def delete(self): """ Delete a webhook for a project. :return: """ self.gerrit.delete(self.endpoint)
[docs] class GerritProjectWebHooks(object): def __init__(self, project, gerrit): self.project = project self.gerrit = gerrit self.endpoint = f"/config/server/webhooks~projects/{self.project}/remotes"
[docs] def list(self): """ List existing webhooks for a project. :return: """ result = self.gerrit.get(self.endpoint + "/") webhooks = [] for key, value in result.items(): webhook = value webhook.update({"name": key}) webhooks.append(webhook) return GerritProjectWebHook.parse_list( webhooks, project=self.project, gerrit=self.gerrit )
[docs] def create(self, name, input_): """ Create or update a webhook for a project. .. code-block:: python input_ = { "url": "https://foo.org/gerrit-events", "maxTries": "3", "sslVerify": "true" } project = client.projects.get('myproject') new_webhook = project.webhooks.create('test', input_) :param name: the webhook name :param input_: the RemoteInfo entity :return: """ result = self.gerrit.put( self.endpoint + f"/{name}", json=input_, headers=self.gerrit.default_headers ) return GerritProjectWebHook( json=result, project=self.project, gerrit=self.gerrit )
[docs] def get(self, name): """ Get information about one webhook. :param name: the webhook name :return: """ result = self.gerrit.get(self.endpoint + f"/{name}") result.update({"name": name}) return GerritProjectWebHook( json=result, project=self.project, gerrit=self.gerrit )
[docs] def delete(self, name): """ Delete a webhook for a project. :param name: the webhook name :return: """ self.gerrit.delete(self.endpoint + f"/{name}")