[ovirt-users] how update the network name of a vmnic with API SDK python ?

Dominik Holler dholler at redhat.com
Wed Mar 21 07:19:38 UTC 2018


On Wed, 21 Mar 2018 05:30:25 +0000
Nicolas Vaye <nicolas.vaye at 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 at internal<mailto:username='admin at 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 at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/users



More information about the Users mailing list