/// <summary> /// Update a sync member /// </summary> /// <param name="model">AzureSqlSyncMemberModel object</param> /// <param name="databaseType">The type of member database</param> /// <param name="password">The password of member database</param> /// <returns>Updated AzureSqlSyncGroupModel object</returns> internal AzureSqlSyncMemberModel UpdateSyncMember(AzureSqlSyncMemberModel model) { SyncMemberCreateOrUpdateProperties properties = new SyncMemberCreateOrUpdateProperties() { DatabaseType = (DatabaseTypeEnum)(model.MemberDatabaseType != null ? Enum.Parse(typeof(DatabaseTypeEnum), model.MemberDatabaseType, true) : null), DatabaseName = model.MemberDatabaseName, ServerName = model.MemberServerName, UserName = model.MemberDatabaseUserName, Password = model.MemberDatabasePassword == null ? null : AzureSqlServerAdapter.Decrypt(model.MemberDatabasePassword) }; var resp = Communicator.UpdateSyncMember(model.ResourceGroupName, model.ServerName, model.DatabaseName, new SyncMemberCreateOrUpdateParameters() { SyncGroupName = model.SyncGroupName, SyncMemberName = model.SyncMemberName, Properties = properties }); // Workaround for Rest API return response value incorrect issue. Remove this line after backend fix is deployed resp = Communicator.GetSyncMember(model.ResourceGroupName, model.ServerName, model.DatabaseName, new SyncMemberGeneralParameters() { SyncGroupName = model.SyncGroupName, SyncMemberName = model.SyncMemberName, }); return(CreateSyncMemberModelFromResponse(model.ResourceGroupName, model.ServerName, model.DatabaseName, model.SyncGroupName, resp)); }
/// <summary> /// Create a sync member /// </summary> /// <param name="model">AzureSqlSyncMemberModel object</param> /// <param name="databaseType">The type of member database</param> /// <param name="password">The password of member database</param> /// <returns>Created AzureSqlSyncGroupModel object</returns> internal AzureSqlSyncMemberModel CreateSyncMember(AzureSqlSyncMemberModel model, string syncAgentId) { Management.Sql.Models.SyncMember properties = new Management.Sql.Models.SyncMember() { SyncDirection = model.SyncDirection, DatabaseType = model.MemberDatabaseType, }; if (properties.DatabaseType == DatabaseTypeEnum.AzureSqlDatabase.ToString()) { properties.DatabaseName = model.MemberDatabaseName; properties.ServerName = model.MemberServerName; properties.UserName = model.MemberDatabaseUserName; properties.Password = model.MemberDatabasePassword == null ? null : AzureSqlServerAdapter.Decrypt(model.MemberDatabasePassword); properties.UsePrivateLinkConnection = model.UsePrivateLinkConnection; properties.SyncMemberAzureDatabaseResourceId = model.SyncMemberAzureDatabaseResourceId; } else { properties.SqlServerDatabaseId = model.SqlServerDatabaseId == null ? null : (Guid?)Guid.Parse(model.SqlServerDatabaseId); properties.SyncAgentId = model.SyncAgentId; } var createResp = Communicator.CreateSyncMember(model.ResourceGroupName, model.ServerName, model.DatabaseName, model.SyncGroupName, model.SyncMemberName, syncAgentId, properties); // Workaround for Rest API return response value incorrect issue. Remove this line after backend fix is deployed var resp = Communicator.GetSyncMember(model.ResourceGroupName, model.ServerName, model.DatabaseName, new SyncMemberGeneralParameters() { SyncGroupName = model.SyncGroupName, SyncMemberName = model.SyncMemberName, }); return(CreateSyncMemberModelFromResponse(model.ResourceGroupName, model.ServerName, model.DatabaseName, model.SyncGroupName, resp)); }
/// <summary> /// Create a sync member /// </summary> /// <param name="model">AzureSqlSyncMemberModel object</param> /// <param name="databaseType">The type of member database</param> /// <param name="password">The password of member database</param> /// <returns>Created AzureSqlSyncGroupModel object</returns> internal AzureSqlSyncMemberModel CreateSyncMember(AzureSqlSyncMemberModel model, string syncAgentId) { SyncMemberCreateOrUpdateProperties properties = new SyncMemberCreateOrUpdateProperties() { SyncDirection = (SyncDirectionEnum?)(model.SyncDirection != null ? Enum.Parse(typeof(SyncDirectionEnum), model.SyncDirection, true) : null), DatabaseType = (DatabaseTypeEnum)(model.MemberDatabaseType != null ? Enum.Parse(typeof(DatabaseTypeEnum), model.MemberDatabaseType, true) : null) }; if (properties.DatabaseType == DatabaseTypeEnum.AzureSqlDatabase) { properties.DatabaseName = model.MemberDatabaseName; properties.ServerName = model.MemberServerName; properties.UserName = model.MemberDatabaseUserName; properties.Password = model.MemberDatabasePassword == null ? null : AzureSqlServerAdapter.Decrypt(model.MemberDatabasePassword); } else { properties.SqlServerDatabaseId = model.SqlServerDatabaseId; properties.SyncAgentId = model.SyncAgentId; } var resp = Communicator.CreateSyncMember(model.ResourceGroupName, model.ServerName, model.DatabaseName, syncAgentId, new SyncMemberCreateOrUpdateParameters() { SyncGroupName = model.SyncGroupName, SyncMemberName = model.SyncMemberName, Properties = properties, }); // Workaround for Rest API return response value incorrect issue. Remove this line after backend fix is deployed resp = Communicator.GetSyncMember(model.ResourceGroupName, model.ServerName, model.DatabaseName, new SyncMemberGeneralParameters() { SyncGroupName = model.SyncGroupName, SyncMemberName = model.SyncMemberName, }); return(CreateSyncMemberModelFromResponse(model.ResourceGroupName, model.ServerName, model.DatabaseName, model.SyncGroupName, resp)); }
/// <summary> /// Create the model from user input /// </summary> /// <param name="model">Model retrieved from service</param> /// <returns>The model that was passed in</returns> protected override IEnumerable <AzureSqlSyncMemberModel> ApplyUserInputToModel(IEnumerable <AzureSqlSyncMemberModel> model) { AzureSqlSyncMemberModel newModel = model.First(); if (MyInvocation.BoundParameters.ContainsKey(nameof(UsePrivateLinkConnection))) { if (this.UsePrivateLinkConnection.GetValueOrDefault() && !MyInvocation.BoundParameters.ContainsKey(nameof(SyncMemberAzureDatabaseResourceId))) { throw new PSArgumentException( Microsoft.Azure.Commands.Sql.Properties.Resources.SyncMemberIdRequired, nameof(SyncMemberAzureDatabaseResourceId)); } newModel.UsePrivateLinkConnection = this.UsePrivateLinkConnection; newModel.SyncMemberAzureDatabaseResourceId = this.SyncMemberAzureDatabaseResourceId; } if (MyInvocation.BoundParameters.ContainsKey("MemberDatabaseCredential")) { newModel.MemberDatabaseUserName = this.MemberDatabaseCredential.UserName; newModel.MemberDatabasePassword = this.MemberDatabaseCredential.Password; } else { newModel.MemberDatabaseUserName = null; newModel.MemberDatabasePassword = null; } return(model); }
/// <summary> /// Create the model from user input /// </summary> /// <param name="model">Model retrieved from service</param> /// <returns>The model that was passed in</returns> protected override IEnumerable <AzureSqlSyncMemberModel> ApplyUserInputToModel(IEnumerable <AzureSqlSyncMemberModel> model) { List <AzureSqlSyncMemberModel> newEntity = new List <AzureSqlSyncMemberModel>(); AzureSqlSyncMemberModel newModel = new AzureSqlSyncMemberModel() { ResourceGroupName = this.ResourceGroupName, ServerName = this.ServerName, DatabaseName = this.DatabaseName, SyncGroupName = this.SyncGroupName, SyncMemberName = this.Name, SyncDirection = this.SyncDirection, MemberDatabaseType = this.MemberDatabaseType }; if (UsePrivateLinkConnection.IsPresent) { if (!MyInvocation.BoundParameters.ContainsKey(nameof(SyncMemberAzureDatabaseResourceId))) { throw new PSArgumentException( Microsoft.Azure.Commands.Sql.Properties.Resources.SyncMemberIdRequired, nameof(SyncMemberAzureDatabaseResourceId)); } newModel.UsePrivateLinkConnection = true; newModel.SyncMemberAzureDatabaseResourceId = this.SyncMemberAzureDatabaseResourceId; } if (ParameterSetName == AzureSqlSet) { newModel.MemberDatabaseName = this.MemberDatabaseName; newModel.MemberServerName = this.MemberServerName; newModel.MemberDatabaseUserName = this.MemberDatabaseCredential.UserName; newModel.MemberDatabasePassword = this.MemberDatabaseCredential.Password; } else { newModel.SqlServerDatabaseId = this.SqlServerDatabaseId; if (ParameterSetName == OnPremisesSyncAgentResourceIDSet) { newModel.SyncAgentId = this.SyncAgentResourceID; } else { // "/subscriptions/{id}/" will be added in AzureSqlDataSyncCommunicator this.syncAgentId = string.Format("resourceGroups/{0}/providers/Microsoft.Sql/servers/{1}/syncAgents/{2}", this.SyncAgentResourceGroupName, this.SyncAgentServerName, this.SyncAgentName); } } newEntity.Add(newModel); return(newEntity); }
/// <summary> /// Create the model from user input /// </summary> /// <param name="model">Model retrieved from service</param> /// <returns>The model that was passed in</returns> protected override IEnumerable <AzureSqlSyncMemberModel> ApplyUserInputToModel(IEnumerable <AzureSqlSyncMemberModel> model) { AzureSqlSyncMemberModel newModel = model.First(); if (MyInvocation.BoundParameters.ContainsKey("MemberDatabaseCredential")) { newModel.MemberDatabaseUserName = this.MemberDatabaseCredential.UserName; newModel.MemberDatabasePassword = this.MemberDatabaseCredential.Password; } else { newModel.MemberDatabaseUserName = null; newModel.MemberDatabasePassword = null; } return(model); }
/// <summary> /// Update a sync member /// </summary> /// <param name="model">AzureSqlSyncMemberModel object</param> /// <param name="databaseType">The type of member database</param> /// <param name="password">The password of member database</param> /// <returns>Updated AzureSqlSyncGroupModel object</returns> internal AzureSqlSyncMemberModel UpdateSyncMember(AzureSqlSyncMemberModel model) { Management.Sql.Models.SyncMember properties = new Management.Sql.Models.SyncMember() { DatabaseType = model.MemberDatabaseType, DatabaseName = model.MemberDatabaseName, ServerName = model.MemberServerName, UserName = model.MemberDatabaseUserName, Password = model.MemberDatabasePassword == null ? null : AzureSqlServerAdapter.Decrypt(model.MemberDatabasePassword), UsePrivateLinkConnection = model.UsePrivateLinkConnection, SyncMemberAzureDatabaseResourceId = model.SyncMemberAzureDatabaseResourceId }; var updateResp = Communicator.UpdateSyncMember(model.ResourceGroupName, model.ServerName, model.DatabaseName, model.SyncGroupName, model.SyncMemberName, properties); // Workaround for Rest API return response value incorrect issue. Remove this line after backend fix is deployed var resp = Communicator.GetSyncMember(model.ResourceGroupName, model.ServerName, model.DatabaseName, new SyncMemberGeneralParameters() { SyncGroupName = model.SyncGroupName, SyncMemberName = model.SyncMemberName, }); return(CreateSyncMemberModelFromResponse(model.ResourceGroupName, model.ServerName, model.DatabaseName, model.SyncGroupName, resp)); }
/// <summary> /// Create the model from user input /// </summary> /// <param name="model">Model retrieved from service</param> /// <returns>The model that was passed in</returns> protected override IEnumerable <AzureSqlSyncMemberModel> ApplyUserInputToModel(IEnumerable <AzureSqlSyncMemberModel> model) { List <AzureSqlSyncMemberModel> newEntity = new List <AzureSqlSyncMemberModel>(); AzureSqlSyncMemberModel newModel = new AzureSqlSyncMemberModel() { ResourceGroupName = this.ResourceGroupName, ServerName = this.ServerName, DatabaseName = this.DatabaseName, SyncGroupName = this.SyncGroupName, SyncMemberName = this.Name, SyncDirection = this.SyncDirection, MemberDatabaseType = this.MemberDatabaseType }; if (ParameterSetName == AzureSqlSet) { newModel.MemberDatabaseName = this.MemberDatabaseName; newModel.MemberServerName = this.MemberServerName; newModel.MemberDatabaseUserName = this.MemberDatabaseCredential.UserName; newModel.MemberDatabasePassword = this.MemberDatabaseCredential.Password; } else { newModel.SqlServerDatabaseId = this.SqlServerDatabaseId; if (ParameterSetName == OnPremisesSyncAgentResourceIDSet) { newModel.SyncAgentId = this.SyncAgentResourceID; } else { // "/subscriptions/{id}/" will be added in AzureSqlDataSyncCommunicator this.syncAgentId = string.Format("resourceGroups/{0}/providers/Microsoft.Sql/servers/{1}/syncAgents/{2}", this.SyncAgentResourceGroupName, this.SyncAgentServerName, this.SyncAgentName); } } newEntity.Add(newModel); return(newEntity); }