package com.sequenceiq.cloudbreak.cloud.transform;
import java.util.List;
import com.sequenceiq.cloudbreak.cloud.model.CloudResourceStatus;
import com.sequenceiq.cloudbreak.cloud.model.ResourceStatus;
public class ResourceStatusLists {
private ResourceStatusLists() {
}
public static CloudResourceStatus aggregate(List<CloudResourceStatus> cloudResourceStatuses) {
ResourceStatus status = null;
String statusReason = "";
for (CloudResourceStatus crs : cloudResourceStatuses) {
ResourceStatus currentStatus = crs.getStatus();
if (status == null) {
status = currentStatus;
}
switch (currentStatus) {
case FAILED:
status = currentStatus;
statusReason += crs.getStatusReason() + "\n";
break;
default:
if (currentStatus.isTransient()) {
status = currentStatus;
}
}
}
if (status == null) {
status = ResourceStatus.FAILED;
statusReason += "Resources does not have any state";
}
return new CloudResourceStatus(null, status, statusReason);
}
}