[ovirt-users] [ovirt-shell] update hostnic/nic ???
Juan Hernández
jhernand at redhat.com
Wed Jan 20 11:24:10 UTC 2016
On 01/20/2016 11:31 AM, Bloemen, Jurriën wrote:
> On 15-01-16 12:20, Juan Hernández wrote:
>> 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<---
>>
> Hi Juan,
>
> The Python SDK sollution gives an error:
>
> Unexpected error: 'Host' object has no attribute 'setupnetworks'
>
> I'm using oVirt 3.6
>
And what version of the Python SDK? Support for "setupnetworks" was
added in 3.6.0.0, make sure you have at least that version.
--
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