Skip to content
Snippets Groups Projects

Fix: Added missing database update (coscine/issues#1943)

Merged L. Ellenbeck requested to merge Hotfix/1943-updateDatabaseQuota into master
1 file
+ 35
10
Compare changes
  • Side-by-side
  • Inline
@@ -24,7 +24,7 @@ namespace Coscine.Api.Quota.Controllers
private readonly Authenticator _authenticator;
private readonly IConfiguration _configuration;
private readonly ResourceModel _resourceModel;
private readonly ResourceModel _resourceModel;
private readonly ProjectModel _projectModel;
private readonly ProjectQuotaModel _projectQuotaModel;
private readonly ProjectResourceModel _projectResourceModel;
@@ -32,7 +32,7 @@ namespace Coscine.Api.Quota.Controllers
private readonly float _oneGb = 1024 * 1024 * 1024;
/// <summary>
/// Default constructor with initilization.
/// Default constructor with initialization.
/// </summary>
public QuotaController()
{
@@ -90,7 +90,7 @@ namespace Coscine.Api.Quota.Controllers
{
if (!Guid.TryParse(projectId, out Guid projectGuid))
{
return BadRequest($"{projectId} is not a guid.");
return BadRequest($"{projectId} is not a GUID.");
}
var project = _projectModel.GetById(projectGuid);
@@ -107,7 +107,7 @@ namespace Coscine.Api.Quota.Controllers
if (!Guid.TryParse(resourceTypeId, out Guid resourceTypeGuid))
{
return BadRequest($"{resourceTypeId} is not a guid.");
return BadRequest($"{resourceTypeId} is not a GUID.");
}
var displayName = _resourceTypeModel.GetById(resourceTypeGuid)?.DisplayName;
@@ -129,7 +129,7 @@ namespace Coscine.Api.Quota.Controllers
if (resourceTypeDefinition == null)
{
return BadRequest($"No provider for: \"{displayName}\".");
}
}
return Json(
resources.Select(x =>
@@ -151,7 +151,7 @@ namespace Coscine.Api.Quota.Controllers
{
if (!Guid.TryParse(resourceId, out Guid resourceGuid))
{
return BadRequest($"{resourceId} is not a guid.");
return BadRequest($"{resourceId} is not a GUID.");
}
var resource = _resourceModel.GetById(resourceGuid);
@@ -188,7 +188,7 @@ namespace Coscine.Api.Quota.Controllers
/// <param name="updateResourceObject">Contains the resource id and the new quota.</param>
/// <returns>204 if successful.</returns>
[HttpPost("[controller]/{resourceId}")]
public IActionResult UpdateResourceQuota([FromBody]UpdateResourceObject updateResourceObject)
public IActionResult UpdateResourceQuota([FromBody] UpdateResourceObject updateResourceObject)
{
var resource = _resourceModel.GetById(updateResourceObject.Id);
@@ -236,19 +236,44 @@ namespace Coscine.Api.Quota.Controllers
if (allocatedForAll - allocatedForCurrent + updateResourceObject.Allocated > projectQuota.Quota)
{
return BadRequest($"Cannot set quota to {updateResourceObject.Allocated} for resource {updateResourceObject.Id}. Currently {allocatedForAll} gb of {projectQuota.Quota} gb are allocated. You would add {updateResourceObject.Allocated - allocatedForCurrent} gb.");
return BadRequest($"Cannot set quota to {updateResourceObject.Allocated} for resource {updateResourceObject.Id}. Currently {allocatedForAll} GB of {projectQuota.Quota} GB are allocated. You would add {updateResourceObject.Allocated - allocatedForCurrent} GB.");
}
var used = (int)Math.Ceiling(resourceTypeDefinition.GetResourceQuotaUsed(resource.Id.ToString(), resourceTypeOptions).Result / _oneGb);
if (updateResourceObject.Allocated < used)
{
return BadRequest($"Cannot set quota to {updateResourceObject.Allocated} for resource {updateResourceObject.Id}. Currently {used} gb of {allocatedForCurrent} gb are stored. You cannout go below the already stored size.");
return BadRequest($"Cannot set quota to {updateResourceObject.Allocated} for resource {updateResourceObject.Id}. Currently {used} GB of {allocatedForCurrent} GB are stored. You cannot go below the already stored size.");
}
resourceTypeDefinition.SetResourceQuota(resource.Id.ToString(), updateResourceObject.Allocated, resourceTypeOptions).Wait();
if (IsLikeRds(resourceType.DisplayName))
{
var rdsResourceTypeModel = new RDSResourceTypeModel();
var rdsResourceType = rdsResourceTypeModel.GetById(resource.ResourceTypeOptionId.Value);
rdsResourceType.Size = updateResourceObject.Allocated;
rdsResourceTypeModel.Update(rdsResourceType);
}
else if (IsLikeRdsS3(resourceType.DisplayName))
{
var rdsS3ResourceTypeModel = new RdsS3ResourceTypeModel();
var rdsS3ResourceType = rdsS3ResourceTypeModel.GetById(resource.ResourceTypeOptionId.Value);
rdsS3ResourceType.Size = updateResourceObject.Allocated;
rdsS3ResourceTypeModel.Update(rdsS3ResourceType);
}
return NoContent();
}
private static bool IsLikeRds(string compare)
{
return compare == "rds" || compare == "rdsude" || compare == "rdsnrw" || compare == "rdstudo";
}
private static bool IsLikeRdsS3(string compare)
{
return compare == "rdss3" || compare == "rdss3ude" || compare == "rdss3nrw" || compare == "rdss3tudo";
}
}
}
}
\ No newline at end of file
Loading