Hi Rahul,
I've found the problem, api incorrectly describes add() parameters [1],
this could be done via update(), see [2] for more details.
[1]
Hi Micheal,
After updating the sdk I see change in documentation for hostnic addition and see bonding
as a optional parameter, but I dont see it behaving it that way. When I try
running the code to create and add NIC with Static IP assigned, I am facing same error
where it is asking for bonding parameter and failing due to the same.
Also, I made sure I removed the previous sdk and ensured my program is using the latest
sdk.
The error that I get is mentioned below :
*/Traceback (most recent call last):/*
*/ File "rtest.py", line 51, in <module>/*
*/ host.nics.add(params.HostNIC(name = new_hostnic_name, network=network,
boot_protocol = 'static', ip= new_ip))/*
*/ File "/usr/lib/python2.6/site-packages/ovirtsdk/infrastructure/brokers.py",
line 2393, in add/*
*/ body=ParseHelper.toXml(hostnic))/*
*/ File "/usr/lib/python2.6/site-packages/ovirtsdk/infrastructure/proxy.py",
line 117, in add/*
*/ return self.request('POST', url, body, headers)/*
*/ File "/usr/lib/python2.6/site-packages/ovirtsdk/infrastructure/proxy.py",
line 128, in request/*
*/ last=last)/*
*/ File "/usr/lib/python2.6/site-packages/ovirtsdk/infrastructure/proxy.py",
line 154, in __doRequest/*
*/ raise RequestError, response/*
*/ovirtsdk.infrastructure.errors.RequestError:/*
*/status: 400/*
*/reason: Bad Request/*
*/detail: HostNIC [bonding.slaves.id <
http://bonding.slaves.id>|name] required for
add/*
*/
/*
*/
/*
The piece of code that I am using to do this is :
/hostid = 0/
/address = ip_start/
/new_hostnic_name = 'em3.'+str(vlanId)/
/for host in hosts :/
/ if host.cluster.id <
http://host.cluster.id> == cluster.id
<
http://cluster.id> :/
/ hostid = hostid + 1/
/ add_splits = address.split('.')/
/ add_splits[3] = str(200 + hostid)/
/ address= '.'.join(add_splits)/
/ new_ip = params.IP(address = address , netmask = '255.255.255.0' )/
/ *host.nics.add(params.HostNIC(name = new_hostnic_name, network=network,
boot_protocol = 'static', ip= new_ip))*/
/
/
/ host.commitnetconfig()/
/
/
My requirement is that I do not want to using bonding while addition of a new NIC to the
host, Also , I want to add the ip address to the new NIC at the time of creation
itself.
Regards,
Rahul.
On Fri, Jul 6, 2012 at 12:33 PM, Rahul Upadhyaya <rakrup(a)gmail.com
<mailto:rakrup@gmail.com>> wrote:
Thanks Michael,
I had a older version of the python-binding which had bonding in #1 as a compulsory
parameter... Seeing your options I updated the sdk and now the error is resolved. I
see bonding as an optional param.
Regards,
Rahul.
---------- Forwarded message ----------
From: *Michael Pasternak* <mpastern(a)redhat.com
<mailto:mpastern@redhat.com>>
Date: Thu, Jul 5, 2012 at 7:22 PM
Subject: Re: [Users] HostNic Addition with IP Address
To: Rahul Upadhyaya <rakrup(a)gmail.com <mailto:rakrup@gmail.com>>
Cc: users(a)ovirt.org <mailto:users@ovirt.org>
Hi Rahul,
#1 is the right place for doing this, see method __doc__ [1]
#2 used for attaching network to NIC, see __doc__ is [2]
* note all methods in sdk well documented describing what
parameters-holder to use and how to fill it.
[1]
'''
@type HostNIC:
@param hostnic.network.id <
http://hostnic.network.id>|name: string
@param hostnic.name <
http://hostnic.name>: string
[@param hostnic.bonding.slaves.host_nic: collection]
{
[@ivar host_nic.id <
http://host_nic.id>|name: string]
}
[@param hostnic.bonding.options.option: collection]
{
[@ivar option.name <
http://option.name>: string]
[@ivar option.value: string]
[@ivar type: string]
}
[@param hostnic.ip.gateway: string]
[@param hostnic.boot_protocol: string]
[@param hostnic.mac: string]
[@param hostnic.ip.address: string]
[@param hostnic.ip.netmask: string]
@return HostNIC:
'''
[2]
'''
@type Action:
@param action.network.id <
http://action.network.id>|name: string
[@param action.async: boolean]
[@param action.grace_period.expiry: long]
@return Response:
'''
On 07/05/2012 03:00 PM, Rahul Upadhyaya wrote:
> Hi Folks,
>
> I am facing issues while adding NIC with Static I.P. to host
using the oVirt Python-Bindings. There are two api's
>
> 1) HostNics.add :Here it requires binding param for
interface bonding as a compulsory param. I dont want to bond more than one interfaces for
a
network
> while creating network each time.
>
> 2) HostNic.attach: This lets me attach the NIC but does not
let me put static IP address to it as soon as I add it. I am using a workaround of
updating
> the NIC with the IP information, but it requires me to put all the hosts on
maintenance and shut-down all the running VMs which again is not the best way of doing
it.
>
>
> Is it not supported by the API that at the time of addition of the hostNIC we
can specify the IP address or is it something that I am missing ?
> Also,I see that this operation is supported from the manager UI .
>
>
> --
> Regards,
> Rahul
> =======================================================
>
>
>
> _______________________________________________
> Users mailing list
> Users(a)ovirt.org <mailto:Users@ovirt.org>
>
http://lists.ovirt.org/mailman/listinfo/users
--
Michael Pasternak
RedHat, ENG-Virtualization R&D
--
Regards,
Rahul
=======================================================
--
Regards,
Rahul
=======================================================