[EAGLE-600] Make AlertUnitTopologyApp compatible with both appId and 
topology.name

https://issues.apache.org/jira/browse/EAGLE-600

Make sure AlertUnitTopologyApp compatible with both "appId" and "topology.name"

Author: Hao Chen <h...@apache.org>

Closes #484 from haoch/EAGLE-600.


Project: http://git-wip-us.apache.org/repos/asf/incubator-eagle/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-eagle/commit/d9b82b45
Tree: http://git-wip-us.apache.org/repos/asf/incubator-eagle/tree/d9b82b45
Diff: http://git-wip-us.apache.org/repos/asf/incubator-eagle/diff/d9b82b45

Branch: refs/heads/master
Commit: d9b82b45daa3adb678fff7138855bd07a241afb6
Parents: 0277ff7
Author: Hao Chen <h...@apache.org>
Authored: Mon Oct 10 17:15:28 2016 +0800
Committer: Zhao, Qingwen <qingwz...@ebay.com>
Committed: Mon Oct 10 17:15:28 2016 +0800

----------------------------------------------------------------------
 .../eagle/alert/app/AlertUnitTopologyApp.java   |  3 +-
 .../eagle/alert/engine/UnitTopologyMain.java    | 21 +++++--
 .../environment/impl/StormExecutionRuntime.java | 11 ++--
 .../app/utils/ApplicationExecutionConfig.java   | 66 ++++++++++++++++++++
 eagle-server/pom.xml                            |  4 ++
 5 files changed, 93 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/d9b82b45/eagle-core/eagle-alert-parent/eagle-alert-app/src/main/java/org/apache/eagle/alert/app/AlertUnitTopologyApp.java
----------------------------------------------------------------------
diff --git 
a/eagle-core/eagle-alert-parent/eagle-alert-app/src/main/java/org/apache/eagle/alert/app/AlertUnitTopologyApp.java
 
b/eagle-core/eagle-alert-parent/eagle-alert-app/src/main/java/org/apache/eagle/alert/app/AlertUnitTopologyApp.java
index 63e92ff..a122c08 100644
--- 
a/eagle-core/eagle-alert-parent/eagle-alert-app/src/main/java/org/apache/eagle/alert/app/AlertUnitTopologyApp.java
+++ 
b/eagle-core/eagle-alert-parent/eagle-alert-app/src/main/java/org/apache/eagle/alert/app/AlertUnitTopologyApp.java
@@ -34,8 +34,7 @@ public class AlertUnitTopologyApp extends StormApplication {
     }
 
     public static void main(String[] args) {
-        Config config = ConfigFactory.load();
         AlertUnitTopologyApp app = new AlertUnitTopologyApp();
-        app.run(config);
+        app.run(args);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/d9b82b45/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/UnitTopologyMain.java
----------------------------------------------------------------------
diff --git 
a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/UnitTopologyMain.java
 
b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/UnitTopologyMain.java
index 497d908..01b16b8 100644
--- 
a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/UnitTopologyMain.java
+++ 
b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/UnitTopologyMain.java
@@ -62,14 +62,14 @@ public class UnitTopologyMain {
         Config config = ConfigFactory.load();
 
         // load config and start
-        String topologyId = config.getString("topology.name");
+        String topologyId = getTopologyName(config);
         ZKMetadataChangeNotifyService changeNotifyService = 
createZKNotifyService(config, topologyId);
         new UnitTopologyRunner(changeNotifyService).run(topologyId, config);
     }
 
     public static void runTopology(Config config, backtype.storm.Config 
stormConfig) {
         // load config and start
-        String topologyId = config.getString("topology.name");
+        String topologyId = getTopologyName(config);
         ZKMetadataChangeNotifyService changeNotifyService = 
createZKNotifyService(config, topologyId);
         new UnitTopologyRunner(changeNotifyService, 
stormConfig).run(topologyId, config);
     }
@@ -81,9 +81,22 @@ public class UnitTopologyMain {
     }
 
     public static StormTopology createTopology(Config config) {
-        String topologyId = config.getString("topology.name");
+        String topologyId = getTopologyName(config);
         ZKMetadataChangeNotifyService changeNotifyService = 
createZKNotifyService(config, topologyId);
 
         return new 
UnitTopologyRunner(changeNotifyService).buildTopology(topologyId, config);
     }
-}
+
+    /**
+     * Try to get topology name from app framework .e.g "appId" or 
"topology.name"
+     */
+    private static String getTopologyName(Config config) {
+        if (config.hasPath("topology.name")) {
+            return config.getString("topology.name");
+        } else if (config.hasPath("appId")) {
+            return config.getString("appId");
+        } else {
+            throw new IllegalStateException("Not topology.name or appId 
provided from config: " + config.toString());
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/d9b82b45/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/StormExecutionRuntime.java
----------------------------------------------------------------------
diff --git 
a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/StormExecutionRuntime.java
 
b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/StormExecutionRuntime.java
index 5f74d01..9821660 100644
--- 
a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/StormExecutionRuntime.java
+++ 
b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/StormExecutionRuntime.java
@@ -16,17 +16,16 @@
  */
 package org.apache.eagle.app.environment.impl;
 
-import backtype.storm.utils.Utils;
-import org.apache.eagle.app.Application;
-import org.apache.eagle.app.environment.ExecutionRuntime;
-import org.apache.eagle.app.environment.ExecutionRuntimeProvider;
-import org.apache.eagle.app.utils.DynamicJarPathFinder;
-import org.apache.eagle.metadata.model.ApplicationEntity;
 import backtype.storm.Config;
 import backtype.storm.LocalCluster;
 import backtype.storm.generated.*;
 import backtype.storm.utils.NimbusClient;
 import com.google.common.base.Preconditions;
+import org.apache.eagle.app.Application;
+import org.apache.eagle.app.environment.ExecutionRuntime;
+import org.apache.eagle.app.environment.ExecutionRuntimeProvider;
+import org.apache.eagle.app.utils.DynamicJarPathFinder;
+import org.apache.eagle.metadata.model.ApplicationEntity;
 import org.apache.thrift7.TException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/d9b82b45/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/utils/ApplicationExecutionConfig.java
----------------------------------------------------------------------
diff --git 
a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/utils/ApplicationExecutionConfig.java
 
b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/utils/ApplicationExecutionConfig.java
new file mode 100644
index 0000000..73199fe
--- /dev/null
+++ 
b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/utils/ApplicationExecutionConfig.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.eagle.app.utils;
+
+import com.typesafe.config.Config;
+import org.apache.eagle.metadata.model.ApplicationEntity;
+
+/**
+ * Application Execution Must-have base configuration.
+ */
+public class ApplicationExecutionConfig {
+    public static final String APP_ID_KEY = "appId";
+    public static final String MODE_KEY = "mode";
+    public static final String SITE_ID_KEY = "siteId";
+    public static final String JAR_PATH_KEY = "jarPath";
+
+    private final String siteId;
+    private final String mode;
+    private final String appId;
+    private final String jarPath;
+
+    public ApplicationExecutionConfig(ApplicationEntity metadata) {
+        this.siteId = metadata.getSite().getSiteId();
+        this.mode = metadata.getMode().name();
+        this.appId = metadata.getAppId();
+        this.jarPath = metadata.getJarPath();
+    }
+
+    public ApplicationExecutionConfig(Config config) {
+        this.siteId = config.getString(SITE_ID_KEY);
+        this.mode = config.getString(MODE_KEY);
+        this.appId = config.getString(APP_ID_KEY);
+        this.jarPath = config.getString(JAR_PATH_KEY);
+    }
+
+    public String getJarPath() {
+        return jarPath;
+    }
+
+    public String getAppId() {
+        return appId;
+    }
+
+    public String getMode() {
+        return mode;
+    }
+
+    public String getSiteId() {
+        return siteId;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/d9b82b45/eagle-server/pom.xml
----------------------------------------------------------------------
diff --git a/eagle-server/pom.xml b/eagle-server/pom.xml
index aa190e4..21bda30 100644
--- a/eagle-server/pom.xml
+++ b/eagle-server/pom.xml
@@ -96,6 +96,10 @@
                     <groupId>org.slf4j</groupId>
                     <artifactId>slf4j-log4j12</artifactId>
                 </exclusion>
+                <exclusion>
+                    <groupId>org.wso2.orbit.com.lmax</groupId>
+                    <artifactId>disruptor</artifactId>
+                </exclusion>
             </exclusions>
         </dependency>
         <dependency>

Reply via email to