[ovirt-users] cloud-init options under python-sdk

Juan Hernandez jhernand at redhat.com
Wed Jul 23 12:44:57 UTC 2014


On 07/23/2014 02:39 PM, Amedeo Salvati wrote:
> hello Juan|guys,
> 
> I still have problems with cloud-init options on python-sdk... now I'm
> trying to reset root password and according to xml available at
> http://www.ovirt.org/Features/Cloud-Init_Integration and specifically
> for user/pw:
> 
> ...
> <users>
>   <user>
>     <user_name>root</user_name>
>     <password>myPass</password>
>   </user>
> </users>
> ...
> 
> I've changed action object with this example:
> 
> action = params.Action(
>                         vm=params.VM(
>                             initialization=params.Initialization(
>                                 cloud_init=params.CloudInit(
>                                     host=params.Host(address="rheltest025"),
>                                     users=params.Users(
>                                        
> user=params.User(user_name="root", password="pippo")

Try to use a list here:

  user=[parms.User(...)]

>                                         )
>                                     )
>                                 )
>                             )
>                         )
> 
> but when i try to start a vm I got this error: "TypeError: 'User' object
> is not iterable"
> 
> somebody has some hints for resetting root password?
> 
> Best regards
> Amedeo Salvati
> 
> 
> Da: "Amedeo Salvati" amedeo at oscert.net
> A: jhernand at redhat.com
> Cc: users at ovirt.org
> Data: Tue, 22 Jul 2014 15:50:58 +0200
> Oggetto: Re: [ovirt-users] cloud-init options under python-sdk
> 
>> many thanks Juan it works!
> 
>> best regards
>> a
> 
> 
>> Da: "Juan Hernandez" jhernand at redhat.com
>> A: "Amedeo Salvati" amedeo at oscert.net, users at ovirt.org
>> Cc:
>> Data: Tue, 22 Jul 2014 15:32:45 +0200
>> Oggetto: Re: [ovirt-users] cloud-init options under python-sdk
> 
>> > On 07/22/2014 02:55 PM, Amedeo Salvati wrote:
>> > > hi Juan|guys,
>> > >
>> > > thanks for hints! but unfortunatly it seems wont works, because I've
>> > > launched vm with this simple code:
>> > >
>> > > action =
>> > >
> params.Action(vm=params.VM(initialization=params.Initialization(cloud_init=params.CloudInit(host=params.Host(name="rheltest014")))))
>> > > vm.start( action )
>> > >
>> > > but after boot the VM, cloud-init service hasn't set hostname and on
>> > > cloud-init.log and cloud-init-output.log I cannot find any entry for
>> > > setting hostname, instead if I use web ui it work's fine...
>> > >
>> > > there are any ways to debug cloud-init jobs?
>> > > the params params.Host is right for CloudInit host or is intended for
>> > > host / hypervisor?
>> > >
>> > > Best regards
>> > > Amedeo Salvati
>> > >
>> >
>> > To change the hostname you have to use the "address" property of the
>> > "Host" class:
>> >
>> > host=params.Host(
>> > address="myhostname.example.com"
>> > )
>> >
>> > The "Host" class is used for many things, including CloudInit and
>> > hypervisors. But in this context it is just a container for the host
> name.
>> >
>> > To debug cloud-init start the VM (with the GUI or with the RESTAPI),
>> > then go to the hypervisor where it is actually running, and look for the
>> > corresponding qemu-kvm process:
>> >
>> > # ps -ef | grep qemu-kvm | grep myvm
>> >
>> > The qemu-kvm command line will have a parameter indicating the file that
>> > contains the cloud-init data:
>> >
>> > -drive file=/var/run/vdsm/payload/...img
>> >
>> > Copy that file somewhere, then mount it and inspect the content:
>> >
>> > # cp /var/run/vdsm/payload/...img /tmp/my.img
>> > # mount -o loop,ro /tmp/my.img /mnt
>> > # find /mnt
>> > ...
>> > # umount /mnt
>> >
>> >
>> > > Da: "Juan Hernandez" jhernand at redhat.com
>> > > A: "Amedeo Salvati" amedeo at oscert.net, users at ovirt.org
>> > > Cc:
>> > > Data: Tue, 22 Jul 2014 12:21:01 +0200
>> > > Oggetto: Re: [ovirt-users] cloud-init options under python-sdk
>> > >
>> > >> On 07/22/2014 11:48 AM, Amedeo Salvati wrote:
>> > >> > hello guys!
>> > >> >
>> > >> > I'm writing some python code to start VMs, and based on
> operating system
>> > >> > (at this moment centos6 nad centos7), I would like to use
> cloud-init
>> > >> > options (available on web ui at run-once) to start them and
> resetting
>> > >> > root password, change hostname and write some configuration
> files by
>> > >> > using yaml semantics, but at this moment I was unable to find a
> way to
>> > >> > do it...
>> > >> >
>> > >> > somebody know a way (or could send me some hints) using
> python-sdk to
>> > >> > start A VM and pass to it cloud-init options?
>> > >> >
>> > >> > e.g. the portion of code I would like to change is vm.start() under
>> > > rhel6|7:
>> > >> >
>> > >> > try:
>> > >> > osVersion = vm.get_os().get_type()
>> > >> > if (osVersion == "rhel_6x64" or osVersion == "rhel_6" or
>> > >> > osVersion == "rhel_7x64") and CLOUDINIT == "yes":
>> > >> > print "Starting VM: " + vm.name + " with cloud-init
>> > >> > options"
>> > >> > ----> vm.start() <---------- > else:
>> > >> > print "Starting VM " + vm.name
>> > >> > vm.start()
>> > >> > while vmstat != 'down':
>> > >> > sleep(1)
>> > >> > vmstat = vm.get_status().state
>> > >> > except Exception, err:
>> > >> > print "Error on starting VM"
>> > >> > print err
>> > >> >
>> > >> >
>> > >> > Best regards
>> > >> > Amedeo Salvati
>> > >> >
>> > >>
>> > >> It should be something like this:
>> > >>
>> > >> from ovirtsdk.xml import params
>> > >>
>> > >> action = params.Action(
>> > >> vm=params.VM(
>> > >> initialization=params.Initialization(
>> > >> cloud_init=params.CloudInit(
>> > >> host=params.Host(
>> > >> name="myvm"
>> > >> ),
>> > >> users=...,
>> > >> files=...,
>> > >> ...
>> > >> )
>> > >> )
>> > >> )
>> > >> )
>> > >>
>> > >> vm.start(action)
>> > >>
>> > >>
>> > >> --
>> > >> Dirección Comercial: C/Jose Bardasano Baos, 9, Edif. Gorbea 3, planta
>> > >> 3ºD, 28016 Madrid, Spain
>> > >> Inscrita en el Reg. Mercantil de Madrid – C.I.F. B82657941 - Red
> Hat S.L.
>> >
>> >
>> > --
>> > Dirección Comercial: C/Jose Bardasano Baos, 9, Edif. Gorbea 3, planta
>> > 3ºD, 28016 Madrid, Spain
>> > Inscrita en el Reg. Mercantil de Madrid – C.I.F. B82657941 - Red Hat
> S.L.


-- 
Dirección Comercial: C/Jose Bardasano Baos, 9, Edif. Gorbea 3, planta
3ºD, 28016 Madrid, Spain
Inscrita en el Reg. Mercantil de Madrid – C.I.F. B82657941 - Red Hat S.L.



More information about the Users mailing list