Merge lp:~tcuthbert/turku-charms/turku-api-charm into lp:turku-charms/turku-api-charm

Proposed by Thomas Cuthbert
Status: Merged
Approved by: Barry Price
Approved revision: 14
Merged at revision: 11
Proposed branch: lp:~tcuthbert/turku-charms/turku-api-charm
Merge into: lp:turku-charms/turku-api-charm
Diff against target: 56 lines (+23/-8)
2 files modified
files/sick_sources (+11/-0)
hooks/hooks.py (+12/-8)
To merge this branch: bzr merge lp:~tcuthbert/turku-charms/turku-api-charm
Reviewer Review Type Date Requested Status
Barry Price Approve
Review via email: mp+397546@code.launchpad.net

Commit message

We want to wrap the execution of the script with a shell wrapper to handle mutual exclusion and a timeout

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
Barry Price (barryprice) wrote :

LGTM +1

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

Change successfully merged at revision 11

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added file 'files/sick_sources'
--- files/sick_sources 1970-01-01 00:00:00 +0000
+++ files/sick_sources 2021-02-05 04:25:50 +0000
@@ -0,0 +1,11 @@
1#!/bin/bash
2
3set -eu
4
5test -x /srv/turku.admin.canonical.com/code/current/turku_api/scripts/turku_sick_sources || exit 1
6test -d /var/lib/turku_sick_sources || mkdir /var/lib/turku_sick_sources
7
8/usr/bin/flock -w 30 /var/run/turku_sick_sources.lock \
9 /srv/turku.admin.canonical.com/code/current/turku_api/scripts/turku_sick_sources \
10 --metrics_dir /var/lib/turku_sick_sources > /dev/null
11exit 0
012
=== modified file 'hooks/hooks.py'
--- hooks/hooks.py 2021-02-05 02:24:27 +0000
+++ hooks/hooks.py 2021-02-05 04:25:50 +0000
@@ -16,16 +16,16 @@
1616
17def am_i_leader():17def am_i_leader():
18 """Calls the is-leader juju helper to determine if server is current leader"""18 """Calls the is-leader juju helper to determine if server is current leader"""
19 string_to_boolean = {'True': True, 'False': False}19 string_to_boolean = {'true': True, 'false': False}
20 call_out = None20 stdout = None
21 is_leader = False21 is_leader = False
22 try:22 try:
23 call_out = subprocess.run(['is-leader'], check=True, text=True, timeout=15.0)23 stdout = subprocess.check_output(['is-leader']).decode().rstrip()
24 is_leader = string_to_boolean[call_out.STDOUT]24 is_leader = string_to_boolean[stdout.lower()]
25 except KeyError:25 except KeyError:
26 juju_log('ERROR', 'is-leader juju helper returned unexpected value: {}'.format(call_out))26 juju_log('ERROR', 'is-leader juju helper returned unexpected value: {}'.format(stdout))
27 except subprocess.CalledProcessError:27 except subprocess.CalledProcessError as ce:
28 juju_log('ERROR', 'is-leader juju helper failed to execute: {}'.format(call_out.STDOUT + call_out.STDERR))28 juju_log('ERROR', 'is-leader juju helper failed to execute: {}'.format(ce))
29 return is_leader29 return is_leader
3030
3131
@@ -52,7 +52,11 @@
52@hooks.hook('leader-elected', 'leader-settings-changed')52@hooks.hook('leader-elected', 'leader-settings-changed')
53def leader_elected():53def leader_elected():
54 # This manual hook exists because calling ansible every leadership event is a bad idea.54 # This manual hook exists because calling ansible every leadership event is a bad idea.
55 sick_sources_script = '/srv/turku.admin.canonical.com/code/current/turku_api/scripts/turku_sick_sources'55 abs_path = os.path.abspath(__file__)
56 sick_sources_script = os.path.join(
57 os.path.dirname(os.path.dirname(abs_path)), 'files/sick_sources'
58 )
59
56 cron_daily_sick_sources = '/etc/cron.daily/sick_sources'60 cron_daily_sick_sources = '/etc/cron.daily/sick_sources'
57 is_leader = am_i_leader()61 is_leader = am_i_leader()
58 if is_leader:62 if is_leader:

Subscribers

People subscribed via source and target branches