Merge ~alejdg/jenkins-agent-charm:fix_master_relation_setup into jenkins-agent-charm:master

Proposed by Alexandre Gomes
Status: Merged
Approved by: Alexandre Gomes
Approved revision: 9a360f34a99e3b26c64b6e133264d5f1879c859d
Merged at revision: ac9b1d1220c1670af0dbb92bde13f1883d66b497
Proposed branch: ~alejdg/jenkins-agent-charm:fix_master_relation_setup
Merge into: jenkins-agent-charm:master
Diff against target: 84 lines (+12/-7)
4 files modified
files/download-slave.sh (+2/-2)
reactive/jenkins_slave.py (+7/-3)
templates/jenkins-slave-default (+1/-1)
tests/unit/test_jenkins_slave.py (+2/-1)
Reviewer Review Type Date Requested Status
Haw Loeung +1 Approve
Canonical IS Reviewers Pending
Review via email: mp+394136@code.launchpad.net

Commit message

Make sure secret is not overwritten outside of the relation context

To post a comment you must log in.
Revision history for this message
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

This merge proposal is being monitored by mergebot. Change the status to Approved to merge.

Revision history for this message
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

Unable to determine commit message from repository - please click "Set commit message" and enter the commit message manually.

Revision history for this message
Haw Loeung (hloeung) wrote :

LGTM

review: Approve (+1)
Revision history for this message
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

Change successfully merged at revision ac9b1d1220c1670af0dbb92bde13f1883d66b497

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/files/download-slave.sh b/files/download-slave.sh
2index 831f066..dfe1462 100755
3--- a/files/download-slave.sh
4+++ b/files/download-slave.sh
5@@ -29,7 +29,7 @@ if [ -s ${SLAVE_JAR}.new ] && [ -s ${JENKINS_JNLP}.new ]
6 then
7 mv ${SLAVE_JAR}.new ${SLAVE_JAR}
8 mv ${JENKINS_JNLP}.new ${JENKINS_JNLP}
9- exit 0
10+ exit 0
11 else
12- exit 1
13+ exit 1
14 fi
15diff --git a/reactive/jenkins_slave.py b/reactive/jenkins_slave.py
16index 615084e..be3b256 100644
17--- a/reactive/jenkins_slave.py
18+++ b/reactive/jenkins_slave.py
19@@ -96,7 +96,7 @@ def configure_jenkins_slave():
20 write_default_conf(config.get('master_url'))
21 elif kv.get('url'):
22 status.maintenance("Using url from relation as 'master_url'")
23- write_default_conf(kv.get('url'))
24+ write_default_conf(kv.get('url'), kv.get('secret'))
25 else:
26 status.maintenance("No 'master_url' set; not configuring slave at this time.")
27 status.blocked("requires either slave relation or 'master_url'")
28@@ -168,6 +168,7 @@ def slave_relation_changed():
29 def slave_relation_removed():
30 kv = unitdata.kv()
31 kv.set('url', None)
32+ kv.set('secret', None)
33 reactive.clear_flag('slave-relation.available')
34
35
36@@ -186,8 +187,9 @@ def slave_relation():
37
38 url = hookenv.relation_get('url')
39 if url:
40- kv.set('url', url)
41 secret = hookenv.relation_get('secret')
42+ kv.set('url', url)
43+ kv.set('secret', secret)
44 write_default_conf(url, secret=secret)
45 else:
46 hookenv.log("Master hasn't exported its url yet, exiting...")
47@@ -229,7 +231,9 @@ def file_to_units(local_path, unit_path, perms=None, owner='root', group='root')
48 host.write_file(path=unit_path, content=fh.read().encode(), owner=owner, group=group, perms=file_perms)
49
50
51-def write_default_conf(master_url=None, owner='root', group='root', conf_path='/etc/default/jenkins-slave', secret=None):
52+def write_default_conf(
53+ master_url=None, owner='root', group='root', conf_path='/etc/default/jenkins-slave', secret=None
54+):
55 templates_dir = os.path.join(hookenv.charm_dir(), 'templates')
56 slave_host = hookenv.local_unit().replace('/', '-')
57 templating.render(
58diff --git a/templates/jenkins-slave-default b/templates/jenkins-slave-default
59index fcf5d35..b3b2148 100644
60--- a/templates/jenkins-slave-default
61+++ b/templates/jenkins-slave-default
62@@ -65,7 +65,7 @@ JENKINS_JNLP="${JENKINS_HOME}/agent.jnlp"
63
64 # Arguments to pass to jenkins slave on startup
65 {% if secret %}
66-JENKINS_SLAVE_SECRET="{{ secret
67+JENKINS_SLAVE_SECRET="{{ secret }}"
68
69 JENKINS_ARGS="-jnlpUrl file:${JENKINS_JNLP} -secret ${JENKINS_SLAVE_SECRET}"
70 {% else %}
71diff --git a/tests/unit/test_jenkins_slave.py b/tests/unit/test_jenkins_slave.py
72index d10d787..a0c1677 100644
73--- a/tests/unit/test_jenkins_slave.py
74+++ b/tests/unit/test_jenkins_slave.py
75@@ -290,7 +290,8 @@ class TestSetDefaultConf(unittest.TestCase):
76 config.return_value = {'master_url': ''}
77 relation_get.return_value = 'http://10.1.1.1:8080'
78 jenkins_slave.slave_relation()
79- self.assertFalse(relation_get.assert_called_once_with('url'))
80+ expected = [mock.call('url'), mock.call('secret')]
81+ self.assertFalse(relation_get.assert_has_calls(expected))
82 self.assertFalse(clear_flag.assert_called_once_with('jenkins-slave.active'))
83 self.assertFalse(set_flag.assert_called_once_with('slave-relation.configured'))
84 expected = [

Subscribers

People subscribed via source and target branches