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

Juan Hernández jhernand at redhat.com
Wed Jan 20 13:06:55 UTC 2016


On 01/20/2016 02:03 PM, Bloemen, Jurriën wrote:
> 
> On 20-01-16 12:24, Juan Hernández wrote:
>> 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.
>>
> I have ovirt-engine-sdk-python-3.6.0.0-0.16.20150713.git8c2cf30.el6.noarch
> 

Then you need to update. That is a pre-release, and it doesn't contain
the "setupnetworks" support.

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