diff options
Diffstat (limited to 'testing/mozharness/mozharness/mozilla/selfserve.py')
-rw-r--r-- | testing/mozharness/mozharness/mozilla/selfserve.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/testing/mozharness/mozharness/mozilla/selfserve.py b/testing/mozharness/mozharness/mozilla/selfserve.py new file mode 100644 index 000000000..69e243059 --- /dev/null +++ b/testing/mozharness/mozharness/mozilla/selfserve.py @@ -0,0 +1,47 @@ +import json +import site + +# SelfServeMixin {{{1 +class SelfServeMixin(object): + def _get_session(self): + site_packages_path = self.query_python_site_packages_path() + site.addsitedir(site_packages_path) + import requests + session = requests.Session() + adapter = requests.adapters.HTTPAdapter(max_retries=5) + session.mount("http://", adapter) + session.mount("https://", adapter) + return session + + def _get_base_url(self): + return self.config["selfserve_url"].rstrip("/") + + def trigger_nightly_builds(self, branch, revision, auth): + session = self._get_session() + + selfserve_base = self._get_base_url() + url = "%s/%s/rev/%s/nightly" % (selfserve_base, branch, revision) + + data = { + "revision": revision, + } + self.info("Triggering nightly builds via %s" % url) + return session.post(url, data=data, auth=auth).raise_for_status() + + def trigger_arbitrary_job(self, builder, branch, revision, auth, files=None): + session = self._get_session() + + selfserve_base = self._get_base_url() + url = "%s/%s/builders/%s/%s" % (selfserve_base, branch, builder, revision) + + data = { + "properties": json.dumps({ + "branch": branch, + "revision": revision + }), + } + if files: + data["files"] = json.dumps(files) + + self.info("Triggering arbritrary job at %s" % url) + return session.post(url, data=data, auth=auth).raise_for_status() |