TT#12263 new JBI_ALLOWED_HOSTS setting

* don't trigger get_jbi_files for hosts not in JBI_ALLOWED_HOSTS

- prod => ['jenkins.mgm.sipwise.com']
- dev  => ['jenkins-dev.mgm.sipwise.com']

Change-Id: I14bf397a54ea5dcad9ec64a6660c4f6e86a387b6
changes/10/11810/1
Victor Seva 9 years ago
parent 92489bb363
commit 42291db694

@ -18,7 +18,9 @@ from collections import OrderedDict
from django.db import models
from django.forms.models import model_to_dict
from django.conf import settings
from repoapi.tasks import get_jbi_files
from urlparse import urlparse
logger = logging.getLogger(__name__)
workfront_re = re.compile(r"TT#(\d+)")
@ -164,6 +166,13 @@ class JenkinsBuildInfo(models.Model):
["param_release", "projectname", "tag"],
]
def is_job_url_allowed(self):
if self.job_url:
parsed = urlparse(self.job_url)
if parsed.netloc in settings.JBI_ALLOWED_HOSTS:
return True
return False
def __str__(self):
return "%s:%d[%s]" % (self.jobname,
self.buildnumber, self.tag)
@ -172,6 +181,7 @@ class JenkinsBuildInfo(models.Model):
def jbi_manage(sender, **kwargs):
if kwargs["created"]:
instance = kwargs["instance"]
get_jbi_files.delay(instance.pk,
instance.jobname,
instance.buildnumber)
if instance.is_job_url_allowed():
get_jbi_files.delay(instance.pk,
instance.jobname,
instance.buildnumber)

@ -72,3 +72,4 @@ JBI_BASEDIR = os.path.join(VAR_DIR, 'jbi_files')
JBI_ARTIFACT_JOBS = [
'release-tools-runner',
]
JBI_ALLOWED_HOSTS = ['jenkins.mgm.sipwise.com']

@ -75,3 +75,4 @@ JBI_BASEDIR = os.path.join(RESULTS_DIR, 'jbi_files')
JBI_ARTIFACT_JOBS = [
'fake-release-tools-runner',
]
JBI_ALLOWED_HOSTS = ['jenkins-dev.mgm.sipwise.com']

@ -15,8 +15,11 @@
from django.test import TestCase
from repoapi.models import JenkinsBuildInfo
from django.test import override_settings
from repoapi.test.base import BaseTest
JBI_HOST = "https://%s/job/fake-gerrit/"
class JenkinsBuildInfoTestCase(BaseTest):
@ -36,3 +39,45 @@ class JenkinsBuildInfoTestCase(BaseTest):
result='OK',
param_release='release-mr4.0')
self.assertIsNone(jbi.tag)
@override_settings(JBI_ALLOWED_HOSTS=['jenkins-dev.local'])
def test_job_url_not_allowed(self):
base = "https://%s/job/fake-gerrit/"
job = JenkinsBuildInfo.objects.create(
projectname='fake',
jobname='fake-get-code',
buildnumber=1,
result='OK',
param_release='release-mr4.0')
self.assertFalse(job.is_job_url_allowed())
job.job_url = JBI_HOST % 'jenkins.mgm.sipwise.com'
self.assertFalse(job.is_job_url_allowed())
@override_settings(JBI_ALLOWED_HOSTS=[])
def test_job_url_not_allowed_empty(self):
base = "https://%s/job/fake-gerrit/"
job = JenkinsBuildInfo.objects.create(
projectname='fake',
jobname='fake-get-code',
buildnumber=1,
result='OK',
param_release='release-mr4.0')
self.assertFalse(job.is_job_url_allowed())
job.job_url = JBI_HOST % 'jenkins.mgm.sipwise.com'
self.assertFalse(job.is_job_url_allowed())
job.job_url = None
self.assertFalse(job.is_job_url_allowed())
@override_settings(JBI_ALLOWED_HOSTS=['jenkins-dev.local',
'jenkins.local'])
def test_job_url_allowed(self):
job = JenkinsBuildInfo.objects.create(
projectname='fake',
jobname='fake-get-code',
job_url=JBI_HOST % 'jenkins-dev.local',
buildnumber=1,
result='OK',
param_release='release-mr4.0')
self.assertTrue(job.is_job_url_allowed())
job.job_url = JBI_HOST % 'jenkins.local'
self.assertTrue(job.is_job_url_allowed())

@ -44,7 +44,9 @@ class TestJBICelery(BaseTest):
'jobname': "real-fake-gerrit",
'buildnumber': 1,
'result': "SUCCESS",
'job_url': "https://jenkins.mgm.sipwise.com/job/real-fake-gerrit/",
'job_url':
"https://jenkins-dev.mgm.sipwise.com/job"
"/real-fake-gerrit/",
'param_tag': "none",
'param_branch': "master",
'param_release': "none",

Loading…
Cancel
Save