Source code for gocd.api.pluggable_scm

import json
from gocd.api.endpoint import Endpoint

__all__ = ['PluggableSCM']


[docs]class PluggableSCM(Endpoint): base_path = 'go/api/admin/scms' id = 'name' def __init__(self, server, name=""): """A wrapper for the `Go pluggable SCM API`__ .. __: https://api.go.cd/current/#scms Args: server (Server): A configured instance of :class:gocd.server.Server name (str): The name of the SCM material """ self.server = server self.name = name
[docs] def list(self): """Lists all available pluggable scm materials, these are materials that are present in the in cruise-config.xml. See the `Go pluggable SCM documentation`__ for example responses. .. __: https://api.go.cd/current/#get-all-pluggable-scm-materials Returns: Response: :class:`gocd.api.response.Response` object """ return self._get("", headers={"Accept": self._accept_header_value})
[docs] def get(self): """Gets SCM material for specified material name See `The global scm config object`__ for example responses. .. __: https://api.go.cd/current/#the-global-scm-config-object Returns: Response: :class:`gocd.api.response.Response` object """ return self._get(self.name, headers={"Accept": self._accept_header_value})
[docs] def edit(self, config, etag): """Update SCM material for specified material name. .. __: https://api.go.cd/current/#update-pluggable-scm-object Returns: Response: :class:`gocd.api.response.Response` object """ data = self._json_encode(config) headers = self._default_headers() if etag is not None: headers["If-Match"] = etag return self._request(self.name, ok_status=None, data=data, headers=headers, method="PUT")
[docs] def create(self, config): """Create a global SCM object .. __: https://api.go.cd/current/#create-a-scm-object Returns: Response: :class:`gocd.api.response.Response` object """ assert config["name"] == self.name, "SCM configuration name doesn't match" assert "configuration" in config, "SCM has no configuration" data = self._json_encode(config) headers = self._default_headers() return self._request("", ok_status=None, data=data, headers=headers, method="POST")
def _default_headers(self): return {"Accept": self._accept_header_value, "Content-Type": "application/json"} @property def _accept_header_value(self): return "application/vnd.go.cd.v1+json" @staticmethod def _json_encode(config): return json.dumps(config)