[Users] Fwd: Sample code for setting NIC - CloudInit

Greg Padgett gpadgett at redhat.com
Thu Feb 20 19:42:16 UTC 2014


On 02/20/2014 02:26 PM, Juan Hernandez wrote:
> On 02/20/2014 04:28 PM, Juan Hernandez wrote:
>> On 02/20/2014 10:40 AM, Tejesh M wrote:
>>> I wrote this code to assign IP address to VM interface eth0, but not
>>> luck. Also, have attached debug log.
>>>
>>
>> I'm attaching a complete examaple of how to do this. However, I think
>> that setting the DNS information doesn't currently work. Apparently
>> cloud-init is expecting a network configuration containing the DNS
>> settings inside the network interface, something like this:
>>
>> iface eth0 inet static
>>    dns-nameservers 1.1.2.2 1.2.3.4
>>    dns-search google.com
>>    address 192.168.1.102
>>    netmask 255.255.0.0
>>    gateway 192.168.2.1
>> auto eth0
>>
>> But we actually pass them outside of the network interface, like this:
>>
>> dns-nameservers 1.1.2.2 1.2.3.4
>> dns-search google.com
>> iface eth0 inet static
>>    address 192.168.1.102
>>    netmask 255.255.0.0
>>    gateway 192.168.2.1
>> auto eth0
>>
>> I need to check it.
>>
>
> I have modified the code that generates the cloud-init files to put the
> DNS configuration inside the "iface" configuration, and then it works:
>
> http://gerrit.ovirt.org/24850
>
> So this is probably a bug, either in our side or in cloud-init itself.
> Greg, Shahar, you know cloud-init better, what do you think?
>

It looks like our bug.  Cloud-init wants to see a standard debian/ubuntu 
style /etc/network/interfaces, and the documentation for that format 
supports your change.  Thanks for posting the patch!

>>> _*Java Code:*_
>>>            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);
>>>            Host hostData = new Host();
>>>            hostData.setAddress(vmName);
>>>            cloudData.setHost(hostData);
>>>
>>>            org.ovirt.engine.sdk.entities.CloudInit.Network
>>> networkConfiguration=new org.ovirt.engine.sdk.entities.CloudInit.Network();
>>>
>>>            DNS dns = new DNS();
>>>            dns.setServers(createServersList("1.1.2.2", "1.2.3.4"));
>>>            dns.setSearchDomains(createServersList("google.com
>>> <http://google.com>"));
>>>            networkConfiguration.setDns(dns);
>>>            networkConfiguration.setNics(new Nics());
>>>
>>>            Nics nics = networkConfiguration.getNics();
>>>            nics.getNics().add(createNic("eth0", "STATIC",
>>> createNetwork("192.168.1.102", "255.255.0.0", "192.168.2.1"), true));
>>>
>>>            networkConfiguration.setNics(nics);
>>>
>>>            cloudData.setNetwork(networkConfiguration);
>>>
>>>            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);
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Thu, Feb 20, 2014 at 1:39 PM, Moti Asayag <masayag at redhat.com
>>> <mailto:masayag at redhat.com>> wrote:
>>>
>>>
>>>
>>>      ----- Original Message -----
>>>      > From: "Tejesh M" <tejeshmk at gmail.com <mailto:tejeshmk at gmail.com>>
>>>      > To: "Moti Asayag" <masayag at redhat.com <mailto:masayag at redhat.com>>
>>>      > Cc: "users at oVirt.org" <users at ovirt.org <mailto:users at ovirt.org>>
>>>      > Sent: Thursday, February 20, 2014 8:52:52 AM
>>>      > Subject: Re: [Users] Fwd: Sample code for setting NIC - CloudInit
>>>      >
>>>      > I'm not getting below class:
>>>      >
>>>      > import org.ovirt.engine.sdk.entities.*NetworkConfiguration*;
>>>
>>>      Which version of ovirt-engine-sdk-java are you using ?
>>>
>>>      I used ovirt-engine-sdk-java-3.4.0.1-1, added to my project's pom.xml:
>>>
>>>              <dependency>
>>>                      <groupId>org.ovirt.engine.sdk</groupId>
>>>                      <artifactId>ovirt-engine-sdk-java</artifactId>
>>>                      <version>3.4.0.1-1</version>
>>>                      <type>jar</type>
>>>                      <scope>compile</scope>
>>>              </dependency>
>>>
>>>      >
>>>      >
>>>      > On Thu, Feb 20, 2014 at 4:11 AM, Moti Asayag <masayag at redhat.com
>>>      <mailto:masayag at redhat.com>> wrote:
>>>      >
>>>      > >
>>>      > >
>>>      > > ----- Original Message -----
>>>      > > > From: "Tejesh M" <tejeshmk at gmail.com <mailto:tejeshmk at gmail.com>>
>>>      > > > To: "users at oVirt.org" <users at ovirt.org <mailto:users at ovirt.org>>
>>>      > > > Sent: Wednesday, February 19, 2014 3:24:40 PM
>>>      > > > Subject: [Users] Fwd: Sample code for setting NIC - CloudInit
>>>      > > >
>>>      > > > Hi,
>>>      > > >
>>>      > > > Can someone share me sample java code for assigning IP address
>>>      for VM on
>>>      > > eth0
>>>      > > > through Java SDK via CloudInit ?
>>>      > > >
>>>      > >
>>>      > > Hi Tejesh,
>>>      > >
>>>      > > I've attached a sample code that sends the required request (as
>>>      the output
>>>      > > is demonstrated in debug mode).
>>>      > > Note that the code is jdk-7 compliant.
>>>      > > I haven't configured cloud-init and haven't tested it end-to-end.
>>>      > > Please try to test it on your environment and provide a feedback
>>>      for it.
>>>      > >
>>>      > > Thanks,
>>>      > > Moti
>>>      > >
>>>      > > > Something Like this but in Java:
>>>      > > > <network_configuration>
>>>      > > >          <nics>
>>>      > > >            <nic>
>>>      > > >              <name>eth0</name>
>>>      > > >              <boot_protocol>STATIC</boot_protocol>
>>>      > > >              <network>
>>>      > > >                <ip address="192.168.2.11" netmask="255.255.0.0"
>>>      > > >                gateway="192.168.2.1" />
>>>      > > >              </network>
>>>      > > >              <on_boot>true</on_boot>
>>>      > > >            </nic>
>>>      > > >            <nic>
>>>      > > >              <name>eth1</name>
>>>      > > >              <boot_protocol>DHCP</boot_protocol>
>>>      > > >            </nic>
>>>      > > >            <nic>
>>>      > > >              <name>eth2</name>
>>>      > > >              <boot_protocol>NONE</boot_protocol>
>>>      > > >              <on_boot>true</on_boot>
>>>      > > >            </nic>
>>>      > > >          </nics>
>>>      > > >          <dns>
>>>      > > >            <servers>
>>>      > > >              <host>
>>>      > > >                <address>1.1.2.2</address>
>>>      > > >              </host>
>>>      > > >              <host>
>>>      > > >                <address>1.2.3.4</address>
>>>      > > >              </host>
>>>      > > >            </servers>
>>>      > > >            <search_domains>
>>>      > > >              <host>
>>>      > > >                <address>qa.lab</address>
>>>      > > >              </host>
>>>      > > >              <host>
>>>      > > >                <address> google.com <http://google.com> </address>
>>>      > > >              </host>
>>>      > > >            </search_domains>
>>>      > > >          </dns>
>>>      > > >        </network_configuration>
>>
>
>




More information about the Users mailing list