How to manage to update the Quota limits parameters (cpu, memory and disk)

Hello there, I want to update the quota limit parameters for vcpu, memory and disk, but I dont find the way. I manage to get the actual values but I am unable to manage how to update this values. I am doing the following (I ommit the imports and conection stuff): system_service = connection.system_service() data_centers_service = system_service.data_centers_service() data_center = data_centers_service.list(search='name=Prueba2')[0] data_center_service = data_centers_service.data_center_service(id= data_center.id) quotas_service = data_center_service.quotas_service() quota = quotas_service.list()[0] quota_service = quotas_service.quota_service(id=quota.id) quota_cluster_limits_service = quota_service.quota_cluster_limits_service() quotaclusterlimit = quota_cluster_limits_service.list()[0] quota_storage_limits_service = quota_service.quota_storage_limits_service() quotastoragelimit = quota_storage_limits_service.list()[0] if after that I print the following: quotaclusterlimit.memory_limit quotaclusterlimit.vcpu_limit quotastoragelimit.limit i see the actual values of the limits, but, I m not able to update that values (I have been testing on how to do it). It seems that the only method that let you update anything on a quota is using: quota_service.add(quota=...) I start creating a new quota object with these new limits by doing the following: new_quotastoragelimit = ovirtsdk4.types.QuotaStorageLimit(limit=100) new_quotaclusterlimit = ovirtsdk4.types.QuotaClusterLimit(memory_limit=100,vcpu_limit=10) new_quota = ovirtsdk4.types.Quota(quota_cluster_limits=new_quotaclusterlimit, quota_storage_limits=new_quotastoragelimit) quota_service.update(quota=new_quota) I have directly tried to edit the printed values directly and then doing the update but I got nothing (got event in the engine but the limit did not change) quotaclusterlimit.memory_limit =100 quotaclusterlimit.vcpu_limit = 10 quotastoragelimit.limit = 100 quota_service.update(quota=quota) # updating quota with itself I suppose that there would be a way on how to this, so if you can help, i will really appreciate you. Thanks for all in advance to all Manuel

On 02/17/2017 01:21 PM, Manuel Luis Aznar wrote:
Hello there,
I want to update the quota limit parameters for vcpu, memory and disk, but I dont find the way.
I manage to get the actual values but I am unable to manage how to update this values.
I am doing the following (I ommit the imports and conection stuff):
system_service = connection.system_service()
data_centers_service = system_service.data_centers_service()
data_center = data_centers_service.list(search='name=Prueba2')[0]
data_center_service = data_centers_service.data_center_service(id=data_center.id <http://data_center.id>)
quotas_service = data_center_service.quotas_service()
quota = quotas_service.list()[0]
quota_service = quotas_service.quota_service(id=quota.id <http://quota.id>)
quota_cluster_limits_service = quota_service.quota_cluster_limits_service()
quotaclusterlimit = quota_cluster_limits_service.list()[0]
quota_storage_limits_service = quota_service.quota_storage_limits_service()
quotastoragelimit = quota_storage_limits_service.list()[0]
if after that I print the following: quotaclusterlimit.memory_limit quotaclusterlimit.vcpu_limit quotastoragelimit.limit
i see the actual values of the limits, but, I m not able to update that values (I have been testing on how to do it). It seems that the only method that let you update anything on a quota is using:
quota_service.add(quota=...)
I start creating a new quota object with these new limits by doing the following:
new_quotastoragelimit = ovirtsdk4.types.QuotaStorageLimit(limit=100) new_quotaclusterlimit = ovirtsdk4.types.QuotaClusterLimit(memory_limit=100,vcpu_limit=10)
new_quota = ovirtsdk4.types.Quota(quota_cluster_limits=new_quotaclusterlimit, quota_storage_limits=new_quotastoragelimit)
quota_service.update(quota=new_quota)
I have directly tried to edit the printed values directly and then doing the update but I got nothing (got event in the engine but the limit did not change)
quotaclusterlimit.memory_limit =100 quotaclusterlimit.vcpu_limit = 10 quotastoragelimit.limit = 100 quota_service.update(quota=quota) # updating quota with itself
I suppose that there would be a way on how to this, so if you can help, i will really appreciate you.
Thanks for all in advance to all Manuel
The API doesn't currently have a method to update a quota limit, so you will have to remove the existing one and add a new one. For example, if you want to change the storage quota of the 'mydata' storage domain to 100 GiB, you can do something like this: ---8<--- # Find the reference to the root of services: system_service = connection.system_service() # Find the data center and the service that manages it: dcs_service = system_service.data_centers_service() dc = dcs_service.list(search='name=mydc')[0] dc_service = dcs_service.data_center_service(dc.id) # Find the storage domain and the service that manages it: sds_service = system_service.storage_domains_service() sd = sds_service.list(search='name=mydata')[0] sd_service = sds_service.storage_domain_service(sd.id) # Find the quota and the service that manages it. Note that the service # that manages the quota doesn't support search, so we need to retrieve # all the quotas and filter explicitly. If the quota doesn't exist, # create it. quotas_service = dc_service.quotas_service() quotas = quotas_service.list() quota = next( (q for q in quotas if q.name == 'myquota'), None ) if quota is None: quota = quotas_service.add( quota=types.Quota( name='myquota', description='My quota', cluster_hard_limit_pct=20, cluster_soft_limit_pct=80, storage_hard_limit_pct=20, storage_soft_limit_pct=80 ) ) quota_service = quotas_service.quota_service(quota.id) # Find the quota limits for the storage domain that we are interested # on. If that limit exists we will delete it, and create it again with # the desired limit, in this example it will be 100 GiB. limits_service = quota_service.quota_storage_limits_service() limits = limits_service.list() limit = next( (l for l in limits if l.id == sd.id), None ) if limit is not None: limit_service = limits_service.limit_service(limit.id) limit_service.remove() limit = limits_service.add( limit=types.QuotaStorageLimit( name='mydatalimit', description='My storage domain limit', limit=100, storage_domain=types.StorageDomain( id=sd.id ) ), ) --->8---
participants (2)
-
Juan Hernández
-
Manuel Luis Aznar