Repository: ambari Updated Branches: refs/heads/trunk 816939498 -> bd0237636
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/bd023763 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/bd023763 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/bd023763 Branch: refs/heads/trunk Commit: bd02376367644a45e059e0b027f50cc09f4fb615 Parents: 8169394 Author: Gaurav Nagar <grv...@gmail.com> Authored: Mon Jan 16 18:36:28 2017 +0530 Committer: Gaurav Nagar <grv...@gmail.com> Committed: Mon Jan 16 18:36:28 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/bd023763/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 df4a2f2..6316b5b 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 @@ -119,6 +119,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; @@ -971,20 +972,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) { @@ -992,6 +991,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()) { @@ -1851,11 +1858,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 +