public Result BringOffline(string serverName, string farm, LoadBalancerSuspendMethod suspendMethod) { var credentials = GetCredentials(_config.CustomConfig); var endpoint = GetEndpoint(_config.CustomConfig); var ec2Client = new AmazonEC2Client(credentials, endpoint); var client = new AmazonElasticLoadBalancingClient(credentials, endpoint); var request = new DeregisterInstancesFromLoadBalancerRequest(farm, new List <Instance> { new Instance(GetInstanceId(ec2Client, serverName)) }); var response = client.DeregisterInstancesFromLoadBalancer(request); var result = Result.SuccessChanged(); result.Data.HttpStatusCode = response.HttpStatusCode; result.Data.ActiveInstances = response.Instances; return(result); }
/// <summary> /// Removes instances from the load balancer. Once the instance is deregistered, it will stop receiving traffic from the load balancer. /// </summary> /// <param name="loadBalancer">The name associated with the load balancer.</param> /// <param name="instances">A list of instance IDs that should be deregistered with the load balancer.</param> /// <param name="settings">The <see cref="LoadBalancingSettings"/> used during the request to AWS.</param> /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> public async Task <bool> DeregisterInstances(string loadBalancer, IList <string> instances, LoadBalancingSettings settings, CancellationToken cancellationToken = default(CancellationToken)) { if (String.IsNullOrEmpty(loadBalancer)) { throw new ArgumentNullException("loadBalancer"); } if ((instances == null) || (instances.Count == 0)) { throw new ArgumentNullException("instances"); } //Create Request AmazonElasticLoadBalancingClient client = this.CreateClient(settings); DeregisterInstancesFromLoadBalancerRequest request = new DeregisterInstancesFromLoadBalancerRequest(); request.LoadBalancerName = loadBalancer; foreach (string instance in instances) { request.Instances.Add(new Instance(instance)); } //Check Response DeregisterInstancesFromLoadBalancerResponse response = await client.DeregisterInstancesFromLoadBalancerAsync(request, cancellationToken); if (response.HttpStatusCode == HttpStatusCode.OK) { _Log.Verbose("Successfully deregistered instances '{0}'", string.Join(",", instances)); return(true); } else { _Log.Error("Failed to deregister instances '{0}'", string.Join(",", instances)); return(false); } }
/// <summary> /// <para> Deregisters instances from the LoadBalancer. Once the instance is deregistered, it will stop receiving traffic from the LoadBalancer. /// </para> <para> In order to successfully call this API, the same account credentials as those used to create the LoadBalancer must be /// provided. </para> /// </summary> /// /// <param name="deregisterInstancesFromLoadBalancerRequest">Container for the necessary parameters to execute the /// DeregisterInstancesFromLoadBalancer service method on AmazonElasticLoadBalancing.</param> /// /// <returns>The response from the DeregisterInstancesFromLoadBalancer service method, as returned by AmazonElasticLoadBalancing.</returns> /// /// <exception cref="InvalidInstanceException"/> /// <exception cref="LoadBalancerNotFoundException"/> public DeregisterInstancesFromLoadBalancerResponse DeregisterInstancesFromLoadBalancer(DeregisterInstancesFromLoadBalancerRequest deregisterInstancesFromLoadBalancerRequest) { IRequest <DeregisterInstancesFromLoadBalancerRequest> request = new DeregisterInstancesFromLoadBalancerRequestMarshaller().Marshall(deregisterInstancesFromLoadBalancerRequest); DeregisterInstancesFromLoadBalancerResponse response = Invoke <DeregisterInstancesFromLoadBalancerRequest, DeregisterInstancesFromLoadBalancerResponse> (request, this.signer, DeregisterInstancesFromLoadBalancerResponseUnmarshaller.GetInstance()); return(response); }
public DeregisterInstancesFromLoadBalancerResponse DeregisterInstancesFromLoadBalancer(DeregisterInstancesFromLoadBalancerRequest request) { return(this.Invoke <DeregisterInstancesFromLoadBalancerResponse>(ConvertDeregisterInstancesFromLoadBalancer(request))); }
private static IDictionary <string, string> ConvertDeregisterInstancesFromLoadBalancer(DeregisterInstancesFromLoadBalancerRequest request) { IDictionary <string, string> dictionary = new Dictionary <string, string>(); dictionary["Action"] = "DeregisterInstancesFromLoadBalancer"; if (request.IsSetLoadBalancerName()) { dictionary["LoadBalancerName"] = request.LoadBalancerName; } List <Instance> instances = request.Instances; int num = 1; foreach (Instance instance in instances) { if (instance.IsSetInstanceId()) { dictionary[string.Concat(new object[] { "Instances", ".member.", num, ".", "InstanceId" })] = instance.InstanceId; } num++; } return(dictionary); }
/** * Convert DeregisterInstancesFromLoadBalancerRequest to name value pairs */ private static IDictionary <string, string> ConvertDeregisterInstancesFromLoadBalancer(DeregisterInstancesFromLoadBalancerRequest request) { IDictionary <string, string> parameters = new Dictionary <string, string>(); parameters["Action"] = "DeregisterInstancesFromLoadBalancer"; if (request.IsSetLoadBalancerName()) { parameters["LoadBalancerName"] = request.LoadBalancerName; } List <Instance> deregisterInstancesFromLoadBalancerRequestInstancesList = request.Instances; int deregisterInstancesFromLoadBalancerRequestInstancesListIndex = 1; foreach (Instance deregisterInstancesFromLoadBalancerRequestInstances in deregisterInstancesFromLoadBalancerRequestInstancesList) { if (deregisterInstancesFromLoadBalancerRequestInstances.IsSetInstanceId()) { parameters[String.Concat("Instances", ".member.", deregisterInstancesFromLoadBalancerRequestInstancesListIndex, ".", "InstanceId")] = deregisterInstancesFromLoadBalancerRequestInstances.InstanceId; } deregisterInstancesFromLoadBalancerRequestInstancesListIndex++; } return(parameters); }