/// <summary> /// Generates the model from user input. /// </summary> /// <param name="model">This is null since the sql virtual machine doesn't exist yet</param> /// <returns>The generated model from user input</returns> protected override IEnumerable <AzureSqlVMModel> ApplyUserInputToModel(IEnumerable <AzureSqlVMModel> model) { List <AzureSqlVMModel> newEntity = new List <AzureSqlVMModel>(); AzureSqlVMModel sqlVM = new AzureSqlVMModel(ResourceGroupName) { Name = this.Name, Location = this.Location, VirtualMachineId = RetrieveVirtualMachineId(ResourceGroupName, Name) }; if (ParameterSetName.Contains(InputObject)) { sqlVM.LicenseType = SqlVM.LicenseType; sqlVM.Offer = SqlVM.Offer; sqlVM.Sku = SqlVM.Sku; sqlVM.SqlManagementType = SqlVM.SqlManagementType; sqlVM.SqlVirtualMachineGroup = SqlVM.SqlVirtualMachineGroup; sqlVM.WsfcDomainCredentials = SqlVM.WsfcDomainCredentials; sqlVM.Tags = SqlVM.Tags; } else { sqlVM.LicenseType = this.LicenseType; sqlVM.Offer = this.Offer; sqlVM.Sku = this.Sku; sqlVM.SqlManagementType = this.SqlManagementType; sqlVM.Tags = TagsConversionHelper.CreateTagDictionary(Tag, validate: true); } newEntity.Add(sqlVM); return(newEntity); }
/// <summary> /// Upserts a sql virtual machine /// </summary> /// <param name="model">The sql virtual machine to upsert</param> /// <returns>The updated sql virtual machine model</returns> public AzureSqlVMModel UpsertSqlVirtualMachine(AzureSqlVMModel model) { var resp = Communicator.CreateOrUpdate(model.ResourceGroupName, model.Name, new Management.SqlVirtualMachine.Models.SqlVirtualMachineModel() { Location = model.Location, SqlImageOffer = model.Offer, SqlImageSku = model.Sku, VirtualMachineResourceId = model.VirtualMachineId, SqlServerLicenseType = model.LicenseType, SqlManagement = model.SqlManagementType, SqlVirtualMachineGroupResourceId = model.SqlVirtualMachineGroup != null ? model.SqlVirtualMachineGroup.ResourceId : null, WsfcDomainCredentials = model.WsfcDomainCredentials, Tags = model.Tags }); return(CreateSqlVirtualMachineModelFromResponse(resp)); }
/// <summary> /// Apply user input to the retrieved sql virtual machine. /// </summary> /// <param name="model">The sql virtual machine that will be updated<param> /// <returns>The model to send to the update</returns> protected override IEnumerable <AzureSqlVMModel> ApplyUserInputToModel(IEnumerable <AzureSqlVMModel> model) { List <AzureSqlVMModel> updateData = new List <AzureSqlVMModel>(); AzureSqlVMModel sqlVM = model.FirstOrDefault(); if (ParameterSetName.EndsWith(ParameterSet.InputObject)) { sqlVM.Offer = InputObject.Offer ?? sqlVM.Offer; sqlVM.Sku = InputObject.Sku ?? sqlVM.Sku; sqlVM.LicenseType = InputObject.LicenseType ?? sqlVM.LicenseType; sqlVM.SqlManagementType = InputObject.SqlManagementType ?? sqlVM.SqlManagementType; sqlVM.SqlVirtualMachineGroup = InputObject.SqlVirtualMachineGroup ?? sqlVM.SqlVirtualMachineGroup; sqlVM.WsfcDomainCredentials = InputObject.WsfcDomainCredentials ?? sqlVM.WsfcDomainCredentials; sqlVM.Tags = InputObject.Tags ?? sqlVM.Tags; } else { if (LicenseType != null) { sqlVM.LicenseType = LicenseType; } if (Offer != null) { sqlVM.Offer = Offer; } if (Sku != null) { sqlVM.Sku = Sku; } if (SqlManagementType != null) { sqlVM.SqlManagementType = SqlManagementType; } if (Tag != null) { sqlVM.Tags = TagsConversionHelper.CreateTagDictionary(Tag, validate: true); } } updateData.Add(sqlVM); return(updateData); }
/// <summary> /// Convert a Management.SqlVirtualMachine.Models.SqlVirtualMachineModel to AzureSqlVirtualMachineModel /// </summary> /// <param name="resourceGroupName">The resource group the sql virtual machine is in</param> /// <param name="resp">The management client sql virtual machine response to convert</param> /// <returns>The converted sql virtual machine model</returns> private AzureSqlVMModel CreateSqlVirtualMachineModelFromResponse(SqlVirtualMachineModel resp) { // Extract the resource group name from the ID. // ID is in the form: // /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rgName/providers/Microsoft.SqlVirtualMachine/SqlVirtualMachine/sqlVirtualMachineName string[] segments = resp.Id.Split('/'); AzureSqlVMModel model = new AzureSqlVMModel(segments[4]) { Name = resp.Name, Location = resp.Location, Sku = resp.SqlImageSku, Offer = resp.SqlImageOffer, VirtualMachineId = resp.VirtualMachineResourceId, SqlManagementType = resp.SqlManagement, LicenseType = resp.SqlServerLicenseType, Tags = TagsConversionHelper.CreateTagDictionary(TagsConversionHelper.CreateTagHashtable(resp.Tags), false), ResourceId = resp.Id }; // Retrieve group if (!string.IsNullOrEmpty(resp.SqlVirtualMachineGroupResourceId)) { var client = AzureSession.Instance.ClientFactory.CreateArmClient <SqlVirtualMachineManagementClient>(DefaultContext, AzureEnvironment.Endpoint.ResourceManager); string[] groupId = resp.SqlVirtualMachineGroupResourceId.Split('/'); SqlVirtualMachineGroup group = client.SqlVirtualMachineGroups.Get(groupId[4], groupId[8]); model.SqlVirtualMachineGroup = new AzureSqlVMGroupModel(groupId[4]) { Name = group.Name, Location = group.Location, Sku = group.SqlImageSku, Offer = group.SqlImageOffer, ResourceId = group.Id, Tag = TagsConversionHelper.CreateTagDictionary(TagsConversionHelper.CreateTagHashtable(group.Tags), false), WsfcDomainProfile = group.WsfcDomainProfile }; } return(model); }