[ovirt-users] [ovirt-shell] update hostnic/nic ???

Juan Hernández jhernand at redhat.com
Fri Jan 15 06:20:17 EST 2016


On 01/14/2016 01:28 PM, Bloemen, Jurriën wrote:
>>
>> On 14-01-16 12:16, Juan Hernández wrote:
>>> On 01/14/2016 11:24 AM, Bloemen, Jurriën wrote:
>>>> Hi,
>>>>
>>>> First I created a bonding interface:
>>>>
>>>> # add nic --parent-host-name server01 --name bond0 --network-name
>>>> VLAN602 --bonding-slaves-host_nic host_nic.name=eno1
>>>> --bonding-slaves-host_nic host_nic.name=eno2
>>>>
>>>> This works great but no IP is set on VLAN602.
>>>>
>>>> Then I'm trying to add an ip address to a network with the following
>>>> command:
>>>>
>>>> # update hostnic --parent-host-name server01 --network-name VLAN602
>>>> --boot_protocol static --ip-address 10.10.10.10 --ip-netmask 255.255.255.0
>>>>
>>>> ==============================================================================================================
>>>> ERROR
>>>> ============================================================================================================
>>>>                                                                                       
>>>> wrong number of arguments, try 'help update' for help.
>>>> ================================================================================================================================================================================================================================
>>>>
>>>> Looking at this document
>>>> https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Virtualization/3.6-Beta/html/RHEVM_Shell_Guide/nic.html
>>>> I need to use "nic" instead of "hostnic" but then I don't have the
>>>> options to say this is a --parent-host-name. Only VM related command
>>>> options.
>>>>
>>>> So I think the documentation is behind.
>>>>
>>>> Can somebody help me with what the command is to add a IP to a
>>>> VLAN/Network for a host?
>>>>
>>>>
>>> The command should be like this:
>>>
>>>   # update nic bond0 --parent-host-name server01 --network-name VLAN602
>>> --boot_protocol static --ip-address 10.10.10.10 --ip-netmask 255.255.255.0
>>>
>>> Note that the it is "nic" instead of "hostnic" and that you need to
>>> specify the name of that NIC, in this case "bond0".
>>>
>>> The command will work if you type it like that, but auto-completion
>>> won't work. This is a bug in the CLI, indirectly caused by the fact that
>>> the name of the URL segment used in the RESTAPI is "nics" (from
>>> /hosts/{host:id}/*nics*) but the name of the XML schema complex type is
>>> "HostNIC".
>>>
>> Thanks! That works!
>>
>> Another question:
>>
>> Now I got the message that my network is out-of-sync. How can i force
>> within the ovirt-shell that it syncs the networks?
> 
> hmz.... pressed sent by accident
> 
> What I want to say is:
> 
> Now I got the message that my network is out-of-sync. How can i force
> within the ovirt-shell that it syncs the networks?
> Because when I press "Sync All Networks" the IP address disappears....
> 
> But when I check the box "Sync Network" within the VLAN602 options it
> gets pushed to the host.
> 
> Is there a difference between the both? And how do I run both via
> ovirt-shell?
> 

The "sync network" operation is not supported by ovirt-shell.

If you want to set the network configuration, and make it persistent,
then you will need to use one of the "setupNetworks" operations. These
aren't fully usable with ovirt-shell either, so if you want to use it
you will need to use directly the API or one of the SDKs. For example,
lets assume that you have a host with network interfaces eth0, eth1, and
eth2, and that you want to configure eth1 and eth2 as a bond, to put
your VLAN and IP address on top. You can do that with a script like this:

---8<---
#!/bin/sh -ex

url="https://engine.example.com/ovirt-engine/api"
user="admin at internal"
password="..."

curl \
--verbose \
--cacert /etc/pki/ovirt-engine/ca.pem \
--user "${user}:${password}" \
--request POST \
--header "Content-Type: application/xml" \
--header "Accept: application/xml" \
--data '
<action>
  <modified_network_attachments>
    <network_attachment>
      <network>
        <name>VLAN602</name>
      </network>
      <host_nic>
        <name>bond0</name>
      </host_nic>
      <ip_address_assignments>
        <assignment_method>static</assignment_method>
        <ip_address_assignment>
          <ip netmask="255.255.255.0" address="10.10.10.10"/>
        </ip_address_assignment>
      </ip_address_assignments>
    </network_attachment>
  </modified_network_attachments>
  <modified_bonds>
    <host_nic>
      <name>bond0</name>
      <bonding>
        <options>
          <option name="mode" value="4"/>
          <option name="miimon" value="100"/>
        </options>
        <slaves>
          <host_nic>
            <name>eth1</name>
          </host_nic>
          <host_nic>
            <name>eth2</name>
          </host_nic>
        </slaves>
      </bonding>
    </host_nic>
   </modified_bonds>
 </action>
' \
"${url}/1ff7a191-2f3b-4eff-812b-9f91a30c3acc/setupnetworks"
--->8---

If you prefer to use one of the SDKs, the Python SDK for example, then
it should look like this:

---8<---
#!/usr/bin/python

from ovirtsdk.api import API
from ovirtsdk.xml import params

# Connect to the server:
api = API(
    url="https://engine.example.com/ovirt-engine/api",
    username="admin at internal",
    password="...",
    ca_file="/etc/pki/ovirt-engine/ca.pem",
    debug=True
)

# Find the host:
host = api.hosts.get(name="myhost")

# Set up the networks:
host.setupnetworks(
  params.Action(
    modified_bonds=params.HostNics(
      host_nic=[
        params.HostNIC(
          name="bond0",
          bonding=params.Bonding(
            options=params.Options(
              option=[
                params.Option(name="mode", value="4"),
                params.Option(name="miimon", value="100"),
              ],
            ),
            slaves=params.Slaves(
              host_nic=[
                params.HostNIC(name="eth1"),
                params.HostNIC(name="eth2"),
              ],
            ),
          ),
        ),
      ],
    ),
    modified_network_attachments=params.NetworkAttachments(
      network_attachment=[
        params.NetworkAttachment(
          network=params.Network(name="VLAN602"),
          host_nic=params.HostNIC(name="bond0"),
          ip_address_assignments=params.IpAddressAssignments(
            ip_address_assignment=[
              params.IpAddressAssignment(
                assignment_method="static",
                ip=params.IP(
                  address="10.10.10.10",
                  netmask="255.255.255.0",
                ),
              ),
            ],
          ),
        ),
      ],
    ),
  ),
)

# Close the connection:
api.disconnect()
---8<---

-- 
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