[ovirt-users] [ovirt-shell] update hostnic/nic ???
Juan Hernández
jhernand at redhat.com
Wed Jan 20 08:06:55 EST 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