mirror of https://github.com/zulip/zulip.git
zulip-puppet-apply: Factor out the --noop returncode logic.
This commit is contained in:
parent
b15d8e0118
commit
c91725bfb5
|
@ -6,6 +6,7 @@ import re
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
|
from typing import List
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
|
@ -68,22 +69,30 @@ if (distro_info["ID"], distro_info["VERSION_ID"]) in [("ubuntu", "20.04")]:
|
||||||
if (distro_info["ID"], distro_info["VERSION_ID"]) in [("ubuntu", "22.04")]:
|
if (distro_info["ID"], distro_info["VERSION_ID"]) in [("ubuntu", "22.04")]:
|
||||||
puppet_env["RUBYOPT"] = "-r " + os.path.join(scripts_path, "lib", "ruby3hack.rb")
|
puppet_env["RUBYOPT"] = "-r " + os.path.join(scripts_path, "lib", "ruby3hack.rb")
|
||||||
|
|
||||||
if not args.noop and not args.force:
|
|
||||||
# --noop does not work with --detailed-exitcodes; see https://tickets.puppetlabs.com/browse/PUP-686
|
def noop_would_change(puppet_cmd: List[str]) -> bool:
|
||||||
|
# --noop does not work with --detailed-exitcodes; see
|
||||||
|
# https://tickets.puppetlabs.com/browse/PUP-686
|
||||||
try:
|
try:
|
||||||
lastrun_file = tempfile.NamedTemporaryFile()
|
lastrun_file = tempfile.NamedTemporaryFile()
|
||||||
subprocess.check_call(
|
subprocess.check_call(
|
||||||
[*puppet_cmd, "--noop", "--show_diff", "--lastrunfile", lastrun_file.name],
|
# puppet_cmd may already contain --noop, but it is safe to
|
||||||
|
# supply twice
|
||||||
|
[*puppet_cmd, "--noop", "--lastrunfile", lastrun_file.name],
|
||||||
env=puppet_env,
|
env=puppet_env,
|
||||||
)
|
)
|
||||||
|
|
||||||
with open(lastrun_file.name) as lastrun:
|
with open(lastrun_file.name) as lastrun:
|
||||||
lastrun_data = yaml.safe_load(lastrun)
|
lastrun_data = yaml.safe_load(lastrun)
|
||||||
if lastrun_data.get("resources", {}).get("out_of_sync", 0) == 0:
|
return lastrun_data.get("resources", {}).get("out_of_sync", 0) != 0
|
||||||
sys.exit(0)
|
|
||||||
finally:
|
finally:
|
||||||
lastrun_file.close()
|
lastrun_file.close()
|
||||||
|
|
||||||
|
|
||||||
|
if not args.noop and not args.force:
|
||||||
|
if not noop_would_change([*puppet_cmd, "--show_diff"]):
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
do_apply = None
|
do_apply = None
|
||||||
while do_apply != "y":
|
while do_apply != "y":
|
||||||
sys.stdout.write("Apply changes? [y/N] ")
|
sys.stdout.write("Apply changes? [y/N] ")
|
||||||
|
|
Loading…
Reference in New Issue