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

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

Introduction

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

Prototype


public RegisterInstancesWithLoadBalancerRequest 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 registerInstances(AwsProcessClient awsProcessClient, Long loadBalancerNo, List<Long> instanceNos) {
    if (instanceNos.isEmpty()) {
        // ???????
        return;/*w w w  .j  av  a  2s. c o m*/
    }

    // ???????
    {
        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.STOPPED) {
                    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);
        RegisterInstancesWithLoadBalancerRequest request = new RegisterInstancesWithLoadBalancerRequest();
        request.withLoadBalancerName(awsLoadBalancer.getName());
        for (String instanceId : instanceIds) {
            request.withInstances(new com.amazonaws.services.elasticloadbalancing.model.Instance(instanceId));
        }
        awsProcessClient.getElbClient().registerInstancesWithLoadBalancer(request);

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

        // 
        processLogger.debug(null, null, "AwsElbInstancesRegist", 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.RUNNING.toString());
            loadBalancerInstanceDao.update(loadBalancerInstance);
        }
    }
}