#!/usr/bin/python """Update the xvm-contacts list. This script finds all e-mail addresses currently listed as contacts for a VM and updates the xvm-contacts list to match, adding or removing as necessary. """ import socket import subprocess import datetime from invirt import database from invirt import remctl def getContacts(): contacts = set() for m in database.Machine.query(): if '@' in m.contact: contacts.add(m.contact.lower()) else: contacts.add(m.contact.lower() + '@mit.edu') return sorted(contacts) def stripDomain(c): if c.endswith('@mit.edu'): return c[:-8] else: return c def updateContacts(contacts): now = datetime.datetime.now() p = subprocess.Popen(['blanche', '-f', '-', '-D', 'All contacts for XVM Machines (%02d/%2d/%2d)' % (now.month, now.day, now.year), 'xvm-contacts'], stdin=subprocess.PIPE, ) p.communicate('\n'.join(stripDomain(c) for c in contacts)) def main(): database.connect() subprocess.call(['kinit', '-k']) updateContacts(getContacts()) if __name__ == '__main__': main()