On Thu, Oct 30, 2014 at 12:52 PM, Branimir Pejakovic <[email protected]> wrote:
> > > On Thu, Oct 30, 2014 at 12:39 PM, Shahar Havivi <[email protected]> > wrote: > >> On 30.10.14 12:30, Branimir Pejakovic wrote: >> > On Thu, Oct 30, 2014 at 12:02 PM, Shahar Havivi <[email protected]> >> wrote: >> > >> > > On 30.10.14 10:06, Branimir Pejakovic wrote: >> > > > On Thu, Oct 30, 2014 at 7:22 AM, Shahar Havivi <[email protected]> >> > > wrote: >> > > > >> > > > > On 29.10.14 17:35, Branimir Pejakovic wrote: >> > > > > > Hi list, >> > > > > > >> > > > > > I was wondering is there a way to add multiple files to a vm via >> > > > > cloud-init >> > > > > > using python SDK. I was able to add /etc/resolv.conf and >> > > additionally I >> > > > > > would like to add config files for NICs (ifcfg-ethX) with >> appropriate >> > > > > > values (ip,gw,netmask). I used an example given here: >> > > > > > http://www.ovirt.org/Features/Cloud-Init_Integration . But >> > > > > unfortunately I >> > > > > > cannot do the same thing If I want to write multiple files to a >> vm in >> > > > > > params.Action class. >> > > > > > >> > > > > > Thank you in advance! >> > > > > you can use the custom script text box in oVirts cloud-init >> section, >> > > > > there you can add any cloud-init section - adding files examples >> can be >> > > > > found >> > > > > here: >> > > > > >> > > > > >> > > >> http://cloudinit.readthedocs.org/en/latest/topics/examples.html#writing-out-arbitrary-files >> > > > > >> > > > > Shahar Havivi. >> > > > > >> > > > > >> > > > Hi Shahar, >> > > > >> > > > Thank you for the reply. >> > > > >> > > > To be honest I knew for those scripts but I want to do it in >> automate >> > > > fashion just like in that example that I put in my original >> message. I >> > > have >> > > > tried to specify in params.Files class multiple files: >> > > > >> > > > vm_file1 = params.Files(file=[params.File(name = 'file1', content = >> > > > file1_content, type_= 'PLAINTEXT')]) >> > > > vm_file2 = params.Files(file=[params.File(name = 'file2', content = >> > > > file2_content, type_= 'PLAINTEXT')]) >> > > > >> > > > and then give them as arguments to params.CloudInit _init_ >> constructor >> > > > (files=...) just like in that example above but it seems that I am >> doing >> > > > something wrong because it does not write multiple files - it >> writes only >> > > > when you specify one file all right. The exception is "Error: 'list' >> > > object >> > > > has no attribute 'export'" (I tried to specify those files as a >> list - >> > > > files=[vm_file1,vm_file2]). >> > > > >> > > > Thanks for any help. >> > > The custom script is currently the only option to add files via >> Cloud-Init >> > > >> > > Thanks, >> > > Shahar Havivi. >> > > >> > > >> > Hi Shahar, >> > >> > Granted. But the example in python >> > http://www.ovirt.org/Features/Cloud-Init_Integration uses custom >> script :) >> > I just want to know how to do the same thing in case when I want to >> write >> > more than one file to a VM - and yes - all those multiple files that I >> > want to write are specified via custom scripts. >> > >> > From the link - (The "Python SDK" paragraph: scontent object holds the >> > custom script): >> > >> > scontent = "write_files:\n- content: |\n search >> > example.com\n nameserver 10.10.10.1\n nameserver >> > 10.10.10.2\n path: /etc/resolv.conf" >> > >> > For example (and just for example), I want to write to /etc/issue and >> > /etc/hosts not only /etc/resolv.conf. In essence, when vm goes to >> run-once >> > mode I want to write more than one file to a vm via Python (using >> > CloudInit) in automated fashion (and not touching oVirt GUI at all). >> You don't need to use the GUI, >> the sdks initialization have custom_script as string which is equivalent >> to >> the text box that you see in the GUI, and you can put the same content >> there >> (ie multiple files). >> Is that sufficient enough? >> > > Hi Shahar, > > Thanks! I will try this one. I was not aware of this feature. Although I > can see that it was mentioned on the list (my bad). > > Thank you for your effort! I really do appreciate it! > Hi, Please if somebody can help me because I am pretty stuck. As I said in previous posts I used this Python example http://www.ovirt.org/Features/Cloud-Init_Integration to set root password, hostname and resolv.conf. It worked without any problems for 3.4 oVirt version and equivalent Python SDK (ovirt-engine-sdk-python-3.4.x.noarch). Then, I have tried to write through yuml scripts more conf files than just resolv.conf to configure guest. I also saw this post on the list: http://lists.ovirt.org/pipermail/users/2014-October/028539.html. So based on that, I decided to upgraded oVirt and SDK (ovirt-engine-sdk-python-3.5.0.7-1.el6.noarch) to 3.5 version. The upgrade itself passed without any problem. >From that point forward I tried to use custom_script parameter (as suggested by Shahar) inside Initialization class and CloudInit class without any luck. Can somebody please provide a simple Python code to submit yaml script to cloud-init? Also after the upgrade the example script I mentioned above can only change hostname. It does not write resolv.conf anymore nor it sets root password. I don't know if something is changed inside methods? For example, customization of virtual machine (memory,cpu,high availability, pinning to a certain host etc works without any problems). Thank you! Best regards, Branimir
_______________________________________________ Users mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/users

