On 08/05/2016 08:08 PM, Huan He (huhe) wrote:
Hi,
I tried the host nic and bond sample code
in
http://www.ovirt.org/develop/api/pythonapi/. In gui, I am able to
create bond and vlan network without issues.
here is my code
if __name__ == '__main__':
url = 'https://huhe-rhev-m.cisco.com/ovirt-engine/api'
usr = 'admin@internal'
pwd = 'nbv12345'
ca_file = '/home/huhe/workspace/ansible/crt/ca.der'
api = API(url=url, username=usr, password=pwd, ca_file=ca_file,
debug=True)
print api.get_product_info().name
nic0 = params.HostNIC(name = 'enp6s0', network = params.Network(),
boot_protocol='none', ip=params.IP(address='', netmask='',
gateway=''))
nic1 = params.HostNIC(name = 'enp7s0', network = params.Network(),
boot_protocol='none', ip=params.IP(address='', netmask='',
gateway=''))
nic2 = params.HostNIC(name = 'enp8s0', network = params.Network(),
boot_protocol='none', ip=params.IP(address='', netmask='',
gateway=''))
nic3 = params.HostNIC(name = 'enp9s0', network = params.Network(),
boot_protocol='none', ip=params.IP(address='', netmask='',
gateway=''))
bond = params.Bonding(
slaves = params.Slaves(host_nic = [ nic0, nic1, nic2, nic3 ]),
options = params.Options(
option = [
params.Option(name = 'miimon', value =
'100'),
params.Option(name = 'mode', value = '1'),
params.Option(name = 'primary', value =
'enp6s0')]
)
)
managementNetwork = params.HostNIC(network = params.Network(name =
'ovirtmgmt'),
name = 'bond0',
boot_protocol = 'static',
ip = params.IP(
address = '20.200.10.172',
netmask = '255.255.255.0',
gateway = '20.200.10.254'),
override_configuration = 1,
bonding = bond)
networkName = 'my_vm_db'
clusterNetwork = api.clusters.get('my_cluster').networks.get(name =
networkName)
vlanNetwork = params.HostNIC(network = params.Network(name =
networkName), name = "bond0.%s" % clusterNetwork.vlan.id)
host = api.hosts.get('host-172')
host.nics.setupnetworks(params.Action(force = 0,
check_connectivity = 1,
host_nics =
params.HostNics(host_nic = [ managementNetwork,
vlanNetwork])))
api.disconnect()
The following is the console output
> <action>
> <host_nics>
> <host_nic>
> <name>bond0</name>
> <network>
> <name>ovirtmgmt</name>
> </network>
> <ip netmask="255.255.255.0"
gateway="20.200.10.254"
address="20.200.10.172"/>
> <bonding>
> <options>
> <option name="miimon" value="100"/>
> <option name="mode" value="1"/>
> <option name="primary"
value="enp6s0"/>
> </options>
> <slaves>
> <host_nic>
> <name>enp6s0</name>
> <network/>
> <ip netmask="" gateway=""
address=""/>
> <boot_protocol>none</boot_protocol>
> </host_nic>
> <host_nic>
> <name>enp7s0</name>
> <network/>
> <ip netmask="" gateway=""
address=""/>
> <boot_protocol>none</boot_protocol>
> </host_nic>
> <host_nic>
> <name>enp8s0</name>
> <network/>
> <ip netmask="" gateway=""
address=""/>
> <boot_protocol>none</boot_protocol>
> </host_nic>
> <host_nic>
> <name>enp9s0</name>
> <network/>
> <ip netmask="" gateway=""
address=""/>
> <boot_protocol>none</boot_protocol>
> </host_nic>
> </slaves>
> </bonding>
> <boot_protocol>static</boot_protocol>
> <override_configuration>1</override_configuration>
> </host_nic>
> <host_nic>
> <name>bond0.101</name>
> <network>
> <name>my_vm_db</name>
> </network>
> </host_nic>
> </host_nics>
> <check_connectivity>1</check_connectivity>
> <force>0</force>
> </action>
< HTTP/1.1 404 Not Found
< Date: Fri, 05 Aug 2016 17:55:54 GMT
< Server: Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.1e-fips
< Content-Length: 0
<
* Connection #0 to host
huhe-rhev-m.cisco.com left intact
Traceback (most recent call last):
File "/home/huhe/workspace/ansible/src/ovirt_hostnic.py", line 57, in
<module>
vlanNetwork])))
File
"/usr/local/lib/python2.7/site-packages/ovirtsdk/infrastructure/brokers.py",
line 16672, in setupnetworks
headers={"Correlation-Id":correlation_id}
File
"/usr/local/lib/python2.7/site-packages/ovirtsdk/infrastructure/proxy.py",
line 122, in request
persistent_auth=self.__persistent_auth
File
"/usr/local/lib/python2.7/site-packages/ovirtsdk/infrastructure/connectionspool.py",
line 79, in do_request
persistent_auth)
File
"/usr/local/lib/python2.7/site-packages/ovirtsdk/infrastructure/connectionspool.py",
line 156, in __do_request
raise errors.RequestError(response_code, response_reason, response_body)
ovirtsdk.infrastructure.errors.RequestError:
status: 404
reason: Not Found
detail:
Any idea what is wrong? It is ovirt v3
Thanks,
Huan
<
http://www.ovirt.org/develop/api/pythonapi/><http://www.ovirt.org/d...
The method that you are using is deprecated, you should use the
Host.setupnetworks method, and the code should be similar to this:
---8<---
from ovirtsdk.api import API
from ovirtsdk.xml import params
api = API(
url='https://huhe-rhev-m.cisco.com/ovirt-engine/api';,
username='admin@internal',
password='...',
ca_file='/home/huhe/workspace/ansible/crt/ca.der',
debug=True,
)
host = api.hosts.get(name='host-172')
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="1"),
params.Option(name="miimon", value="100"),
params.Option(name="primary", value="enp6s0"),
],
),
slaves=params.Slaves(
host_nic=[
params.HostNIC(name="enp6s0"),
params.HostNIC(name="enp7s0"),
params.HostNIC(name="enp8s0"),
params.HostNIC(name="enp9s0"),
],
),
),
),
],
),
modified_network_attachments=params.NetworkAttachments(
network_attachment=[
params.NetworkAttachment(
network=params.Network(name="my_vm_db"),
host_nic=params.HostNIC(name="bond0"),
ip_address_assignments=params.IpAddressAssignments(
ip_address_assignment=[
params.IpAddressAssignment(
assignment_method="static",
ip=params.IP(
address="20.200.10.172",
netmask="255.255.255.0",
gateway="20.200.10.254",
),
),
],
),
),
],
),
),
)
api.disconnect()
--->8---
It is documented here:
https://jhernand.fedorapeople.org/ovirt-engine-api-model/model.html#servi...
--
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.