X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-web.git/blobdiff_plain/a1198fea55008976aae32846a8f58712ea0cbf12..2d2b9463275d1272e23fb2fe7972b7e5b3a8d471:/code/main.py diff --git a/code/main.py b/code/main.py index 9be2b6c..908d7cd 100755 --- a/code/main.py +++ b/code/main.py @@ -121,7 +121,7 @@ class Defaults: if max_memory is not None: self.memory = min(self.memory, max_memory) if max_disk is not None: - self.max_disk = min(self.disk, max_disk) + self.disk = min(self.disk, max_disk) for key in kws: setattr(self, key, kws[key]) @@ -201,8 +201,7 @@ def getListDict(username, state): checkpoint.checkpoint('Got max mem/disk') defaults = Defaults(max_memory=max_memory, max_disk=max_disk, - owner=username, - cdrom='gutsy-i386') + owner=username) checkpoint.checkpoint('Got defaults') def sortkey(machine): return (machine.owner != username, machine.owner, machine.name) @@ -270,13 +269,16 @@ def getHostname(nic): XXX this should be merged with the similar logic in DNS and DHCP. """ - if nic.hostname and '.' in nic.hostname: - return nic.hostname + if nic.hostname: + hostname = nic.hostname elif nic.machine: - return nic.machine.name + '.' + config.dns.domains[0] + hostname = nic.machine.name else: return None - + if '.' in hostname: + return hostname + else: + return hostname + '.' + config.dns.domains[0] def getNicInfo(data_dict, machine): """Helper function for info, get data on nics for a machine. @@ -292,8 +294,7 @@ def getNicInfo(data_dict, machine): nic_fields = [] for i in range(len(machine.nics)): nic_fields.extend([(x % i, y % i) for x, y in nic_fields_template]) - if not i: - data_dict['nic%s_hostname' % i] = getHostname(machine.nics[i]) + data_dict['nic%s_hostname' % i] = getHostname(machine.nics[i]) data_dict['nic%s_mac' % i] = machine.nics[i].mac_addr data_dict['nic%s_ip' % i] = machine.nics[i].ip if len(machine.nics) == 1: @@ -431,12 +432,13 @@ def helpHandler(username, state, path, fields): The autoinstaller builds a minimal Debian or Ubuntu system to run as a ParaVM. You can access the resulting system by logging into the serial console server -with your Kerberos tickets; there is no root password and sshd will +with your Kerberos tickets; there is no root password so sshd will refuse login.

-

Under the covers the autoinstaller uses our own patched version of -xen-create-image, which is a tool based on debootstrap. If you're -quick in logging into the serial console, you can see it running. +

Under the covers, the autoinstaller uses our own patched version of +xen-create-image, which is a tool based on debootstrap. If you log +into the serial console while the install is running, you can watch +it. """, 'ParaVM Console': """ ParaVM machines do not support local console access over VNC. To @@ -445,8 +447,19 @@ to %s, using the name of the machine as your username.""" % config.console.hostname, 'HVM/ParaVM': """ HVM machines use the virtualization features of the processor, while -ParaVM machines use Xen's emulation of virtualization features. You -want an HVM virtualized machine.""", +ParaVM machines rely on a modified kernel to communicate directly with +the hypervisor. HVMs support boot CDs of any operating system, and +the VNC console applet. The three-minute autoinstaller produces +ParaVMs. ParaVMs typically are more efficient, and always support the +console server.

+ +

More details are on the +wiki, including steps to prepare an HVM guest to boot as a ParaVM +(which you can skip by using the autoinstaller to begin with.)

+ +

We recommend using a ParaVM when possible and an HVM when necessary. +""", 'CPU Weight': """ Don't ask us! We're as mystified as you are.""", 'Owner': """ @@ -644,7 +657,8 @@ Subject: %s %s """ % (to, config.web.hostname, subject, body) - p = subprocess.Popen(['/usr/sbin/sendmail', to], stdin=subprocess.PIPE) + p = subprocess.Popen(['/usr/sbin/sendmail', '-f', to, to], + stdin=subprocess.PIPE) p.stdin.write(mail) p.stdin.close() p.wait() @@ -669,7 +683,7 @@ def getUser(environ): if environ.get('AUTH_TYPE') == 'Negotiate': # Convert the krb5 principal into a krb4 username - if not user.endswith('@%s' % config.authn[0].realm): + if not user.endswith('@%s' % config.kerberos.realm): return else: return user.split('@')[0].replace('/', '.')