[ovirt-users] Error while using REST API with Ovirt
Chandrahasa S
chandrahasa.s at tcs.com
Tue Sep 23 14:55:40 UTC 2014
Windows 2008 R2
Regards,
Chandrahasa S
From: Juan Hernandez <jhernand at redhat.com>
To: Chandrahasa S <chandrahasa.s at tcs.com>
Cc: Agarwal Ruchita <agarwal.ruchita at tcs.com>, users at ovirt.org
Date: 09/23/2014 06:58 PM
Subject: Re: [ovirt-users] Error while using REST API with Ovirt
On 09/23/2014 06:39 AM, Chandrahasa S wrote:
> Dear Juan,
>
> Thanks lot for support.
>
> Internal server error issue also resolved with linux guests. Now we are
> able to provide ip and hostname to linux guests in rhev 3.4 successfully
> via RESTAPI giving boot protocol as "static" as advised.
>
> For Windows Guest we did the following:
> 1) Prepared a template with guest agents installed and deployed a
> vm successfully through RESTAPI.
> 2) Following initialization part same as Linux guest did not work
> in this case and it gives default/garbage ip,hostname to the vm.
> 3) So we tried giving it through sysprep/payload tag through
> REST API. Code snippet is as follows:
>
> HttpPut put = new HttpPut(
>
> "https://rhevmanager/api/vms/7dac74d2-c504-4bbd-8659-c8773a844cb3/
> <https://192.168.114.36/api/vms/7dac74d2-c504-4bbd-8659-c8773a844cb3/
>");
> String inputXML1 = "<?xml version=\"1.0\"?>"
> /*"<vm>"*/
> +"<sso>"+"<methods>"+"<method
> id=\""+"GUEST_AGENT"+"\"/>"+"</methods>"+"</sso>"
>
> +"<domain>"+"<name>ultimatixuat.net</name>"+"</domain>"
>
> +"<payloads>"+"<payload
> type=\""+"floppy"+"\">"+ "<files>"+"<file>"
>
> +"<name>/WEB-INF/sysprep.xml</name>"
>
> +"</file>"+"</files>"+"</payload>"+"</payloads>"
>
> +"<reported_devices>"+"<reported_device>"+"<ips>"+"<ip
> address=\""+"1.1.1.1"+"\"/</ips>"
>
>
>
+"<fqdn>WIN-AS05EOADAwerwer</fqdn>"+"</reported_device>"+"<reported_devices>";
>
>
> StringEntity input1 = new
StringEntity(inputXML1);
> put.setEntity(input1);
> put.setHeader("Content-Type",
"application/xml");
> HttpResponse responseNIC =
httpclient.execute(put);
> System.out
> .println("RESPONSE
> ::::::::::::::::::::::::::::::::::: "
> + responseNIC);
>
> BufferedReader rd1 = new BufferedReader(new
> InputStreamReader(
>
> responseNIC.getEntity().getContent()));
> String line1 = "";
> while ((line1 = rd1.readLine()) != null) {
> System.out.println("LINE ::::::::::::: "
> + line1);
> }
>
> The output says that my code is syntactically incorrect. I am
> not very sure as to what has to be the content of "sysprep.xml" file and
> what is syntactically incorrect here.
>
> Also while deploying the windows machine manually through the
> rhev manager , while using sysprep option in "run once" , I am unable to
> find the ip and hostname options as found for linux
> machines.
>
>
> Regards,
> Chandrahasa S
>
What version of Windows are you using?
>
>
> From: Juan Hernandez <jhernand at redhat.com>
> To: Chandrahasa S <chandrahasa.s at tcs.com>
> Cc: Agarwal Ruchita <agarwal.ruchita at tcs.com>, users at ovirt.org,
> "'Shahar Havivi'" <shavivi at redhat.com>
> Date: 09/18/2014 06:30 PM
> Subject: Re: [ovirt-users] Error while using REST API with Ovirt
> ------------------------------------------------------------------------
>
>
>
> On 09/18/2014 01:39 PM, Chandrahasa S wrote:
>> Dear Juan / All,
>>
>> Thanks for reply.
>>
>> I tried to give the hostname with the tag mentioned "host_name". Its
>> working.
>>
>> So below are the issues still remaining:
>>
>> 1) The issue of internal server error still persits (rhev
>> manager showing issues) even after following the advice of the expert
>> and doing the initialization part just once(giving ip and
>> hostname) after creating the vm.
>>
>
> Actually this is a bug:
>
> https://bugzilla.redhat.com/1144005
>
> The reason is that when you use an incorrect boot protocol we end up
> storing null in the corresponding place in the database, and later we
> use the value without checking it, which triggers a null pointer
exception.
>
> The right value for the boot protocol is "static", not "STATIC_IP". The
> "STATIC_IP" value is what we use in the backend and in the database, but
> in the RESTAPI it is "static".
>
> To workaround this issue you can delete the VMs and create them again
> with the correct boot protocol.
>
> If you don't want to create the VMs again you can fix the database
> manually like this:
>
> # su - postgres
> # psql
> postgres=# \c engine
> engine=# update vm_init set networks = replace(networks, '"bootProtocol"
> : null', '"bootProtocol" : "STATIC_IP"');
>
>> 2) Please confirm if this is the case that we can do
>> initialization part only once on a particular vm , then we can
>> reconfigure the network (ip, subnet, gateway etc)
>> or not for that vm.
>>
>
> I'm reasonably sure that you can run initialization only once per VM,
> but Shahar can confirm this better than me.
>
>> 3) For Windows guest we are still unable to provide ip details
>> and hostname using sysprep/payload.
>>
>
> I'm not familiar with Sysprep. Can you provide an example of the code
> that you are using for that?
>
>> Error attached.
>>
>>
>>
>> Regards,
>> Chandrahasa S
>>
>>
>>
>> From: Juan Hernandez <jhernand at redhat.com>
>> To: Chandrahasa S <chandrahasa.s at tcs.com>, users at ovirt.org
>> Cc: Agarwal Ruchita <agarwal.ruchita at tcs.com>
>> Date: 09/18/2014 03:35 PM
>> Subject: Re: [ovirt-users] Error while using REST API with Ovirt
>>
------------------------------------------------------------------------
>>
>>
>>
>> On 09/18/2014 08:18 AM, Chandrahasa S wrote:
>>> Dear Experts.
>>>
>>> We are Integrating our internal cloud portal with Ovirt / RHEVM
version
>>> 3.4.
>>>
>>> We are integrating our internal cloud with Ovirt / RHEVM. VM template
>>> created using cloud init.
>>>
>>> Through REST API Nippet while codes passes command to template ( with
>>> cloud init) IP, HOSTNAME, We are able to set IP and Hostname to VM
>>> through code.
>>>
>>> But post this Manager getting handed. Error code is attached.
>>>
>>> Need your help please.
>>>
>>
>> If I understand correctly you already created a template with the cloud
>> init configuration, then you created a VM from that template, and you
>> want to modify it and start it. In order to update the VM you need to
>> issue a PUT request, and the tag name for the host is "host_name":
>>
>> String updateXml =
>> "<?xml version=\"1.0\"?>"
>> + "<vm>"
>> + "<initialization>"
>> + "<host_name>meghaasadmin.ultimatixuat.net</host_name>"
>> + "<regenerate_ssh_keys>false</regenerate_ssh_keys>"
>> + "<nic_configurations>"
>> + "<nic_configuration>"
>> + "<name>eth0</name>"
>> + "<ip address=\"1.1.1.1\" netmask=\"255.255.255.0\"
>> gateway=\"13.3.3.3\"/>"
>> + "<boot_protocol>static</boot_protocol>"
>> + "<on_boot>true</on_boot>"
>> + "</nic_configuration>"
>> + "</nic_configurations>"
>> + "</initialization>"
>> + "</vm>";
>> StringEntity updateEntity = new StringEntity(updateXml);
>> HttpPut updateRequest = new HttpPut(apiUrl + "/vms/" + vmId);
>> updateRequest.setHeader("Content-Type", "application/xml");
>> updateRequest.setHeader("Accept", "application/xml");
>> updateRequest.setEntity(updateEntity);
>> HttpResponse updateResponse = client.execute(updateRequest);
>>
>> Then, after the update, you need to start the VM and it will use that
>> configuration:
>>
>> String startXml =
>> "<?xml version=\"1.0\"?>"
>> + "<action/>";
>> StringEntity startEntity = new StringEntity(startXml);
>> HttpPost startRequest = new HttpPost(apiUrl + "/vms/" + vmId +
>> "/start");
>> startRequest.setEntity(startEntity);
>> startRequest.setHeader("Content-Type", "application/xml");
>> startRequest.setHeader("Accept", "application/xml");
>> HttpResponse startResponse = client.execute(startRequest);
>>
>> Some advices:
>>
>> * Check the XML schema for the structure of the XML documents:
>>
>> https://rhevmanager/api?schema
>>
>> * When sending requests to the RESTAPI makes sure to always explicitly
>> add the Content-Type and Accept headers:
>>
>> yourRequest.setHeader("Content-Type", "application/xml");
>> yourRequest.setHeader("Accept", "application/xml");
>>
>> * Take into account that the initialization with cloud-init will only
be
>> executed the first time you start the VM, so in your tests you will
need
>> to remove the VM and create it again.
>>
>> * If you are planning to do complex things you may find it helpful the
>> Java SDK:
>>
>> http://www.ovirt.org/Java-sdk
>>
--
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.
=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain
confidential or privileged information. If you are
not the intended recipient, any dissemination, use,
review, distribution, printing or copying of the
information contained in this e-mail message
and/or attachments to it are strictly prohibited. If
you have received this communication in error,
please notify us by reply e-mail or telephone and
immediately and permanently delete the message
and any attachments. Thank you
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ovirt.org/pipermail/users/attachments/20140923/9beff5d1/attachment-0001.html>
More information about the Users
mailing list