*/
//todo: ambari agent must already be installed and registered on all hosts
private void createHostAndComponentResources(Map<String, HostGroup> blueprintHostGroups, String clusterName)
throws SystemException, UnsupportedPropertyException, ResourceAlreadyExistsException, NoSuchParentResourceException {
ResourceProvider hostProvider = getResourceProviderByType(Resource.Type.Host);
ResourceProvider hostComponentProvider = getResourceProviderByType(Resource.Type.HostComponent);
for (HostGroup group : blueprintHostGroups.values()) {
for (String host : group.getHostInfo()) {
Map<String, Object> hostProperties = new HashMap<String, Object>();
hostProperties.put("Hosts/cluster_name", clusterName);
hostProperties.put("Hosts/host_name", host);
hostProvider.createResources(new RequestImpl(
null, Collections.singleton(hostProperties), null, null));
// create clusters/hosts/host_components
Set<Map<String, Object>> setHostComponentRequestProps = new HashSet<Map<String, Object>>();
for (String hostComponent : group.getComponents()) {
// AMBARI_SERVER is not recognized by Ambari as a component
if (! hostComponent.equals("AMBARI_SERVER")) {
Map<String, Object> hostComponentProperties = new HashMap<String, Object>();
hostComponentProperties.put("HostRoles/cluster_name", clusterName);
hostComponentProperties.put("HostRoles/host_name", host);
hostComponentProperties.put("HostRoles/component_name", hostComponent);
setHostComponentRequestProps.add(hostComponentProperties);
}
}
hostComponentProvider.createResources(new RequestImpl(
null, setHostComponentRequestProps, null, null));
}
}
}