On 05/09/2014 10:31 AM, Juan Hernandez wrote: > On 05/08/2014 11:37 PM, Gary Lloyd wrote: >> When I add direct Luns this way the size shows as <1 on the GUI and 0 when >> called from the rest api. All the other items mentioned are not present. >> >> Thanks >> > > Ah, I understand. This is probably related to the fact that you aren't > creating a storage domain, only the storage connection. This should work > correctly, but I guess that either the GUI or the backend aren't > completely prepared for this. I'm checking. >
I think this is a bug, and I didn't find any way to workaround it other than creating the LUN using the GUI instead of the RESTAPI. I opened the following BZ to track it: https://bugzilla.redhat.com/1096217 >>> On 8 May 2014, at 18:05, Juan Hernandez <[email protected]> wrote: >>> >>>> 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. >> _______________________________________________ >> Users mailing list >> [email protected] >> http://lists.ovirt.org/mailman/listinfo/users >> > > -- 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. _______________________________________________ Users mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/users

