stepping-stone / vm-manager

The stoney cloud web interface.
http://www.stoney-cloud.org/
Other
0 stars 0 forks source link

Last Update broke VM Creation from VM Template #75

Closed meichenberger closed 9 years ago

meichenberger commented 9 years ago

The creation of a VM from a VM Template is not possible since the last update.

vm-test-01 syslog # view /var/log/syslog/libvirtd.log 
Mar 11 17:11:03 vm-test-01 libvirtd: 7295: error : virDomainDefParseXML:13203 : unsupported configuration: unexpected feature 'Array'

The corresponding LDAP entry (for the newly created VM):

# Entry 1: sstVirtualMachine=4562217a-a5c1-4b77-8312-696f3f1be6c6,ou=virt...
dn: sstVirtualMachine=4562217a-a5c1-4b77-8312-696f3f1be6c6,ou=virtual machin
 es,ou=virtualization,ou=services,dc=stoney-cloud,dc=org
description: Debian Wheezy (7.8)
labeleduri: ldap:///sstVirtualMachine=default,ou=default,ou=default,ou=defau
 lt,ou=linux,ou=virtual machine profiles,ou=virtualization,ou=services,dc=st
 oney-cloud,dc=org
member: sstVirtualMachine=default,ou=default,ou=default,ou=default,ou=linux,
 ou=virtual machine profiles,ou=virtualization,ou=services,dc=stoney-cloud,d
 c=org
objectclass: sstVirtualizationVirtualMachine
objectclass: sstRelationship
objectclass: sstSpice
objectclass: labeledURIObject
objectclass: top
sstbelongstocustomeruid: 4000001
sstbelongstoreselleruid: 4000000
sstclockoffset: utc
sstdisplayname: kvm-0011.tombstone.ch
sstfeature: Array
sstmemory: 1073741824
sstnetworkdomainname: tombstone.ch
sstnetworkhostname: kvm-0011
sstnode: vm-test-01.tombstone.ch
sstoncrash: destroy
sstonpoweroff: destroy
sstonreboot: restart
sstosarchitecture: x86_64
sstosbootdevice: hd
sstosmachine: pc-i440fx-2.1
sstostype: hvm
sstspicepassword: G623Cc5amDzb
sstspiceport: 5901
sststatus: TBD_SYSTEM
ssttype: kvm
sstvcpu: 1
sstvirtualmachine: 4562217a-a5c1-4b77-8312-696f3f1be6c6
sstvirtualmachinemode: ready for use
sstvirtualmachinepool: d9c3cc0c-9ae7-40e5-8fb7-ba5297e835aa
sstvirtualmachinesubtype: Server
sstvirtualmachinetype: persistent

The interesting entry:

sstfeature: Array

The originating VM Template has the following entries:

# Entry 1: sstVirtualMachine=263a593e-de35-4b0d-934a-d30c925d014e,ou=virt...
dn: sstVirtualMachine=263a593e-de35-4b0d-934a-d30c925d014e,ou=virtual machin
 es,ou=virtualization,ou=services,dc=stoney-cloud,dc=org
description: Windows Server 2012 R2 64-bit
labeleduri: ldap:///sstVirtualMachine=default,ou=default,ou=default,ou=defau
 lt,ou=windows,ou=virtual machine profiles,ou=virtualization,ou=services,dc=
 stoney-cloud,dc=org
member: sstVirtualMachine=default,ou=default,ou=default,ou=default,ou=window
 s,ou=virtual machine profiles,ou=virtualization,ou=services,dc=stoney-cloud
 ,dc=org
objectclass: sstVirtualizationVirtualMachine
objectclass: sstRelationship
objectclass: sstSpice
objectclass: labeledURIObject
objectclass: top
sstbelongstocustomeruid: 4000001
sstbelongstoreselleruid: 4000000
sstclockoffset: localtime
sstclocktimer: rtc:tickpolicy=catchup
sstclocktimer: pit:tickpolicy=delay
sstclocktimer: hypervclock:present=yes
sstclocktimer: hpet:present=no
sstdisplayname: kvm-0003.tombstone.ch
sstfeature: acpi
sstfeature: pae
sstfeature: hap
sstfeature: hyperv:relaxed+state=on,vapic+state=on,spinlocks+state=on+retrie
 s=8191
sstmemory: 4294967296
sstnetworkdomainname: tombstone.ch
sstnetworkhostname: kvm-0003
sstnode: vm-test-02.tombstone.ch
sstoncrash: destroy
sstonpoweroff: destroy
sstonreboot: restart
sstosarchitecture: x86_64
sstosbootdevice: hd
sstosmachine: pc-i440fx-2.1
sstostype: hvm
sstspicepassword: Wh61GwiLV9HD
sstspiceport: 5900
sststatus: running
ssttype: kvm
sstvcpu: 4
sstvirtualmachine: 263a593e-de35-4b0d-934a-d30c925d014e
sstvirtualmachinemode: ready for use
sstvirtualmachinepool: 40fac639-c69d-43b0-817c-dbbf3fd161fc
sstvirtualmachinesubtype: VM-Template
sstvirtualmachinetype: template

The interesting entries:

sstfeature: acpi
sstfeature: pae
sstfeature: hap
sstfeature: hyperv:relaxed+state=on,vapic+state=on,spinlocks+state=on+retrie
 s=8191
dev-zero commented 9 years ago

the trigger is most likely the fix for #74 via the assigment in VmTemplateController.php. But the real bug is in CLdapRecord.php:

The code there should check again whether $value is an array() and do a proper array merge if it is, otherwise do an append. The way it is written now, $value is always appended, leading to a nested array instead.