Source code for gerrit.plugins.plugins
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author: Jialiang Shi
from gerrit.utils.models import BaseModel
from gerrit.utils.common import params_creator
[docs]
class GerritPlugin(BaseModel):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.endpoint = f"/plugins/{self.id}"
[docs]
def enable(self):
"""
Enables a plugin on the Gerrit server.
:return:
"""
result = self.gerrit.post(self.endpoint + "/gerrit~enable")
return self.gerrit.plugins.get(result.get("id"))
[docs]
def disable(self):
"""
Disables a plugin on the Gerrit server.
:return:
"""
result = self.gerrit.post(self.endpoint + "/gerrit~disable")
return self.gerrit.plugins.get(result.get("id"))
[docs]
def reload(self):
"""
Reloads a plugin on the Gerrit server.
:return:
"""
result = self.gerrit.post(self.endpoint + "/gerrit~reload")
return self.gerrit.plugins.get(result.get("id"))
[docs]
class GerritPlugins(object):
def __init__(self, gerrit):
self.gerrit = gerrit
self.endpoint = "/plugins"
[docs]
def list(self, is_all=False, limit=25, skip=0, pattern_dispatcher=None):
"""
Lists the plugins installed on the Gerrit server.
:param is_all: boolean value, if True then all plugins (including
hidden ones) will be added to the results
:param limit: Int value that allows to limit the number of plugins
to be included in the output results
:param skip: Int value that allows to skip the given
number of plugins from the beginning of the list
:param pattern_dispatcher: Dict of pattern type with respective
pattern value: {('prefix'|'match'|'regex') : value}
:return:
"""
params = params_creator(
(("n", limit), ("S", skip)),
{"prefix": "p", "match": "m", "regex": "r"},
pattern_dispatcher,
)
params["all"] = int(is_all)
return self.gerrit.get(self.endpoint + "/", params=params)
[docs]
def get(self, id_):
"""
:param id_: plugin id
:return:
"""
result = self.gerrit.get(self.endpoint + f"/{id_}/gerrit~status")
return GerritPlugin(json=result, gerrit=self.gerrit)
[docs]
def install(self, id_, input_):
"""
Installs a new plugin on the Gerrit server.
.. code-block:: python
input_ = {
"url": "file:///gerrit/plugins/delete-project/delete-project-2.8.jar"
}
plugin = client.plugins.install(input_)
:param id_: plugin id
:param input_: the PluginInput entity,
https://gerrit-review.googlesource.com/Documentation/rest-api-plugins.html#plugin-input
:return:
"""
result = self.gerrit.put(
self.endpoint + f"/{id_}.jar",
json=input_,
headers=self.gerrit.default_headers,
)
return GerritPlugin(json=result, gerrit=self.gerrit)