Browse Source
* data source spi * Fix datasource not work in tests and standalone server, and run all tests by default (#6743) * Refactor alert plugins and simplify its usage (#6723) * [Fix-6792] resolve API and alert port conflicts (#6792) (#6815) * [Fix-6792]Multiple ApplicationRunners on classpath make SpringApplication.run only run one (#6792) * [Feature][datasource] Change DataSource Connection Pool from Druid to HiKariCP (#6490) (#6828) * [Feature][datasource] Change DataSource Connection Pool from Druid to HiKariCP (#6490) * fix pom dep scope * filter alert * filter alert * filter alert * fix checkstyle * remove hikaricp version * update pom * add properties * add properties * rename properties * fix e2e fail * rename properties * [Fix-6792] resolve API and alert port conflicts (#6792) (#6815) [Fix-6792]Multiple ApplicationRunners on classpath make SpringApplication.run only run one (#6792) * fix ut fail * fix license * fix license * update package * update package * remove unused license Co-authored-by: mask <39329477+narcasserun@users.noreply.github.com> Co-authored-by: kezhenxu94 <kezhenxu94@apache.org>2.0.7-release
Kirs
3 years ago
committed by
GitHub
485 changed files with 7677 additions and 17994 deletions
@ -1,30 +0,0 @@ |
|||||||
# |
|
||||||
# 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 |
|
||||||
# |
|
||||||
# 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. |
|
||||||
# |
|
||||||
|
|
||||||
#This configuration file configures the configuration parameters related to the AlertServer. |
|
||||||
#These parameters are only related to the AlertServer, and it has nothing to do with the specific Alert Plugin. |
|
||||||
#eg : max retry num. |
|
||||||
#eg : Alert Server Listener port |
|
||||||
|
|
||||||
#alert.plugin.dir config the Alert Plugin dir . AlertServer while find and load the Alert Plugin Jar from this dir when deploy and start AlertServer on the server . |
|
||||||
alert.plugin.dir=${ALERT_PLUGIN_DIR} |
|
||||||
|
|
||||||
#maven.local.repository=/Users/gaojun/Documents/jianguoyun/localRepository |
|
||||||
|
|
||||||
#alert.plugin.binding config the Alert Plugin need be load when development and run in IDE |
|
||||||
#alert.plugin.binding=\ |
|
||||||
# ./dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/pom.xml |
|
@ -1,82 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="UTF-8"?> |
|
||||||
<!-- |
|
||||||
~ 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 |
|
||||||
~ |
|
||||||
~ 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. |
|
||||||
--> |
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
|
||||||
<parent> |
|
||||||
<artifactId>dolphinscheduler-alert-plugin</artifactId> |
|
||||||
<groupId>org.apache.dolphinscheduler</groupId> |
|
||||||
<version>2.0.1-SNAPSHOT</version> |
|
||||||
</parent> |
|
||||||
<modelVersion>4.0.0</modelVersion> |
|
||||||
|
|
||||||
<groupId>org.apache.dolphinscheduler</groupId> |
|
||||||
<artifactId>dolphinscheduler-alert-dingtalk</artifactId> |
|
||||||
<packaging>dolphinscheduler-plugin</packaging> |
|
||||||
|
|
||||||
<dependencies> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>org.apache.httpcomponents</groupId> |
|
||||||
<artifactId>httpclient</artifactId> |
|
||||||
</dependency> |
|
||||||
<dependency> |
|
||||||
<groupId>com.google.guava</groupId> |
|
||||||
<artifactId>guava</artifactId> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>ch.qos.logback</groupId> |
|
||||||
<artifactId>logback-classic</artifactId> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>org.slf4j</groupId> |
|
||||||
<artifactId>slf4j-api</artifactId> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>com.fasterxml.jackson.core</groupId> |
|
||||||
<artifactId>jackson-annotations</artifactId> |
|
||||||
<scope>provided</scope> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>junit</groupId> |
|
||||||
<artifactId>junit</artifactId> |
|
||||||
<scope>test</scope> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>org.mockito</groupId> |
|
||||||
<artifactId>mockito-core</artifactId> |
|
||||||
<type>jar</type> |
|
||||||
<scope>test</scope> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>org.jacoco</groupId> |
|
||||||
<artifactId>org.jacoco.agent</artifactId> |
|
||||||
<classifier>runtime</classifier> |
|
||||||
<scope>test</scope> |
|
||||||
</dependency> |
|
||||||
</dependencies> |
|
||||||
|
|
||||||
<build> |
|
||||||
<finalName>dolphinscheduler-alert-dingtalk-${project.version}</finalName> |
|
||||||
</build> |
|
||||||
|
|
||||||
</project> |
|
@ -1,115 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="UTF-8"?> |
|
||||||
<!-- |
|
||||||
~ 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 |
|
||||||
~ |
|
||||||
~ 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. |
|
||||||
--> |
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
|
||||||
<parent> |
|
||||||
<artifactId>dolphinscheduler-alert-plugin</artifactId> |
|
||||||
<groupId>org.apache.dolphinscheduler</groupId> |
|
||||||
<version>2.0.1-SNAPSHOT</version> |
|
||||||
</parent> |
|
||||||
<modelVersion>4.0.0</modelVersion> |
|
||||||
|
|
||||||
<groupId>org.apache.dolphinscheduler</groupId> |
|
||||||
<artifactId>dolphinscheduler-alert-email</artifactId> |
|
||||||
<!-- can be load as a Alert Plugin when development and run server in IDE --> |
|
||||||
<packaging>dolphinscheduler-plugin</packaging> |
|
||||||
|
|
||||||
<dependencies> |
|
||||||
<dependency> |
|
||||||
<groupId>org.apache.commons</groupId> |
|
||||||
<artifactId>commons-collections4</artifactId> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>org.apache.poi</groupId> |
|
||||||
<artifactId>poi</artifactId> |
|
||||||
</dependency> |
|
||||||
<dependency> |
|
||||||
<groupId>org.apache.poi</groupId> |
|
||||||
<artifactId>poi-ooxml</artifactId> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>com.google.guava</groupId> |
|
||||||
<artifactId>guava</artifactId> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>ch.qos.logback</groupId> |
|
||||||
<artifactId>logback-classic</artifactId> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>org.slf4j</groupId> |
|
||||||
<artifactId>slf4j-api</artifactId> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>org.apache.commons</groupId> |
|
||||||
<artifactId>commons-email</artifactId> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>com.fasterxml.jackson.core</groupId> |
|
||||||
<artifactId>jackson-annotations</artifactId> |
|
||||||
<scope>provided</scope> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>junit</groupId> |
|
||||||
<artifactId>junit</artifactId> |
|
||||||
<scope>test</scope> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>org.mockito</groupId> |
|
||||||
<artifactId>mockito-core</artifactId> |
|
||||||
<type>jar</type> |
|
||||||
<scope>test</scope> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>org.powermock</groupId> |
|
||||||
<artifactId>powermock-module-junit4</artifactId> |
|
||||||
<scope>test</scope> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>org.powermock</groupId> |
|
||||||
<artifactId>powermock-api-mockito2</artifactId> |
|
||||||
<scope>test</scope> |
|
||||||
<exclusions> |
|
||||||
<exclusion> |
|
||||||
<groupId>org.mockito</groupId> |
|
||||||
<artifactId>mockito-core</artifactId> |
|
||||||
</exclusion> |
|
||||||
</exclusions> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>org.jacoco</groupId> |
|
||||||
<artifactId>org.jacoco.agent</artifactId> |
|
||||||
<classifier>runtime</classifier> |
|
||||||
<scope>test</scope> |
|
||||||
</dependency> |
|
||||||
</dependencies> |
|
||||||
|
|
||||||
<build> |
|
||||||
<finalName>dolphinscheduler-alert-email-${project.version}</finalName> |
|
||||||
</build> |
|
||||||
|
|
||||||
</project> |
|
@ -1,140 +0,0 @@ |
|||||||
/* |
|
||||||
* 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 |
|
||||||
* |
|
||||||
* 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 org.apache.dolphinscheduler.plugin.alert.email; |
|
||||||
|
|
||||||
import static org.apache.dolphinscheduler.spi.utils.Constants.STRING_FALSE; |
|
||||||
import static org.apache.dolphinscheduler.spi.utils.Constants.STRING_NO; |
|
||||||
import static org.apache.dolphinscheduler.spi.utils.Constants.STRING_TRUE; |
|
||||||
import static org.apache.dolphinscheduler.spi.utils.Constants.STRING_YES; |
|
||||||
|
|
||||||
import org.apache.dolphinscheduler.spi.alert.AlertChannel; |
|
||||||
import org.apache.dolphinscheduler.spi.alert.AlertChannelFactory; |
|
||||||
import org.apache.dolphinscheduler.spi.alert.AlertConstants; |
|
||||||
import org.apache.dolphinscheduler.spi.alert.ShowType; |
|
||||||
import org.apache.dolphinscheduler.spi.params.input.InputParam; |
|
||||||
import org.apache.dolphinscheduler.spi.params.PasswordParam; |
|
||||||
import org.apache.dolphinscheduler.spi.params.radio.RadioParam; |
|
||||||
import org.apache.dolphinscheduler.spi.params.base.ParamsOptions; |
|
||||||
import org.apache.dolphinscheduler.spi.params.base.PluginParams; |
|
||||||
import org.apache.dolphinscheduler.spi.params.base.Validate; |
|
||||||
|
|
||||||
import java.util.ArrayList; |
|
||||||
import java.util.List; |
|
||||||
|
|
||||||
/** |
|
||||||
* email alert factory |
|
||||||
*/ |
|
||||||
public class EmailAlertChannelFactory implements AlertChannelFactory { |
|
||||||
@Override |
|
||||||
public String getName() { |
|
||||||
return "Email"; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public List<PluginParams> getParams() { |
|
||||||
|
|
||||||
List<PluginParams> paramsList = new ArrayList<>(); |
|
||||||
InputParam receivesParam = InputParam.newBuilder(MailParamsConstants.NAME_PLUGIN_DEFAULT_EMAIL_RECEIVERS, MailParamsConstants.PLUGIN_DEFAULT_EMAIL_RECEIVERS) |
|
||||||
.setPlaceholder("please input receives") |
|
||||||
.addValidate(Validate.newBuilder() |
|
||||||
.setRequired(true) |
|
||||||
.build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
InputParam receiveCcsParam = InputParam.newBuilder(MailParamsConstants.NAME_PLUGIN_DEFAULT_EMAIL_RECEIVERCCS, MailParamsConstants.PLUGIN_DEFAULT_EMAIL_RECEIVERCCS) |
|
||||||
.build(); |
|
||||||
|
|
||||||
InputParam mailSmtpHost = InputParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_HOST, MailParamsConstants.MAIL_SMTP_HOST) |
|
||||||
.addValidate(Validate.newBuilder().setRequired(true).build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
InputParam mailSmtpPort = InputParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_PORT, MailParamsConstants.MAIL_SMTP_PORT) |
|
||||||
.setValue("25") |
|
||||||
.addValidate(Validate.newBuilder() |
|
||||||
.setRequired(true) |
|
||||||
.build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
InputParam mailSender = InputParam.newBuilder(MailParamsConstants.NAME_MAIL_SENDER, MailParamsConstants.MAIL_SENDER) |
|
||||||
.addValidate(Validate.newBuilder().setRequired(true).build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
RadioParam enableSmtpAuth = RadioParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_AUTH, MailParamsConstants.MAIL_SMTP_AUTH) |
|
||||||
.addParamsOptions(new ParamsOptions(STRING_YES, STRING_TRUE, false)) |
|
||||||
.addParamsOptions(new ParamsOptions(STRING_NO, STRING_FALSE, false)) |
|
||||||
.setValue(STRING_TRUE) |
|
||||||
.addValidate(Validate.newBuilder().setRequired(true).build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
InputParam mailUser = InputParam.newBuilder(MailParamsConstants.NAME_MAIL_USER, MailParamsConstants.MAIL_USER) |
|
||||||
.setPlaceholder("if enable use authentication, you need input user") |
|
||||||
.build(); |
|
||||||
|
|
||||||
PasswordParam mailPassword = PasswordParam.newBuilder(MailParamsConstants.NAME_MAIL_PASSWD, MailParamsConstants.MAIL_PASSWD) |
|
||||||
.setPlaceholder("if enable use authentication, you need input password") |
|
||||||
.build(); |
|
||||||
|
|
||||||
RadioParam enableTls = RadioParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_STARTTLS_ENABLE, MailParamsConstants.MAIL_SMTP_STARTTLS_ENABLE) |
|
||||||
.addParamsOptions(new ParamsOptions(STRING_YES, STRING_TRUE, false)) |
|
||||||
.addParamsOptions(new ParamsOptions(STRING_NO, STRING_FALSE, false)) |
|
||||||
.setValue(STRING_FALSE) |
|
||||||
.addValidate(Validate.newBuilder().setRequired(true).build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
RadioParam enableSsl = RadioParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_SSL_ENABLE, MailParamsConstants.MAIL_SMTP_SSL_ENABLE) |
|
||||||
.addParamsOptions(new ParamsOptions(STRING_YES, STRING_TRUE, false)) |
|
||||||
.addParamsOptions(new ParamsOptions(STRING_NO, STRING_FALSE, false)) |
|
||||||
.setValue(STRING_FALSE) |
|
||||||
.addValidate(Validate.newBuilder().setRequired(true).build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
InputParam sslTrust = InputParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_SSL_TRUST, MailParamsConstants.MAIL_SMTP_SSL_TRUST) |
|
||||||
.setValue("*") |
|
||||||
.addValidate(Validate.newBuilder().setRequired(true).build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
RadioParam showType = RadioParam.newBuilder(AlertConstants.SHOW_TYPE, AlertConstants.SHOW_TYPE) |
|
||||||
.addParamsOptions(new ParamsOptions(ShowType.TABLE.getDescp(), ShowType.TABLE.getDescp(), false)) |
|
||||||
.addParamsOptions(new ParamsOptions(ShowType.TEXT.getDescp(), ShowType.TEXT.getDescp(), false)) |
|
||||||
.addParamsOptions(new ParamsOptions(ShowType.ATTACHMENT.getDescp(), ShowType.ATTACHMENT.getDescp(), false)) |
|
||||||
.addParamsOptions(new ParamsOptions(ShowType.TABLEATTACHMENT.getDescp(), ShowType.TABLEATTACHMENT.getDescp(), false)) |
|
||||||
.setValue(ShowType.TABLE.getDescp()) |
|
||||||
.addValidate(Validate.newBuilder().setRequired(true).build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
paramsList.add(receivesParam); |
|
||||||
paramsList.add(receiveCcsParam); |
|
||||||
paramsList.add(mailSmtpHost); |
|
||||||
paramsList.add(mailSmtpPort); |
|
||||||
paramsList.add(mailSender); |
|
||||||
paramsList.add(enableSmtpAuth); |
|
||||||
paramsList.add(mailUser); |
|
||||||
paramsList.add(mailPassword); |
|
||||||
paramsList.add(enableTls); |
|
||||||
paramsList.add(enableSsl); |
|
||||||
paramsList.add(sslTrust); |
|
||||||
paramsList.add(showType); |
|
||||||
|
|
||||||
return paramsList; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public AlertChannel create() { |
|
||||||
return new EmailAlertChannel(); |
|
||||||
} |
|
||||||
} |
|
@ -1,163 +0,0 @@ |
|||||||
/* |
|
||||||
* 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 |
|
||||||
* |
|
||||||
* 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 org.apache.dolphinscheduler.plugin.alert.email; |
|
||||||
|
|
||||||
import org.apache.dolphinscheduler.spi.alert.AlertConstants; |
|
||||||
import org.apache.dolphinscheduler.spi.alert.AlertData; |
|
||||||
import org.apache.dolphinscheduler.spi.alert.AlertInfo; |
|
||||||
import org.apache.dolphinscheduler.spi.alert.AlertResult; |
|
||||||
import org.apache.dolphinscheduler.spi.alert.ShowType; |
|
||||||
import org.apache.dolphinscheduler.spi.params.input.InputParam; |
|
||||||
import org.apache.dolphinscheduler.spi.params.PasswordParam; |
|
||||||
import org.apache.dolphinscheduler.spi.params.PluginParamsTransfer; |
|
||||||
import org.apache.dolphinscheduler.spi.params.radio.RadioParam; |
|
||||||
import org.apache.dolphinscheduler.spi.params.base.ParamsOptions; |
|
||||||
import org.apache.dolphinscheduler.spi.params.base.PluginParams; |
|
||||||
import org.apache.dolphinscheduler.spi.params.base.Validate; |
|
||||||
import org.apache.dolphinscheduler.spi.utils.JSONUtils; |
|
||||||
|
|
||||||
import java.util.ArrayList; |
|
||||||
import java.util.LinkedHashMap; |
|
||||||
import java.util.List; |
|
||||||
import java.util.Map; |
|
||||||
|
|
||||||
import org.junit.Assert; |
|
||||||
import org.junit.Test; |
|
||||||
|
|
||||||
/** |
|
||||||
* EmailAlertChannel Tester. |
|
||||||
*/ |
|
||||||
public class EmailAlertChannelTest { |
|
||||||
|
|
||||||
/** |
|
||||||
* Method: process(AlertInfo info) |
|
||||||
*/ |
|
||||||
@Test |
|
||||||
public void testProcess() { |
|
||||||
EmailAlertChannel emailAlertChannel = new EmailAlertChannel(); |
|
||||||
AlertData alertData = new AlertData(); |
|
||||||
LinkedHashMap<String, Object> map1 = new LinkedHashMap<>(); |
|
||||||
map1.put("mysql service name", "mysql200"); |
|
||||||
map1.put("mysql address", "192.168.xx.xx"); |
|
||||||
map1.put("port", "3306"); |
|
||||||
map1.put("no index of number", "80"); |
|
||||||
map1.put("database client connections", "190"); |
|
||||||
List<LinkedHashMap<String, Object>> maps = new ArrayList<>(); |
|
||||||
maps.add(0, map1); |
|
||||||
String mapjson = JSONUtils.toJsonString(maps); |
|
||||||
|
|
||||||
alertData.setId(10) |
|
||||||
.setContent(mapjson) |
|
||||||
.setLog("10") |
|
||||||
.setTitle("test"); |
|
||||||
AlertInfo alertInfo = new AlertInfo(); |
|
||||||
alertInfo.setAlertData(alertData); |
|
||||||
Map<String, String> paramsMap = PluginParamsTransfer.getPluginParamsMap(getEmailAlertParams()); |
|
||||||
|
|
||||||
alertInfo.setAlertParams(paramsMap); |
|
||||||
AlertResult alertResult = emailAlertChannel.process(alertInfo); |
|
||||||
Assert.assertNotNull(alertResult); |
|
||||||
Assert.assertEquals("false", alertResult.getStatus()); |
|
||||||
} |
|
||||||
|
|
||||||
public String getEmailAlertParams() { |
|
||||||
List<PluginParams> paramsList = new ArrayList<>(); |
|
||||||
InputParam receivesParam = InputParam.newBuilder("receivers", "receivers") |
|
||||||
.setValue("540957506@qq.com") |
|
||||||
.addValidate(Validate.newBuilder().setRequired(true).build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
InputParam mailSmtpHost = InputParam.newBuilder("serverHost", "smtp.host") |
|
||||||
.addValidate(Validate.newBuilder().setRequired(true).build()) |
|
||||||
.setValue("smtp.126.com") |
|
||||||
.build(); |
|
||||||
|
|
||||||
InputParam mailSmtpPort = InputParam.newBuilder("serverPort", "smtp.port") |
|
||||||
.addValidate(Validate.newBuilder() |
|
||||||
.setRequired(true) |
|
||||||
.build()) |
|
||||||
.setValue("25") |
|
||||||
.build(); |
|
||||||
|
|
||||||
InputParam mailSender = InputParam.newBuilder("sender", "sender") |
|
||||||
.addValidate(Validate.newBuilder().setRequired(true).build()) |
|
||||||
.setValue("dolphinscheduler@126.com") |
|
||||||
.build(); |
|
||||||
|
|
||||||
RadioParam enableSmtpAuth = RadioParam.newBuilder("enableSmtpAuth", "smtp.auth") |
|
||||||
.addParamsOptions(new ParamsOptions("YES", "true", false)) |
|
||||||
.addParamsOptions(new ParamsOptions("NO", "false", false)) |
|
||||||
.addValidate(Validate.newBuilder().setRequired(true).build()) |
|
||||||
.setValue("false") |
|
||||||
.build(); |
|
||||||
|
|
||||||
InputParam mailUser = InputParam.newBuilder("user", "user") |
|
||||||
.setPlaceholder("if enable use authentication, you need input user") |
|
||||||
.setValue("dolphinscheduler@126.com") |
|
||||||
.build(); |
|
||||||
|
|
||||||
PasswordParam mailPassword = PasswordParam.newBuilder("passwd", "passwd") |
|
||||||
.setPlaceholder("if enable use authentication, you need input password") |
|
||||||
.setValue("escheduler123") |
|
||||||
.build(); |
|
||||||
|
|
||||||
RadioParam enableTls = RadioParam.newBuilder("starttlsEnable", "starttls.enable") |
|
||||||
.addParamsOptions(new ParamsOptions("YES", "true", false)) |
|
||||||
.addParamsOptions(new ParamsOptions("NO", "false", false)) |
|
||||||
.addValidate(Validate.newBuilder().setRequired(true).build()) |
|
||||||
.setValue("true") |
|
||||||
.build(); |
|
||||||
|
|
||||||
RadioParam enableSsl = RadioParam.newBuilder("sslEnable", "smtp.ssl.enable") |
|
||||||
.addParamsOptions(new ParamsOptions("YES", "true", false)) |
|
||||||
.addParamsOptions(new ParamsOptions("NO", "false", false)) |
|
||||||
.addValidate(Validate.newBuilder().setRequired(true).build()) |
|
||||||
.setValue("true") |
|
||||||
.build(); |
|
||||||
|
|
||||||
InputParam sslTrust = InputParam.newBuilder("smtpSslTrust", "smtp.ssl.trust") |
|
||||||
.addValidate(Validate.newBuilder().setRequired(true).build()) |
|
||||||
.setValue("smtp.126.com") |
|
||||||
.build(); |
|
||||||
|
|
||||||
List<ParamsOptions> emailShowTypeList = new ArrayList<>(); |
|
||||||
emailShowTypeList.add(new ParamsOptions(ShowType.TABLE.getDescp(), ShowType.TABLE.getDescp(), false)); |
|
||||||
emailShowTypeList.add(new ParamsOptions(ShowType.TEXT.getDescp(), ShowType.TEXT.getDescp(), false)); |
|
||||||
emailShowTypeList.add(new ParamsOptions(ShowType.ATTACHMENT.getDescp(), ShowType.ATTACHMENT.getDescp(), false)); |
|
||||||
emailShowTypeList.add(new ParamsOptions(ShowType.TABLEATTACHMENT.getDescp(), ShowType.TABLEATTACHMENT.getDescp(), false)); |
|
||||||
RadioParam showType = RadioParam.newBuilder(AlertConstants.SHOW_TYPE, "showType") |
|
||||||
.setOptions(emailShowTypeList) |
|
||||||
.setValue(ShowType.TABLE.getDescp()) |
|
||||||
.addValidate(Validate.newBuilder().setRequired(true).build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
paramsList.add(receivesParam); |
|
||||||
paramsList.add(mailSmtpHost); |
|
||||||
paramsList.add(mailSmtpPort); |
|
||||||
paramsList.add(mailSender); |
|
||||||
paramsList.add(enableSmtpAuth); |
|
||||||
paramsList.add(mailUser); |
|
||||||
paramsList.add(mailPassword); |
|
||||||
paramsList.add(enableTls); |
|
||||||
paramsList.add(enableSsl); |
|
||||||
paramsList.add(sslTrust); |
|
||||||
paramsList.add(showType); |
|
||||||
|
|
||||||
return JSONUtils.toJsonString(paramsList); |
|
||||||
} |
|
||||||
} |
|
@ -1,78 +0,0 @@ |
|||||||
/* |
|
||||||
* 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 |
|
||||||
* |
|
||||||
* 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 org.apache.dolphinscheduler.plugin.alert.http; |
|
||||||
|
|
||||||
import org.apache.dolphinscheduler.spi.alert.AlertChannel; |
|
||||||
import org.apache.dolphinscheduler.spi.alert.AlertChannelFactory; |
|
||||||
import org.apache.dolphinscheduler.spi.params.input.InputParam; |
|
||||||
import org.apache.dolphinscheduler.spi.params.base.PluginParams; |
|
||||||
import org.apache.dolphinscheduler.spi.params.base.Validate; |
|
||||||
|
|
||||||
import java.util.Arrays; |
|
||||||
import java.util.List; |
|
||||||
|
|
||||||
/** |
|
||||||
* http alert factory |
|
||||||
*/ |
|
||||||
public class HttpAlertChannelFactory implements AlertChannelFactory { |
|
||||||
@Override |
|
||||||
public String getName() { |
|
||||||
return "Http"; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public List<PluginParams> getParams() { |
|
||||||
|
|
||||||
InputParam url = InputParam.newBuilder(HttpAlertConstants.URL, HttpAlertConstants.URL) |
|
||||||
.addValidate(Validate.newBuilder() |
|
||||||
.setRequired(true) |
|
||||||
.build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
InputParam headerParams = InputParam.newBuilder(HttpAlertConstants.HEADER_PARAMS, HttpAlertConstants.HEADER_PARAMS) |
|
||||||
.addValidate(Validate.newBuilder() |
|
||||||
.setRequired(true) |
|
||||||
.build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
InputParam bodyParams = InputParam.newBuilder(HttpAlertConstants.BODY_PARAMS, HttpAlertConstants.BODY_PARAMS) |
|
||||||
.addValidate(Validate.newBuilder() |
|
||||||
.setRequired(true) |
|
||||||
.build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
InputParam contentField = InputParam.newBuilder(HttpAlertConstants.CONTENT_FIELD, HttpAlertConstants.CONTENT_FIELD) |
|
||||||
.addValidate(Validate.newBuilder() |
|
||||||
.setRequired(true) |
|
||||||
.build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
InputParam requestType = InputParam.newBuilder(HttpAlertConstants.REQUEST_TYPE, HttpAlertConstants.REQUEST_TYPE) |
|
||||||
.addValidate(Validate.newBuilder() |
|
||||||
.setRequired(true) |
|
||||||
.build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
return Arrays.asList(url, requestType, headerParams, bodyParams, contentField); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public AlertChannel create() { |
|
||||||
return new HttpAlertChannel(); |
|
||||||
} |
|
||||||
} |
|
@ -1,36 +0,0 @@ |
|||||||
/* |
|
||||||
* 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 |
|
||||||
* |
|
||||||
* 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 org.apache.dolphinscheduler.plugin.alert.slack; |
|
||||||
|
|
||||||
import org.apache.dolphinscheduler.spi.alert.AlertChannelFactory; |
|
||||||
|
|
||||||
import org.junit.Assert; |
|
||||||
import org.junit.Test; |
|
||||||
|
|
||||||
public class SlackAlertPluginTest { |
|
||||||
|
|
||||||
private SlackAlertPlugin slackAlertPlugin = new SlackAlertPlugin(); |
|
||||||
|
|
||||||
@Test |
|
||||||
public void testGetAlertChannelFactorys() { |
|
||||||
Iterable<AlertChannelFactory> alertChannelFactorys = slackAlertPlugin.getAlertChannelFactorys(); |
|
||||||
for (AlertChannelFactory alertChannelFactory : alertChannelFactorys) { |
|
||||||
Assert.assertTrue(alertChannelFactory instanceof SlackAlertChannelFactory); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -1,77 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="UTF-8"?> |
|
||||||
<!-- |
|
||||||
~ 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 |
|
||||||
~ |
|
||||||
~ 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. |
|
||||||
--> |
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
|
||||||
<parent> |
|
||||||
<artifactId>dolphinscheduler-alert-plugin</artifactId> |
|
||||||
<groupId>org.apache.dolphinscheduler</groupId> |
|
||||||
<version>2.0.1-SNAPSHOT</version> |
|
||||||
</parent> |
|
||||||
<modelVersion>4.0.0</modelVersion> |
|
||||||
|
|
||||||
<groupId>org.apache.dolphinscheduler</groupId> |
|
||||||
<artifactId>dolphinscheduler-alert-wechat</artifactId> |
|
||||||
<packaging>dolphinscheduler-plugin</packaging> |
|
||||||
<dependencies> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>com.google.guava</groupId> |
|
||||||
<artifactId>guava</artifactId> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>ch.qos.logback</groupId> |
|
||||||
<artifactId>logback-classic</artifactId> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>org.apache.httpcomponents</groupId> |
|
||||||
<artifactId>httpclient</artifactId> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>com.fasterxml.jackson.core</groupId> |
|
||||||
<artifactId>jackson-databind</artifactId> |
|
||||||
<scope>provided</scope> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>junit</groupId> |
|
||||||
<artifactId>junit</artifactId> |
|
||||||
<scope>test</scope> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>org.mockito</groupId> |
|
||||||
<artifactId>mockito-core</artifactId> |
|
||||||
<type>jar</type> |
|
||||||
<scope>test</scope> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
<dependency> |
|
||||||
<groupId>org.jacoco</groupId> |
|
||||||
<artifactId>org.jacoco.agent</artifactId> |
|
||||||
<classifier>runtime</classifier> |
|
||||||
<scope>test</scope> |
|
||||||
</dependency> |
|
||||||
|
|
||||||
</dependencies> |
|
||||||
|
|
||||||
<build> |
|
||||||
<finalName>dolphinscheduler-alert-wechat-${project.version}</finalName> |
|
||||||
</build> |
|
||||||
</project> |
|
@ -1,94 +0,0 @@ |
|||||||
/* |
|
||||||
* 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 |
|
||||||
* |
|
||||||
* 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 org.apache.dolphinscheduler.plugin.alert.wechat; |
|
||||||
|
|
||||||
import org.apache.dolphinscheduler.spi.alert.AlertChannel; |
|
||||||
import org.apache.dolphinscheduler.spi.alert.AlertChannelFactory; |
|
||||||
import org.apache.dolphinscheduler.spi.alert.AlertConstants; |
|
||||||
import org.apache.dolphinscheduler.spi.alert.ShowType; |
|
||||||
import org.apache.dolphinscheduler.spi.params.input.InputParam; |
|
||||||
import org.apache.dolphinscheduler.spi.params.radio.RadioParam; |
|
||||||
import org.apache.dolphinscheduler.spi.params.base.ParamsOptions; |
|
||||||
import org.apache.dolphinscheduler.spi.params.base.PluginParams; |
|
||||||
import org.apache.dolphinscheduler.spi.params.base.Validate; |
|
||||||
|
|
||||||
import java.util.Arrays; |
|
||||||
import java.util.List; |
|
||||||
|
|
||||||
/** |
|
||||||
* WeChatAlertChannelFactory |
|
||||||
*/ |
|
||||||
public class WeChatAlertChannelFactory implements AlertChannelFactory { |
|
||||||
|
|
||||||
@Override |
|
||||||
public String getName() { |
|
||||||
return "WeChat"; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public List<PluginParams> getParams() { |
|
||||||
InputParam corpIdParam = InputParam.newBuilder(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_CORP_ID, WeChatAlertParamsConstants.ENTERPRISE_WE_CHAT_CORP_ID) |
|
||||||
.setPlaceholder("please input corp id ") |
|
||||||
.addValidate(Validate.newBuilder() |
|
||||||
.setRequired(true) |
|
||||||
.build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
InputParam secretParam = InputParam.newBuilder(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_SECRET, WeChatAlertParamsConstants.ENTERPRISE_WE_CHAT_SECRET) |
|
||||||
.setPlaceholder("please input secret ") |
|
||||||
.addValidate(Validate.newBuilder() |
|
||||||
.setRequired(true) |
|
||||||
.build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
InputParam usersParam = InputParam.newBuilder(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_USERS, WeChatAlertParamsConstants.ENTERPRISE_WE_CHAT_USERS) |
|
||||||
.setPlaceholder("please input users ") |
|
||||||
.addValidate(Validate.newBuilder() |
|
||||||
.setRequired(true) |
|
||||||
.build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
InputParam userSendMsgParam = InputParam.newBuilder(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_USER_SEND_MSG, WeChatAlertParamsConstants.ENTERPRISE_WE_CHAT_USER_SEND_MSG) |
|
||||||
.setPlaceholder("please input corp id ") |
|
||||||
.addValidate(Validate.newBuilder() |
|
||||||
.setRequired(true) |
|
||||||
.build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
InputParam agentIdParam = InputParam.newBuilder(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_AGENT_ID, WeChatAlertParamsConstants.ENTERPRISE_WE_CHAT_AGENT_ID) |
|
||||||
.setPlaceholder("please input agent id ") |
|
||||||
.addValidate(Validate.newBuilder() |
|
||||||
.setRequired(true) |
|
||||||
.build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
RadioParam showType = RadioParam.newBuilder(AlertConstants.SHOW_TYPE, AlertConstants.SHOW_TYPE) |
|
||||||
.addParamsOptions(new ParamsOptions(ShowType.TABLE.getDescp(), ShowType.TABLE.getDescp(), false)) |
|
||||||
.addParamsOptions(new ParamsOptions(ShowType.TEXT.getDescp(), ShowType.TEXT.getDescp(), false)) |
|
||||||
.setValue(ShowType.TABLE.getDescp()) |
|
||||||
.addValidate(Validate.newBuilder().setRequired(true).build()) |
|
||||||
.build(); |
|
||||||
|
|
||||||
return Arrays.asList(corpIdParam, secretParam, usersParam, userSendMsgParam, agentIdParam, showType); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public AlertChannel create() { |
|
||||||
return new WeChatAlertChannel(); |
|
||||||
} |
|
||||||
} |
|
@ -1,34 +0,0 @@ |
|||||||
/* |
|
||||||
* 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 |
|
||||||
* |
|
||||||
* 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 org.apache.dolphinscheduler.plugin.alert.wechat; |
|
||||||
|
|
||||||
import org.apache.dolphinscheduler.spi.DolphinSchedulerPlugin; |
|
||||||
import org.apache.dolphinscheduler.spi.alert.AlertChannelFactory; |
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList; |
|
||||||
|
|
||||||
/** |
|
||||||
* WeChatAlertPlugin |
|
||||||
*/ |
|
||||||
public class WeChatAlertPlugin implements DolphinSchedulerPlugin { |
|
||||||
|
|
||||||
@Override |
|
||||||
public Iterable<AlertChannelFactory> getAlertChannelFactorys() { |
|
||||||
return ImmutableList.of(new WeChatAlertChannelFactory()); |
|
||||||
} |
|
||||||
} |
|
@ -0,0 +1,38 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!-- |
||||||
|
~ Licensed to 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. Apache Software Foundation (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 |
||||||
|
~ |
||||||
|
~ 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. |
||||||
|
--> |
||||||
|
|
||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<parent> |
||||||
|
<artifactId>dolphinscheduler-alert</artifactId> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<version>2.0.1-SNAPSHOT</version> |
||||||
|
</parent> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<artifactId>dolphinscheduler-alert-api</artifactId> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-spi</artifactId> <!-- TODO should get rid off this --> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
</project> |
@ -0,0 +1,24 @@ |
|||||||
|
/* |
||||||
|
* Licensed to 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. Apache Software Foundation (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 |
||||||
|
* |
||||||
|
* 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 org.apache.dolphinscheduler.alert.api; |
||||||
|
|
||||||
|
public interface AlertChannel { |
||||||
|
AlertResult process(AlertInfo info); |
||||||
|
} |
@ -0,0 +1,35 @@ |
|||||||
|
/* |
||||||
|
* Licensed to 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. Apache Software Foundation (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 |
||||||
|
* |
||||||
|
* 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 org.apache.dolphinscheduler.alert.api; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.spi.params.base.PluginParams; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
public interface AlertChannelFactory { |
||||||
|
String name(); |
||||||
|
|
||||||
|
AlertChannel create(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Returns the configurable parameters that this plugin needs to display on the web ui |
||||||
|
*/ |
||||||
|
List<PluginParams> params(); |
||||||
|
} |
@ -0,0 +1,33 @@ |
|||||||
|
/* |
||||||
|
* Licensed to 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. Apache Software Foundation (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 |
||||||
|
* |
||||||
|
* 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 org.apache.dolphinscheduler.alert.api; |
||||||
|
|
||||||
|
public final class AlertConstants { |
||||||
|
/** |
||||||
|
* the field name of alert show type |
||||||
|
**/ |
||||||
|
public static final String SHOW_TYPE = "$t('showType')"; |
||||||
|
|
||||||
|
public static final String NAME_SHOW_TYPE = "showType"; |
||||||
|
|
||||||
|
private AlertConstants() { |
||||||
|
throw new UnsupportedOperationException("This is a utility class and cannot be instantiated"); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,168 @@ |
|||||||
|
/* |
||||||
|
* Licensed to 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. Apache Software Foundation (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 |
||||||
|
* |
||||||
|
* 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 org.apache.dolphinscheduler.alert.api; |
||||||
|
|
||||||
|
public class AlertData { |
||||||
|
private int id; |
||||||
|
private String title; |
||||||
|
private String content; |
||||||
|
private String log; |
||||||
|
|
||||||
|
public AlertData(int id, String title, String content, String log) { |
||||||
|
this.id = id; |
||||||
|
this.title = title; |
||||||
|
this.content = content; |
||||||
|
this.log = log; |
||||||
|
} |
||||||
|
|
||||||
|
public AlertData() { |
||||||
|
} |
||||||
|
|
||||||
|
public static AlertDataBuilder builder() { |
||||||
|
return new AlertDataBuilder(); |
||||||
|
} |
||||||
|
|
||||||
|
public int getId() { |
||||||
|
return this.id; |
||||||
|
} |
||||||
|
|
||||||
|
public AlertData setId(int id) { |
||||||
|
this.id = id; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
public String getTitle() { |
||||||
|
return this.title; |
||||||
|
} |
||||||
|
|
||||||
|
public AlertData setTitle(String title) { |
||||||
|
this.title = title; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
public String getContent() { |
||||||
|
return this.content; |
||||||
|
} |
||||||
|
|
||||||
|
public AlertData setContent(String content) { |
||||||
|
this.content = content; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
public String getLog() { |
||||||
|
return this.log; |
||||||
|
} |
||||||
|
|
||||||
|
public AlertData setLog(String log) { |
||||||
|
this.log = log; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean equals(final Object o) { |
||||||
|
if (o == this) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
if (!(o instanceof AlertData)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
final AlertData other = (AlertData) o; |
||||||
|
if (!other.canEqual((Object) this)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
if (this.getId() != other.getId()) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
final Object this$title = this.getTitle(); |
||||||
|
final Object other$title = other.getTitle(); |
||||||
|
if (this$title == null ? other$title != null : !this$title.equals(other$title)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
final Object this$content = this.getContent(); |
||||||
|
final Object other$content = other.getContent(); |
||||||
|
if (this$content == null ? other$content != null : !this$content.equals(other$content)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
final Object this$log = this.getLog(); |
||||||
|
final Object other$log = other.getLog(); |
||||||
|
if (this$log == null ? other$log != null : !this$log.equals(other$log)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
protected boolean canEqual(final Object other) { |
||||||
|
return other instanceof AlertData; |
||||||
|
} |
||||||
|
|
||||||
|
public int hashCode() { |
||||||
|
final int PRIME = 59; |
||||||
|
int result = 1; |
||||||
|
result = result * PRIME + this.getId(); |
||||||
|
final Object $title = this.getTitle(); |
||||||
|
result = result * PRIME + ($title == null ? 43 : $title.hashCode()); |
||||||
|
final Object $content = this.getContent(); |
||||||
|
result = result * PRIME + ($content == null ? 43 : $content.hashCode()); |
||||||
|
final Object $log = this.getLog(); |
||||||
|
result = result * PRIME + ($log == null ? 43 : $log.hashCode()); |
||||||
|
return result; |
||||||
|
} |
||||||
|
|
||||||
|
public String toString() { |
||||||
|
return "AlertData(id=" + this.getId() + ", title=" + this.getTitle() + ", content=" + this.getContent() + ", log=" + this.getLog() + ")"; |
||||||
|
} |
||||||
|
|
||||||
|
public static class AlertDataBuilder { |
||||||
|
private int id; |
||||||
|
private String title; |
||||||
|
private String content; |
||||||
|
private String log; |
||||||
|
|
||||||
|
AlertDataBuilder() { |
||||||
|
} |
||||||
|
|
||||||
|
public AlertDataBuilder id(int id) { |
||||||
|
this.id = id; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
public AlertDataBuilder title(String title) { |
||||||
|
this.title = title; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
public AlertDataBuilder content(String content) { |
||||||
|
this.content = content; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
public AlertDataBuilder log(String log) { |
||||||
|
this.log = log; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
public AlertData build() { |
||||||
|
return new AlertData(id, title, content, log); |
||||||
|
} |
||||||
|
|
||||||
|
public String toString() { |
||||||
|
return "AlertData.AlertDataBuilder(id=" + this.id + ", title=" + this.title + ", content=" + this.content + ", log=" + this.log + ")"; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,125 @@ |
|||||||
|
/* |
||||||
|
* Licensed to 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. Apache Software Foundation (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 |
||||||
|
* |
||||||
|
* 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 org.apache.dolphinscheduler.alert.api; |
||||||
|
|
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
public class AlertInfo { |
||||||
|
private Map<String, String> alertParams; |
||||||
|
private AlertData alertData; |
||||||
|
|
||||||
|
public AlertInfo(Map<String, String> alertParams, AlertData alertData) { |
||||||
|
this.alertParams = alertParams; |
||||||
|
this.alertData = alertData; |
||||||
|
} |
||||||
|
|
||||||
|
public AlertInfo() { |
||||||
|
} |
||||||
|
|
||||||
|
public static AlertInfoBuilder builder() { |
||||||
|
return new AlertInfoBuilder(); |
||||||
|
} |
||||||
|
|
||||||
|
public Map<String, String> getAlertParams() { |
||||||
|
return this.alertParams; |
||||||
|
} |
||||||
|
|
||||||
|
public AlertInfo setAlertParams(Map<String, String> alertParams) { |
||||||
|
this.alertParams = alertParams; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
public AlertData getAlertData() { |
||||||
|
return this.alertData; |
||||||
|
} |
||||||
|
|
||||||
|
public AlertInfo setAlertData(AlertData alertData) { |
||||||
|
this.alertData = alertData; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean equals(final Object o) { |
||||||
|
if (o == this) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
if (!(o instanceof AlertInfo)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
final AlertInfo other = (AlertInfo) o; |
||||||
|
if (!other.canEqual((Object) this)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
final Object this$alertParams = this.getAlertParams(); |
||||||
|
final Object other$alertParams = other.getAlertParams(); |
||||||
|
if (this$alertParams == null ? other$alertParams != null : !this$alertParams.equals(other$alertParams)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
final Object this$alertData = this.getAlertData(); |
||||||
|
final Object other$alertData = other.getAlertData(); |
||||||
|
if (this$alertData == null ? other$alertData != null : !this$alertData.equals(other$alertData)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
protected boolean canEqual(final Object other) { |
||||||
|
return other instanceof AlertInfo; |
||||||
|
} |
||||||
|
|
||||||
|
public int hashCode() { |
||||||
|
final int PRIME = 59; |
||||||
|
int result = 1; |
||||||
|
final Object $alertParams = this.getAlertParams(); |
||||||
|
result = result * PRIME + ($alertParams == null ? 43 : $alertParams.hashCode()); |
||||||
|
final Object $alertData = this.getAlertData(); |
||||||
|
result = result * PRIME + ($alertData == null ? 43 : $alertData.hashCode()); |
||||||
|
return result; |
||||||
|
} |
||||||
|
|
||||||
|
public String toString() { |
||||||
|
return "AlertInfo(alertParams=" + this.getAlertParams() + ", alertData=" + this.getAlertData() + ")"; |
||||||
|
} |
||||||
|
|
||||||
|
public static class AlertInfoBuilder { |
||||||
|
private Map<String, String> alertParams; |
||||||
|
private AlertData alertData; |
||||||
|
|
||||||
|
AlertInfoBuilder() { |
||||||
|
} |
||||||
|
|
||||||
|
public AlertInfoBuilder alertParams(Map<String, String> alertParams) { |
||||||
|
this.alertParams = alertParams; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
public AlertInfoBuilder alertData(AlertData alertData) { |
||||||
|
this.alertData = alertData; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
public AlertInfo build() { |
||||||
|
return new AlertInfo(alertParams, alertData); |
||||||
|
} |
||||||
|
|
||||||
|
public String toString() { |
||||||
|
return "AlertInfo.AlertInfoBuilder(alertParams=" + this.alertParams + ", alertData=" + this.alertData + ")"; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,123 @@ |
|||||||
|
/* |
||||||
|
* Licensed to 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. Apache Software Foundation (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 |
||||||
|
* |
||||||
|
* 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 org.apache.dolphinscheduler.alert.api; |
||||||
|
|
||||||
|
public class AlertResult { |
||||||
|
private String status; |
||||||
|
private String message; |
||||||
|
|
||||||
|
public AlertResult(String status, String message) { |
||||||
|
this.status = status; |
||||||
|
this.message = message; |
||||||
|
} |
||||||
|
|
||||||
|
public AlertResult() { |
||||||
|
} |
||||||
|
|
||||||
|
public static AlertResultBuilder builder() { |
||||||
|
return new AlertResultBuilder(); |
||||||
|
} |
||||||
|
|
||||||
|
public String getStatus() { |
||||||
|
return this.status; |
||||||
|
} |
||||||
|
|
||||||
|
public AlertResult setStatus(String status) { |
||||||
|
this.status = status; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
public String getMessage() { |
||||||
|
return this.message; |
||||||
|
} |
||||||
|
|
||||||
|
public AlertResult setMessage(String message) { |
||||||
|
this.message = message; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean equals(final Object o) { |
||||||
|
if (o == this) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
if (!(o instanceof AlertResult)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
final AlertResult other = (AlertResult) o; |
||||||
|
if (!other.canEqual((Object) this)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
final Object this$status = this.getStatus(); |
||||||
|
final Object other$status = other.getStatus(); |
||||||
|
if (this$status == null ? other$status != null : !this$status.equals(other$status)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
final Object this$message = this.getMessage(); |
||||||
|
final Object other$message = other.getMessage(); |
||||||
|
if (this$message == null ? other$message != null : !this$message.equals(other$message)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
protected boolean canEqual(final Object other) { |
||||||
|
return other instanceof AlertResult; |
||||||
|
} |
||||||
|
|
||||||
|
public int hashCode() { |
||||||
|
final int PRIME = 59; |
||||||
|
int result = 1; |
||||||
|
final Object $status = this.getStatus(); |
||||||
|
result = result * PRIME + ($status == null ? 43 : $status.hashCode()); |
||||||
|
final Object $message = this.getMessage(); |
||||||
|
result = result * PRIME + ($message == null ? 43 : $message.hashCode()); |
||||||
|
return result; |
||||||
|
} |
||||||
|
|
||||||
|
public String toString() { |
||||||
|
return "AlertResult(status=" + this.getStatus() + ", message=" + this.getMessage() + ")"; |
||||||
|
} |
||||||
|
|
||||||
|
public static class AlertResultBuilder { |
||||||
|
private String status; |
||||||
|
private String message; |
||||||
|
|
||||||
|
AlertResultBuilder() { |
||||||
|
} |
||||||
|
|
||||||
|
public AlertResultBuilder status(String status) { |
||||||
|
this.status = status; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
public AlertResultBuilder message(String message) { |
||||||
|
this.message = message; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
public AlertResult build() { |
||||||
|
return new AlertResult(status, message); |
||||||
|
} |
||||||
|
|
||||||
|
public String toString() { |
||||||
|
return "AlertResult.AlertResultBuilder(status=" + this.status + ", message=" + this.message + ")"; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,49 @@ |
|||||||
|
/* |
||||||
|
* Licensed to 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. Apache Software Foundation (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 |
||||||
|
* |
||||||
|
* 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 org.apache.dolphinscheduler.alert.api; |
||||||
|
|
||||||
|
public enum ShowType { |
||||||
|
/** |
||||||
|
* 0 TABLE; |
||||||
|
* 1 TEXT; |
||||||
|
* 2 attachment; |
||||||
|
* 3 TABLE+attachment; |
||||||
|
*/ |
||||||
|
TABLE(0, "table"), |
||||||
|
TEXT(1, "text"), |
||||||
|
ATTACHMENT(2, "attachment"), |
||||||
|
TABLEATTACHMENT(3, "table attachment"); |
||||||
|
|
||||||
|
private final int code; |
||||||
|
private final String descp; |
||||||
|
|
||||||
|
ShowType(int code, String descp) { |
||||||
|
this.code = code; |
||||||
|
this.descp = descp; |
||||||
|
} |
||||||
|
|
||||||
|
public int getCode() { |
||||||
|
return code; |
||||||
|
} |
||||||
|
|
||||||
|
public String getDescp() { |
||||||
|
return descp; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,41 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!-- |
||||||
|
~ 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 |
||||||
|
~ |
||||||
|
~ 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. |
||||||
|
--> |
||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<parent> |
||||||
|
<artifactId>dolphinscheduler-alert-plugins</artifactId> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<version>2.0.1-SNAPSHOT</version> |
||||||
|
</parent> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<artifactId>dolphinscheduler-alert-dingtalk</artifactId> |
||||||
|
<packaging>jar</packaging> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.httpcomponents</groupId> |
||||||
|
<artifactId>httpclient</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>com.google.guava</groupId> |
||||||
|
<artifactId>guava</artifactId> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
</project> |
14
dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannel.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannel.java
14
dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannel.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannel.java
74
dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannelFactory.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannelFactory.java
74
dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannelFactory.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannelFactory.java
30
dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkParamsConstants.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkParamsConstants.java
30
dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkParamsConstants.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkParamsConstants.java
82
dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSender.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSender.java
82
dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSender.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSender.java
10
dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/test/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannelFactoryTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/test/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannelFactoryTest.java
10
dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/test/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannelFactoryTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/test/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannelFactoryTest.java
9
dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/test/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSenderTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/test/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSenderTest.java
9
dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/test/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSenderTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/test/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSenderTest.java
@ -0,0 +1,50 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!-- |
||||||
|
~ 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 |
||||||
|
~ |
||||||
|
~ 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. |
||||||
|
--> |
||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<parent> |
||||||
|
<artifactId>dolphinscheduler-alert-plugins</artifactId> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<version>2.0.1-SNAPSHOT</version> |
||||||
|
</parent> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<artifactId>dolphinscheduler-alert-email</artifactId> |
||||||
|
<packaging>jar</packaging> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.poi</groupId> |
||||||
|
<artifactId>poi</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.poi</groupId> |
||||||
|
<artifactId>poi-ooxml</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>com.google.guava</groupId> |
||||||
|
<artifactId>guava</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.commons</groupId> |
||||||
|
<artifactId>commons-email</artifactId> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
</project> |
25
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/EmailAlertChannel.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/EmailAlertChannel.java
25
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/EmailAlertChannel.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/EmailAlertChannel.java
@ -0,0 +1,139 @@ |
|||||||
|
/* |
||||||
|
* 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 |
||||||
|
* |
||||||
|
* 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 org.apache.dolphinscheduler.plugin.alert.email; |
||||||
|
|
||||||
|
import static org.apache.dolphinscheduler.spi.utils.Constants.STRING_FALSE; |
||||||
|
import static org.apache.dolphinscheduler.spi.utils.Constants.STRING_NO; |
||||||
|
import static org.apache.dolphinscheduler.spi.utils.Constants.STRING_TRUE; |
||||||
|
import static org.apache.dolphinscheduler.spi.utils.Constants.STRING_YES; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.alert.api.AlertChannel; |
||||||
|
import org.apache.dolphinscheduler.alert.api.AlertChannelFactory; |
||||||
|
import org.apache.dolphinscheduler.alert.api.AlertConstants; |
||||||
|
import org.apache.dolphinscheduler.alert.api.ShowType; |
||||||
|
import org.apache.dolphinscheduler.spi.params.PasswordParam; |
||||||
|
import org.apache.dolphinscheduler.spi.params.base.ParamsOptions; |
||||||
|
import org.apache.dolphinscheduler.spi.params.base.PluginParams; |
||||||
|
import org.apache.dolphinscheduler.spi.params.base.Validate; |
||||||
|
import org.apache.dolphinscheduler.spi.params.input.InputParam; |
||||||
|
import org.apache.dolphinscheduler.spi.params.radio.RadioParam; |
||||||
|
|
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
import com.google.auto.service.AutoService; |
||||||
|
|
||||||
|
@AutoService(AlertChannelFactory.class) |
||||||
|
public final class EmailAlertChannelFactory implements AlertChannelFactory { |
||||||
|
@Override |
||||||
|
public String name() { |
||||||
|
return "Email"; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<PluginParams> params() { |
||||||
|
List<PluginParams> paramsList = new ArrayList<>(); |
||||||
|
InputParam receivesParam = InputParam.newBuilder(MailParamsConstants.NAME_PLUGIN_DEFAULT_EMAIL_RECEIVERS, MailParamsConstants.PLUGIN_DEFAULT_EMAIL_RECEIVERS) |
||||||
|
.setPlaceholder("please input receives") |
||||||
|
.addValidate(Validate.newBuilder() |
||||||
|
.setRequired(true) |
||||||
|
.build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
InputParam receiveCcsParam = InputParam.newBuilder(MailParamsConstants.NAME_PLUGIN_DEFAULT_EMAIL_RECEIVERCCS, MailParamsConstants.PLUGIN_DEFAULT_EMAIL_RECEIVERCCS) |
||||||
|
.build(); |
||||||
|
|
||||||
|
InputParam mailSmtpHost = InputParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_HOST, MailParamsConstants.MAIL_SMTP_HOST) |
||||||
|
.addValidate(Validate.newBuilder().setRequired(true).build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
InputParam mailSmtpPort = InputParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_PORT, MailParamsConstants.MAIL_SMTP_PORT) |
||||||
|
.setValue("25") |
||||||
|
.addValidate(Validate.newBuilder() |
||||||
|
.setRequired(true) |
||||||
|
.build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
InputParam mailSender = InputParam.newBuilder(MailParamsConstants.NAME_MAIL_SENDER, MailParamsConstants.MAIL_SENDER) |
||||||
|
.addValidate(Validate.newBuilder().setRequired(true).build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
RadioParam enableSmtpAuth = RadioParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_AUTH, MailParamsConstants.MAIL_SMTP_AUTH) |
||||||
|
.addParamsOptions(new ParamsOptions(STRING_YES, STRING_TRUE, false)) |
||||||
|
.addParamsOptions(new ParamsOptions(STRING_NO, STRING_FALSE, false)) |
||||||
|
.setValue(STRING_TRUE) |
||||||
|
.addValidate(Validate.newBuilder().setRequired(true).build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
InputParam mailUser = InputParam.newBuilder(MailParamsConstants.NAME_MAIL_USER, MailParamsConstants.MAIL_USER) |
||||||
|
.setPlaceholder("if enable use authentication, you need input user") |
||||||
|
.build(); |
||||||
|
|
||||||
|
PasswordParam mailPassword = PasswordParam.newBuilder(MailParamsConstants.NAME_MAIL_PASSWD, MailParamsConstants.MAIL_PASSWD) |
||||||
|
.setPlaceholder("if enable use authentication, you need input password") |
||||||
|
.build(); |
||||||
|
|
||||||
|
RadioParam enableTls = RadioParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_STARTTLS_ENABLE, MailParamsConstants.MAIL_SMTP_STARTTLS_ENABLE) |
||||||
|
.addParamsOptions(new ParamsOptions(STRING_YES, STRING_TRUE, false)) |
||||||
|
.addParamsOptions(new ParamsOptions(STRING_NO, STRING_FALSE, false)) |
||||||
|
.setValue(STRING_FALSE) |
||||||
|
.addValidate(Validate.newBuilder().setRequired(true).build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
RadioParam enableSsl = RadioParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_SSL_ENABLE, MailParamsConstants.MAIL_SMTP_SSL_ENABLE) |
||||||
|
.addParamsOptions(new ParamsOptions(STRING_YES, STRING_TRUE, false)) |
||||||
|
.addParamsOptions(new ParamsOptions(STRING_NO, STRING_FALSE, false)) |
||||||
|
.setValue(STRING_FALSE) |
||||||
|
.addValidate(Validate.newBuilder().setRequired(true).build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
InputParam sslTrust = InputParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_SSL_TRUST, MailParamsConstants.MAIL_SMTP_SSL_TRUST) |
||||||
|
.setValue("*") |
||||||
|
.addValidate(Validate.newBuilder().setRequired(true).build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
RadioParam showType = RadioParam.newBuilder(AlertConstants.NAME_SHOW_TYPE, AlertConstants.SHOW_TYPE) |
||||||
|
.addParamsOptions(new ParamsOptions(ShowType.TABLE.getDescp(), ShowType.TABLE.getDescp(), false)) |
||||||
|
.addParamsOptions(new ParamsOptions(ShowType.TEXT.getDescp(), ShowType.TEXT.getDescp(), false)) |
||||||
|
.addParamsOptions(new ParamsOptions(ShowType.ATTACHMENT.getDescp(), ShowType.ATTACHMENT.getDescp(), false)) |
||||||
|
.addParamsOptions(new ParamsOptions(ShowType.TABLEATTACHMENT.getDescp(), ShowType.TABLEATTACHMENT.getDescp(), false)) |
||||||
|
.setValue(ShowType.TABLE.getDescp()) |
||||||
|
.addValidate(Validate.newBuilder().setRequired(true).build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
paramsList.add(receivesParam); |
||||||
|
paramsList.add(receiveCcsParam); |
||||||
|
paramsList.add(mailSmtpHost); |
||||||
|
paramsList.add(mailSmtpPort); |
||||||
|
paramsList.add(mailSender); |
||||||
|
paramsList.add(enableSmtpAuth); |
||||||
|
paramsList.add(mailUser); |
||||||
|
paramsList.add(mailPassword); |
||||||
|
paramsList.add(enableTls); |
||||||
|
paramsList.add(enableSsl); |
||||||
|
paramsList.add(sslTrust); |
||||||
|
paramsList.add(showType); |
||||||
|
|
||||||
|
return paramsList; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public AlertChannel create() { |
||||||
|
return new EmailAlertChannel(); |
||||||
|
} |
||||||
|
} |
49
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/EmailConstants.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/EmailConstants.java
49
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/EmailConstants.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/EmailConstants.java
18
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/ExcelUtils.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/ExcelUtils.java
18
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/ExcelUtils.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/ExcelUtils.java
36
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailParamsConstants.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailParamsConstants.java
36
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailParamsConstants.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailParamsConstants.java
133
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailSender.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailSender.java
133
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailSender.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailSender.java
12
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/exception/AlertEmailException.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/exception/AlertEmailException.java
12
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/exception/AlertEmailException.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/exception/AlertEmailException.java
11
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/template/AlertTemplate.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/template/AlertTemplate.java
11
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/template/AlertTemplate.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/template/AlertTemplate.java
7
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/template/DefaultHTMLTemplate.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/template/DefaultHTMLTemplate.java
7
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/template/DefaultHTMLTemplate.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/template/DefaultHTMLTemplate.java
17
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/EmailAlertChannelFactoryTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/EmailAlertChannelFactoryTest.java
17
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/EmailAlertChannelFactoryTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/EmailAlertChannelFactoryTest.java
@ -0,0 +1,156 @@ |
|||||||
|
/* |
||||||
|
* 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 |
||||||
|
* |
||||||
|
* 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 org.apache.dolphinscheduler.plugin.alert.email; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.alert.api.AlertConstants; |
||||||
|
import org.apache.dolphinscheduler.alert.api.AlertData; |
||||||
|
import org.apache.dolphinscheduler.alert.api.AlertInfo; |
||||||
|
import org.apache.dolphinscheduler.alert.api.AlertResult; |
||||||
|
import org.apache.dolphinscheduler.alert.api.ShowType; |
||||||
|
import org.apache.dolphinscheduler.spi.params.PasswordParam; |
||||||
|
import org.apache.dolphinscheduler.spi.params.PluginParamsTransfer; |
||||||
|
import org.apache.dolphinscheduler.spi.params.base.ParamsOptions; |
||||||
|
import org.apache.dolphinscheduler.spi.params.base.PluginParams; |
||||||
|
import org.apache.dolphinscheduler.spi.params.base.Validate; |
||||||
|
import org.apache.dolphinscheduler.spi.params.input.InputParam; |
||||||
|
import org.apache.dolphinscheduler.spi.params.radio.RadioParam; |
||||||
|
import org.apache.dolphinscheduler.spi.utils.JSONUtils; |
||||||
|
|
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.LinkedHashMap; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
import org.junit.Assert; |
||||||
|
import org.junit.Test; |
||||||
|
|
||||||
|
public class EmailAlertChannelTest { |
||||||
|
@Test |
||||||
|
public void testProcess() { |
||||||
|
EmailAlertChannel emailAlertChannel = new EmailAlertChannel(); |
||||||
|
AlertData alertData = new AlertData(); |
||||||
|
LinkedHashMap<String, Object> map1 = new LinkedHashMap<>(); |
||||||
|
map1.put("mysql service name", "mysql200"); |
||||||
|
map1.put("mysql address", "192.168.xx.xx"); |
||||||
|
map1.put("port", "3306"); |
||||||
|
map1.put("no index of number", "80"); |
||||||
|
map1.put("database client connections", "190"); |
||||||
|
List<LinkedHashMap<String, Object>> maps = new ArrayList<>(); |
||||||
|
maps.add(0, map1); |
||||||
|
String mapjson = JSONUtils.toJsonString(maps); |
||||||
|
|
||||||
|
alertData.setId(10) |
||||||
|
.setContent(mapjson) |
||||||
|
.setLog("10") |
||||||
|
.setTitle("test"); |
||||||
|
AlertInfo alertInfo = new AlertInfo(); |
||||||
|
alertInfo.setAlertData(alertData); |
||||||
|
Map<String, String> paramsMap = PluginParamsTransfer.getPluginParamsMap(getEmailAlertParams()); |
||||||
|
|
||||||
|
alertInfo.setAlertParams(paramsMap); |
||||||
|
AlertResult alertResult = emailAlertChannel.process(alertInfo); |
||||||
|
Assert.assertNotNull(alertResult); |
||||||
|
Assert.assertEquals("false", alertResult.getStatus()); |
||||||
|
} |
||||||
|
|
||||||
|
public String getEmailAlertParams() { |
||||||
|
List<PluginParams> paramsList = new ArrayList<>(); |
||||||
|
InputParam receivesParam = InputParam.newBuilder(MailParamsConstants.NAME_PLUGIN_DEFAULT_EMAIL_RECEIVERS, "receivers") |
||||||
|
.setValue("540957506@qq.com") |
||||||
|
.addValidate(Validate.newBuilder().setRequired(true).build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
InputParam mailSmtpHost = InputParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_HOST, "smtp.host") |
||||||
|
.addValidate(Validate.newBuilder().setRequired(true).build()) |
||||||
|
.setValue("smtp.126.com") |
||||||
|
.build(); |
||||||
|
|
||||||
|
InputParam mailSmtpPort = InputParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_PORT, "smtp.port") |
||||||
|
.addValidate(Validate.newBuilder() |
||||||
|
.setRequired(true) |
||||||
|
.build()) |
||||||
|
.setValue("25") |
||||||
|
.build(); |
||||||
|
|
||||||
|
InputParam mailSender = InputParam.newBuilder(MailParamsConstants.NAME_MAIL_SENDER, "sender") |
||||||
|
.addValidate(Validate.newBuilder().setRequired(true).build()) |
||||||
|
.setValue("dolphinscheduler@126.com") |
||||||
|
.build(); |
||||||
|
|
||||||
|
RadioParam enableSmtpAuth = RadioParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_AUTH, "smtp.auth") |
||||||
|
.addParamsOptions(new ParamsOptions("YES", "true", false)) |
||||||
|
.addParamsOptions(new ParamsOptions("NO", "false", false)) |
||||||
|
.addValidate(Validate.newBuilder().setRequired(true).build()) |
||||||
|
.setValue("false") |
||||||
|
.build(); |
||||||
|
|
||||||
|
InputParam mailUser = InputParam.newBuilder(MailParamsConstants.NAME_MAIL_USER, "user") |
||||||
|
.setPlaceholder("if enable use authentication, you need input user") |
||||||
|
.setValue("dolphinscheduler@126.com") |
||||||
|
.build(); |
||||||
|
|
||||||
|
PasswordParam mailPassword = PasswordParam.newBuilder(MailParamsConstants.NAME_MAIL_PASSWD, "passwd") |
||||||
|
.setPlaceholder("if enable use authentication, you need input password") |
||||||
|
.setValue("escheduler123") |
||||||
|
.build(); |
||||||
|
|
||||||
|
RadioParam enableTls = RadioParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_STARTTLS_ENABLE, "starttls.enable") |
||||||
|
.addParamsOptions(new ParamsOptions("YES", "true", false)) |
||||||
|
.addParamsOptions(new ParamsOptions("NO", "false", false)) |
||||||
|
.addValidate(Validate.newBuilder().setRequired(true).build()) |
||||||
|
.setValue("true") |
||||||
|
.build(); |
||||||
|
|
||||||
|
RadioParam enableSsl = RadioParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_SSL_ENABLE, "smtp.ssl.enable") |
||||||
|
.addParamsOptions(new ParamsOptions("YES", "true", false)) |
||||||
|
.addParamsOptions(new ParamsOptions("NO", "false", false)) |
||||||
|
.addValidate(Validate.newBuilder().setRequired(true).build()) |
||||||
|
.setValue("true") |
||||||
|
.build(); |
||||||
|
|
||||||
|
InputParam sslTrust = InputParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_SSL_TRUST, "smtp.ssl.trust") |
||||||
|
.addValidate(Validate.newBuilder().setRequired(true).build()) |
||||||
|
.setValue("smtp.126.com") |
||||||
|
.build(); |
||||||
|
|
||||||
|
List<ParamsOptions> emailShowTypeList = new ArrayList<>(); |
||||||
|
emailShowTypeList.add(new ParamsOptions(ShowType.TABLE.getDescp(), ShowType.TABLE.getDescp(), false)); |
||||||
|
emailShowTypeList.add(new ParamsOptions(ShowType.TEXT.getDescp(), ShowType.TEXT.getDescp(), false)); |
||||||
|
emailShowTypeList.add(new ParamsOptions(ShowType.ATTACHMENT.getDescp(), ShowType.ATTACHMENT.getDescp(), false)); |
||||||
|
emailShowTypeList.add(new ParamsOptions(ShowType.TABLEATTACHMENT.getDescp(), ShowType.TABLEATTACHMENT.getDescp(), false)); |
||||||
|
RadioParam showType = RadioParam.newBuilder(AlertConstants.NAME_SHOW_TYPE, "showType") |
||||||
|
.setOptions(emailShowTypeList) |
||||||
|
.setValue(ShowType.TABLE.getDescp()) |
||||||
|
.addValidate(Validate.newBuilder().setRequired(true).build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
paramsList.add(receivesParam); |
||||||
|
paramsList.add(mailSmtpHost); |
||||||
|
paramsList.add(mailSmtpPort); |
||||||
|
paramsList.add(mailSender); |
||||||
|
paramsList.add(enableSmtpAuth); |
||||||
|
paramsList.add(mailUser); |
||||||
|
paramsList.add(mailPassword); |
||||||
|
paramsList.add(enableTls); |
||||||
|
paramsList.add(enableSsl); |
||||||
|
paramsList.add(sslTrust); |
||||||
|
paramsList.add(showType); |
||||||
|
|
||||||
|
return JSONUtils.toJsonString(paramsList); |
||||||
|
} |
||||||
|
} |
0
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/ExcelUtilsTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/ExcelUtilsTest.java
0
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/ExcelUtilsTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/ExcelUtilsTest.java
50
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/MailUtilsTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/MailUtilsTest.java
50
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/MailUtilsTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/MailUtilsTest.java
33
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/template/DefaultHTMLTemplateTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/template/DefaultHTMLTemplateTest.java
33
dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/template/DefaultHTMLTemplateTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/template/DefaultHTMLTemplateTest.java
@ -0,0 +1,40 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!-- |
||||||
|
~ 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 |
||||||
|
~ |
||||||
|
~ 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. |
||||||
|
--> |
||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<parent> |
||||||
|
<artifactId>dolphinscheduler-alert-plugins</artifactId> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<version>2.0.1-SNAPSHOT</version> |
||||||
|
</parent> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<artifactId>dolphinscheduler-alert-feishu</artifactId> |
||||||
|
<packaging>jar</packaging> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.httpcomponents</groupId> |
||||||
|
<artifactId>httpclient</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.google.guava</groupId> |
||||||
|
<artifactId>guava</artifactId> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
</project> |
11
dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertChannel.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertChannel.java
11
dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertChannel.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertChannel.java
67
dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertChannelFactory.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertChannelFactory.java
67
dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertChannelFactory.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertChannelFactory.java
36
dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuParamsConstants.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuParamsConstants.java
36
dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuParamsConstants.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuParamsConstants.java
91
dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuSender.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuSender.java
91
dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuSender.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuSender.java
5
dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/HttpRequestUtil.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/HttpRequestUtil.java
5
dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/HttpRequestUtil.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/HttpRequestUtil.java
4
dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/test/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertChannelFactoryTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-feishu/src/test/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertChannelFactoryTest.java
4
dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/test/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertChannelFactoryTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-feishu/src/test/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertChannelFactoryTest.java
40
dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/test/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuSenderTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-feishu/src/test/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuSenderTest.java
40
dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/test/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuSenderTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-feishu/src/test/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuSenderTest.java
@ -0,0 +1,47 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!-- |
||||||
|
~ 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 |
||||||
|
~ |
||||||
|
~ 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. |
||||||
|
--> |
||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<parent> |
||||||
|
<artifactId>dolphinscheduler-alert-plugins</artifactId> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<version>2.0.1-SNAPSHOT</version> |
||||||
|
</parent> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<artifactId>dolphinscheduler-alert-http</artifactId> |
||||||
|
<packaging>jar</packaging> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<dependency> |
||||||
|
<groupId>com.google.guava</groupId> |
||||||
|
<artifactId>guava</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.httpcomponents</groupId> |
||||||
|
<artifactId>httpclient</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>com.fasterxml.jackson.core</groupId> |
||||||
|
<artifactId>jackson-databind</artifactId> |
||||||
|
<scope>provided</scope> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
</project> |
14
dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/main/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertChannel.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-http/src/main/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertChannel.java
14
dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/main/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertChannel.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-http/src/main/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertChannel.java
@ -0,0 +1,78 @@ |
|||||||
|
/* |
||||||
|
* 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 |
||||||
|
* |
||||||
|
* 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 org.apache.dolphinscheduler.plugin.alert.http; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.alert.api.AlertChannel; |
||||||
|
import org.apache.dolphinscheduler.alert.api.AlertChannelFactory; |
||||||
|
import org.apache.dolphinscheduler.spi.params.base.PluginParams; |
||||||
|
import org.apache.dolphinscheduler.spi.params.base.Validate; |
||||||
|
import org.apache.dolphinscheduler.spi.params.input.InputParam; |
||||||
|
|
||||||
|
import java.util.Arrays; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
import com.google.auto.service.AutoService; |
||||||
|
|
||||||
|
@AutoService(AlertChannelFactory.class) |
||||||
|
public final class HttpAlertChannelFactory implements AlertChannelFactory { |
||||||
|
@Override |
||||||
|
public String name() { |
||||||
|
return "Http"; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<PluginParams> params() { |
||||||
|
|
||||||
|
InputParam url = InputParam.newBuilder(HttpAlertConstants.NAME_URL, HttpAlertConstants.URL) |
||||||
|
.addValidate(Validate.newBuilder() |
||||||
|
.setRequired(true) |
||||||
|
.build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
InputParam headerParams = InputParam.newBuilder(HttpAlertConstants.NAME_HEADER_PARAMS, HttpAlertConstants.HEADER_PARAMS) |
||||||
|
.addValidate(Validate.newBuilder() |
||||||
|
.setRequired(true) |
||||||
|
.build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
InputParam bodyParams = InputParam.newBuilder(HttpAlertConstants.NAME_BODY_PARAMS, HttpAlertConstants.BODY_PARAMS) |
||||||
|
.addValidate(Validate.newBuilder() |
||||||
|
.setRequired(true) |
||||||
|
.build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
InputParam contentField = InputParam.newBuilder(HttpAlertConstants.NAME_CONTENT_FIELD, HttpAlertConstants.CONTENT_FIELD) |
||||||
|
.addValidate(Validate.newBuilder() |
||||||
|
.setRequired(true) |
||||||
|
.build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
InputParam requestType = InputParam.newBuilder(HttpAlertConstants.NAME_REQUEST_TYPE, HttpAlertConstants.REQUEST_TYPE) |
||||||
|
.addValidate(Validate.newBuilder() |
||||||
|
.setRequired(true) |
||||||
|
.build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
return Arrays.asList(url, requestType, headerParams, bodyParams, contentField); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public AlertChannel create() { |
||||||
|
return new HttpAlertChannel(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,44 @@ |
|||||||
|
/* |
||||||
|
* 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 |
||||||
|
* |
||||||
|
* 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 org.apache.dolphinscheduler.plugin.alert.http; |
||||||
|
|
||||||
|
public final class HttpAlertConstants { |
||||||
|
public static final String URL = "$t('url')"; |
||||||
|
|
||||||
|
public static final String NAME_URL = "url"; |
||||||
|
|
||||||
|
public static final String HEADER_PARAMS = "$t('headerParams')"; |
||||||
|
|
||||||
|
public static final String NAME_HEADER_PARAMS = "headerParams"; |
||||||
|
|
||||||
|
public static final String BODY_PARAMS = "$t('bodyParams')"; |
||||||
|
|
||||||
|
public static final String NAME_BODY_PARAMS = "bodyParams"; |
||||||
|
|
||||||
|
public static final String CONTENT_FIELD = "$t('contentField')"; |
||||||
|
|
||||||
|
public static final String NAME_CONTENT_FIELD = "contentField"; |
||||||
|
|
||||||
|
public static final String REQUEST_TYPE = "$t('requestType')"; |
||||||
|
|
||||||
|
public static final String NAME_REQUEST_TYPE = "requestType"; |
||||||
|
|
||||||
|
private HttpAlertConstants() { |
||||||
|
throw new UnsupportedOperationException("This is a utility class and cannot be instantiated"); |
||||||
|
} |
||||||
|
} |
7
dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/test/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertChannelFactoryTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-http/src/test/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertChannelFactoryTest.java
7
dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/test/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertChannelFactoryTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-http/src/test/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertChannelFactoryTest.java
41
dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/test/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertChannelTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-http/src/test/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertChannelTest.java
41
dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/test/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertChannelTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-http/src/test/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertChannelTest.java
21
dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/test/java/org/apache/dolphinscheduler/plugin/alert/http/HttpSenderTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-http/src/test/java/org/apache/dolphinscheduler/plugin/alert/http/HttpSenderTest.java
21
dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/test/java/org/apache/dolphinscheduler/plugin/alert/http/HttpSenderTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-http/src/test/java/org/apache/dolphinscheduler/plugin/alert/http/HttpSenderTest.java
@ -0,0 +1,36 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!-- |
||||||
|
~ 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 |
||||||
|
~ |
||||||
|
~ 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. |
||||||
|
--> |
||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<parent> |
||||||
|
<artifactId>dolphinscheduler-alert-plugins</artifactId> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<version>2.0.1-SNAPSHOT</version> |
||||||
|
</parent> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<artifactId>dolphinscheduler-alert-script</artifactId> |
||||||
|
<packaging>jar</packaging> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<dependency> |
||||||
|
<groupId>com.google.guava</groupId> |
||||||
|
<artifactId>guava</artifactId> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
</project> |
13
dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ProcessUtils.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ProcessUtils.java
13
dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ProcessUtils.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ProcessUtils.java
16
dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptAlertChannel.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptAlertChannel.java
16
dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptAlertChannel.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptAlertChannel.java
48
dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptAlertChannelFactory.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptAlertChannelFactory.java
48
dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptAlertChannelFactory.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptAlertChannelFactory.java
20
dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptParamsConstants.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptParamsConstants.java
20
dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptParamsConstants.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptParamsConstants.java
25
dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptSender.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptSender.java
25
dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptSender.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptSender.java
13
dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptType.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptType.java
13
dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptType.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptType.java
17
dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/StreamGobbler.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/StreamGobbler.java
17
dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/StreamGobbler.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/StreamGobbler.java
2
dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/test/java/org/apache/dolphinscheduler/plugin/alert/script/ProcessUtilsTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/test/java/org/apache/dolphinscheduler/plugin/alert/script/ProcessUtilsTest.java
2
dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/test/java/org/apache/dolphinscheduler/plugin/alert/script/ProcessUtilsTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/test/java/org/apache/dolphinscheduler/plugin/alert/script/ProcessUtilsTest.java
4
dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/test/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptAlertChannelFactoryTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/test/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptAlertChannelFactoryTest.java
4
dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/test/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptAlertChannelFactoryTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/test/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptAlertChannelFactoryTest.java
6
dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/test/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptSenderTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/test/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptSenderTest.java
6
dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/test/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptSenderTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/test/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptSenderTest.java
@ -0,0 +1,41 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!-- |
||||||
|
~ 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 |
||||||
|
~ |
||||||
|
~ 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. |
||||||
|
--> |
||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<parent> |
||||||
|
<artifactId>dolphinscheduler-alert-plugins</artifactId> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<version>2.0.1-SNAPSHOT</version> |
||||||
|
</parent> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<artifactId>dolphinscheduler-alert-slack</artifactId> |
||||||
|
<packaging>jar</packaging> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.httpcomponents</groupId> |
||||||
|
<artifactId>httpclient</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>com.google.guava</groupId> |
||||||
|
<artifactId>guava</artifactId> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
</project> |
14
dolphinscheduler-alert-plugin/dolphinscheduler-alert-slack/src/main/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackAlertChannel.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-slack/src/main/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackAlertChannel.java
14
dolphinscheduler-alert-plugin/dolphinscheduler-alert-slack/src/main/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackAlertChannel.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-slack/src/main/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackAlertChannel.java
37
dolphinscheduler-alert-plugin/dolphinscheduler-alert-slack/src/main/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackAlertChannelFactory.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-slack/src/main/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackAlertChannelFactory.java
37
dolphinscheduler-alert-plugin/dolphinscheduler-alert-slack/src/main/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackAlertChannelFactory.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-slack/src/main/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackAlertChannelFactory.java
15
dolphinscheduler-alert-plugin/dolphinscheduler-alert-slack/src/main/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackParamsConstants.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-slack/src/main/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackParamsConstants.java
15
dolphinscheduler-alert-plugin/dolphinscheduler-alert-slack/src/main/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackParamsConstants.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-slack/src/main/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackParamsConstants.java
25
dolphinscheduler-alert-plugin/dolphinscheduler-alert-slack/src/main/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackSender.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-slack/src/main/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackSender.java
25
dolphinscheduler-alert-plugin/dolphinscheduler-alert-slack/src/main/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackSender.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-slack/src/main/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackSender.java
8
dolphinscheduler-alert-plugin/dolphinscheduler-alert-slack/src/test/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackAlertChannelFactoryTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-slack/src/test/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackAlertChannelFactoryTest.java
8
dolphinscheduler-alert-plugin/dolphinscheduler-alert-slack/src/test/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackAlertChannelFactoryTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-slack/src/test/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackAlertChannelFactoryTest.java
4
dolphinscheduler-alert-plugin/dolphinscheduler-alert-slack/src/test/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackSenderTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-slack/src/test/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackSenderTest.java
4
dolphinscheduler-alert-plugin/dolphinscheduler-alert-slack/src/test/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackSenderTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-slack/src/test/java/org/apache/dolphinscheduler/plugin/alert/slack/SlackSenderTest.java
14
dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertChannel.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertChannel.java
14
dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertChannel.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertChannel.java
@ -0,0 +1,93 @@ |
|||||||
|
/* |
||||||
|
* 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 |
||||||
|
* |
||||||
|
* 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 org.apache.dolphinscheduler.plugin.alert.wechat; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.alert.api.AlertChannel; |
||||||
|
import org.apache.dolphinscheduler.alert.api.AlertChannelFactory; |
||||||
|
import org.apache.dolphinscheduler.alert.api.AlertConstants; |
||||||
|
import org.apache.dolphinscheduler.alert.api.ShowType; |
||||||
|
import org.apache.dolphinscheduler.spi.params.base.ParamsOptions; |
||||||
|
import org.apache.dolphinscheduler.spi.params.base.PluginParams; |
||||||
|
import org.apache.dolphinscheduler.spi.params.base.Validate; |
||||||
|
import org.apache.dolphinscheduler.spi.params.input.InputParam; |
||||||
|
import org.apache.dolphinscheduler.spi.params.radio.RadioParam; |
||||||
|
|
||||||
|
import java.util.Arrays; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
import com.google.auto.service.AutoService; |
||||||
|
|
||||||
|
@AutoService(AlertChannelFactory.class) |
||||||
|
public final class WeChatAlertChannelFactory implements AlertChannelFactory { |
||||||
|
@Override |
||||||
|
public String name() { |
||||||
|
return "WeChat"; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<PluginParams> params() { |
||||||
|
InputParam corpIdParam = InputParam.newBuilder(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_CORP_ID, WeChatAlertParamsConstants.ENTERPRISE_WE_CHAT_CORP_ID) |
||||||
|
.setPlaceholder("please input corp id ") |
||||||
|
.addValidate(Validate.newBuilder() |
||||||
|
.setRequired(true) |
||||||
|
.build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
InputParam secretParam = InputParam.newBuilder(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_SECRET, WeChatAlertParamsConstants.ENTERPRISE_WE_CHAT_SECRET) |
||||||
|
.setPlaceholder("please input secret ") |
||||||
|
.addValidate(Validate.newBuilder() |
||||||
|
.setRequired(true) |
||||||
|
.build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
InputParam usersParam = InputParam.newBuilder(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_USERS, WeChatAlertParamsConstants.ENTERPRISE_WE_CHAT_USERS) |
||||||
|
.setPlaceholder("please input users ") |
||||||
|
.addValidate(Validate.newBuilder() |
||||||
|
.setRequired(true) |
||||||
|
.build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
InputParam userSendMsgParam = InputParam.newBuilder(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_USER_SEND_MSG, WeChatAlertParamsConstants.ENTERPRISE_WE_CHAT_USER_SEND_MSG) |
||||||
|
.setPlaceholder("please input corp id ") |
||||||
|
.addValidate(Validate.newBuilder() |
||||||
|
.setRequired(true) |
||||||
|
.build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
InputParam agentIdParam = InputParam.newBuilder(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_AGENT_ID, WeChatAlertParamsConstants.ENTERPRISE_WE_CHAT_AGENT_ID) |
||||||
|
.setPlaceholder("please input agent id ") |
||||||
|
.addValidate(Validate.newBuilder() |
||||||
|
.setRequired(true) |
||||||
|
.build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
RadioParam showType = RadioParam.newBuilder(AlertConstants.NAME_SHOW_TYPE, AlertConstants.SHOW_TYPE) |
||||||
|
.addParamsOptions(new ParamsOptions(ShowType.TABLE.getDescp(), ShowType.TABLE.getDescp(), false)) |
||||||
|
.addParamsOptions(new ParamsOptions(ShowType.TEXT.getDescp(), ShowType.TEXT.getDescp(), false)) |
||||||
|
.setValue(ShowType.TABLE.getDescp()) |
||||||
|
.addValidate(Validate.newBuilder().setRequired(true).build()) |
||||||
|
.build(); |
||||||
|
|
||||||
|
return Arrays.asList(corpIdParam, secretParam, usersParam, userSendMsgParam, agentIdParam, showType); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public AlertChannel create() { |
||||||
|
return new WeChatAlertChannel(); |
||||||
|
} |
||||||
|
} |
14
dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertConstants.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertConstants.java
14
dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertConstants.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertConstants.java
42
dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertParamsConstants.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertParamsConstants.java
42
dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertParamsConstants.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertParamsConstants.java
286
dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatSender.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatSender.java
286
dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatSender.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatSender.java
4
dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/test/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertChannelFactoryTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/test/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertChannelFactoryTest.java
4
dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/test/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertChannelFactoryTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/test/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertChannelFactoryTest.java
57
dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/test/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatSenderTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/test/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatSenderTest.java
57
dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/test/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatSenderTest.java → dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/test/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatSenderTest.java
@ -0,0 +1,130 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!-- |
||||||
|
~ 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 |
||||||
|
~ |
||||||
|
~ 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. |
||||||
|
--> |
||||||
|
|
||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-alert</artifactId> |
||||||
|
<version>2.0.1-SNAPSHOT</version> |
||||||
|
</parent> |
||||||
|
<artifactId>dolphinscheduler-alert-server</artifactId> |
||||||
|
<name>${project.artifactId}</name> |
||||||
|
<packaging>jar</packaging> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<!-- dolphinscheduler --> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-remote</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-alert-dingtalk</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-alert-email</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-alert-feishu</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-alert-http</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-alert-script</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-alert-slack</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-alert-wechat</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-dao</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>com.fasterxml.jackson.core</groupId> |
||||||
|
<artifactId>jackson-core</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>com.fasterxml.jackson.core</groupId> |
||||||
|
<artifactId>jackson-databind</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>com.google.guava</groupId> |
||||||
|
<artifactId>guava</artifactId> |
||||||
|
<exclusions> |
||||||
|
<exclusion> |
||||||
|
<artifactId>jsr305</artifactId> |
||||||
|
<groupId>com.google.code.findbugs</groupId> |
||||||
|
</exclusion> |
||||||
|
</exclusions> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>ch.qos.logback</groupId> |
||||||
|
<artifactId>logback-classic</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<!--excel poi--> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.poi</groupId> |
||||||
|
<artifactId>poi</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.mockito</groupId> |
||||||
|
<artifactId>mockito-core</artifactId> |
||||||
|
<scope>test</scope> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.mockito</groupId> |
||||||
|
<artifactId>mockito-inline</artifactId> |
||||||
|
<scope>test</scope> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
|
||||||
|
<build> |
||||||
|
<plugins> |
||||||
|
<plugin> |
||||||
|
<groupId>org.apache.maven.plugins</groupId> |
||||||
|
<artifactId>maven-jar-plugin</artifactId> |
||||||
|
<configuration> |
||||||
|
<excludes> |
||||||
|
<exclude>*.yaml</exclude> |
||||||
|
<exclude>*.yml</exclude> |
||||||
|
<exclude>*.xml</exclude> |
||||||
|
</excludes> |
||||||
|
</configuration> |
||||||
|
</plugin> |
||||||
|
</plugins> |
||||||
|
</build> |
||||||
|
</project> |
@ -0,0 +1,89 @@ |
|||||||
|
/* |
||||||
|
* 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 |
||||||
|
* |
||||||
|
* 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 org.apache.dolphinscheduler.alert; |
||||||
|
|
||||||
|
import static java.lang.String.format; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.alert.api.AlertChannel; |
||||||
|
import org.apache.dolphinscheduler.alert.api.AlertChannelFactory; |
||||||
|
import org.apache.dolphinscheduler.common.enums.PluginType; |
||||||
|
import org.apache.dolphinscheduler.dao.PluginDao; |
||||||
|
import org.apache.dolphinscheduler.dao.entity.PluginDefine; |
||||||
|
import org.apache.dolphinscheduler.spi.params.PluginParamsTransfer; |
||||||
|
import org.apache.dolphinscheduler.spi.params.base.PluginParams; |
||||||
|
|
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.HashSet; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
import java.util.Optional; |
||||||
|
import java.util.ServiceLoader; |
||||||
|
import java.util.Set; |
||||||
|
|
||||||
|
import javax.annotation.PostConstruct; |
||||||
|
|
||||||
|
import org.slf4j.Logger; |
||||||
|
import org.springframework.stereotype.Component; |
||||||
|
|
||||||
|
@Component |
||||||
|
public final class AlertPluginManager { |
||||||
|
private static final Logger log = org.slf4j.LoggerFactory.getLogger(AlertPluginManager.class); |
||||||
|
|
||||||
|
private final PluginDao pluginDao; |
||||||
|
|
||||||
|
private final Map<Integer, AlertChannel> channelKeyedById = new HashMap<>(); |
||||||
|
|
||||||
|
public AlertPluginManager(PluginDao pluginDao) { |
||||||
|
this.pluginDao = pluginDao; |
||||||
|
} |
||||||
|
|
||||||
|
@PostConstruct |
||||||
|
public void installPlugin() { |
||||||
|
final Set<String> names = new HashSet<>(); |
||||||
|
|
||||||
|
ServiceLoader.load(AlertChannelFactory.class).forEach(factory -> { |
||||||
|
final String name = factory.name(); |
||||||
|
|
||||||
|
log.info("Registering alert plugin: {}", name); |
||||||
|
|
||||||
|
if (!names.add(name)) { |
||||||
|
throw new IllegalStateException(format("Duplicate alert plugins named '%s'", name)); |
||||||
|
} |
||||||
|
|
||||||
|
final AlertChannel alertChannel = factory.create(); |
||||||
|
|
||||||
|
log.info("Registered alert plugin: {}", name); |
||||||
|
|
||||||
|
final List<PluginParams> params = factory.params(); |
||||||
|
final String paramsJson = PluginParamsTransfer.transferParamsToJson(params); |
||||||
|
|
||||||
|
final PluginDefine pluginDefine = new PluginDefine(name, PluginType.ALERT.getDesc(), paramsJson); |
||||||
|
final int id = pluginDao.addOrUpdatePluginDefine(pluginDefine); |
||||||
|
|
||||||
|
channelKeyedById.put(id, alertChannel); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
public Optional<AlertChannel> getAlertChannel(int id) { |
||||||
|
return Optional.ofNullable(channelKeyedById.get(id)); |
||||||
|
} |
||||||
|
|
||||||
|
public int size() { |
||||||
|
return channelKeyedById.size(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,125 @@ |
|||||||
|
/* |
||||||
|
* 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 |
||||||
|
* |
||||||
|
* 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 org.apache.dolphinscheduler.alert; |
||||||
|
|
||||||
|
import static org.apache.dolphinscheduler.common.Constants.ALERT_RPC_PORT; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.common.thread.Stopper; |
||||||
|
import org.apache.dolphinscheduler.dao.AlertDao; |
||||||
|
import org.apache.dolphinscheduler.dao.PluginDao; |
||||||
|
import org.apache.dolphinscheduler.dao.entity.Alert; |
||||||
|
import org.apache.dolphinscheduler.remote.NettyRemotingServer; |
||||||
|
import org.apache.dolphinscheduler.remote.command.CommandType; |
||||||
|
import org.apache.dolphinscheduler.remote.config.NettyServerConfig; |
||||||
|
|
||||||
|
import java.io.Closeable; |
||||||
|
import java.util.List; |
||||||
|
import java.util.concurrent.Executors; |
||||||
|
import java.util.concurrent.TimeUnit; |
||||||
|
|
||||||
|
import javax.annotation.PostConstruct; |
||||||
|
import javax.annotation.PreDestroy; |
||||||
|
|
||||||
|
import org.slf4j.Logger; |
||||||
|
import org.slf4j.LoggerFactory; |
||||||
|
import org.springframework.boot.SpringApplication; |
||||||
|
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; |
||||||
|
import org.springframework.context.annotation.ComponentScan; |
||||||
|
|
||||||
|
@EnableAutoConfiguration |
||||||
|
@ComponentScan(value = { |
||||||
|
"org.apache.dolphinscheduler.alert", |
||||||
|
"org.apache.dolphinscheduler.dao" |
||||||
|
}) |
||||||
|
public class AlertServer implements Closeable { |
||||||
|
private static final Logger log = LoggerFactory.getLogger(AlertServer.class); |
||||||
|
|
||||||
|
private final PluginDao pluginDao; |
||||||
|
private final AlertDao alertDao; |
||||||
|
private final AlertPluginManager alertPluginManager; |
||||||
|
private final AlertSender alertSender; |
||||||
|
private final AlertRequestProcessor alertRequestProcessor; |
||||||
|
|
||||||
|
private NettyRemotingServer server; |
||||||
|
|
||||||
|
public AlertServer(PluginDao pluginDao, AlertDao alertDao, AlertPluginManager alertPluginManager, AlertSender alertSender, AlertRequestProcessor alertRequestProcessor) { |
||||||
|
this.pluginDao = pluginDao; |
||||||
|
this.alertDao = alertDao; |
||||||
|
this.alertPluginManager = alertPluginManager; |
||||||
|
this.alertSender = alertSender; |
||||||
|
this.alertRequestProcessor = alertRequestProcessor; |
||||||
|
} |
||||||
|
|
||||||
|
public static void main(String[] args) { |
||||||
|
SpringApplication.run(AlertServer.class, args); |
||||||
|
} |
||||||
|
|
||||||
|
@PostConstruct |
||||||
|
public void start() { |
||||||
|
log.info("Starting Alert server"); |
||||||
|
|
||||||
|
checkTable(); |
||||||
|
startServer(); |
||||||
|
|
||||||
|
if (alertPluginManager.size() == 0) { |
||||||
|
log.warn("No alert plugin, alert sender will exit."); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
Executors.newScheduledThreadPool(1) |
||||||
|
.scheduleAtFixedRate(new Sender(), 5, 5, TimeUnit.SECONDS); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
@PreDestroy |
||||||
|
public void close() { |
||||||
|
server.close(); |
||||||
|
} |
||||||
|
|
||||||
|
private void checkTable() { |
||||||
|
if (!pluginDao.checkPluginDefineTableExist()) { |
||||||
|
log.error("Plugin Define Table t_ds_plugin_define Not Exist . Please Create it First !"); |
||||||
|
System.exit(1); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void startServer() { |
||||||
|
NettyServerConfig serverConfig = new NettyServerConfig(); |
||||||
|
serverConfig.setListenPort(ALERT_RPC_PORT); |
||||||
|
|
||||||
|
server = new NettyRemotingServer(serverConfig); |
||||||
|
server.registerProcessor(CommandType.ALERT_SEND_REQUEST, alertRequestProcessor); |
||||||
|
server.start(); |
||||||
|
} |
||||||
|
|
||||||
|
final class Sender implements Runnable { |
||||||
|
@Override |
||||||
|
public void run() { |
||||||
|
if (!Stopper.isRunning()) { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
try { |
||||||
|
final List<Alert> alerts = alertDao.listPendingAlerts(); |
||||||
|
alertSender.send(alerts); |
||||||
|
} catch (Exception e) { |
||||||
|
log.error("Failed to send alert", e); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue