On 02/13/2014 02:39 PM, Tejesh M wrote:
Hi All,
Thanks alot.
I have created one VM with minimal installation & installed cloud-init
package. And, converted that VM into Template. Then executed the code
given in
http://lists.ovirt.org/pipermail/users/2014-February/021302.html , but
no luck, the code is not setting root password.
What version of the engine are you running? I may not have the required
cloud-init support.
Try to run the application in debug mode:
Api api = new Api(
"https://whatever/api",
"user@domain",
"password",
null,
null,
null,
null,
true,
null,
true // <- This is to enable debug mode
);
It will send to the log the actual XML documents sent to the server. We
can use it to see if the request is generated correctly.
It may also happen that cloud-init support isn't working correctly. To
verify this try to use the cloud-init support manually from webadmin.
Does it work from there?
Also, there is no option to set *Hostname *for the VM.
To set the host name you need to add something like this:
Host hostData = new Host();
hostData.setAddress("the.host.name");
cloudData.setHost(hostData);
_*Code:*_
/*********************Begin Customize VM*********************/
// Generate the random password, using whatever mechanism you
// prefer:
String password = "cJql3P9XLQG4drCYVG/6Q/";
// You need to know the name of the template, the cluster and
// the VM you are going to create:
String templateName = "rhel2_temp";
String clusterName = "testCluster";
String vmName = "myvm";
// Prepare the data to create the VM from the template:
org.ovirt.engine.sdk.entities.Template templateData = new
Template();
templateData.setName(templateName);
org.ovirt.engine.sdk.entities.Cluster clusterData = new Cluster();
clusterData.setName(clusterName);
org.ovirt.engine.sdk.entities.VM vmDataForCreate = new VM();
vmDataForCreate.setName(vmName);
vmDataForCreate.setCluster(clusterData);
vmDataForCreate.setTemplate(templateData);
// Send the request to create the VM to the server:
api.getVMs().add(vmDataForCreate);
String state;
// White till the VM is down (it will be locked for a while):
for (;;) {
state = api.getVMs().get(vmName).getStatus().getState();
if ("down".equals(state)) {
break;
}
Thread.sleep(1000);
}
System.out.println("System Status:"+state);
// Populate parameters for the action to start the VM with
cloud-init:
org.ovirt.engine.sdk.entities.User userData = new User();
userData.setUserName("root");
userData.setPassword(password);
Users usersData = new Users();
usersData.getUsers().add(userData);
CloudInit cloudData = new CloudInit();
cloudData.setUsers(usersData);
Initialization initData = new Initialization();
initData.setCloudInit(cloudData);
VM vmDataForStart = new VM();
vmDataForStart.setInitialization(initData);
Action actionData = new Action();
actionData.setVm(vmDataForStart);
// Send the request to start the VM to the server:
api.getVMs().get(vmName).start(actionData);
System.out.println("After :
"+api.getVMs().get(vmName).getStatus());
/*********************End Customize VM*********************/
Thanks & Regards,
Tejesh
On Thu, Feb 13, 2014 at 2:26 PM, Juan Hernandez <jhernand(a)redhat.com
<mailto:jhernand@redhat.com>> wrote:
On 02/13/2014 09:29 AM, Shahar Havivi wrote:
> On 13.02.14 00:59, Oved Ourfalli wrote:
>>
>>
>> ----- Original Message -----
>>> From: "Shahar Havivi" <shaharh(a)redhat.com
<mailto:shaharh@redhat.com>>
>>> To: users(a)ovirt.org <mailto:users@ovirt.org>
>>> Cc: "Juan Antonio Hernandez Fernandez"
<jhernand(a)redhat.com
<mailto:jhernand@redhat.com>>, rhevm-api(a)lists.fedorahosted.org
<mailto:rhevm-api@lists.fedorahosted.org>, "Tejesh M"
>>> <tejeshmk(a)gmail.com <mailto:tejeshmk@gmail.com>>
>>> Sent: Wednesday, February 12, 2014 11:22:20 PM
>>> Subject: Re: [Users] [rhevm-api] Assign IP address to VM using
Java SDK
>>>
>>> On 12.02.14 22:55, Itamar Heim wrote:
>>>> On 02/12/2014 03:14 PM, Tejesh M wrote:
>>>>> Hi,
>>>>>
>>>>> Can anyone share sample code on how to assign IP address to
guest os &
>>>>> changing the root password while creating VM from Template
using Java SDK?
>>> Hi Tejesh,
>>> You should start here:
>>>
http://www.ovirt.org/Api
>>> This link will explain the basics for fetching VM via the API
using HTTP via
>>> curl command line.
>>>
>>> Every VM have a collection of networks and manipulating them can
be seeing
>>> here with the REST API examples:
>>>
http://www.ovirt.org/Features/Design/Network/SetupNetworks#REST
>>> the section for you is "Attaching a network to a NIC" under
the REST
>>> category.
>>>
>>> Shahar Havivi.
>>>
>>
>> Actually it looks like Tejesh is referring to the Guests and not
the hosts, so you can use cloud-init in order to do that.
>> See more in
"http://www.ovirt.org/Features/Cloud-Init_Integration".
>> If the VM's operating system is defined as some kind of Linux,
then you'll be able to set some stuff using cloud-init, either via
the Run-Once Dialog, or in the regular VM properties dialog.
>>
>> Omer - we have REST API support for cloud-init, right?
> Yes, more on that can be found here:
>
http://www.ovirt.org/Features/vm-init-persistent
>>
Tajesh, you have a detailed example of how to set the password in the
following message:
http://lists.ovirt.org/pipermail/users/2014-February/021302.html
Setting the IP address is similar.
--
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.