Re: [ovirt-users] Ovirt Python SDK adding a directlun

2014-05-09 Thread Juan Hernandez
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  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 
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/
>>>
>>> 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
>> Users@ovirt.org
>> 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
Users@ovirt.org
http://lists.ovi

Re: [ovirt-users] Ovirt Python SDK adding a directlun

2014-05-09 Thread Juan Hernandez
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.

>> On 8 May 2014, at 18:05, Juan Hernandez  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 
>>>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/
>>
>> 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
> Users@ovirt.org
> 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
Users@ovirt.org
http://lists.ovirt.org/mailman/listinfo/users


Re: [ovirt-users] Ovirt Python SDK adding a directlun

2014-05-08 Thread Gary Lloyd
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

> On 8 May 2014, at 18:05, Juan Hernandez  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 
>>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/
> 
> 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
Users@ovirt.org
http://lists.ovirt.org/mailman/listinfo/users


Re: [ovirt-users] Ovirt Python SDK adding a directlun

2014-05-08 Thread Juan Hernandez
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 
> 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/

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
Users@ovirt.org
http://lists.ovirt.org/mailman/listinfo/users


[ovirt-users] Ovirt Python SDK adding a directlun

2014-05-08 Thread Gary Lloyd
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