Repository: ambari Updated Branches: refs/heads/trunk 438657cba -> bc17f9cf4
AMBARI-15759 After upgrading to Ambari 2.2.1, Storm widgets are gone (dsen) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/bc17f9cf Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/bc17f9cf Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/bc17f9cf Branch: refs/heads/trunk Commit: bc17f9cf4fafee7cc405160b51ef13b89743c238 Parents: 438657c Author: Dmytro Sen <d...@apache.org> Authored: Fri Apr 8 20:38:48 2016 +0300 Committer: Dmytro Sen <d...@apache.org> Committed: Fri Apr 8 20:38:48 2016 +0300 ---------------------------------------------------------------------- .../server/upgrade/UpgradeCatalog222.java | 30 +++++++++++ .../server/upgrade/UpgradeCatalog222Test.java | 57 ++++++++++++++++++++ 2 files changed, 87 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/bc17f9cf/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog222.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog222.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog222.java index 77b8b45..8eab182 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog222.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog222.java @@ -57,6 +57,7 @@ import com.google.gson.JsonParser; import com.google.inject.Inject; import com.google.inject.Injector; + /** * Upgrade catalog for version 2.2.2. */ @@ -182,6 +183,7 @@ public class UpgradeCatalog222 extends AbstractUpgradeCatalog { updateCorruptedReplicaWidget(); updateZookeeperConfigs(); createNewSliderConfigVersion(); + initializeStromAndKafkaWidgets(); } protected void createNewSliderConfigVersion() { @@ -566,4 +568,32 @@ public class UpgradeCatalog222 extends AbstractUpgradeCatalog { new DBAccessor.DBColumnInfo(UPGRADE_SUSPENDED_COLUMN, Short.class, 1, 0, false)); } + /** + * Copy cluster & service widgets for Storm and Kafka from stack to DB. + */ + protected void initializeStromAndKafkaWidgets() throws AmbariException { + AmbariManagementController controller = injector.getInstance(AmbariManagementController.class); + Clusters clusters = controller.getClusters(); + if (clusters == null) { + return; + } + + Map<String, Cluster> clusterMap = clusters.getClusters(); + + if (clusterMap != null && !clusterMap.isEmpty()) { + for (Cluster cluster : clusterMap.values()) { + controller.initializeWidgetsAndLayouts(cluster, null); + + Map<String, Service> serviceMap = cluster.getServices(); + if (serviceMap != null && !serviceMap.isEmpty()) { + for (Service service : serviceMap.values()) { + if ("STORM".equals(service.getName()) || "KAFKA".equals(service.getName())) { + controller.initializeWidgetsAndLayouts(cluster, service); + } + } + } + } + } + } + } http://git-wip-us.apache.org/repos/asf/ambari/blob/bc17f9cf/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog222Test.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog222Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog222Test.java index 5f07e56..92b753c 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog222Test.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog222Test.java @@ -134,6 +134,7 @@ public class UpgradeCatalog222Test { Method updateCorruptedReplicaWidget = UpgradeCatalog222.class.getDeclaredMethod("updateCorruptedReplicaWidget"); Method createNewSliderConfigVersion = UpgradeCatalog222.class.getDeclaredMethod("createNewSliderConfigVersion"); Method updateZookeeperConfigs = UpgradeCatalog222.class.getDeclaredMethod("updateZookeeperConfigs"); + Method initializeStromAnsKafkaWidgets = UpgradeCatalog222.class.getDeclaredMethod("initializeStromAndKafkaWidgets"); UpgradeCatalog222 upgradeCatalog222 = createMockBuilder(UpgradeCatalog222.class) .addMockedMethod(addNewConfigurationsFromXml) @@ -146,6 +147,7 @@ public class UpgradeCatalog222Test { .addMockedMethod(updateCorruptedReplicaWidget) .addMockedMethod(createNewSliderConfigVersion) .addMockedMethod(updateZookeeperConfigs) + .addMockedMethod(initializeStromAnsKafkaWidgets) .createMock(); upgradeCatalog222.addNewConfigurationsFromXml(); @@ -168,6 +170,8 @@ public class UpgradeCatalog222Test { expectLastCall().once(); upgradeCatalog222.createNewSliderConfigVersion(); expectLastCall().once(); + upgradeCatalog222.initializeStromAndKafkaWidgets(); + expectLastCall().once(); replay(upgradeCatalog222); @@ -715,5 +719,58 @@ public class UpgradeCatalog222Test { easyMockSupport.verifyAll(); } + @Test + public void testInitializeStromAndKafkaWidgets() throws AmbariException { + + String stormServiceName = "STORM"; + String kafkaServiceName = "KAFKA"; + String hbaseServiceName = "HBASE"; + + final AmbariManagementController controller = createStrictMock(AmbariManagementController.class); + final Clusters clusters = createStrictMock(Clusters.class); + final Cluster cluster = createStrictMock(Cluster.class); + final Service stormService = createStrictMock(Service.class); + final Service kafkaService = createStrictMock(Service.class); + final Service hbaseService = createStrictMock(Service.class); + final Map<String, Cluster> clusterMap = Collections.singletonMap("c1", cluster); + final Map<String, Service> services = new HashMap<>(); + services.put(stormServiceName, stormService); + services.put(kafkaServiceName, kafkaService); + services.put(hbaseServiceName, hbaseService); + + + Module module = new Module() { + @Override + public void configure(Binder binder) { + binder.bind(AmbariManagementController.class).toInstance(controller); + binder.bind(Clusters.class).toInstance(clusters); + binder.bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class)); + binder.bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class)); + } + }; + + expect(controller.getClusters()).andReturn(clusters).anyTimes(); + expect(clusters.getClusters()).andReturn(clusterMap).anyTimes(); + controller.initializeWidgetsAndLayouts(cluster, null); + expectLastCall().once(); + + expect(cluster.getServices()).andReturn(services).once(); + expect(stormService.getName()).andReturn(stormServiceName).atLeastOnce(); + expect(kafkaService.getName()).andReturn(kafkaServiceName).atLeastOnce(); + expect(hbaseService.getName()).andReturn(hbaseServiceName).atLeastOnce(); + + controller.initializeWidgetsAndLayouts(cluster, kafkaService); + expectLastCall().once(); + controller.initializeWidgetsAndLayouts(cluster, stormService); + expectLastCall().once(); + // but no controller call for HBase + + replay(controller, clusters, cluster, stormService, kafkaService, hbaseService); + + Injector injector = Guice.createInjector(module); + injector.getInstance(UpgradeCatalog222.class).initializeStromAndKafkaWidgets(); + + verify(controller, clusters, cluster, stormService, kafkaService, hbaseService); + } }