Repository: ambari Updated Branches: refs/heads/branch-2.5 2dca96a52 -> ce8e1bd4a
AMBARI-19548 Auto instances cannot be created on cluster install (Ashwin Rajeev via gauravn7) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/ce8e1bd4 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/ce8e1bd4 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/ce8e1bd4 Branch: refs/heads/branch-2.5 Commit: ce8e1bd4a37070d51add644e77459cedc000601a Parents: 2dca96a Author: Gaurav Nagar <[email protected]> Authored: Mon Jan 16 18:36:28 2017 +0530 Committer: Gaurav Nagar <[email protected]> Committed: Mon Jan 16 18:37:17 2017 +0530 ---------------------------------------------------------------------- .../apache/ambari/server/view/ViewRegistry.java | 29 +++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/ce8e1bd4/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java index 608435d..a012d1e 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java @@ -117,6 +117,7 @@ import org.apache.ambari.view.events.Event; import org.apache.ambari.view.events.Listener; import org.apache.ambari.view.migration.ViewDataMigrationException; import org.apache.ambari.view.validation.Validator; +import org.apache.commons.collections.CollectionUtils; import org.apache.log4j.PropertyConfigurator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -969,20 +970,18 @@ public class ViewRegistry { String viewName = viewEntity.getName(); ViewConfig viewConfig = viewEntity.getConfiguration(); AutoInstanceConfig autoConfig = viewConfig.getAutoInstance(); - Collection<String> roles = autoConfig.getRoles(); + Collection<String> roles = com.google.common.collect.Lists.newArrayList(); + if (autoConfig != null && !CollectionUtils.isEmpty(autoConfig.getRoles())) { + roles.addAll(autoConfig.getRoles()); + } try { if (checkAutoInstanceConfig(autoConfig, stackId, event.getServiceName(), serviceNames)) { - - LOG.info("Auto creating instance of view " + viewName + " for cluster " + clusterName + "."); - ViewInstanceEntity viewInstanceEntity = createViewInstanceEntity(viewEntity, viewConfig, autoConfig); - viewInstanceEntity.setClusterHandle(clusterId); - installViewInstance(viewInstanceEntity); - setViewInstanceRoleAccess(viewInstanceEntity, roles); + installAutoInstance(clusterId, clusterName, viewEntity, viewName, viewConfig, autoConfig, roles); } } catch (Exception e) { LOG.error("Can't auto create instance of view " + viewName + " for cluster " + clusterName + - ". Caught exception :" + e.getMessage(), e); + ". Caught exception :" + e.getMessage(), e); } } } catch (AmbariException e) { @@ -990,6 +989,14 @@ public class ViewRegistry { } } + private void installAutoInstance(Long clusterId, String clusterName, ViewEntity viewEntity, String viewName, ViewConfig viewConfig, AutoInstanceConfig autoConfig, Collection<String> roles) throws SystemException, ValidationException { + LOG.info("Auto creating instance of view " + viewName + " for cluster " + clusterName + "."); + ViewInstanceEntity viewInstanceEntity = createViewInstanceEntity(viewEntity, viewConfig, autoConfig); + viewInstanceEntity.setClusterHandle(clusterId); + installViewInstance(viewInstanceEntity); + setViewInstanceRoleAccess(viewInstanceEntity, roles); + } + @Subscribe public void onClusterConfigFinishedEvent(ClusterConfigFinishedEvent event) { if (configuration.extractViewsAfterClusterConfig()) { @@ -1860,11 +1867,7 @@ public class ViewRegistry { try { if (checkAutoInstanceConfig(autoInstanceConfig, stackId, service, serviceNames)) { - LOG.info("Auto creating instance of view " + viewName + " for cluster " + clusterName + "."); - ViewInstanceEntity viewInstanceEntity = createViewInstanceEntity(viewEntity, viewConfig, autoInstanceConfig); - viewInstanceEntity.setClusterHandle(clusterId); - installViewInstance(viewInstanceEntity); - setViewInstanceRoleAccess(viewInstanceEntity, roles); + installAutoInstance(clusterId, clusterName, viewEntity, viewName, viewConfig, autoInstanceConfig, roles); } } catch (Exception e) { LOG.error("Can't auto create instance of view " + viewName + " for cluster " + clusterName +
