Ejegg has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/346922 )
Change subject: Add text to assertions
......................................................................
Add text to assertions
Change-Id: I0352db2bcfab288e394954a823456c04e1b3c42a
---
M processcontrol/config.py
M processcontrol/job_spec.py
M processcontrol/output_streamer.py
M processcontrol/runner.py
4 files changed, 23 insertions(+), 17 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/wikimedia/fundraising/process-control
refs/changes/22/346922/1
diff --git a/processcontrol/config.py b/processcontrol/config.py
index 9934806..862e083 100644
--- a/processcontrol/config.py
+++ b/processcontrol/config.py
@@ -84,7 +84,7 @@
class MissingKeyException(Exception):
def __init__(self, path):
- message = "Missing configuration key '" + path + "'"
+ message = "Missing configuration key '{path}'".format(path=path)
super(MissingKeyException, self).__init__(message)
@@ -108,12 +108,16 @@
self.validate_global_config()
def validate_global_config(self):
- assert "cron_template" in self.values
- assert "job_directory" in self.values
- assert "output_crontab" in self.values
- assert "output_directory" in self.values
- assert "runner_path" in self.values
- assert "user" in self.values
+ required_settings = (
+ "cron_template",
+ "job_directory",
+ "output_crontab",
+ "output_directory",
+ "runner_path",
+ "user",
+ )
+ for setting in required_settings:
+ assert setting in self.values, "Global config invalid: missing
required '{setting}'".format(setting=setting)
class JobConfiguration(Configuration):
@@ -132,19 +136,19 @@
self.validate_job_config()
def validate_job_config(self):
- assert "name" in self.values
+ assert "name" in self.values, "Job config invalid: missing required
'name'"
- assert "command" in self.values
- assert "\n" not in self.values["command"]
+ assert "command" in self.values, "Job config invalid: missing required
'command'"
+ assert "\n" not in self.values["command"], "Job config invalid:
'command' may not contain newlines"
if "schedule" in self.values:
# No tricky assignments.
- assert "=" not in self.values["schedule"]
+ assert "=" not in self.values["schedule"], "Job config invalid:
'schedule' may not contain the '=' character"
# Legal cron, but I don't want to deal with it.
- assert "@" not in self.values["schedule"]
+ assert "@" not in self.values["schedule"], "Job config invalid:
'schedule' may not contain the '@' character"
# No line breaks
- assert "\n" not in self.values["schedule"]
+ assert "\n" not in self.values["schedule"], "Job config invalid:
'schedule' may not contain newlines"
# Be sure the schedule is valid.
terms = self.values["schedule"].split()
- assert len(terms) == 5
+ assert len(terms) == 5, "Job config invalid: 'schedule' must
contain 5 values separated by whitespace"
diff --git a/processcontrol/job_spec.py b/processcontrol/job_spec.py
index 797a00e..93f095c 100644
--- a/processcontrol/job_spec.py
+++ b/processcontrol/job_spec.py
@@ -31,7 +31,9 @@
self.config_path = job_path_for_slug(slug)
# Validate that we're not allowing directory traversal.
- assert os.path.dirname(os.path.realpath(self.config_path)) ==
os.path.abspath(self.global_config.get("job_directory"))
+ job_directory =
os.path.abspath(self.global_config.get("job_directory"))
+ assert os.path.dirname(os.path.realpath(self.config_path)) ==
job_directory, \
+ "You may only run jobs with configuration files in
'{path}'".format(path=job_directory)
self.config = config.JobConfiguration(self.global_config,
self.config_path)
diff --git a/processcontrol/output_streamer.py
b/processcontrol/output_streamer.py
index 39e767b..8e6a5ac 100644
--- a/processcontrol/output_streamer.py
+++ b/processcontrol/output_streamer.py
@@ -12,7 +12,7 @@
Makes the output file path and creates parent directory if needed
"""
output_directory = config.GlobalConfiguration().get("output_directory")
- assert os.access(output_directory, os.W_OK)
+ assert os.access(output_directory, os.W_OK), "Make sure directory '{path}'
exists and is writable".format(path=output_directory)
# per-job directory
job_log_directory = output_directory + "/" + slug
diff --git a/processcontrol/runner.py b/processcontrol/runner.py
index d6a20fe..e4c3f45 100644
--- a/processcontrol/runner.py
+++ b/processcontrol/runner.py
@@ -28,7 +28,7 @@
passwd_entry = pwd.getpwuid(int(service_user))
else:
passwd_entry = pwd.getpwnam(service_user)
- assert passwd_entry.pw_uid == os.getuid()
+ assert passwd_entry.pw_uid == os.getuid(), "You must run jobs as user
'{user}'".format(user=service_user)
lock.begin(job_tag=self.job.slug)
self.start_time = datetime.datetime.utcnow()
--
To view, visit https://gerrit.wikimedia.org/r/346922
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I0352db2bcfab288e394954a823456c04e1b3c42a
Gerrit-PatchSet: 1
Gerrit-Project: wikimedia/fundraising/process-control
Gerrit-Branch: master
Gerrit-Owner: Ejegg <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits