async Task <string> CreateVmSettingsString(string region, int vmId, int studyId, int sandboxId, VirtualMachineCreateDto userInput) { var vmSettings = _mapper.Map <VmSettingsDto>(userInput); var availableOs = await _virtualMachineOperatingSystemService.AvailableOperatingSystems(region); vmSettings.OperatingSystemCategory = AzureVmUtil.GetOsCategory(availableOs, vmSettings.OperatingSystem); vmSettings.Password = await StoreNewVmPasswordAsKeyVaultSecretAndReturnReference(studyId, sandboxId, vmSettings.Password); var diagStorageResource = await CloudResourceQueries.GetDiagStorageAccountEntry(_db, sandboxId); vmSettings.DiagnosticStorageAccountName = diagStorageResource.ResourceName; var networkResource = await CloudResourceQueries.GetNetworkEntry(_db, sandboxId); vmSettings.NetworkName = networkResource.ResourceName; var networkSetting = CloudResourceConfigStringSerializer.NetworkSettings(networkResource.ConfigString); vmSettings.SubnetName = networkSetting.SandboxSubnetName; vmSettings.Rules = VmRuleUtils.CreateInitialVmRules(vmId); return(CloudResourceConfigStringSerializer.Serialize(vmSettings)); }
public async Task <ResourceProvisioningResult> EnsureCreated(ResourceProvisioningParameters parameters, CancellationToken cancellationToken = default) { _logger.LogInformation($"Creating virtual network {parameters.Name} in resource Group: {parameters.ResourceGroupName}"); var networkSettings = CloudResourceConfigStringSerializer.NetworkSettings(parameters.ConfigurationString); var virtualNetwork = await GetResourceInternalAsync(parameters.ResourceGroupName, parameters.Name, false); if (virtualNetwork == null) { virtualNetwork = await CreateInternalAsync(GetRegionFromString(parameters.Region), parameters.ResourceGroupName, parameters.Name, networkSettings.SandboxSubnetName, parameters.Tags, cancellationToken); } if (!parameters.TryGetSharedVariable(AzureCrudSharedVariable.NETWORK_SECURITY_GROUP_NAME, out string networkSecurityGroupName)) { throw new ArgumentException("AzureVirtualNetworkService: Missing network security group name from input"); } await EnsureNetworkSecurityGroupIsAddedToSubnet(virtualNetwork, networkSecurityGroupName, networkSettings.SandboxSubnetName); _logger.LogInformation($"Done creating virtual network {parameters.Name}"); var crudResult = CreateResult(virtualNetwork); return(crudResult); }