def test_add_quota_cluster_limits(engine_api, ost_dc_name): datacenters_service = engine_api.system_service().data_centers_service() datacenter = datacenters_service.list(search='name=%s' % ost_dc_name)[0] datacenter_service = datacenters_service.data_center_service(datacenter.id) quotas_service = datacenter_service.quotas_service() quotas = quotas_service.list() quota = next((q for q in quotas if q.name == DC_QUOTA_NAME), None) quota_service = quotas_service.quota_service(quota.id) quota_cluster_limits_service = quota_service.quota_cluster_limits_service() assert quota_cluster_limits_service.add( types.QuotaClusterLimit(vcpu_limit=20, memory_limit=10000.0))
def add_quota_cluster_limits(api): datacenters_service = api.system_service().data_centers_service() datacenter = datacenters_service.list(search='name=%s' % DC_NAME)[0] datacenter_service = datacenters_service.data_center_service(datacenter.id) quotas_service = datacenter_service.quotas_service() quotas = quotas_service.list() quota = next((q for q in quotas if q.name == DC_QUOTA_NAME), None) quota_service = quotas_service.quota_service(quota.id) quota_cluster_limits_service = quota_service.quota_cluster_limits_service() nt.assert_true( quota_cluster_limits_service.add( types.QuotaClusterLimit(vcpu_limit=20, memory_limit=10000.0)))
def main(): argument_spec = ovirt_full_argument_spec( state=dict( choices=['present', 'absent'], default='present', ), id=dict(default=None), name=dict(required=True), data_center=dict(required=True), description=dict(default=None), cluster_threshold=dict(default=None, type='int', aliases=['cluster_soft_limit']), cluster_grace=dict(default=None, type='int', aliases=['cluster_hard_limit']), storage_threshold=dict(default=None, type='int', aliases=['storage_soft_limit']), storage_grace=dict(default=None, type='int', aliases=['storage_hard_limit']), clusters=dict(default=[], type='list'), storages=dict(default=[], type='list'), ) module = AnsibleModule( argument_spec=argument_spec, supports_check_mode=True, ) check_sdk(module) try: auth = module.params.pop('auth') connection = create_connection(auth) datacenters_service = connection.system_service().data_centers_service( ) dc_name = module.params['data_center'] dc_id = getattr(search_by_name(datacenters_service, dc_name), 'id', None) if dc_id is None: raise Exception("Datacenter '%s' was not found." % dc_name) quotas_service = datacenters_service.service(dc_id).quotas_service() quotas_module = QuotasModule( connection=connection, module=module, service=quotas_service, ) state = module.params['state'] if state == 'present': ret = quotas_module.create() # Manage cluster limits: cl_limit_service = quotas_service.service( ret['id']).quota_cluster_limits_service() for cluster in module.params.get('clusters'): cl_limit_service.add(limit=otypes.QuotaClusterLimit( memory_limit=float(cluster.get('memory')), vcpu_limit=cluster.get('cpu'), cluster=search_by_name( connection.system_service().clusters_service(), cluster.get('name')), ), ) # Manage storage limits: sd_limit_service = quotas_service.service( ret['id']).quota_storage_limits_service() for storage in module.params.get('storages'): sd_limit_service.add(limit=otypes.QuotaStorageLimit( limit=storage.get('size'), storage_domain=search_by_name( connection.system_service().storage_domains_service(), storage.get('name')), )) elif state == 'absent': ret = quotas_module.remove() module.exit_json(**ret) except Exception as e: module.fail_json(msg=str(e), exception=traceback.format_exc()) finally: connection.close(logout=auth.get('token') is None)