Skip to content

Commit

Permalink
Merge 77a9b43 into 4874d59
Browse files Browse the repository at this point in the history
  • Loading branch information
yjmrobert authored Sep 29, 2023
2 parents 4874d59 + 77a9b43 commit 39de043
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 52 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ namespace Datahub.Application.Services;

public interface IResourceMessagingService
{
public Task SendToTerraformQueue(CreateResourceData project);
public Task SendToTerraformQueue(WorkspaceDefinition project);

public Task SendToUserQueue(WorkspaceDefinition workspaceDefinition, string? connectionString = null, string? queueName = null);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,12 +124,13 @@ public async Task<bool> CreateProjectAsync(string projectName, string? acronym,
return false;

await AddProjectToDb(user, projectName, acronym, organization);

await CreateNewTemplateProjectResourceAsync(acronym);

var project = CreateResourceData.NewProjectTemplate(projectName, acronym, sectorName, organization,
user.Mail, Convert.ToDouble(GetDefaultBudget()));

await _resourceMessagingService.SendToTerraformQueue(project);
var currentPortalUser = await _userInformationService.GetCurrentPortalUserAsync();
var workspaceDefinition = await _resourceMessagingService.GetWorkspaceDefinition(acronym, currentPortalUser.Email);
await _resourceMessagingService.SendToTerraformQueue(workspaceDefinition);
scope.Complete();
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ public ResourceMessagingService(DatahubPortalConfiguration datahubPortalConfigur
_datahubPortalConfiguration = datahubPortalConfiguration;
_dbContextFactory = dbContextFactory;
}
public async Task SendToTerraformQueue(CreateResourceData project)
public async Task SendToTerraformQueue(WorkspaceDefinition project)
{
using IQueue<CreateResourceData> queue = new AzureStorageQueue<CreateResourceData>(new AzureStorageQueueOptions<CreateResourceData>()
using IQueue<WorkspaceDefinition> queue = new AzureStorageQueue<WorkspaceDefinition>(new AzureStorageQueueOptions<WorkspaceDefinition>()
{
ConnectionString = _datahubPortalConfiguration.DatahubStorageQueue.ConnectionString,
Name = _datahubPortalConfiguration.DatahubStorageQueue.QueueNames.ResourceRunRequest,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,39 +118,40 @@

private async Task AddResourceToQueue(Resource resource)
{
var user = await _userInformationService.GetCurrentGraphUserAsync();
// var user = await _userInformationService.GetCurrentGraphUserAsync();
bool success;

switch (resource)
{
case Resource.ResourceGroup:
var project = CreateResourceData.NewProjectTemplate(Project.Project_Name, Project.Project_Acronym_CD, Project.Sector_Name, Project.Sector_Name, user.Mail, _budget ?? 2400);
await ResourceMessagingService.SendToTerraformQueue(project);
success = true;
break;
case Resource.Storage:
success = await _requestManagementService.HandleTerraformRequestServiceAsync(Project, TerraformTemplate.AzureStorageBlob);

break;
case Resource.Databricks:
success = await _requestManagementService.HandleTerraformRequestServiceAsync(Project, TerraformTemplate.AzureDatabricks);
break;
case Resource.VMs:
_snackbar.Add(Localizer["Resource {0} is not yet supported", resource], Severity.Error);
success = false;
break;
default:
throw new ArgumentOutOfRangeException(nameof(resource), resource, null);
}

if (success)
{
_snackbar.Add(Localizer["Resource {0} added to queue", resource], Severity.Success);
}
else
{
_snackbar.Add(Localizer["Resource {0} failed to add to queue", resource], Severity.Error);
}
_snackbar.Add(Localizer["Temporarily disabled {0} during refactor.", resource], Severity.Error);
return;
//
// switch (resource)
// {
// case Resource.ResourceGroup:
// await _requestManagementService.HandleTerraformRequestServiceAsync(Project, TerraformTemplate.NewProjectTemplate);
// success = true;
// break;
// case Resource.Storage:
// success = await _requestManagementService.HandleTerraformRequestServiceAsync(Project, TerraformTemplate.AzureStorageBlob);
//
// break;
// case Resource.Databricks:
// success = await _requestManagementService.HandleTerraformRequestServiceAsync(Project, TerraformTemplate.AzureDatabricks);
// break;
// case Resource.VMs:
// _snackbar.Add(Localizer["Resource {0} is not yet supported", resource], Severity.Error);
// success = false;
// break;
// default:
// throw new ArgumentOutOfRangeException(nameof(resource), resource, null);
// }
//
// if (success)
// {
// _snackbar.Add(Localizer["Resource {0} added to queue", resource], Severity.Success);
// }
// else
// {
// _snackbar.Add(Localizer["Resource {0} failed to add to queue", resource], Severity.Error);
// }
}

private string GetResourceName(Resource resource)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -260,17 +260,8 @@ public async Task<bool> HandleTerraformRequestServiceAsync(Datahub_Project datah

var userId = await _userInformationService.GetUserIdString();
var graphUser = await _userInformationService.GetCurrentGraphUserAsync();
var users = project.Users
.Where(u => u.PortalUser != null)
.Select(u => new TerraformUser
{
ObjectId = u.PortalUser.GraphGuid,
Email = u.PortalUser.Email,
Role = GetTerraformUserRole(u)
})
.ToList();
var currentPortalUser = await _userInformationService.GetCurrentPortalUserAsync();

var workspace = project.ToResourceWorkspace(users);
var newTemplates = TerraformTemplate.LatestFromNameWithDependencies(terraformTemplate);

if (terraformTemplate != TerraformTemplate.VariableUpdate)
Expand Down Expand Up @@ -300,8 +291,10 @@ public async Task<bool> HandleTerraformRequestServiceAsync(Datahub_Project datah
.DistinctBy(t => t.Name)
.ToList();

var request = CreateResourceData.ResourceRunTemplate(workspace, allTemplates, graphUser.Mail);
await _resourceMessagingService.SendToTerraformQueue(request);
var workspaceDefinition = await _resourceMessagingService.GetWorkspaceDefinition(project.Project_Acronym_CD, currentPortalUser.Email);
workspaceDefinition.Templates = allTemplates;

await _resourceMessagingService.SendToTerraformQueue(workspaceDefinition);
scope.Complete();
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ public class CreateResourceRunCommand : IRequest<PullRequestUpdateMessage>
{
public List<TerraformTemplate> Templates { get; set; }
public TerraformWorkspace Workspace { get; set; }

public WorkspaceAppData AppData { get; set; }

public string RequestingUserEmail { get; set; }
}
Expand Down

0 comments on commit 39de043

Please sign in to comment.