import time
from StringIO import StringIO
-
def revertStandardError():
"""Move stderr to stdout, and return the contents of the old stderr."""
errio = sys.stderr
import templates
from Cheetah.Template import Template
-from sipb_xen_database import Machine, CDROM, ctx, connect
+from sipb_xen_database import Machine, CDROM, ctx, connect, MachineAccess
import validation
from webcommon import InvalidInput, CodeError, g
import controls
owner = validation.testOwner(user, fields.getfirst('owner'))
memory = fields.getfirst('memory')
- memory = validation.validMemory(user, memory, on=True)
+ memory = validation.validMemory(owner, memory, on=True)
- disk = fields.getfirst('disk')
- disk = validation.validDisk(user, disk)
+ disk_size = fields.getfirst('disk')
+ disk_size = validation.validDisk(owner, disk_size)
vm_type = fields.getfirst('vmtype')
if vm_type not in ('hvm', 'paravm'):
cdrom = fields.getfirst('cdrom')
if cdrom is not None and not CDROM.get(cdrom):
raise CodeError("Invalid cdrom type '%s'" % cdrom)
- return dict(contact=user, name=name, memory=memory, disk=disk,
+ return dict(contact=user, name=name, memory=memory, disk_size=disk_size,
owner=owner, is_hvm=is_hvm, cdrom=cdrom)
def create(user, fields):
def getListDict(user):
- machines = [m for m in Machine.select()
- if validation.haveAccess(user, m)]
+ machines = g.machines
checkpoint.checkpoint('Got my machines')
on = {}
has_vnc = {}
authtoken=token)
return templates.vnc(searchList=[d])
+def getHostname(nic):
+ if nic.hostname and '.' in nic.hostname:
+ return nic.hostname
+ elif nic.machine:
+ return nic.machine.name + '.servers.csail.mit.edu'
+ else:
+ return None
+
+
def getNicInfo(data_dict, machine):
"""Helper function for info, get data on nics for a machine.
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] = (machine.name +
- '.servers.csail.mit.edu')
+ 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:
except InvalidInput, err:
if not back:
raise
- print >> sys.stderr, err
- result = None
+ #print >> sys.stderr, err
+ result = err
else:
result = 'Success!'
if not back:
d['result'] = result
return templates.info(searchList=[d])
else:
- raise InvalidInput
- ('back', back, 'Not a known back page.')
+ raise InvalidInput('back', back, 'Not a known back page.')
def modifyDict(user, fields):
olddisk = {}
def getUser():
"""Return the current user based on the SSL environment variables"""
- if 'SSL_CLIENT_S_DN_Email' in os.environ:
- username = os.environ['SSL_CLIENT_S_DN_Email'].split("@")[0]
- return username
- else:
- return 'moo'
+ username = os.environ['SSL_CLIENT_S_DN_Email'].split("@")[0]
+ return username
def main(operation, user, fields):
start_time = time.time()
if not operation:
operation = 'list'
- #main(operation, u, fields)
- import profile
- profile.run('main(operation, u, fields)', 'log-'+operation)
-
+ if os.getenv("SIPB_XEN_PROFILE"):
+ import profile
+ profile.run('main(operation, u, fields)', 'log-'+operation)
+ else:
+ main(operation, u, fields)