#!/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 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): p = subprocess.Popen(['blanche', '-f', '-', '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()