Source code for pulsar.scripts.chown_working_directory

from os import system
from os.path import (
    abspath,
    join,
)

from pulsar.core import DEFAULT_STAGING_DIRECTORY
from pulsar.main import (
    ArgumentParser,
    PulsarConfigBuilder,
)

DESCRIPTION = "Change ownership of a job working directory."
# Switch this to true to tighten up security somewhat in production mode,
# better increase of security can be had by simply restricting sudoers rule
# to only allow chown -R of directories of form ${staging_directory}/${job_id}
FORCE_PRODUCTION = False


[docs] def main(argv=None): arg_parser = ArgumentParser(description=DESCRIPTION) arg_parser.add_argument("--user", required=True) arg_parser.add_argument("--job_id") arg_parser.add_argument("--job_directory") args = arg_parser.parse_args(argv) user = args.user job_id = args.job_id if args.job_id: staging_directory = PulsarConfigBuilder().load().get('staging_directory', DEFAULT_STAGING_DIRECTORY) job_directory = abspath(join(staging_directory, job_id)) assert job_directory.startswith(staging_directory) elif FORCE_PRODUCTION: raise Exception("In production mode, must specify a job_id instead of a working directory.") else: job_directory = abspath(args.job_directory) assert job_directory command = "chown -Rh '{}' '{}'".format(user, job_directory) system(command)
if __name__ == "__main__": main()