public async Task CreateResourceGroupForStudySpecificDatasetsAsync(Study study, CancellationToken cancellationToken = default)
        {
            var studyForCreation = await _studyModelService.GetForDatasetCreationNoAccessCheckAsync(study.Id);

            var resourceGroupForDatasets = GetResourceGroupForStudySpecificDataset(studyForCreation);

            var parentQueueItem = QueueItemFactory.CreateParent("Create resource group for Study specific datasets");

            if (resourceGroupForDatasets == null)
            {
                var resourceGroupName = AzureResourceNameUtil.StudySpecificDatasetResourceGroup(studyForCreation.Name);
                var tags = ResourceTagFactory.StudySpecificDatasourceResourceGroupTags(_config, studyForCreation);
                resourceGroupForDatasets = await _cloudResourceCreateService.CreateStudySpecificResourceGroupEntryAsync(studyForCreation.Id, resourceGroupName, "norwayeast", tags);

                ProvisioningQueueUtil.CreateChildAndAdd(parentQueueItem, resourceGroupForDatasets);
            }
            else
            {
                throw new Exception("Resource group allready exists");
            }

            await ScheduleResourceGroupRoleAssignments(studyForCreation, resourceGroupForDatasets, parentQueueItem);

            await _provisioningQueueService.SendMessageAsync(parentQueueItem, cancellationToken : cancellationToken);
        }
示例#2
0
        public void StudySpecificDatasourceResourceGroupTags_ShouldReturnCorrectValues()
        {
            var config = AzureResourceTagsFactory_Factory.GetConfiguration(_serviceProvider);
            List <StudyParticipant> participants = new List <StudyParticipant>();
            var user = new User()
            {
                Id = 1, FullName = "John Doe", EmailAddress = "*****@*****.**"
            };

            participants.Add(new StudyParticipant()
            {
                RoleName = "Study Owner", User = user
            });
            var study = new Study()
            {
                Name = "Study1", WbsCode = "123", StudyParticipants = participants
            };

            var res = ResourceTagFactory.StudySpecificDatasourceResourceGroupTags(config, study);

            var expectedResultStudy      = "Study1";
            var expectedResultOwnerName  = "John Doe";
            var expectedResultOwnerEmail = "*****@*****.**";

            Assert.Equal(expectedResultStudy, res["StudyName"]);
            Assert.Equal(expectedResultOwnerName, res["StudyOwnerName"]);
            Assert.Equal(expectedResultOwnerEmail, res["StudyOwnerEmail"]);
        }
        async Task <CloudResource> CreateResourceGroupForStudySpecificDatasetsInternalAsync(Study study, ProvisioningQueueParentDto parentQueueItem)
        {
            var resourceGroupName = AzureResourceNameUtil.StudySpecificDatasetResourceGroup(study.Name);
            var tags = ResourceTagFactory.StudySpecificDatasourceResourceGroupTags(_config, study);
            var resourceGroupForDatasets = await _cloudResourceCreateService.CreateStudySpecificResourceGroupEntryAsync(study.Id, resourceGroupName, "norwayeast", tags);

            ProvisioningQueueUtil.CreateChildAndAdd(parentQueueItem, resourceGroupForDatasets);

            await ScheduleResourceGroupRoleAssignments(study, resourceGroupForDatasets, parentQueueItem);

            return(resourceGroupForDatasets);
        }