You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
7.0 KiB
154 lines
7.0 KiB
""" |
|
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. |
|
""" |
|
|
|
|
|
import sys |
|
from resource_management import * |
|
from resource_management.core.logger import Logger |
|
from resource_management.libraries.functions import default |
|
|
|
Logger.initialize_logger() |
|
reload(sys) |
|
sys.setdefaultencoding('utf-8') |
|
|
|
# server configurations |
|
config = Script.get_config() |
|
|
|
# conf_dir = "/etc/" |
|
dolphin_home = "/opt/soft/dolphinscheduler" |
|
dolphin_conf_dir = dolphin_home + "/conf" |
|
dolphin_log_dir = dolphin_home + "/logs" |
|
dolphin_bin_dir = dolphin_home + "/bin" |
|
dolphin_lib_jars = dolphin_home + "/lib/*" |
|
dolphin_pidfile_dir = "/opt/soft/run/dolphinscheduler" |
|
|
|
rmHosts = default("/clusterHostInfo/rm_host", []) |
|
|
|
# dolphin-env |
|
dolphin_env_map = {} |
|
dolphin_env_map.update(config['configurations']['dolphin-env']) |
|
|
|
# which user to install and admin dolphin scheduler |
|
dolphin_user = dolphin_env_map['dolphin.user'] |
|
dolphin_group = dolphin_env_map['dolphin.group'] |
|
|
|
# .dolphinscheduler_env.sh |
|
dolphin_env_path = dolphin_conf_dir + '/env/dolphinscheduler_env.sh' |
|
dolphin_env_content = dolphin_env_map['dolphinscheduler-env-content'] |
|
|
|
# database config |
|
dolphin_database_config = {} |
|
dolphin_database_config['dolphin_database_type'] = dolphin_env_map['dolphin.database.type'] |
|
dolphin_database_config['dolphin_database_username'] = dolphin_env_map['dolphin.database.username'] |
|
dolphin_database_config['dolphin_database_password'] = dolphin_env_map['dolphin.database.password'] |
|
if 'mysql' == dolphin_database_config['dolphin_database_type']: |
|
dolphin_database_config['dolphin_database_driver'] = 'com.mysql.jdbc.Driver' |
|
dolphin_database_config['driverDelegateClass'] = 'org.quartz.impl.jdbcjobstore.StdJDBCDelegate' |
|
dolphin_database_config['dolphin_database_url'] = 'jdbc:mysql://' + dolphin_env_map['dolphin.database.host'] \ |
|
+ ':' + dolphin_env_map['dolphin.database.port'] \ |
|
+ '/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8' |
|
else: |
|
dolphin_database_config['dolphin_database_driver'] = 'org.postgresql.Driver' |
|
dolphin_database_config['driverDelegateClass'] = 'org.quartz.impl.jdbcjobstore.PostgreSQLDelegate' |
|
dolphin_database_config['dolphin_database_url'] = 'jdbc:postgresql://' + dolphin_env_map['dolphin.database.host'] \ |
|
+ ':' + dolphin_env_map['dolphin.database.port'] \ |
|
+ '/dolphinscheduler' |
|
|
|
|
|
|
|
|
|
|
|
# application-alert.properties |
|
dolphin_alert_map = {} |
|
wechat_push_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$token' |
|
wechat_token_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$corpId&corpsecret=$secret' |
|
wechat_team_send_msg = '{\"toparty\":\"$toParty\",\"agentid\":\"$agentId\",\"msgtype\":\"text\",\"text\":{\"content\":\"$msg\"},\"safe\":\"0\"}' |
|
wechat_user_send_msg = '{\"touser\":\"$toUser\",\"agentid\":\"$agentId\",\"msgtype\":\"markdown\",\"markdown\":{\"content\":\"$msg\"}}' |
|
|
|
dolphin_alert_config_map = config['configurations']['dolphin-alert'] |
|
|
|
if dolphin_alert_config_map['enterprise.wechat.enable']: |
|
dolphin_alert_map['enterprise.wechat.push.ur'] = wechat_push_url |
|
dolphin_alert_map['enterprise.wechat.token.url'] = wechat_token_url |
|
dolphin_alert_map['enterprise.wechat.team.send.msg'] = wechat_team_send_msg |
|
dolphin_alert_map['enterprise.wechat.user.send.msg'] = wechat_user_send_msg |
|
|
|
dolphin_alert_map.update(dolphin_alert_config_map) |
|
|
|
|
|
|
|
# application-api.properties |
|
dolphin_app_api_map = {} |
|
dolphin_app_api_map.update(config['configurations']['dolphin-application-api']) |
|
|
|
|
|
# common.properties |
|
dolphin_common_map = {} |
|
|
|
if 'yarn-site' in config['configurations'] and \ |
|
'yarn.resourcemanager.webapp.address' in config['configurations']['yarn-site']: |
|
yarn_resourcemanager_webapp_address = config['configurations']['yarn-site']['yarn.resourcemanager.webapp.address'] |
|
yarn_application_status_address = 'http://' + yarn_resourcemanager_webapp_address + '/ws/v1/cluster/apps/%s' |
|
dolphin_common_map['yarn.application.status.address'] = yarn_application_status_address |
|
|
|
rmHosts = default("/clusterHostInfo/rm_host", []) |
|
if len(rmHosts) > 1: |
|
dolphin_common_map['yarn.resourcemanager.ha.rm.ids'] = ','.join(rmHosts) |
|
else: |
|
dolphin_common_map['yarn.resourcemanager.ha.rm.ids'] = '' |
|
|
|
dolphin_common_map_tmp = config['configurations']['dolphin-common'] |
|
data_basedir_path = dolphin_common_map_tmp['data.basedir.path'] |
|
process_exec_basepath = data_basedir_path + '/exec' |
|
data_download_basedir_path = data_basedir_path + '/download' |
|
dolphin_common_map['process.exec.basepath'] = process_exec_basepath |
|
dolphin_common_map['data.download.basedir.path'] = data_download_basedir_path |
|
dolphin_common_map['dolphinscheduler.env.path'] = dolphin_env_path |
|
dolphin_common_map.update(config['configurations']['dolphin-common']) |
|
|
|
# datasource.properties |
|
dolphin_datasource_map = {} |
|
dolphin_datasource_map['spring.datasource.type'] = 'com.alibaba.druid.pool.DruidDataSource' |
|
dolphin_datasource_map['spring.datasource.driver-class-name'] = dolphin_database_config['dolphin_database_driver'] |
|
dolphin_datasource_map['spring.datasource.url'] = dolphin_database_config['dolphin_database_url'] |
|
dolphin_datasource_map['spring.datasource.username'] = dolphin_database_config['dolphin_database_username'] |
|
dolphin_datasource_map['spring.datasource.password'] = dolphin_database_config['dolphin_database_password'] |
|
dolphin_datasource_map.update(config['configurations']['dolphin-datasource']) |
|
|
|
# master.properties |
|
dolphin_master_map = config['configurations']['dolphin-master'] |
|
|
|
# quartz.properties |
|
dolphin_quartz_map = {} |
|
dolphin_quartz_map['org.quartz.jobStore.driverDelegateClass'] = dolphin_database_config['driverDelegateClass'] |
|
dolphin_quartz_map.update(config['configurations']['dolphin-quartz']) |
|
|
|
# worker.properties |
|
dolphin_worker_map = config['configurations']['dolphin-worker'] |
|
|
|
# zookeeper.properties |
|
dolphin_zookeeper_map={} |
|
zookeeperHosts = default("/clusterHostInfo/zookeeper_hosts", []) |
|
if len(zookeeperHosts) > 0 and "clientPort" in config['configurations']['zoo.cfg']: |
|
clientPort = config['configurations']['zoo.cfg']['clientPort'] |
|
zookeeperPort = ":" + clientPort + "," |
|
dolphin_zookeeper_map['zookeeper.quorum'] = zookeeperPort.join(zookeeperHosts) + ":" + clientPort |
|
dolphin_zookeeper_map.update(config['configurations']['dolphin-zookeeper']) |
|
|
|
|
|
|
|
|