X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-dev.git/blobdiff_plain/8ed2c5ca63dfcfeedc7f980d4944000216b989e6..c81a9160bc47b724cba617285da6fec429734a21:/invirt-build-conf diff --git a/invirt-build-conf b/invirt-build-conf new file mode 100755 index 0000000..f74b05d --- /dev/null +++ b/invirt-build-conf @@ -0,0 +1,39 @@ +#!/usr/bin/python + +"""Re-generate the remctl configuration for build submissions. + +This script generates the remctl ACL and configuration for each build +pocket defined in the configuration. +""" + + +import os +import tempfile + +from invirt.authz import mech as authz +from invirt.config import structs as config + + +def main(): + # Python could really use a file-like object that gets written to + # a temporary path and moved to its final resting place on + # .close(). Oh well. + conf = tempfile.NamedTemporaryFile(delete=False) + build_handler = '/usr/sbin/invirt-submit-build' + + for pocket in config.git.pockets: + acl = authz.expandAdmin(getattr(config.git.pockets, pocket).acl, None) + + acl_fd = tempfile.NamedTemporaryFile(delete=False) + print >>acl_fd, '\n'.join(acl) + + acl_path = os.path.join('/etc/remctl/acl/build-%s' % pocket) + + os.rename(acl_fd.name, acl_path) + print >>conf, 'build %s %s %s' % (pocket, build_handler, acl_path) + + os.rename(conf, '/etc/remctl/conf.d/build') + + +if __name__ == '__main__': + main()