[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