TT#7211 add authentication on jenkins requests

* rename repoapi.utils.openurl to a less confusing name open_jenkins_url

Change-Id: I0d3fee994d0fb4af5a315b4c1d1a42dcf067504a
pull/3/head
Victor Seva 6 years ago
parent 4270909b25
commit 34221aee0a
No known key found for this signature in database
GPG Key ID: B1589889727198E0

@ -174,7 +174,7 @@ class ReleaseConfigTestCase(SimpleTestCase):
self.assertListEqual(["ngcp-schema"], values) self.assertListEqual(["ngcp-schema"], values)
@patch("build.utils.openurl") @patch("build.utils.open_jenkins_url")
class TriggerBuild(SimpleTestCase): class TriggerBuild(SimpleTestCase):
def test_project_build(self, openurl): def test_project_build(self, openurl):
params = { params = {

@ -24,7 +24,7 @@ from yaml import Loader
from . import exceptions as err from . import exceptions as err
from .conf import settings from .conf import settings
from repoapi.utils import openurl from repoapi.utils import open_jenkins_url
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -79,7 +79,7 @@ def trigger_copy_deps(release, internal, release_uuid, uuid=None):
if settings.DEBUG: if settings.DEBUG:
logger.info("Debug mode, would trigger: %s", url) logger.info("Debug mode, would trigger: %s", url)
else: else:
openurl(url) open_jenkins_url(url)
return "{base}/job/{job}/".format(**params) return "{base}/job/{job}/".format(**params)
@ -123,7 +123,7 @@ def trigger_build(
if settings.DEBUG: if settings.DEBUG:
logger.info("Debug mode, would trigger: %s", url) logger.info("Debug mode, would trigger: %s", url)
else: else:
openurl(url) open_jenkins_url(url)
return "{base}/job/{job}/".format(**params) return "{base}/job/{job}/".format(**params)

@ -18,7 +18,7 @@ from requests.auth import HTTPBasicAuth
from ..conf import settings from ..conf import settings
from ..models import Project from ..models import Project
from repoapi.utils import openurl from repoapi.utils import open_jenkins_url
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -62,7 +62,7 @@ def trigger_hotfix(project, branch, user, push="yes"):
if settings.DEBUG: if settings.DEBUG:
logger.warn("Debug mode, would trigger: %s", url) logger.warn("Debug mode, would trigger: %s", url)
else: else:
openurl(url) open_jenkins_url(url)
return "%s/job/release-tools-runner/" % settings.JENKINS_URL return "%s/job/release-tools-runner/" % settings.JENKINS_URL
@ -109,7 +109,7 @@ def trigger_build(
if settings.DEBUG: if settings.DEBUG:
logger.debug("Debug mode, would trigger: %s", url) logger.debug("Debug mode, would trigger: %s", url)
else: else:
openurl(url) open_jenkins_url(url)
return "{base}/job/{job}/".format(**params) return "{base}/job/{job}/".format(**params)

@ -20,7 +20,7 @@ import uuid
import requests import requests
from ..conf import settings from ..conf import settings
from repoapi.utils import openurl from repoapi.utils import open_jenkins_url
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -50,7 +50,7 @@ def trigger_docker_build(project, branch):
if settings.DEBUG: if settings.DEBUG:
logger.debug("Debug mode, would trigger: %s", url) logger.debug("Debug mode, would trigger: %s", url)
else: else:
openurl(url) open_jenkins_url(url)
return "{base}/job/build-project-docker/".format(**params) return "{base}/job/build-project-docker/".format(**params)

@ -17,9 +17,11 @@ import os
import re import re
import shutil import shutil
import subprocess import subprocess
import urllib.request
from distutils.dir_util import mkpath from distutils.dir_util import mkpath
import requests
from requests.auth import HTTPBasicAuth
from .conf import settings from .conf import settings
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -40,28 +42,40 @@ def executeAndReturnOutput(command, env=None):
return proc.returncode, stdoutdata, stderrdata return proc.returncode, stdoutdata, stderrdata
def get_jenkins_response(url):
auth = HTTPBasicAuth(
settings.JENKINS_HTTP_USER, settings.JENKINS_HTTP_PASSWD
)
response = requests.get(url, auth=auth)
response.raise_for_status()
return response
def dlfile(url, path): def dlfile(url, path):
if settings.DEBUG: if settings.DEBUG:
logger.info("I would call %s", url) logger.info("I would call %s", url)
else: else:
remote_file = urllib.request.urlopen(url) auth = HTTPBasicAuth(
settings.JENKINS_HTTP_USER, settings.JENKINS_HTTP_PASSWD
)
logger.debug("url:[%s]", url) logger.debug("url:[%s]", url)
with open(path, "wb") as local_file: with requests.get(url, auth=auth, stream=True) as req:
shutil.copyfileobj(remote_file, local_file) with open(path, "wb") as local_file:
shutil.copyfileobj(req.raw, local_file)
def openurl(url): def open_jenkins_url(url):
req = urllib.request.Request(url)
logger.debug("Trying to retrieve url: [%s]", url) logger.debug("Trying to retrieve url: [%s]", url)
try: try:
response = urllib.request.urlopen(req) res = get_jenkins_response(url)
if 199 < response.getcode() < 300: logger.debug("OK[{}] URL[{}]".format(res.status_code, url))
logger.debug("OK[%d] URL[%s]", response.getcode(), url) return True
return True except requests.HTTPError as e:
except urllib.error.HTTPError as e: logger.error(
logger.error("Error[%d] retrieving URL[%s]", e.getcode(), url) "Error[{}] retrieving URL[{}]: {}".format(res.status_code, url, e)
except Exception: )
logger.error("Fatal error retrieving URL[%s]", url) except Exception as e:
logger.error("Fatal error retrieving URL[{}]: {}".format(url, e))
return False return False
@ -75,7 +89,7 @@ def jenkins_remove_ppa(repo):
if settings.DEBUG: if settings.DEBUG:
logger.debug("I would call %s", url) logger.debug("I would call %s", url)
else: else:
openurl(url) open_jenkins_url(url)
def _jenkins_get(url, base_path, filename): def _jenkins_get(url, base_path, filename):

Loading…
Cancel
Save