Merge ~axino/mojo/+git/subordinates:axino into ~mojo-maintainers/mojo/+git/subordinates:master

Proposed by Junien F
Status: Merged
Approved by: Tom Haddon
Approved revision: f2c5f18b68e63e98696d91c4673c48fd6c257634
Merged at revision: 0b4a4cdaf7ae389c62f6b4352fe4d1afbb06c611
Proposed branch: ~axino/mojo/+git/subordinates:axino
Merge into: ~mojo-maintainers/mojo/+git/subordinates:master
Diff against target: 87 lines (+30/-5)
4 files modified
add-relations (+0/-2)
tests/test_juju.py (+23/-2)
tests/testdata/juju2.2.3-no-landscape-livepatch.json (+1/-1)
utils/juju.py (+6/-0)
Reviewer Review Type Date Requested Status
Tom Haddon Approve
Canonical IS Reviewers Pending
Review via email: mp+401974@code.launchpad.net

Commit message

utils/juju.py : make already_related() properly detect a relation if the subordinate application name is different than the charm name

For example if telegraf is deployed as lp-telegraf and related

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
Tom Haddon (mthaddon) wrote :

One minor comment inline

Revision history for this message
Tom Haddon (mthaddon) wrote :

LGTM, thx.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/add-relations b/add-relations
2index 5bcd553..e71bc88 100755
3--- a/add-relations
4+++ b/add-relations
5@@ -33,8 +33,6 @@ def main():
6
7 applications = utils.juju.applications(applications_status, exclude)
8
9- nrpe_subordinates = utils.juju.nrpe_subordinates(applications_status)
10-
11 command = ['juju', 'relate']
12
13 utils.relations.process_charms_to_relate(args, command, applications, applications_status)
14diff --git a/tests/test_juju.py b/tests/test_juju.py
15index d3a5e7d..4a84526 100644
16--- a/tests/test_juju.py
17+++ b/tests/test_juju.py
18@@ -20,7 +20,8 @@ class TestUtilsJuju(unittest.TestCase):
19 'message': 'Ready',
20 'current': 'active'
21 },
22- 'relations': {'nrpe-external-master': ['nrpe']},
23+ 'relations': {'nrpe-external-master': ['nrpe'],
24+ 'juju-info': ['lp-telegraf']},
25 'units': {
26 'lp-mergebot/0': {
27 'juju-status': {
28@@ -76,7 +77,24 @@ class TestUtilsJuju(unittest.TestCase):
29 'exposed': False,
30 'charm-rev': 0,
31 'series': 'xenial'
32- }
33+ },
34+ 'lp-telegraf': {
35+ 'charm': 'cs:telegraf-41',
36+ 'series': 'focal',
37+ 'os': 'ubuntu',
38+ 'charm-origin': 'jujucharms',
39+ 'charm-name': 'telegraf',
40+ 'charm-rev': 41,
41+ 'charm-version': 'dec0633',
42+ 'exposed': False,
43+ 'application-status': {
44+ 'current': 'active',
45+ 'message': 'Monitoring fw-pc1/0 (source version/commit dec0633)',
46+ 'since': '26 Apr 2021 20:58:50Z'
47+ },
48+ 'relations': {'juju-info': ['lp-mergebot']},
49+ 'subordinate-to': ['lp-mergebot'],
50+ },
51 }
52 self.juju2_2_4_landscape_livepatch_json_applications_status = {
53 'nrpe': {
54@@ -277,6 +295,9 @@ class TestUtilsJuju(unittest.TestCase):
55 'lp-mergebot', 'canonical-livepatch', 'juju-info'))
56 self.assertFalse(utils.juju.already_related(self.juju2_2_3_no_landscape_livepatch_json_applications_status,
57 'lp-mergebot', 'landscape-client', 'juju-info'))
58+ # Telegraf is related, but through a different application name
59+ self.assertTrue(utils.juju.already_related(self.juju2_2_3_no_landscape_livepatch_json_applications_status,
60+ 'lp-mergebot', 'telegraf', 'juju-info'))
61
62
63 if __name__ == "__main__":
64diff --git a/tests/testdata/juju2.2.3-no-landscape-livepatch.json b/tests/testdata/juju2.2.3-no-landscape-livepatch.json
65index 19e59df..28cc4cf 100644
66--- a/tests/testdata/juju2.2.3-no-landscape-livepatch.json
67+++ b/tests/testdata/juju2.2.3-no-landscape-livepatch.json
68@@ -1 +1 @@
69-{"model":{"name":"is-mergebot-22","controller":"jenkins-ci-controller","cloud":"prodstack4.5","region":"bootstack-ps45","version":"2.2.3","model-status":{"current":"available","since":"11 Oct 2017 15:11:10Z"},"sla":"unsupported"},"machines":{"0":{"juju-status":{"current":"started","since":"11 Oct 2017 15:12:48Z","version":"2.2.3"},"dns-name":"10.25.63.217","ip-addresses":["10.25.63.217"],"instance-id":"9bfc2226-b39c-4d8b-94d9-6189f654184e","machine-status":{"current":"running","message":"ACTIVE","since":"11 Oct 2017 15:11:53Z"},"series":"xenial","network-interfaces":{"ens3":{"ip-addresses":["10.25.63.217"],"mac-address":"fa:16:3e:98:75:7f","is-up":true}},"hardware":"arch=amd64 cores=1 mem=2048M root-disk=10240M availability-zone=prodstack-zone-1"}},"applications":{"lp-mergebot":{"charm":"local:xenial/lp-mergebot-0","series":"xenial","os":"ubuntu","charm-origin":"local","charm-name":"lp-mergebot","charm-rev":0,"exposed":false,"application-status":{"current":"active","message":"Ready","since":"11 Oct 2017 15:13:55Z"},"relations":{"nrpe-external-master":["nrpe"]},"units":{"lp-mergebot/0":{"workload-status":{"current":"active","message":"Ready","since":"11 Oct 2017 15:13:55Z"},"juju-status":{"current":"idle","since":"11 Oct 2017 15:14:32Z","version":"2.2.3"},"leader":true,"machine":"0","public-address":"10.25.63.217","subordinates":{"nrpe/0":{"workload-status":{"current":"active","message":"ready","since":"11 Oct 2017 15:14:31Z"},"juju-status":{"current":"idle","since":"11 Oct 2017 15:14:31Z","version":"2.2.3"},"leader":true,"upgrading-from":"local:xenial/nrpe-0","public-address":"10.25.63.217"}}}}},"nrpe":{"charm":"local:xenial/nrpe-0","series":"xenial","os":"ubuntu","charm-origin":"local","charm-name":"nrpe","charm-rev":0,"exposed":false,"application-status":{"current":"active","message":"ready","since":"11 Oct 2017 15:14:31Z"},"relations":{"nrpe-external-master":["lp-mergebot"]},"subordinate-to":["lp-mergebot"]}}}
70+{"model":{"name":"is-mergebot-22","controller":"jenkins-ci-controller","cloud":"prodstack4.5","region":"bootstack-ps45","version":"2.2.3","model-status":{"current":"available","since":"11 Oct 2017 15:11:10Z"},"sla":"unsupported"},"machines":{"0":{"juju-status":{"current":"started","since":"11 Oct 2017 15:12:48Z","version":"2.2.3"},"dns-name":"10.25.63.217","ip-addresses":["10.25.63.217"],"instance-id":"9bfc2226-b39c-4d8b-94d9-6189f654184e","machine-status":{"current":"running","message":"ACTIVE","since":"11 Oct 2017 15:11:53Z"},"series":"xenial","network-interfaces":{"ens3":{"ip-addresses":["10.25.63.217"],"mac-address":"fa:16:3e:98:75:7f","is-up":true}},"hardware":"arch=amd64 cores=1 mem=2048M root-disk=10240M availability-zone=prodstack-zone-1"}},"applications":{"lp-mergebot":{"charm":"local:xenial/lp-mergebot-0","series":"xenial","os":"ubuntu","charm-origin":"local","charm-name":"lp-mergebot","charm-rev":0,"exposed":false,"application-status":{"current":"active","message":"Ready","since":"11 Oct 2017 15:13:55Z"},"relations":{"juju-info": ["lp-telegraf"], "nrpe-external-master":["nrpe"]},"units":{"lp-mergebot/0":{"workload-status":{"current":"active","message":"Ready","since":"11 Oct 2017 15:13:55Z"},"juju-status":{"current":"idle","since":"11 Oct 2017 15:14:32Z","version":"2.2.3"},"leader":true,"machine":"0","public-address":"10.25.63.217","subordinates":{"nrpe/0":{"workload-status":{"current":"active","message":"ready","since":"11 Oct 2017 15:14:31Z"},"juju-status":{"current":"idle","since":"11 Oct 2017 15:14:31Z","version":"2.2.3"},"leader":true,"upgrading-from":"local:xenial/nrpe-0","public-address":"10.25.63.217"}}}}},"nrpe":{"charm":"local:xenial/nrpe-0","series":"xenial","os":"ubuntu","charm-origin":"local","charm-name":"nrpe","charm-rev":0,"exposed":false,"application-status":{"current":"active","message":"ready","since":"11 Oct 2017 15:14:31Z"},"relations":{"nrpe-external-master":["lp-mergebot"]},"subordinate-to":["lp-mergebot"]},"lp-telegraf":{"charm": "cs:telegraf-41","series": "focal","os": "ubuntu","charm-origin": "jujucharms","charm-name": "telegraf","charm-rev": 41,"charm-version": "dec0633","exposed": false,"application-status": {"current": "active","message": "Monitoring fw-pc1/0 (source version/commit dec0633)","since": "26 Apr 2021 20:58:50Z"},"relations": {"juju-info": ["lp-mergebot"]},"subordinate-to": ["lp-mergebot"]}}}
71diff --git a/utils/juju.py b/utils/juju.py
72index 239e09d..083e4f0 100644
73--- a/utils/juju.py
74+++ b/utils/juju.py
75@@ -38,6 +38,12 @@ def nrpe_subordinates(applications_status):
76 def already_related(applications_status, application, related_charm, relation):
77 try:
78 related = related_charm in applications_status[application]['relations'][relation]
79+
80+ # If the application name differs from the charm name, we need to be a little more clever
81+ for related_app in applications_status[application]['relations'][relation]:
82+ if related_charm == applications_status[related_app]['charm-name']:
83+ related = True
84+
85 except KeyError:
86 related = False
87 return related

Subscribers

People subscribed via source and target branches

to all changes: