[ovirt-users] Ovirt Python SDK adding a directlun

Juan Hernandez jhernand at redhat.com
Thu May 8 13:05:03 EDT 2014


On 05/08/2014 05:04 PM, Gary Lloyd wrote:
> 
> We are working on a script so that we can create an ISCSI LUN on our SAN
> and then directly assign it to a vm.
> 
> We have been able to get it to work but with one small annoyance. I
> can't figure out how to populate size,serial,vendor_id and product_id
> via the api. Would anyone be able to point me in the right direction ?
> code (see def add_disk):
> 
> def get_clusterid(cluster_name):
>     cluster = ovirt_api.clusters.get(cluster_name)
>     try:
>         return cluster.id <http://cluster.id>
>     except:
>         logging.error('the cluster: %s does not appear to exist' %
> cluster_name )
>         sys.exit(1)
>     
> def nominate_host(cluster_id):
>     for host in ovirt_api.hosts.list():
>         if host.cluster.id <http://host.cluster.id> == cluster_id and
> host.status.state == 'up':
>             host.iscsidiscover
>             return host
>     logging.error('could not find a suitable host to nominate in cluster:')
>     sys.exit(1)
> 
> 
> def iscsi_discover_and_login(cluster,target,portal,chap_user,chap_pass):
>     clusterid=get_clusterid(cluster)
>     host=nominate_host(clusterid)
>     
>     iscsidet = params.IscsiDetails()
>     iscsidet.address=portal
>     iscsidet.username=chap_user
>     iscsidet.password=chap_pass
>     iscsidet.target=target
>     
>     host.iscsidiscover(params.Action(iscsi=iscsidet))
>     result = host.iscsilogin(params.Action(iscsi=iscsidet))
>     
>     if result.status.state == 'complete':
>     
>         storecon = params.StorageConnection()
>         storecon.address=portal
>         storecon.type_='iscsi'
>         storecon.port=3260
>         storecon.target=target
>         storecon.username=chap_user
>         storecon.password=chap_pass
>         
>         ovirt_api.storageconnections.add(storecon)
> 
>     return result
>     # error checking code needs to be added to this function
>     
> def add_disk(vm_name,wwid,target,size,portal):
>         
>     logunit = params.LogicalUnit()
>     logunit.id <http://logunit.id>=wwid
>     logunit.vendor_id='EQLOGIC'
>     logunit.product_id='100E-00'
>     logunit.port=3260
>     logunit.lun_mapping=0
>     logunit.address=portal
>     logunit.target=target
>     logunit.size=size * 1073741824
>     
>     stor = params.Storage(logical_unit=[logunit])
>     stor.type_='iscsi'
>     
>     
>     disk = params.Disk()
>     disk.alias = 'vm-' + vm_name
>     disk.name <http://disk.name> = disk.alias
>     disk.interface = 'virtio'
>     disk.bootable = True
>     disk.type_ = 'iscsi'
>     disk.format='raw'
>     disk.set_size(size * 1073741824)
>     #disk.size=size * 1073741824
>     #disk.active=True
>     
>     disk.lun_storage=stor
>        
>     try:
>         result = ovirt_api.disks.add(disk)
>     except:
>         logging.error('Could not add disk')
>         sys.exit(1)
>     
>     attachdisk=ovirt_api.disks.get(disk.alias)
>     attachdisk.active = True
>         
>     try:
>         ovirt_api.vms.get(vm_name).disks.add(attachdisk)
>     except:
>         logging.error('Could attach disk to vm')
>         sys.exit(1)
>     
>     return result
> 
> 
> 
> If we could just get the size to show correctly that would be enough,
> the others don't really matter to me.
> 
> 
> Thanks
> 
> /Gary Lloyd/

For a direct LUN disk all these values are ready only. Why do you need
to change them?

-- 
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.


More information about the Users mailing list