On 04/29/2012 10:44 AM, Itzik Brown wrote:
I used the repository git://gerrit.ovirt.org/ovirt-engine-sdk
The test script :
from ovirtsdk.api import API
from ovirtsdk.xml import params
OVIRT_ENGINE_SERVER = 'server1'
OVIRT_ENGINE_PORT = '8080'
OVIRT_ENGINE_USER = 'admin@internal'
OVIRT_ENGINE_PASSWORD = 'password'
url = 'http://%s:%s' % (OVIRT_ENGINE_SERVER, OVIRT_ENGINE_PORT)
api = API(url = url, username = OVIRT_ENGINE_USER , password = OVIRT_ENGINE_PASSWORD)
host = 'host1'
if_name = 'eth4'
net_name = 'net1'
nic = api.hosts.get(name=host).nics.get(name=if_name)
net = params.Network(name=net_name)
act = params.Action(network=net)
Itzik, I think there is nothing wrong with the SDK or with your code.
The issue is deeper in the restapi or the backend (depends on how you
look at it). I compared what restapi and webadmin do:
* Both create an instance of the parameters using the constructor:
AttachNetworkToVdsParameters(Guid vdsId, network net,
* Webadmin passes an instance of the network class where the status is 0
(non operational), even if the status of the network is 1 (operational).
This might be a bug, but a bug that combined with the backend behavior
makes the operation work.
* The rest API passes an instance of the network class where the status
is 1 (operational). This, combined with the backend behavior, makes the
* In the backend, if the status of the network is operational, the
detach is performed only if the network is not in use in the cluster,
which will always be true.
I think that neither the webadmin nor the restapi should pass anything
but the network name (or id) and the backend should ignore any
additional information if passed. In addition the backend should allow
the detach operation even if the network is in use in the cluster.
Livnat, Michael, Einav, any comments?