Changeset 1013 for trunk/packages/sipb-xen-www/code/controls.py
- Timestamp:
- Oct 3, 2008, 7:26:43 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/sipb-xen-www/code/controls.py
r1001 r1013 110 110 """Create a VM and put it in the database""" 111 111 # put stuff in the table 112 transaction = ctx.current.create_transaction()112 session.begin() 113 113 try: 114 114 validation.Validate(username, state, name=name, description=description, owner=owner, memory=memory, disksize=disksize/1024.) 115 res = meta.engine.execute('select nextval('116 '\'"machines_machine_id_seq"\')')117 id = res.fetchone()[0]118 115 machine = Machine() 119 machine.machine_id = id120 116 machine.name = name 121 117 machine.description = description … … 126 122 machine.uuid = uuidToString(randomUUID()) 127 123 machine.boot_off_cd = True 128 machine.type _id = machine_type.type_id129 ctx.current.save(machine)130 disk = Disk(machine _id=machine.machine_id,124 machine.type = machine_type 125 session.save_or_update(machine) 126 disk = Disk(machine=machine, 131 127 guest_device_name='hda', size=disksize) 132 open_nics = NIC.select_by(machine_id=None)133 if not open_nics: #No IPs left!128 nic = NIC.query().filter_by(machine_id=None).first() 129 if not nic: #No IPs left! 134 130 raise CodeError("No IP addresses left! " 135 131 "Contact %s." % config.web.errormail) 136 nic = open_nics[0] 137 nic.machine_id = machine.machine_id 132 nic.machine = machine 138 133 nic.hostname = name 139 ctx.current.save(nic)140 ctx.current.save(disk)134 session.save_or_update(nic) 135 session.save_or_update(disk) 141 136 cache_acls.refreshMachine(machine) 142 transaction.commit()137 session.commit() 143 138 except: 144 transaction.rollback()139 session.rollback() 145 140 raise 146 141 makeDisks(machine) … … 209 204 """Delete a VM.""" 210 205 remctl('control', machine.name, 'destroy', err=True) 211 transaction = ctx.current.create_transaction()206 session.begin() 212 207 delete_disk_pairs = [(machine.name, d.guest_device_name) 213 208 for d in machine.disks] 214 209 try: 210 for mname, dname in delete_disk_pairs: 211 remctl('web', 'lvremove', mname, dname) 215 212 for nic in machine.nics: 216 213 nic.machine_id = None 217 214 nic.hostname = None 218 ctx.current.save(nic)215 session.save_or_update(nic) 219 216 for disk in machine.disks: 220 ctx.current.delete(disk)221 ctx.current.delete(machine)222 transaction.commit()217 session.delete(disk) 218 session.delete(machine) 219 session.commit() 223 220 except: 224 transaction.rollback()221 session.rollback() 225 222 raise 226 for mname, dname in delete_disk_pairs:227 remctl('web', 'lvremove', mname, dname)228 223 229 224 def commandResult(username, state, fields):
Note: See TracChangeset
for help on using the changeset viewer.