Fix autoinstall logic when configured memory is lower than needed
[invirt/packages/invirt-xen-config.git] / invirt-database
index 5fa24e2..11fefb5 100644 (file)
@@ -1,5 +1,5 @@
 # -*- mode: python; -*-
 # -*- mode: python; -*-
-from invirt.database import models, connect
+from invirt.database import models, connect, session
 from invirt.config import structs as config
 import re
 
 from invirt.config import structs as config
 import re
 
@@ -31,7 +31,7 @@ else:
 check(re.match('^[A-Za-z0-9][A-Za-z0-9._-]*$', machine.name))
 name = prefix + machine_name
 check(re.match('^[0-9a-f-]+$', machine.uuid))
 check(re.match('^[A-Za-z0-9][A-Za-z0-9._-]*$', machine.name))
 name = prefix + machine_name
 check(re.match('^[0-9a-f-]+$', machine.uuid))
-uuid = machine.uuid
+uuid = str(machine.uuid)
 
 vcpus = machine.cpus
 
 
 vcpus = machine.cpus
 
@@ -95,22 +95,22 @@ if 'installer_options' in locals(): #Installer
         n = machine.nics[0]
         extra = 'ro noresume'
         extra += (' ip=%s::%s:%s:%s:eth0:off'
         n = machine.nics[0]
         extra = 'ro noresume'
         extra += (' ip=%s::%s:%s:%s:eth0:off'
-                  % (n.ip, config.dhcp.gateway, config.dhcp.netmask, machine.name))
+                  % (n.ip, n.gateway, n.netmask, machine.name))
         extra += ' %s' % installer_options
         root = '/dev/hdb1'
     codepath = None
 
         extra += ' %s' % installer_options
         root = '/dev/hdb1'
     codepath = None
 
-    memory = max(memory, 512)
+    memory = max(memory, 768)
+    maxmem = memory
 elif cdrom is not None:
     disk.append('phy:/dev/xenvg/image_' + cdrom.cdrom_id + ',hdc:cdrom,r')
     boot = 'd'
     codepath = 'hvm'
 
 if codepath == 'hvm':
 elif cdrom is not None:
     disk.append('phy:/dev/xenvg/image_' + cdrom.cdrom_id + ',hdc:cdrom,r')
     boot = 'd'
     codepath = 'hvm'
 
 if codepath == 'hvm':
-    # Disable PVHVM for now until we figure out the best way to do this
-    xen_platform_pci = 0
+    xen_platform_pci = 1
     ioemu = "ioemu:"
     ioemu = "ioemu:"
-    viftype = "type=ioemu,model=pcnet, "
+    viftype = "model=pcnet, "
     kernel = '/usr/lib/xen-4.1/boot/hvmloader'
     builder = 'hvm'
     vnc = 1
     kernel = '/usr/lib/xen-4.1/boot/hvmloader'
     builder = 'hvm'
     vnc = 1
@@ -121,11 +121,28 @@ elif codepath == 'paravm':
 
 
 for n in machine.nics:
 
 
 for n in machine.nics:
+    other_netparams = ''
+    other_action = n.other_action if n.other_action else ''
+    if other_action == 'renumber':
+        (n.ip, n.netmask, n.gateway,
+         n.other_ip, n.other_netmask, n.other_gateway) = (
+         n.other_ip, n.other_netmask, n.other_gateway,
+         n.ip, n.netmask, n.gateway)
+        other_action = n.other_action = 'dnat'
+        session.add(n)
+        session.flush()
+    if other_action == 'dnat':
+        other_netparams = ('other_ip=%s other_gateway=%s'
+                           % (n.other_ip, n.other_gateway))
+    if other_action == 'remove':
+        n.other_ip = n.other_netmask = n.other_gateway = n.other_action = None
+        session.add(n)
+        session.flush()
     check(re.match('^[0-9a-fA-F:]+$', n.mac_addr) and re.match('^[0-9.]*$', n.ip))
     check(re.match('^[0-9a-fA-F:]+$', n.mac_addr) and re.match('^[0-9.]*$', n.ip))
-    if n.model:
+    if n.nic_type:
         viftype = viftype.replace("pcnet", n.nic_type)
         viftype = viftype.replace("pcnet", n.nic_type)
-    d = ('%smac=%s, ip=%s, script=vif-invirtroute netdev=%s'
-         % (viftype, n.mac_addr, n.ip, config.xen.iface))
+    d = ('%smac=%s, ip=%s, script=vif-invirtroute netdev=%s gateway=%s %s'
+         % (viftype, n.mac_addr, n.ip, config.xen.iface, n.gateway, other_netparams))
     vif.append(d)
 
 for d in machine.disks:
     vif.append(d)
 
 for d in machine.disks: