Example usage for com.amazonaws.services.elasticloadbalancing.model DeregisterInstancesFromLoadBalancerRequest withInstances

List of usage examples for com.amazonaws.services.elasticloadbalancing.model DeregisterInstancesFromLoadBalancerRequest withInstances

Introduction

In this page you can find the example usage for com.amazonaws.services.elasticloadbalancing.model DeregisterInstancesFromLoadBalancerRequest withInstances.

Prototype


public DeregisterInstancesFromLoadBalancerRequest withInstances(java.util.Collection<Instance> instances) 

Source Link

Document

The IDs of the instances.

Usage

From source file:jp.primecloud.auto.process.aws.AwsLoadBalancerProcess.java

License:Open Source License

public void unregisterInstances(AwsProcessClient awsProcessClient, Long loadBalancerNo,
        List<Long> instanceNos) {
    if (instanceNos.isEmpty()) {
        // ???????
        return;//from  ww  w  . j ava 2 s.c  om
    }

    // ?????
    {
        List<Long> tmpInstanceNos = new ArrayList<Long>();
        List<LoadBalancerInstance> loadBalancerInstances = loadBalancerInstanceDao
                .readByLoadBalancerNo(loadBalancerNo);
        for (LoadBalancerInstance loadBalancerInstance : loadBalancerInstances) {
            if (instanceNos.contains(loadBalancerInstance.getInstanceNo())) {
                LoadBalancerInstanceStatus status = LoadBalancerInstanceStatus
                        .fromStatus(loadBalancerInstance.getStatus());
                if (status == LoadBalancerInstanceStatus.RUNNING) {
                    tmpInstanceNos.add(loadBalancerInstance.getInstanceNo());
                }
            }
        }
        instanceNos = tmpInstanceNos;
    }

    if (instanceNos.isEmpty()) {
        // ?????????
        return;
    }

    // ????
    {
        List<Long> tmpInstanceNos = new ArrayList<Long>();
        List<Instance> instances = instanceDao.readInInstanceNos(instanceNos);
        for (Instance instance : instances) {
            InstanceStatus status = InstanceStatus.fromStatus(instance.getStatus());
            if (status == InstanceStatus.RUNNING) {
                tmpInstanceNos.add(instance.getInstanceNo());
            }
        }
        instanceNos = tmpInstanceNos;
    }

    if (instanceNos.isEmpty()) {
        // ????????
        return;
    }

    // ID?
    List<String> instanceIds = new ArrayList<String>();
    {
        List<AwsInstance> awsInstances = awsInstanceDao.readInInstanceNos(instanceNos);
        for (AwsInstance awsInstance : awsInstances) {
            instanceIds.add(awsInstance.getInstanceId());
        }
    }

    try {
        // ?
        AwsLoadBalancer awsLoadBalancer = awsLoadBalancerDao.read(loadBalancerNo);
        DeregisterInstancesFromLoadBalancerRequest request = new DeregisterInstancesFromLoadBalancerRequest();
        request.withLoadBalancerName(awsLoadBalancer.getName());
        for (String instanceId : instanceIds) {
            request.withInstances(new com.amazonaws.services.elasticloadbalancing.model.Instance(instanceId));
        }
        awsProcessClient.getElbClient().deregisterInstancesFromLoadBalancer(request);

        if (log.isInfoEnabled()) {
            log.info(MessageUtils.getMessage("IPROCESS-200142", awsLoadBalancer.getName(), instanceIds));
        }

        // 
        processLogger.debug(null, null, "AwsElbInstancesDeregist", new Object[] {
                awsProcessClient.getPlatform().getPlatformName(), awsLoadBalancer.getName(), instanceIds });

    } catch (RuntimeException e) {
        // ?
        List<LoadBalancerInstance> loadBalancerInstances = loadBalancerInstanceDao
                .readByLoadBalancerNo(loadBalancerNo);
        for (LoadBalancerInstance loadBalancerInstance : loadBalancerInstances) {
            if (instanceNos.contains(loadBalancerInstance.getInstanceNo())) {
                loadBalancerInstance.setStatus(LoadBalancerInstanceStatus.WARNING.toString());
                loadBalancerInstanceDao.update(loadBalancerInstance);
            }
        }

        throw e;
    }

    // ?
    List<LoadBalancerInstance> loadBalancerInstances = loadBalancerInstanceDao
            .readByLoadBalancerNo(loadBalancerNo);
    for (LoadBalancerInstance loadBalancerInstance : loadBalancerInstances) {
        if (instanceNos.contains(loadBalancerInstance.getInstanceNo())) {
            loadBalancerInstance.setStatus(LoadBalancerInstanceStatus.STOPPED.toString());
            loadBalancerInstanceDao.update(loadBalancerInstance);
        }
    }
}