package com.sequenceiq.it.cloudbreak;
import java.util.ArrayList;
import java.util.List;
import com.sequenceiq.it.IntegrationTestContext;
public class TemplateAdditionHelper {
public static final int WITH_TYPE_LENGTH = 3;
public List<TemplateAddition> parseTemplateAdditions(String additionString) {
List<TemplateAddition> additions = new ArrayList<>();
String[] additionsArray = additionString.split(";");
for (String additionsString : additionsArray) {
String[] additionArray = additionsString.split(",");
String type = additionArray.length == WITH_TYPE_LENGTH ? additionArray[WITH_TYPE_LENGTH - 1] : "CORE";
additions.add(new TemplateAddition(additionArray[0], Integer.valueOf(additionArray[1]), type));
}
return additions;
}
public List<String[]> parseCommaSeparatedRows(String source) {
List<String[]> result = new ArrayList<>();
String[] rows = source.split(";");
for (String row : rows) {
result.add(row.split(","));
}
return result;
}
public void handleTemplateAdditions(IntegrationTestContext itContext, String templateId, List<TemplateAddition> additions) {
List<InstanceGroup> instanceGroups = itContext.getContextParam(CloudbreakITContextConstants.TEMPLATE_ID, List.class);
if (instanceGroups == null) {
instanceGroups = new ArrayList<>();
itContext.putContextParam(CloudbreakITContextConstants.TEMPLATE_ID, instanceGroups, true);
}
List<HostGroup> hostGroups = itContext.getContextParam(CloudbreakITContextConstants.HOSTGROUP_ID, List.class);
if (hostGroups == null) {
hostGroups = new ArrayList<>();
itContext.putContextParam(CloudbreakITContextConstants.HOSTGROUP_ID, hostGroups, true);
}
for (TemplateAddition addition : additions) {
String groupName = addition.getGroupName();
instanceGroups.add(new InstanceGroup(templateId, addition.getGroupName(), addition.getNodeCount(), addition.getType()));
if ("CORE".equals(addition.getType()) || ("GATEWAY".equals(addition.getType()) && !"cbgateway".equals(groupName))) {
hostGroups.add(new HostGroup(groupName, groupName, addition.getNodeCount()));
}
}
}
}