azkaban-aplcache
Changes
az-flow-trigger-dependency-plugin/src/main/java/azkaban/flowtrigger/DependencyInstanceCallback.java 0(+0 -0)
az-flow-trigger-dependency-plugin/src/main/java/azkaban/flowtrigger/DependencyInstanceConfig.java 0(+0 -0)
az-flow-trigger-dependency-plugin/src/main/java/azkaban/flowtrigger/DependencyInstanceContext.java 0(+0 -0)
az-flow-trigger-dependency-plugin/src/main/java/azkaban/flowtrigger/DependencyInstanceRuntimeProps.java 0(+0 -0)
az-flow-trigger-dependency-plugin/src/main/java/azkaban/flowtrigger/DependencyPluginConfig.java 0(+0 -0)
azkaban-web-server/build.gradle 232(+117 -115)
azkaban-web-server/src/test/java/azkaban/flowtrigger/testplugin/FakeDependencyCheck1.java 62(+62 -0)
azkaban-web-server/src/test/java/azkaban/flowtrigger/testplugin/FakeDependencyCheck2.java 51(+51 -0)
azkaban-web-server/src/test/java/azkaban/flowtrigger/testplugin/FakeDependencyInstanceContext1.java 35(+35 -0)
azkaban-web-server/src/test/java/azkaban/flowtrigger/testplugin/FakeDependencyInstanceContext2.java 35(+35 -0)
settings.gradle 1(+1 -0)
Details
diff --git a/az-flow-trigger-dependency-plugin/build.gradle b/az-flow-trigger-dependency-plugin/build.gradle
new file mode 100644
index 0000000..e56d83e
--- /dev/null
+++ b/az-flow-trigger-dependency-plugin/build.gradle
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2018 LinkedIn Corp.
+ *
+ * Licensed 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
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.
+ *
+ */
+
+dependencies {
+}
+
diff --git a/az-flow-trigger-dependency-plugin/README.md b/az-flow-trigger-dependency-plugin/README.md
new file mode 100644
index 0000000..38c4a14
--- /dev/null
+++ b/az-flow-trigger-dependency-plugin/README.md
@@ -0,0 +1 @@
+This module is the contract between azkaban and dependency plugin. It mainly contains minimal set of the interfaces needed by flow trigger dependency plugin development.
azkaban-web-server/build.gradle 232(+117 -115)
diff --git a/azkaban-web-server/build.gradle b/azkaban-web-server/build.gradle
index 6a7417a..0ee407d 100644
--- a/azkaban-web-server/build.gradle
+++ b/azkaban-web-server/build.gradle
@@ -1,42 +1,42 @@
buildscript {
- repositories {
- mavenCentral()
- maven {
- url 'https://plugins.gradle.org/m2/'
+ repositories {
+ mavenCentral()
+ maven {
+ url 'https://plugins.gradle.org/m2/'
+ }
+ }
+ dependencies {
+ classpath 'com.linkedin:gradle-dustjs-plugin:1.0.0'
+ classpath 'de.obqo.gradle:gradle-lesscss-plugin:1.0-1.3.3'
}
- }
- dependencies {
- classpath 'com.linkedin:gradle-dustjs-plugin:1.0.0'
- classpath 'de.obqo.gradle:gradle-lesscss-plugin:1.0-1.3.3'
- }
}
// This node plugin enables users to run any NodeJS script. The plugin will download and
// manage NodeJS distributions, use them from there.
// ***npm install*** installs all dependencies in package.json. It will only run when changes are made to package.json
plugins {
- id "com.moowork.node" version "0.13"
+ id "com.moowork.node" version "0.13"
}
node {
- // Version of node to use.
- version = '6.2.1'
+ // Version of node to use.
+ version = '6.2.1'
- // Version of npm to use.
- npmVersion = '3.9.3'
+ // Version of npm to use.
+ npmVersion = '3.9.3'
- // Base URL for fetching node distributions (change if you have a mirror).
- distBaseUrl = 'https://nodejs.org/dist'
+ // Base URL for fetching node distributions (change if you have a mirror).
+ distBaseUrl = 'https://nodejs.org/dist'
- // If true, it will download node using above parameters.
- // If false, it will try to use globally installed node.
- download = true
+ // If true, it will download node using above parameters.
+ // If false, it will try to use globally installed node.
+ download = true
- // Set the work directory for unpacking node
- workDir = file("${project.buildDir}/nodejs")
+ // Set the work directory for unpacking node
+ workDir = file("${project.buildDir}/nodejs")
- // Set the work directory where node_modules should be located
- nodeModulesDir = file("${project.projectDir}")
+ // Set the work directory where node_modules should be located
+ nodeModulesDir = file("${project.projectDir}")
}
apply plugin: 'lesscss'
@@ -44,148 +44,150 @@ apply plugin: 'dustjs'
apply plugin: 'distribution'
configurations {
- generateRestli
+ generateRestli
}
dependencies {
- compile project(':az-core')
- compile(project(':azkaban-common'))
+ compile project(':az-core')
+ compile(project(':azkaban-common'))
+ compile(project(':az-flow-trigger-dependency-plugin'))
- compile deps.restliServer
- compile deps.velocityTools
+ compile deps.restliServer
+ compile deps.velocityTools
- testCompile(project(path: ':azkaban-common', configuration: 'testCompile'))
- testCompile deps.collections
+ testCompile(project(path: ':azkaban-common', configuration: 'testCompile'))
+ testCompile deps.collections
- //AZ web module tests need to access classes defined in azkaban-common test module
- testCompile project(':azkaban-common').sourceSets.test.output
+ //AZ web module tests need to access classes defined in azkaban-common test module
+ testCompile project(':azkaban-common').sourceSets.test.output
- generateRestli deps.restliGenerator
- generateRestli deps.restliTools
+ generateRestli deps.restliGenerator
+ generateRestli deps.restliTools
- testCompile project(':test')
- testCompile project(path: ':azkaban-db', configuration: 'testOutput')
- testRuntime deps.h2
+ testCompile(project(path: ':az-flow-trigger-dependency-plugin', configuration: 'testCompile'))
+ testCompile project(':test')
+ testCompile project(path: ':azkaban-db', configuration: 'testOutput')
+ testRuntime deps.h2
}
sourceSets {
- main {
- java {
- srcDirs 'src/main/java', 'src/restli/generatedJava', 'src/restli/java'
+ main {
+ java {
+ srcDirs 'src/main/java', 'src/restli/generatedJava', 'src/restli/java'
+ }
}
- }
}
task movingJsTojsToPackage(dependsOn: ['npm_install']) {
- doLast {
- copy {
- from "node_modules/later/later.min.js"
- into "${buildDir}/jsToPackage"
- }
- copy {
- from "node_modules/moment/min/moment.min.js"
- into "${buildDir}/jsToPackage"
- }
- copy {
- from "node_modules/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js"
- into "${buildDir}/jsToPackage"
- }
- copy {
- from "node_modules/moment-timezone/builds/moment-timezone-with-data.min.js"
- into "${buildDir}/jsToPackage"
+ doLast {
+ copy {
+ from "node_modules/later/later.min.js"
+ into "${buildDir}/jsToPackage"
+ }
+ copy {
+ from "node_modules/moment/min/moment.min.js"
+ into "${buildDir}/jsToPackage"
+ }
+ copy {
+ from "node_modules/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js"
+ into "${buildDir}/jsToPackage"
+ }
+ copy {
+ from "node_modules/moment-timezone/builds/moment-timezone-with-data.min.js"
+ into "${buildDir}/jsToPackage"
+ }
}
- }
}
task cleanAll {
- delete 'jsToPackage'
- delete 'node_modules'
- delete 'velocity.log'
+ delete 'jsToPackage'
+ delete 'node_modules'
+ delete 'velocity.log'
}
clean.dependsOn cleanAll
task jsTest(dependsOn: ['npm_install'], type: NodeTask) {
- // refer to mocha js script file.
- script = file('node_modules/mocha/bin/mocha')
+ // refer to mocha js script file.
+ script = file('node_modules/mocha/bin/mocha')
- // args keep the test files' location
- args = ['src/web/js/azkaban/test/']
+ // args keep the test files' location
+ args = ['src/web/js/azkaban/test/']
}
test.dependsOn jsTest
task restliTemplateGenerator(type: JavaExec) {
- mkdir 'src/restli/generatedJava'
+ mkdir 'src/restli/generatedJava'
- main = 'com.linkedin.pegasus.generator.PegasusDataTemplateGenerator'
- args = ['src/restli/generatedJava','src/restli/schemas']
- classpath = configurations.generateRestli
+ main = 'com.linkedin.pegasus.generator.PegasusDataTemplateGenerator'
+ args = ['src/restli/generatedJava', 'src/restli/schemas']
+ classpath = configurations.generateRestli
}
task restliRestSpecGenerator(dependsOn: [restliTemplateGenerator], type: JavaExec) {
- doLast {
- mkdir 'src/restli/generatedRestSpec'
+ doLast {
+ mkdir 'src/restli/generatedRestSpec'
- main = 'com.linkedin.restli.tools.idlgen.RestLiResourceModelExporterCmdLineApp'
- args = ['-outdir', 'src/restli/generatedRestSpec', '-sourcepath', 'src/restli/java']
- classpath = configurations.generateRestli
- }
+ main = 'com.linkedin.restli.tools.idlgen.RestLiResourceModelExporterCmdLineApp'
+ args = ['-outdir', 'src/restli/generatedRestSpec', '-sourcepath', 'src/restli/java']
+ classpath = configurations.generateRestli
+ }
}
task restli(dependsOn: restliTemplateGenerator) {
- doLast {}
+ doLast {}
}
compileJava.dependsOn.add('restli')
lesscss {
- source = fileTree('src/main/less') {
- include 'azkaban.less'
- include 'azkaban-graph.less'
- }
- dest = 'build/less'
+ source = fileTree('src/main/less') {
+ include 'azkaban.less'
+ include 'azkaban-graph.less'
+ }
+ dest = 'build/less'
}
dustjs {
- source = fileTree('src/main/tl')
- dest = 'build/dust'
+ source = fileTree('src/main/tl')
+ dest = 'build/dust'
}
installDist.dependsOn 'lesscss'
distributions {
- main {
- contents {
- from('src/main/bash') {
- into 'bin'
- fileMode = 0755
- }
- from('../azkaban-common/src/main/bash') {
- into 'bin'
- fileMode = 0755
- }
- from(configurations.runtime) {
- into 'lib'
- }
- from(jar) {
- into 'lib'
- }
- from ('src/web') {
- into 'web'
- }
- from (lesscss.dest) {
- into 'web/css'
- }
- from (dustjs) {
- into 'web/js'
- }
- from ("${buildDir}/jsToPackage") {
- into 'web/js'
- }
- from (movingJsTojsToPackage) {
- into 'web/js'
- }
+ main {
+ contents {
+ from('src/main/bash') {
+ into 'bin'
+ fileMode = 0755
+ }
+ from('../azkaban-common/src/main/bash') {
+ into 'bin'
+ fileMode = 0755
+ }
+ from(configurations.runtime) {
+ into 'lib'
+ }
+ from(jar) {
+ into 'lib'
+ }
+ from('src/web') {
+ into 'web'
+ }
+ from(lesscss.dest) {
+ into 'web/css'
+ }
+ from(dustjs) {
+ into 'web/js'
+ }
+ from("${buildDir}/jsToPackage") {
+ into 'web/js'
+ }
+ from(movingJsTojsToPackage) {
+ into 'web/js'
+ }
+ }
}
- }
}
diff --git a/azkaban-web-server/src/test/java/azkaban/flowtrigger/testplugin/FakeDependencyCheck1.java b/azkaban-web-server/src/test/java/azkaban/flowtrigger/testplugin/FakeDependencyCheck1.java
new file mode 100644
index 0000000..bc3106c
--- /dev/null
+++ b/azkaban-web-server/src/test/java/azkaban/flowtrigger/testplugin/FakeDependencyCheck1.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2017 LinkedIn Corp.
+ *
+ * Licensed 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
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 azkaban.flowtrigger.testplugin;
+
+import azkaban.flowtrigger.DependencyCheck;
+import azkaban.flowtrigger.DependencyInstanceCallback;
+import azkaban.flowtrigger.DependencyInstanceConfig;
+import azkaban.flowtrigger.DependencyInstanceContext;
+import azkaban.flowtrigger.DependencyInstanceRuntimeProps;
+import azkaban.flowtrigger.DependencyPluginConfig;
+
+/**
+ * todo chengren311:
+ * az-flow-trigger-dependency-plugin.jar in resource folder is generated from
+ *
+ * @see azkaban.flowtrigger.testplugin.FakeDependencyCheck1
+ * @see azkaban.flowtrigger.testplugin.FakeDependencyCheck2
+ * @see azkaban.flowtrigger.testplugin.FakeDependencyInstanceContext1
+ * @see azkaban.flowtrigger.testplugin.FakeDependencyInstanceContext2
+ *
+ * But we need to find out a way to auto generate this jar while building.
+ */
+public class FakeDependencyCheck1 implements DependencyCheck {
+
+ private DependencyPluginConfig config;
+
+ @Override
+ public DependencyInstanceContext run(final DependencyInstanceConfig config,
+ final DependencyInstanceRuntimeProps runtimeProps,
+ final DependencyInstanceCallback callback) {
+ return new FakeDependencyInstanceContext1(config, runtimeProps, callback);
+ }
+
+ @Override
+ public void shutdown() {
+ }
+
+ @Override
+ public String toString() {
+ return this.config.toString();
+ }
+
+ @Override
+ public void init(final DependencyPluginConfig config) {
+ this.config = config;
+ }
+}
+
diff --git a/azkaban-web-server/src/test/java/azkaban/flowtrigger/testplugin/FakeDependencyCheck2.java b/azkaban-web-server/src/test/java/azkaban/flowtrigger/testplugin/FakeDependencyCheck2.java
new file mode 100644
index 0000000..c5b4eeb
--- /dev/null
+++ b/azkaban-web-server/src/test/java/azkaban/flowtrigger/testplugin/FakeDependencyCheck2.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2017 LinkedIn Corp.
+ *
+ * Licensed 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
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 azkaban.flowtrigger.testplugin;
+
+import azkaban.flowtrigger.DependencyCheck;
+import azkaban.flowtrigger.DependencyInstanceCallback;
+import azkaban.flowtrigger.DependencyInstanceConfig;
+import azkaban.flowtrigger.DependencyInstanceContext;
+import azkaban.flowtrigger.DependencyInstanceRuntimeProps;
+import azkaban.flowtrigger.DependencyPluginConfig;
+
+public class FakeDependencyCheck2 implements DependencyCheck {
+
+ private DependencyPluginConfig config;
+
+ @Override
+ public DependencyInstanceContext run(final DependencyInstanceConfig config,
+ final DependencyInstanceRuntimeProps runtimeProps,
+ final DependencyInstanceCallback callback) {
+ return new FakeDependencyInstanceContext2(config, runtimeProps, callback);
+ }
+
+ @Override
+ public void shutdown() {
+ }
+
+ @Override
+ public String toString() {
+ return this.config.toString();
+ }
+
+ @Override
+ public void init(final DependencyPluginConfig config) {
+ this.config = config;
+ }
+}
+
diff --git a/azkaban-web-server/src/test/java/azkaban/flowtrigger/testplugin/FakeDependencyInstanceContext1.java b/azkaban-web-server/src/test/java/azkaban/flowtrigger/testplugin/FakeDependencyInstanceContext1.java
new file mode 100644
index 0000000..67893ca
--- /dev/null
+++ b/azkaban-web-server/src/test/java/azkaban/flowtrigger/testplugin/FakeDependencyInstanceContext1.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2017 LinkedIn Corp.
+ *
+ * Licensed 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
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 azkaban.flowtrigger.testplugin;
+
+import azkaban.flowtrigger.DependencyInstanceCallback;
+import azkaban.flowtrigger.DependencyInstanceConfig;
+import azkaban.flowtrigger.DependencyInstanceContext;
+import azkaban.flowtrigger.DependencyInstanceRuntimeProps;
+
+@SuppressWarnings("FutureReturnValueIgnored")
+public class FakeDependencyInstanceContext1 implements DependencyInstanceContext {
+
+ public FakeDependencyInstanceContext1(final DependencyInstanceConfig config,
+ final DependencyInstanceRuntimeProps runtimeProps,
+ final DependencyInstanceCallback callback) {
+ }
+
+ @Override
+ public void cancel() {
+ }
+}
diff --git a/azkaban-web-server/src/test/java/azkaban/flowtrigger/testplugin/FakeDependencyInstanceContext2.java b/azkaban-web-server/src/test/java/azkaban/flowtrigger/testplugin/FakeDependencyInstanceContext2.java
new file mode 100644
index 0000000..a6842ef
--- /dev/null
+++ b/azkaban-web-server/src/test/java/azkaban/flowtrigger/testplugin/FakeDependencyInstanceContext2.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2017 LinkedIn Corp.
+ *
+ * Licensed 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
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 azkaban.flowtrigger.testplugin;
+
+import azkaban.flowtrigger.DependencyInstanceCallback;
+import azkaban.flowtrigger.DependencyInstanceConfig;
+import azkaban.flowtrigger.DependencyInstanceContext;
+import azkaban.flowtrigger.DependencyInstanceRuntimeProps;
+
+@SuppressWarnings("FutureReturnValueIgnored")
+public class FakeDependencyInstanceContext2 implements DependencyInstanceContext {
+
+ public FakeDependencyInstanceContext2(final DependencyInstanceConfig config,
+ final DependencyInstanceRuntimeProps runtimeProps,
+ final DependencyInstanceCallback callback) {
+ }
+
+ @Override
+ public void cancel() {
+ }
+}
diff --git a/azkaban-web-server/src/test/resources/az-flow-trigger-dependency-plugin.jar b/azkaban-web-server/src/test/resources/az-flow-trigger-dependency-plugin.jar
index 7198f75..7204be4 100644
Binary files a/azkaban-web-server/src/test/resources/az-flow-trigger-dependency-plugin.jar and b/azkaban-web-server/src/test/resources/az-flow-trigger-dependency-plugin.jar differ
diff --git a/azkaban-web-server/src/test/resources/dependencyplugin/test/dependency.properties b/azkaban-web-server/src/test/resources/dependencyplugin/test/dependency.properties
index c83e29a..25cd94e 100644
--- a/azkaban-web-server/src/test/resources/dependencyplugin/test/dependency.properties
+++ b/azkaban-web-server/src/test/resources/dependencyplugin/test/dependency.properties
@@ -1,5 +1,5 @@
kafka.url=123
kafka.port=1234
#required
-dependency.class=azkaban.testplugin.TestDependencyCheck
+dependency.class=azkaban.flowtrigger.testplugin.FakeDependencyCheck1
dependency.classpath=src/test/resources/az-flow-trigger-dependency-plugin.jar
\ No newline at end of file
diff --git a/azkaban-web-server/src/test/resources/dependencyplugin/test2/dependency.properties b/azkaban-web-server/src/test/resources/dependencyplugin/test2/dependency.properties
index a32a45d..0b6dc47 100644
--- a/azkaban-web-server/src/test/resources/dependencyplugin/test2/dependency.properties
+++ b/azkaban-web-server/src/test/resources/dependencyplugin/test2/dependency.properties
@@ -1,4 +1,4 @@
hdfsnamenode=123
hdfsurl=1234
-dependency.class=azkaban.testplugin2.TestDependencyCheck2
+dependency.class=azkaban.flowtrigger.testplugin.FakeDependencyCheck2
dependency.classpath=src/test/resources/az-flow-trigger-dependency-plugin.jar
settings.gradle 1(+1 -0)
diff --git a/settings.gradle b/settings.gradle
index 1b44194..dae347c 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -25,4 +25,5 @@ include 'azkaban-exec-server'
include 'azkaban-hadoop-security-plugin'
include 'azkaban-solo-server'
include 'azkaban-web-server'
+include 'az-flow-trigger-dependency-plugin'
include 'test'