Use owner's quota on info page, not user's quota.
[invirt/packages/invirt-web.git] / code / main.py
index e208a13..385a2a6 100755 (executable)
@@ -203,6 +203,7 @@ def getListDict(user):
     has_vnc = {}
     xmlist = g.xmlist
     checkpoint.checkpoint('Got uptimes')
+    can_clone = 'ice3' not in g.xmlist_raw
     for m in machines:
         if m not in xmlist:
             has_vnc[m] = 'Off'
@@ -214,7 +215,7 @@ def getListDict(user):
             elif m.type.hvm:
                 has_vnc[m] = "WTF?"
             else:
-                has_vnc[m] = "ParaVM"+helppopup("paravm_console")
+                has_vnc[m] = "ParaVM"+helppopup("ParaVM Console")
     max_memory = validation.maxMemory(user)
     max_disk = validation.maxDisk(user)
     checkpoint.checkpoint('Got max mem/disk')
@@ -232,7 +233,8 @@ def getListDict(user):
              max_disk=max_disk,
              defaults=defaults,
              machines=machines,
-             has_vnc=has_vnc)
+             has_vnc=has_vnc,
+             can_clone=can_clone)
     return d
 
 def listVms(user, fields):
@@ -388,16 +390,16 @@ def modifyDict(user, fields):
 
         memory = fields.getfirst('memory')
         if memory is not None:
-            memory = validation.validMemory(user, memory, machine, on=False)
+            memory = validation.validMemory(owner, memory, machine, on=False)
             machine.memory = memory
 
         vm_type = validation.validVmType(fields.getfirst('vmtype'))
         if vm_type is not None:
             machine.type = vm_type
 
-        disksize = validation.testDisk(user, fields.getfirst('disk'))
+        disksize = validation.testDisk(owner, fields.getfirst('disk'))
         if disksize is not None:
-            disksize = validation.validDisk(user, disksize, machine)
+            disksize = validation.validDisk(owner, disksize, machine)
             disk = machine.disks[0]
             if disk.size != disksize:
                 olddisk[disk.guest_device_name] = disksize
@@ -456,40 +458,40 @@ def helpHandler(user, fields):
     simple = fields.getfirst('simple')
     subjects = fields.getlist('subject')
 
-    help_mapping = dict(paravm_console="""
+    help_mapping = {'ParaVM Console': """
 ParaVM machines do not support local console access over VNC.  To
 access the serial console of these machines, you can SSH with Kerberos
-to sipb-xen-console.mit.edu, using the name of the machine as your
+to console.xvm.mit.edu, using the name of the machine as your
 username.""",
-                        hvm_paravm="""
+                    '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.""",
-                        cpu_weight="""
+                    'CPU Weight': """
 Don't ask us!  We're as mystified as you are.""",
-                        owner="""
+                    'Owner': """
 The owner field is used to determine <a
-href="help?subject=quotas">quotas</a>.  It must be the name of a
+href="help?subject=Quotas">quotas</a>.  It must be the name of a
 locker that you are an AFS administrator of.  In particular, you or an
 AFS group you are a member of must have AFS rlidwka bits on the
 locker.  You can check who administers the LOCKER locker using the
 commands 'attach LOCKER; fs la /mit/LOCKER' on Athena.)  See also <a
-href="help?subject=administrator">administrator</a>.""",
-                        administrator="""
+href="help?subject=Administrator">administrator</a>.""",
+                    'Administrator': """
 The administrator field determines who can access the console and
 power on and off the machine.  This can be either a user or a moira
 group.""",
-                        quotas="""
+                    'Quotas': """
 Quotas are determined on a per-locker basis.  Each locker may have a
 maximum of 512 megabytes of active ram, 50 gigabytes of disk, and 4
 active machines.""",
-                        console="""
+                    'Console': """
 <strong>Framebuffer:</strong> At a Linux boot prompt in your VM, try
 setting <tt>fb=false</tt> to disable the framebuffer.  If you don't,
 your machine will run just fine, but the applet's display of the
 console will suffer artifacts.
 """
-                   )
+                    }
 
     if not subjects:
         subjects = sorted(help_mapping.keys())
@@ -536,7 +538,7 @@ def infoDict(user, machine):
                       ('memory', 'RAM'),
                       'DISK_INFO',
                       ('state', 'state (xen format)'),
-                      ('cpu_weight', 'CPU weight'+helppopup('cpu_weight')),
+                      ('cpu_weight', 'CPU weight'+helppopup('CPU Weight')),
                       ('on_reboot', 'Action on VM reboot'),
                       ('on_poweroff', 'Action on VM poweroff'),
                       ('on_crash', 'Action on VM crash'),
@@ -577,9 +579,9 @@ def infoDict(user, machine):
     checkpoint.checkpoint('Got fields')
 
 
-    max_mem = validation.maxMemory(user, machine, False)
+    max_mem = validation.maxMemory(machine.owner, machine, False)
     checkpoint.checkpoint('Got mem')
-    max_disk = validation.maxDisk(user, machine)
+    max_disk = validation.maxDisk(machine.owner, machine)
     defaults = Defaults()
     for name in 'machine_id name administrator owner memory contact'.split():
         setattr(defaults, name, getattr(machine, name))
@@ -595,7 +597,7 @@ def infoDict(user, machine):
              ram=machine.memory,
              max_mem=max_mem,
              max_disk=max_disk,
-             owner_help=helppopup("owner"),
+             owner_help=helppopup("Owner"),
              fields = fields)
     return d
 
@@ -671,7 +673,7 @@ def main(operation, user, fields):
                 sys.exit(1)
         print 'Content-Type: text/plain\n'
         print 'Uh-oh!  We experienced an error.'
-        print 'Please email sipb-xen@mit.edu with the contents of this page.'
+        print 'Please email xvm-dev@mit.edu with the contents of this page.'
         print '----'
         e = revertStandardError()
         print e