Skip to content
Snippets Groups Projects

Fix: Missing quota implementation

Merged Petar Hristov requested to merge Issue/2072-wormResourceType into master
2 files
+ 34
15
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -3,7 +3,6 @@ using Coscine.Action.EventArgs;
@@ -3,7 +3,6 @@ using Coscine.Action.EventArgs;
using Coscine.Api.Admin.ParameterObjects;
using Coscine.Api.Admin.ParameterObjects;
using Coscine.Api.Admin.ReturnObjects;
using Coscine.Api.Admin.ReturnObjects;
using Coscine.ApiCommons;
using Coscine.ApiCommons;
using Coscine.Configuration;
using Coscine.Database.DataModel;
using Coscine.Database.DataModel;
using Coscine.Database.Models;
using Coscine.Database.Models;
using Coscine.Logging;
using Coscine.Logging;
@@ -98,11 +97,19 @@ namespace Coscine.Api.Admin.Controllers
@@ -98,11 +97,19 @@ namespace Coscine.Api.Admin.Controllers
select projectResource).Any() &&
select projectResource).Any() &&
resource.TypeId == resourceType.Id);
resource.TypeId == resourceType.Id);
var allocated = resources.Sum(resource => ResourceTypeFactory
var allocated = resources.Sum(resource =>
.Instance
{
.GetResourceType(resource)
// Linked has no quota.
.GetResourceQuotaAvailable(resource.Id.ToString(), _resourceModel.GetResourceTypeOptions(resource.Id))
var rt = ResourceTypeFactory.Instance.GetResourceType(resource);
.Result);
if (rt.GetResourceTypeInformation().Result.IsQuotaAvailable)
 
{
 
return rt.GetResourceQuotaAvailable(resource.Id.ToString(), _resourceModel.GetResourceTypeOptions(resource.Id)).Result;
 
}
 
else
 
{
 
return 0;
 
}
 
});
return (int)allocated;
return (int)allocated;
}
}
@@ -121,11 +128,23 @@ namespace Coscine.Api.Admin.Controllers
@@ -121,11 +128,23 @@ namespace Coscine.Api.Admin.Controllers
select projectResource).Any() &&
select projectResource).Any() &&
resource.TypeId == resourceType.Id);
resource.TypeId == resourceType.Id);
var used = Math.Ceiling(resources.Sum(resource => ResourceTypeFactory
var used = Math.Ceiling(
.Instance
resources.Sum(
.GetResourceType(resource)
resource =>
.GetResourceQuotaUsed(resource.Id.ToString(), _resourceModel.GetResourceTypeOptions(resource.Id))
{
.Result / _oneGb));
// Linked has no quota.
 
var rt = ResourceTypeFactory.Instance.GetResourceType(resource);
 
if (rt.GetResourceTypeInformation().Result.IsQuotaAvailable)
 
{
 
return rt.GetResourceQuotaUsed(resource.Id.ToString(), _resourceModel.GetResourceTypeOptions(resource.Id)).Result / _oneGb;
 
}
 
else
 
{
 
return 0;
 
}
 
}
 
)
 
);
return (int)used;
return (int)used;
}
}
@@ -170,7 +189,7 @@ namespace Coscine.Api.Admin.Controllers
@@ -170,7 +189,7 @@ namespace Coscine.Api.Admin.Controllers
Quotas = quotas.Select(x => new ProjectQuotaObject
Quotas = quotas.Select(x => new ProjectQuotaObject
{
{
QuotaId = x.RelationId,
QuotaId = x.RelationId,
ResourceType = _resourceTypeModel.GetById(x.ResourceTypeId).DisplayName,
ResourceType = _resourceTypeModel.GetById(x.ResourceTypeId).SpecificType,
Quota = x.Quota,
Quota = x.Quota,
MaxQuota = x.MaxQuota,
MaxQuota = x.MaxQuota,
Used = CalculateUsedForAll(_resourceTypeModel.GetById(x.ResourceTypeId), project.Id),
Used = CalculateUsedForAll(_resourceTypeModel.GetById(x.ResourceTypeId), project.Id),
Loading