
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] https://bugzilla.redhat.com/show_bug.cgi?id=838516 https://bugzilla.redhat.com/show_bug.cgi?id=807949 [2] http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Virtualization/3.0/html... On 07/09/2012 08:44 AM, Rahul Upadhyaya wrote:
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@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@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@gmail.com <mailto:rakrup@gmail.com>> Cc: users@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@ovirt.org <mailto:Users@ovirt.org> > http://lists.ovirt.org/mailman/listinfo/users
--
Michael Pasternak RedHat, ENG-Virtualization R&D
-- Regards, Rahul =======================================================
-- Regards, Rahul =======================================================
-- Michael Pasternak RedHat, ENG-Virtualization R&D