/// <summary> /// Updates the existing list of targets with the new target if it doesn't already exist in the list. /// </summary> /// <param name="existingTargets">The list of existing targets in the target group</param> /// <returns>An updated list of targets.</returns> protected override IEnumerable <AzureSqlElasticJobTargetModel> ApplyUserInputToModel(IEnumerable <AzureSqlElasticJobTargetModel> existingTargets) { // Reformat target credential id foreach (AzureSqlElasticJobTargetModel target in existingTargets) { target.RefreshCredentialName = CreateCredentialId(target.ResourceGroupName, target.ServerName, target.AgentName, target.RefreshCredentialName); } this.Target = new AzureSqlElasticJobTargetModel { TargetGroupName = this.TargetGroupName, MembershipType = MyInvocation.BoundParameters.ContainsKey("Exclude") ? JobTargetGroupMembershipType.Exclude : JobTargetGroupMembershipType.Include, TargetType = GetTargetType(), TargetServerName = this.ServerName, TargetDatabaseName = this.DatabaseName, TargetElasticPoolName = this.ElasticPoolName, TargetShardMapName = this.ShardMapName, RefreshCredentialName = this.RefreshCredentialName != null? CreateCredentialId(this.ResourceGroupName, this.AgentServerName, this.AgentName, this.RefreshCredentialName) : null, }; this.ExistingTargets = existingTargets.ToList(); this.NeedsUpdate = UpdateExistingTargets(); // If we don't need to send an update, send back an empty list. if (!this.NeedsUpdate) { return(new List <AzureSqlElasticJobTargetModel>()); } return(this.ExistingTargets); }
/// <summary> /// Converts an AzureSqlElasticJobTargetModel to a JobTarget model /// </summary> /// <param name="target">The AzureSqlElasticJobTargetModel</param> /// <returns>The JobTarget model</returns> public JobTarget CreateJobTargetModel(AzureSqlElasticJobTargetModel target) { return(new JobTarget { MembershipType = target.MembershipType, DatabaseName = target.TargetDatabaseName, ServerName = target.TargetServerName, ElasticPoolName = target.TargetElasticPoolName, RefreshCredential = target.RefreshCredentialName, ShardMapName = target.TargetShardMapName, Type = target.TargetType }); }
/// <summary> /// Does a scan over the list of targets and finds the target's index in the list /// </summary> protected int?FindTarget() { for (int i = 0; i < this.ExistingTargets.Count; i++) { AzureSqlElasticJobTargetModel t = this.ExistingTargets[i]; if (t.TargetServerName == this.Target.TargetServerName && t.TargetDatabaseName == this.Target.TargetDatabaseName && t.TargetElasticPoolName == this.Target.TargetElasticPoolName && t.TargetShardMapName == this.Target.TargetShardMapName && t.TargetType == this.Target.TargetType && t.RefreshCredentialName == this.Target.RefreshCredentialName) { return(i); } } return(null); }