private async Task ProvisionEnvironmentAsync(Waddle.AdoConnectionFactory factory, Waddle.Dtos.Project project, Waddle.PipelineEnvironmentService peService, EnvironmentManifest pe) { var peColl = await peService.ListEnvironmentsAsync(project.Id); if (peColl != null) { var envObject = peColl.Value .FirstOrDefault(penv => penv.Name.Equals(pe.Name, StringComparison.OrdinalIgnoreCase)); if (envObject == null) { envObject = await peService.CreateEnvironmentAsync(project.Id, pe.Name, pe.Description); } await ProvisionEnvironmentPermissionsAsync(factory, project, peService, pe, envObject); } }
private async Task ProvisionEnvironmentPermissionsAsync( Waddle.AdoConnectionFactory factory, Waddle.Dtos.Project project, Waddle.PipelineEnvironmentService peService, EnvironmentManifest pe, PipelineEnvironment envObject) { if (envObject != null && pe.Permissions != null && pe.Permissions.Any()) { foreach (var permissionObject in pe.Permissions) { Logger.StatusBegin($"Configuring Environment ({pe.Name}) permissions: AAD object ({permissionObject.Group}) ..."); var group = await GetGroupByNameAsync(factory, permissionObject.Origin, permissionObject.Group, permissionObject.Id); if (group != null) { var legacyIdentity = await factory.GetGroupService() .GetLegacyIdentitiesBySidAsync(group.Sid); if (legacyIdentity != null && legacyIdentity.Value.Any()) { var localId = legacyIdentity.Value.First().Id; foreach (var role in permissionObject.Roles) { await peService.SetPermissionAsync(project.Id, envObject.Id, localId, role); } Logger.StatusEndSuccess("Succeeded"); } } else { Logger.StatusEndFailed("Failed (Not found in AAD)"); } } } }