package alien4cloud.it.provider.util;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import org.apache.commons.collections4.MapUtils;
import org.junit.Assert;
import alien4cloud.it.Context;
import alien4cloud.it.application.ApplicationStepDefinitions;
import alien4cloud.rest.model.RestResponse;
import alien4cloud.rest.utils.JsonUtil;
import com.google.common.collect.Maps;
public class AttributeUtil {
public static Map<String, String> getAttributes(String nodeName, String attributeName) throws IOException {
Map<String, String> nodeAttributes = Maps.newHashMap();
RestResponse<?> response = JsonUtil.read(Context.getRestClientInstance().get(
"/rest/v1/applications/" + ApplicationStepDefinitions.CURRENT_APPLICATION.getId() + "/environments/"
+ Context.getInstance().getDefaultApplicationEnvironmentId(ApplicationStepDefinitions.CURRENT_APPLICATION.getName())
+ "/deployment/informations"));
Map<String, Object> instancesInformation = (Map<String, Object>) response.getData();
Assert.assertFalse(MapUtils.isEmpty(instancesInformation));
Map<String, Object> nodeInformation = (Map<String, Object>) instancesInformation.get(nodeName);
Assert.assertFalse(MapUtils.isEmpty(nodeInformation));
for (Map.Entry<String, Object> instanceInformationEntry : nodeInformation.entrySet()) {
Map<String, Object> instanceInformation = (Map<String, Object>) instanceInformationEntry.getValue();
Map<String, Object> instanceAttributes = (Map<String, Object>) instanceInformation.get("attributes");
nodeAttributes.put(instanceInformationEntry.getKey(), (String) instanceAttributes.get(attributeName));
}
return nodeAttributes;
}
public static String getAttribute(String nodeName, String attributeName) throws IOException {
return getAttribute(nodeName, attributeName, 0);
}
public static String getAttribute(String nodeName, String attributeName, int instanceIdx) throws IOException {
Map<String, String> allInstancesAttributes = getAttributes(nodeName, attributeName);
Assert.assertTrue(MapUtils.isNotEmpty(allInstancesAttributes));
Assert.assertTrue(allInstancesAttributes.size() >= instanceIdx + 1);
Iterator<String> it = allInstancesAttributes.values().iterator();
for (int i = 0; i < instanceIdx; i++) {
it.next();
}
return it.next();
}
}