@Override public Instance update(Instance existingEntity, Instance requestedEntity) { LOG.debug( String.format( "update(Existing Instance - %s,Requested Instance - %s)", existingEntity, requestedEntity)); InstanceStateTransition transition = new InstanceStateTransition(); Instance entityToReturn = null; if (existingEntity != null) { transition.setPreviousState(existingEntity.getState()); // we set this here in case we can't write the state want. // this way the user doesn't get back a null. :D. transition.setNextState(existingEntity.getState()); instanceStatusMap.put(existingEntity.getInstanceId(), transition); if (existingEntity.getNodeId() != null && existingEntity.getState() != InstanceState.SHUTTING_DOWN && existingEntity.getState() != InstanceState.TERMINATED) { existingEntity.setState(InstanceState.SHUTTING_DOWN); entityToReturn = existingEntity; } else if (existingEntity.getState() != InstanceState.TERMINATED) { LOG.info( String.format( "Instance %s is provisionally being terminated before an Instance Manager has claimed it by stamping a node id onto it", existingEntity.getInstanceId())); existingEntity.setState(InstanceState.TERMINATED); entityToReturn = existingEntity; } } else { LOG.warn(String.format("Expected non-null instance")); } return entityToReturn; }