[Users] [rhevm-api] Assign IP address to VM using Java SDK

Juan Hernandez jhernand at redhat.com
Fri Feb 14 09:36:01 UTC 2014


On 02/14/2014 10:30 AM, Tejesh M wrote:
> Hi,
> 
> There is no option in "Initial Run" to set root password & other stuff.
> Have attached screenshots & debug output. Is there any configuration
> needs to be done? or any cloud-init service needs to be started? How do
> integrate cloud-init with RHEV-M?
> 
> Thanks & Regards,
> Tejesh
> 

You are using the "Run" and "New" options, but you have to use the "Run
Once" option. There, in "Run Once" is where we have cloud-init support
in 3.3.

> 
> On Thu, Feb 13, 2014 at 9:50 PM, Juan Hernandez <jhernand at redhat.com
> <mailto:jhernand at redhat.com>> wrote:
> 
>     On 02/13/2014 05:15 PM, Tejesh M wrote:
>     > Actually, i want to automate the vm provisioning through java sdk. and
>     > this urgent requirement.  Is it possible to automate setting hostname,
>     > root password n nic info by any means in 3.3? Also in windows
>     > administration password as similar to linux.. kindly help as im new to
>     > this..
>     >
> 
>     Yes, setting the hostname, root password and NIC info is possible in
>     3.3, using cloud-init and the Java SDK. I tested this with 3.3 and it
>     works correctly.
> 
>     As you are having problems I suggest to try it manually, from the GUI,
>     if it doesn't work then please report the details, so that we can
>     diagnose and fix it.
> 
>     Once it works manually from the GUI, we can see why it doesn't work with
>     the SDK, but we will need the output generated when running in debug
>     mode.
> 
>     > On 13 Feb 2014 20:32, "Juan Hernandez" <jhernand at redhat.com
>     <mailto:jhernand at redhat.com>
>     > <mailto:jhernand at redhat.com <mailto:jhernand at redhat.com>>> wrote:
>     >
>     >     On 02/13/2014 03:59 PM, Shahar Havivi wrote:
>     >     > On 13.02.14 20:17, Tejesh M wrote:
>     >     >> 1. The Version is RHEV-M 3.3 & Cloud-init is
>     >     >> cloud-init-0.6.3-0.12.bzr532.el6.noarch
>     >     >>
>     >     >> 2. In Webadmin, i don't find any option to set Cloud-init
>     data's.
>     >     I checked
>     >     >> under New VM->Initial Run.. Am i looking at the right place?
>     >     >> How to enable cloud-init support in engine?
>     >     > You will not found it since you are working in 3.3 and this
>     >     feature presented
>     >     > in 3.4.
>     >     > In 3.3 you can try to set the Cloud-Init via the Run-Once
>     button.
>     >     >
>     >
>     >     In 3.3 you need first to create the VM. Once it is created
>     select it,
>     >     click the "Run Once" button, then click on the plus sign next to
>     >     "Initial Run", check the "Cloud-Init" box, and populate the fields
>     >     you want.
>     >
>     >     >>
>     >     >> I have installed cloud-init package in RHEV-M & also in
>     Template.
>     >     >>
>     >     >> Please suggest.
>     >     >>
>     >     >>
>     >     >> On Thu, Feb 13, 2014 at 7:31 PM, Juan Hernandez
>     >     <jhernand at redhat.com <mailto:jhernand at redhat.com>
>     <mailto:jhernand at redhat.com <mailto:jhernand at redhat.com>>> wrote:
>     >     >>
>     >     >>> 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 at 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
>     <http://the.host.name> <http://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 at redhat.com <mailto:jhernand at redhat.com>
>     <mailto:jhernand at redhat.com <mailto:jhernand at redhat.com>>
>     >     >>>> <mailto:jhernand at redhat.com <mailto:jhernand at redhat.com>
>     <mailto:jhernand at redhat.com <mailto:jhernand at 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 at redhat.com
>     <mailto:shaharh at redhat.com>
>     >     <mailto:shaharh at redhat.com <mailto:shaharh at redhat.com>>
>     >     >>>>     <mailto:shaharh at redhat.com
>     <mailto:shaharh at redhat.com> <mailto:shaharh at redhat.com
>     <mailto:shaharh at redhat.com>>>>
>     >     >>>>     >>> To: users at ovirt.org <mailto:users at ovirt.org>
>     <mailto:users at ovirt.org <mailto:users at ovirt.org>>
>     >     <mailto:users at ovirt.org <mailto:users at ovirt.org>
>     <mailto:users at ovirt.org <mailto:users at ovirt.org>>>
>     >     >>>>     >>> Cc: "Juan Antonio Hernandez Fernandez"
>     >     <jhernand at redhat.com <mailto:jhernand at redhat.com>
>     <mailto:jhernand at redhat.com <mailto:jhernand at redhat.com>>
>     >     >>>>     <mailto:jhernand at redhat.com
>     <mailto:jhernand at redhat.com> <mailto:jhernand at redhat.com
>     <mailto:jhernand at redhat.com>>>>,
>     >     rhevm-api at lists.fedorahosted.org
>     <mailto:rhevm-api at lists.fedorahosted.org>
>     >     <mailto:rhevm-api at lists.fedorahosted.org
>     <mailto:rhevm-api at lists.fedorahosted.org>>
>     >     >>>>     <mailto:rhevm-api at lists.fedorahosted.org
>     <mailto:rhevm-api at lists.fedorahosted.org>
>     >     <mailto:rhevm-api at lists.fedorahosted.org
>     <mailto:rhevm-api at lists.fedorahosted.org>>>, "Tejesh M"
>     >     >>>>     >>> <tejeshmk at gmail.com <mailto:tejeshmk at gmail.com>
>     <mailto:tejeshmk at gmail.com <mailto:tejeshmk at gmail.com>>
>     >     <mailto:tejeshmk at gmail.com <mailto:tejeshmk at gmail.com>
>     <mailto:tejeshmk at gmail.com <mailto:tejeshmk at 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.



More information about the Users mailing list