Example #1
0
        /// <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);
        }
Example #2
0
        /// <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));
        }
Example #3
0
        /// <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);
        }
Example #4
0
        /// <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);
        }