Merge ~dannf/charms/+source/scalebot-jenkins:go-stop into ~ce-hyperscale/charms/+source/scalebot-jenkins:master

Proposed by dann frazier
Status: Merged
Merged at revision: 9f1e40ed3b4c54d8ceea9936acc968b6dbc836bc
Proposed branch: ~dannf/charms/+source/scalebot-jenkins:go-stop
Merge into: ~ce-hyperscale/charms/+source/scalebot-jenkins:master
Diff against target: 103 lines (+24/-6)
1 file modified
reactive/scalebot-jenkins.py (+24/-6)
Reviewer Review Type Date Requested Status
Taihsiang Ho Approve
dann frazier Pending
Review via email: mp+401253@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Taihsiang Ho (tai271828) wrote :

A cool feature we are looking forward to for a while :)

It's making sense to me to switch over to the "flag" API in the other merge proposal. This merge proposal is focusing on the introduction of "scalebot.go" and "scalebot.stop".

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/reactive/scalebot-jenkins.py b/reactive/scalebot-jenkins.py
index a08e463..9a8a2b6 100644
--- a/reactive/scalebot-jenkins.py
+++ b/reactive/scalebot-jenkins.py
@@ -22,6 +22,7 @@ from charms.reactive import (
22 hook,22 hook,
23 when,23 when,
24 when_all,24 when_all,
25 when_none,
25 when_not,26 when_not,
26 set_state,27 set_state,
27 get_flags,28 get_flags,
@@ -82,7 +83,7 @@ def scalebot_install_jjb_workaround():
82 set_state("scalebot.jjb.workaround.installed")83 set_state("scalebot.jjb.workaround.installed")
8384
8485
85@when("extension.available")86@when_all("scalebot.go", "extension.available")
86def configure_jenkins_jobbuilder(extension):87def configure_jenkins_jobbuilder(extension):
87 remove_state("scalebot.configured.jobbuilder")88 remove_state("scalebot.configured.jobbuilder")
88 status_set("maintenance", "Configuring JobBuilder")89 status_set("maintenance", "Configuring JobBuilder")
@@ -179,7 +180,7 @@ def scalebot_git_config_check():
179 return True180 return True
180181
181182
182@when("apt.installed.git")183@when_all("scalebot.go", "apt.installed.git")
183def scalebot_git_clone():184def scalebot_git_clone():
184 if not scalebot_git_config_check():185 if not scalebot_git_config_check():
185 return186 return
@@ -244,7 +245,7 @@ def scalebot_git_clone():
244 remove_state("scalebot.repo.init")245 remove_state("scalebot.repo.init")
245246
246247
247@when_not("scalebot.repo.init")248@when_not("scalebot.repo.init", "scalebot.stop")
248def scalebot_repo_init():249def scalebot_repo_init():
249 init_path = os.path.join(SCALEBOT_REPO, "scalebot.d", "init")250 init_path = os.path.join(SCALEBOT_REPO, "scalebot.d", "init")
250 if os.path.exists(init_path):251 if os.path.exists(init_path):
@@ -269,6 +270,7 @@ def scalebot_git_reconfig():
269 "scalebot.configured.repo",270 "scalebot.configured.repo",
270 "scalebot.configured.jobbuilder",271 "scalebot.configured.jobbuilder",
271 "scalebot.configured.juju",272 "scalebot.configured.juju",
273 "scalebot.go",
272)274)
273def scalebot_ready():275def scalebot_ready():
274 status_set("active", "ScaleBot is Ready")276 status_set("active", "ScaleBot is Ready")
@@ -279,6 +281,7 @@ def scalebot_ready():
279 "scalebot.configured.repo",281 "scalebot.configured.repo",
280 "scalebot.configured.jobbuilder",282 "scalebot.configured.jobbuilder",
281 "scalebot.configured.env",283 "scalebot.configured.env",
284 "scalebot.go",
282 "scalebot.jjb.workaround.installed",285 "scalebot.jjb.workaround.installed",
283 "scalebot.jenkins-http-ready",286 "scalebot.jenkins-http-ready",
284)287)
@@ -306,7 +309,7 @@ def scalebot_juju_reconfig():
306 scalebot_configure_juju()309 scalebot_configure_juju()
307310
308311
309@when_all("apt.installed.juju")312@when_all("apt.installed.juju", "scalebot.go")
310def scalebot_configure_juju():313def scalebot_configure_juju():
311 config = hookenv.config()314 config = hookenv.config()
312315
@@ -444,8 +447,22 @@ def scalebot_configure_juju_for_lab(clouds, creds, modeldefaults, bootstrapconst
444 set_state("scalebot.configured.juju")447 set_state("scalebot.configured.juju")
445448
446449
450@when_not("scalebot.stop")
451def scalebot_start():
452 set_state("scalebot.go")
453
454
447@hook("stop")455@hook("stop")
456def scalebot_stop():
457 set_state("scalebot.stop")
458 remove_state("scalebot.go")
459 log("Stopping Scalebot.")
460 status_set("maintenance", "Stopping ScaleBot")
461
462
463@when("scalebot.stop")
448def scalebot_juju_destroy_controller():464def scalebot_juju_destroy_controller():
465 status_set("maintenance", "Destroying Juju controller")
449 subprocess.run(466 subprocess.run(
450 [467 [
451 "/bin/su",468 "/bin/su",
@@ -492,13 +509,14 @@ println(lst.size());
492"""509"""
493510
494511
495@when_not("scalebot.configured.env")512@when_none("scalebot.configured.env", "scalebot.stop")
496@when_all(513@when_all(
514 "scalebot.go",
497 "scalebot.jenkins-http-ready",515 "scalebot.jenkins-http-ready",
498 "scalebot.jjb.workaround.installed",516 "scalebot.jjb.workaround.installed",
499 "scalebot.written.env",517 "scalebot.written.env",
500)518)
501@when("extension.available")519@when_all("extension.available", "scalebot.go")
502def safe_jenkins_service_restart(extension):520def safe_jenkins_service_restart(extension):
503 """Restart Jenkins service if no jobs are running.521 """Restart Jenkins service if no jobs are running.
504522

Subscribers

People subscribed via source and target branches

to all changes: