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 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 == 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=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 = 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* ---------------------------------- IT Services Keele University -----------------------------------
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users