how update the network name of a vmnic with API SDK python ?

Hi, i want to change the network name of the existing nic for a VM with python SDK API ? Can i have some help please ? the VM name is testnico the nic name is nic1 the new network name is vlan_NEW and here is the source file written by me (which doesn't work) : #!/usr/bin/env python # -*- coding: utf-8 -*- import logging import time import ovirtsdk4 as sdk import ovirtsdk4.types as types logging.basicConfig(level=logging.DEBUG, filename='example.log') # This example will connect to the server and start a virtual machine # with cloud-init, in order to automatically configure the network and # the password of the `root` user. # Create the connection to the server: connection = sdk.Connection( url='https://ocenter.province-sud.prod/ovirt-engine/api', username='admin@internal<mailto:username='admin@internal>', password='xxxx', ca_file='CA_ocenter.pem', debug=True, log=logging.getLogger(), ) # Find the virtual machine: vms_service = connection.system_service().vms_service() vm = vms_service.list(search = 'name=testnico')[0] # Find the service that manages the virtual machine: vm_service = vms_service.vm_service(vm.id) # In order to specify the network that the new interface will be # connected to we need to specify the identifier of the virtual network # interface profile, so we need to find it: profiles_service = connection.system_service().vnic_profiles_service() profile_id = None for profile in profiles_service.list(): print "profile "+profile.name+","+profile.id if profile.name == 'vlan_NEW': profile_id = profile.id break # Locate the service that manages the network interface cards of the # virtual machine: nics_service = vm_service.nics_service() #print nics_service # Find the nic1 of the VM for nic in nics_service.list(): print "nic "+nic.name+","+nic.id+','+nic.vnic_profile.id if nic.name == 'nic1': nic_service = nics_service.nic_service(nic.id) break print "nic_service nic1 ==>"+str(nic_service) #pprint(vars(nic_service.network_filter_parameters_service().parameter_service())) #nic_service.vnic_profile.id=profile_id #nic_service.update() nic_service.update( vnic_profile=types.VnicProfile( id=profile_id, ) ) # Close the connection to the server: connection.close() The result is : Traceback (most recent call last): File "start_vm_with_cloud_init.py", line 85, in <module> id=profile_id, TypeError: update() got an unexpected keyword argument 'vnic_profile' How can i do ? Thanks. Nicolas VAYE

On Wed, 21 Mar 2018 05:30:25 +0000 Nicolas Vaye <nicolas.vaye@province-sud.nc> wrote:
Hi,
i want to change the network name of the existing nic for a VM with python SDK API ? Can i have some help please ?
the VM name is testnico the nic name is nic1 the new network name is vlan_NEW
and here is the source file written by me (which doesn't work) :
#!/usr/bin/env python # -*- coding: utf-8 -*-
import logging import time
import ovirtsdk4 as sdk import ovirtsdk4.types as types
logging.basicConfig(level=logging.DEBUG, filename='example.log')
# This example will connect to the server and start a virtual machine # with cloud-init, in order to automatically configure the network and # the password of the `root` user.
# Create the connection to the server: connection = sdk.Connection( url='https://ocenter.province-sud.prod/ovirt-engine/api', username='admin@internal<mailto:username='admin@internal>', password='xxxx', ca_file='CA_ocenter.pem', debug=True, log=logging.getLogger(), )
# Find the virtual machine: vms_service = connection.system_service().vms_service() vm = vms_service.list(search = 'name=testnico')[0]
# Find the service that manages the virtual machine: vm_service = vms_service.vm_service(vm.id)
# In order to specify the network that the new interface will be # connected to we need to specify the identifier of the virtual network # interface profile, so we need to find it: profiles_service = connection.system_service().vnic_profiles_service() profile_id = None for profile in profiles_service.list(): print "profile "+profile.name+","+profile.id if profile.name == 'vlan_NEW': profile_id = profile.id break
# Locate the service that manages the network interface cards of the # virtual machine: nics_service = vm_service.nics_service()
#print nics_service
# Find the nic1 of the VM for nic in nics_service.list(): print "nic "+nic.name+","+nic.id+','+nic.vnic_profile.id if nic.name == 'nic1': nic_service = nics_service.nic_service(nic.id) break
print "nic_service nic1 ==>"+str(nic_service) #pprint(vars(nic_service.network_filter_parameters_service().parameter_service()))
#nic_service.vnic_profile.id=profile_id #nic_service.update()
nic_service.update( vnic_profile=types.VnicProfile( id=profile_id, ) )
nic_service.update( types.Nic( vnic_profile=types.VnicProfile( id=profile_id, ) ) )
# Close the connection to the server: connection.close()
The result is :
Traceback (most recent call last): File "start_vm_with_cloud_init.py", line 85, in <module> id=profile_id, TypeError: update() got an unexpected keyword argument 'vnic_profile'
How can i do ?
update() expects a parameter of type types.Nic, which has the parameter vnic_profile.
Thanks.
Nicolas VAYE _______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users

Thank you Dominik, it works. -------- Message initial -------- Date: Wed, 21 Mar 2018 08:19:38 +0100 Objet: Re: [ovirt-users] how update the network name of a vmnic with API SDK python ? Cc: users@ovirt.org <users@ovirt.org<mailto:%22users@ovirt.org%22%20%3cusers@ovirt.org%3e>> À: Nicolas Vaye <nicolas.vaye@province-sud.nc<mailto:Nicolas%20Vaye%20%3cnicolas.vaye@province-sud.nc%3e>> De: Dominik Holler <dholler@redhat.com<mailto:Dominik%20Holler%20%3cdholler@redhat.com%3e>> On Wed, 21 Mar 2018 05:30:25 +0000 Nicolas Vaye <nicolas.vaye@province-sud.nc<mailto:nicolas.vaye@province-sud.nc>> wrote: Hi, i want to change the network name of the existing nic for a VM with python SDK API ? Can i have some help please ? the VM name is testnico the nic name is nic1 the new network name is vlan_NEW and here is the source file written by me (which doesn't work) : #!/usr/bin/env python # -*- coding: utf-8 -*- import logging import time import ovirtsdk4 as sdk import ovirtsdk4.types as types logging.basicConfig(level=logging.DEBUG, filename='example.log') # This example will connect to the server and start a virtual machine # with cloud-init, in order to automatically configure the network and # the password of the `root` user. # Create the connection to the server: connection = sdk.Connection( url='https://ocenter.province-sud.prod/ovirt-engine/api', username='admin@internal<mailto:username='admin@internal>', password='xxxx', ca_file='CA_ocenter.pem', debug=True, log=logging.getLogger(), ) # Find the virtual machine: vms_service = connection.system_service().vms_service() vm = vms_service.list(search = 'name=testnico')[0] # Find the service that manages the virtual machine: vm_service = vms_service.vm_service(vm.id) # In order to specify the network that the new interface will be # connected to we need to specify the identifier of the virtual network # interface profile, so we need to find it: profiles_service = connection.system_service().vnic_profiles_service() profile_id = None for profile in profiles_service.list(): print "profile "+profile.name+","+profile.id if profile.name == 'vlan_NEW': profile_id = profile.id break # Locate the service that manages the network interface cards of the # virtual machine: nics_service = vm_service.nics_service() #print nics_service # Find the nic1 of the VM for nic in nics_service.list(): print "nic "+nic.name+","+nic.id+','+nic.vnic_profile.id if nic.name == 'nic1': nic_service = nics_service.nic_service(nic.id) break print "nic_service nic1 ==>"+str(nic_service) #pprint(vars(nic_service.network_filter_parameters_service().parameter_service())) #nic_service.vnic_profile.id=profile_id #nic_service.update() nic_service.update( vnic_profile=types.VnicProfile( id=profile_id, ) ) nic_service.update( types.Nic( vnic_profile=types.VnicProfile( id=profile_id, ) ) ) # Close the connection to the server: connection.close() The result is : Traceback (most recent call last): File "start_vm_with_cloud_init.py", line 85, in <module> id=profile_id, TypeError: update() got an unexpected keyword argument 'vnic_profile' How can i do ? update() expects a parameter of type types.Nic, which has the parameter vnic_profile. Thanks. Nicolas VAYE _______________________________________________ Users mailing list Users@ovirt.org<mailto:Users@ovirt.org> http://lists.ovirt.org/mailman/listinfo/users
participants (2)
-
Dominik Holler
-
Nicolas Vaye