On Mon, Oct 26, 2015, at 09:48, Simone Tiraboschi wrote:
> 
> 
> On Mon, Oct 26, 2015 at 12:14 AM, Giuseppe Ragusa 
> <giuseppe.rag...@hotmail.com> wrote:
>> Hi all,
>> I'm experiencing some difficulties using oVirt 3.6 latest snapshot.
>> 
>> I'm trying to trick the self-hosted-engine setup to create a custom engine 
>> vm with 3 nics (with fixed MACs/UUIDs).
>> 
>> The GlusterFS volume (3.7.5 hyperconverged, replica 3, for the engine vm) 
>> and the network bridges (ovirtmgmt and other two bridges, called nfs and 
>> lan, for the engine vm) have been preconfigured on the initial fully-patched 
>> CentOS 7.1 host (plus other two identical hosts which are awaiting to be 
>> added).
>> 
>> I'm stuck at a point with the engine vm successfully starting but with only 
>> one nic present (connected to the ovirtmgmt bridge).
>> 
>> I'm trying to obtain the modified engine vm by means of a trick which used 
>> to work in a previous (aborted because of lacking GlusterFS-by-libgfapi 
>> support) oVirt 3.5 test setup (about a year ago, maybe more): I'm 
>> substituting the standard 
>> /usr/share/ovirt-hosted-engine-setup/templates/vm.conf.in with the following:
>> 
>> vmId=@VM_UUID@
>> memSize=@MEM_SIZE@
>> display=@CONSOLE_TYPE@
>> devices={index:2,iface:ide,address:{ controller:0, target:0,unit:0, bus:1, 
>> type:drive},specParams:{},readonly:true,deviceId:@CDROM_UUID@,path:@CDROM@,device:cdrom,shared:false,type:disk@BOOT_CDROM@}
>> devices={index:0,iface:virtio,format:raw,poolID:@SP_UUID@,volumeID:@VOL_UUID@,imageID:@IMG_UUID@,specParams:{},readonly:false,domainID:@SD_UUID@,optional:false,deviceId:@IMG_UUID@,address:{bus:0x00,
>>  slot:0x06, domain:0x0000, type:pci, 
>> function:0x0},device:disk,shared:exclusive,propagateErrors:off,type:disk@BOOT_DISK@}
>> devices={device:scsi,model:virtio-scsi,type:controller}
>> devices={index:4,nicModel:pv,macAddr:02:50:56:3f:c4:b0,linkActive:true,network:@BRIDGE@,filter:vdsm-no-mac-spoofing,specParams:{},deviceId:@NIC_UUID@,address:{bus:0x00,
>>  slot:0x03, domain:0x0000, type:pci, 
>> function:0x0},device:bridge,type:interface@BOOT_PXE@}
>> devices={index:8,nicModel:pv,macAddr:02:50:56:3f:c4:a0,linkActive:true,network:lan,filter:vdsm-no-mac-spoofing,specParams:{},deviceId:6c467650-1837-47ea-89bc-1113f4bfefee,address:{bus:0x00,
>>  slot:0x09, domain:0x0000, type:pci, 
>> function:0x0},device:bridge,type:interface@BOOT_PXE@}
>> devices={index:16,nicModel:pv,macAddr:02:50:56:3f:c4:c0,linkActive:true,network:nfs,filter:vdsm-no-mac-spoofing,specParams:{},deviceId:4d8e0705-8cb4-45b7-b960-7f98bb59858d,address:{bus:0x00,
>>  slot:0x0c, domain:0x0000, type:pci, 
>> function:0x0},device:bridge,type:interface@BOOT_PXE@}
>> devices={device:console,specParams:{},type:console,deviceId:@CONSOLE_UUID@,alias:console0}
>> vmName=@NAME@
>> spiceSecureChannels=smain,sdisplay,sinputs,scursor,splayback,srecord,ssmartcard,susbredir
>> smp=@VCPUS@
>> cpuType=@CPU_TYPE@
>> emulatedMachine=@EMULATED_MACHINE@
>> 
>> but unfortunately the vm gets created like this (output from "ps"; note that 
>> I'm attaching a CentOS7.1 Netinstall ISO with an embedded kickstart: the 
>> installation should proceed by HTTP on the lan network but obviously fails):
>> 
>> /usr/libexec/qemu-kvm -name HostedEngine -S -machine 
>> pc-i440fx-rhel7.1.0,accel=kvm,usb=off -cpu Westmere -m 4096 -realtime 
>> mlock=off 
>> -smp 2,sockets=2,cores=1,threads=1 -uuid 
>> f49da721-8aa6-4422-8b91-e91a0e38aa4a -s
>> mbios type=1,manufacturer=oVirt,product=oVirt 
>> Node,version=7-1.1503.el7.centos.2
>> .8,serial=2a1855a9-18fb-4d7a-b8b8-6fc898a8e827,uuid=f49da721-8aa6-4422-8b91-e91a
>> 0e38aa4a -no-user-config -nodefaults -chardev 
>> socket,id=charmonitor,path=/var/li
>> b/libvirt/qemu/HostedEngine.monitor,server,nowait -mon 
>> chardev=charmonitor,id=mo
>> nitor,mode=control -rtc base=2015-10-25T11:22:22,driftfix=slew -global 
>> kvm-pit.l
>> ost_tick_policy=discard -no-hpet -no-reboot -boot strict=on -device 
>> piix3-usb-uh
>> ci,id=usb,bus=pci.0,addr=0x1.0x2 -device 
>> virtio-scsi-pci,id=scsi0,bus=pci.0,addr
>> =0x4 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 -drive 
>> file=
>> /var/tmp/engine.iso,if=none,id=drive-ide0-1-0,readonly=on,format=raw,serial= 
>> -device ide-cd,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0,bootindex=1 
>> -drive 
>> file=/var/run/vdsm/storage/be4434bf-a5fd-44d7-8011-d5e4ac9cf523/b3abc1cb-8a78-4b56-a9b0-e5f41fea0fdc/8d075a8d-730a-4925-8779-e0ca2b3dbcf4,if=none,id=drive-virtio-disk0,format=raw,serial=b3abc1cb-8a78-4b56-a9b0-e5f41fea0fdc,cache=none,werror=stop,rerror=stop,aio=threads
>>  -device 
>> virtio-blk-pci,scsi=off,bus=pci.0,addr=0x6,drive=drive-virtio-disk0,id=virtio-disk0
>>  -netdev tap,fd=26,id=hostnet0,vhost=on,vhostfd=27 -device 
>> virtio-net-pci,netdev=hostnet0,id=net0,mac=02:50:56:3f:c4:b0,bus=pci.0,addr=0x3
>>  -chardev 
>> socket,id=charchannel0,path=/var/lib/libvirt/qemu/channels/f49da721-8aa6-4422-8b91-e91a0e38aa4a.com.redhat.rhevm.vdsm,server,nowait
>>  -device 
>> virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.rhevm.vdsm
>>  -chardev socket,id=charchannel1,path=/var/lib/libvirt/qemu/channels/f49da721
 -8aa6-4422-8b91-e91a0e38aa4a.org.qemu.guest_agent.0,server,nowait -device 
virtserialport,bus=virtio-serial0.0,nr=2,chardev=charchannel1,id=channel1,name=org.qemu.guest_agent.0
 -chardev 
socket,id=charchannel2,path=/var/lib/libvirt/qemu/channels/f49da721-8aa6-4422-8b91-e91a0e38aa4a.org.ovirt.hosted-engine-setup.0,server,nowait
 -device 
virtserialport,bus=virtio-serial0.0,nr=3,chardev=charchannel2,id=channel2,name=org.ovirt.hosted-engine-setup.0
 -chardev 
socket,id=charconsole0,path=/var/run/ovirt-vmconsole-console/f49da721-8aa6-4422-8b91-e91a0e38aa4a.sock,server,nowait
 -device virtconsole,chardev=charconsole0,id=console0 -vnc 0:0,password -device 
cirrus-vga,id=video0,bus=pci.0,addr=0x2 -msg timestamp=on
>> 
>> There seem to be no errors in the logs.
>> 
>> I've tried reading some (limited) Python setup code but I've not found any 
>> obvious reason why the trick should not work anymore.
>> 
>> I know that 3.6 has different network configuration/management and this 
>> could be the hot point.
>> 
>> Does anyone have any further suggestion or clue (code/logs to read)?
> 
> The VM creation path is now a bit different cause we use just vdscli library 
> instead of vdsClient.
> Please take a a look at mixins.py

Many thanks for your very valuable hint:

I've restored the original 
/usr/share/ovirt-hosted-engine-setup/templates/vm.conf.in and I've managed to 
obtain the 3-nics-customized vm by modifying 
/usr/lib/python2.7/site-packages/ovirt_hosted_engine_setup/mixins.py like this 
("diff -Naur" output):

************************************************************************************

--- mixins.py.orig      2015-10-20 16:57:40.000000000 +0200
+++ mixins.py   2015-10-26 22:22:58.351223922 +0100
@@ -25,6 +25,7 @@  
 import random
 import string
 import time
+import uuid


 from ovirt_hosted_engine_setup import constants as ohostedcons
@@ -247,6 +248,44 @@
         ]['@BOOT_PXE@'] == ',bootOrder:1':
             nic['bootOrder'] = '1'
         conf['devices'].append(nic)
+        nic2 = {
+            'nicModel': 'pv',
+            'macAddr': '02:50:56:3f:c4:a0',
+            'linkActive': 'true',
+            'network': 'lan',
+            'filter': 'vdsm-no-mac-spoofing',
+            'specParams': {},
+            'deviceId': str(uuid.uuid4()),
+            'address': {
+                'bus': '0x00',
+                'slot': '0x09',
+                'domain': '0x0000',
+                'type': 'pci',
+                'function': '0x0'
+            },
+            'device': 'bridge',
+            'type': 'interface',
+        }
+        conf['devices'].append(nic2)
+        nic3 = {
+            'nicModel': 'pv',
+            'macAddr': '02:50:56:3f:c4:c0',
+            'linkActive': 'true',
+            'network': 'nfs',
+            'filter': 'vdsm-no-mac-spoofing',
+            'specParams': {},
+            'deviceId': str(uuid.uuid4()),
+            'address': {
+                'bus': '0x00',
+                'slot': '0x0c',
+                'domain': '0x0000',
+                'type': 'pci',
+                'function': '0x0'
+            },
+            'device': 'bridge',
+            'type': 'interface',
+        }
+        conf['devices'].append(nic3)

         cli = self.environment[ohostedcons.VDSMEnv.VDS_CLI]
         status = cli.create(conf)

************************************************************************************

Obviously this is a horrible ad-hoc hack that I'm not able to 
generalize/clean-up now: doing so would involve (apart from a deeper 
understanding of the whole setup code/workflow) some well-thought-out design 
decisions and, given the effective deprecation of the aforementioned 
easy-to-modify vm.conf.in template substituted by hardwired Python program 
logic, it seems that such a functionality is not very high on the development 
priority list atm ;)

Many thanks again!

Kind regards,
Giuseppe

>> Many thanks in advance.
>> 
>> Kind regards,
>> Giuseppe
>> 
>> PS: please keep also my address in replying because I'm experiencing some 
>> problems between Hotmail and oVirt-mailing-list
>> 
>> _______________________________________________
>> 
Users mailing list
>>  Users@ovirt.org
>>  http://lists.ovirt.org/mailman/listinfo/users
>>  
_______________________________________________
Users mailing list
Users@ovirt.org
http://lists.ovirt.org/mailman/listinfo/users

Reply via email to