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_Virtuali...
>>>>> 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@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@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.