List of usage examples for com.amazonaws.services.elasticloadbalancing.model RegisterInstancesWithLoadBalancerRequest withInstances
public RegisterInstancesWithLoadBalancerRequest withInstances(java.util.Collection<Instance> instances)
The IDs of the instances.
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); } } }