You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ji...@apache.org on 2024/09/07 09:45:07 UTC
(ambari) 16/22: add dinky
This is an automated email from the ASF dual-hosted git repository.
jialiang pushed a commit to branch eee
in repository https://gitbox.apache.org/repos/asf/ambari.git
commit e30687f875291c8548926091d0f1645e742060b6
Author: jialiang <ji...@gmail.com>
AuthorDate: Sat Sep 7 11:02:14 2024 +0800
add dinky
---
.../stacks/BIGTOP/3.2.0/services/DINKY/alerts.json | 32 ++++
.../configuration/dinky-application-server.xml | 141 +++++++++++++++
.../services/DINKY/configuration/dinky-env.xml | 74 ++++++++
.../BIGTOP/3.2.0/services/DINKY/metainfo.xml | 99 +++++++++++
.../services/DINKY/package/scripts/dinky_env.py | 70 ++++++++
.../services/DINKY/package/scripts/dinky_server.py | 89 ++++++++++
.../3.2.0/services/DINKY/package/scripts/params.py | 108 ++++++++++++
.../DINKY/package/scripts/service_check.py | 32 ++++
.../package/templates/application-mysql.yml.j2 | 24 +++
.../package/templates/application-pgsql.yml.j2 | 23 +++
.../DINKY/package/templates/application.yml.j2 | 153 ++++++++++++++++
.../services/DINKY/package/templates/auto.sh.j2 | 148 ++++++++++++++++
.../services/DINKY/quicklinks/quicklinks.json | 26 +++
.../BIGTOP/3.2.0/services/DINKY/service_advisor.py | 196 +++++++++++++++++++++
14 files changed, 1215 insertions(+)
diff --git a/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/alerts.json b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/alerts.json
new file mode 100644
index 0000000000..7ddefb6d23
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/alerts.json
@@ -0,0 +1,32 @@
+{
+ "DINKY": {
+ "service": [],
+ "DINKY_SERVER": [
+ {
+ "name": "dinky_server_port_check",
+ "label": "dinky_server_port_check",
+ "description": "dinky_server_port_check.",
+ "interval": 10,
+ "scope": "ANY",
+ "source": {
+ "type": "PORT",
+ "uri": "{{dinky-application-server/server.port}}",
+ "default_port": 8888,
+ "reporting": {
+ "ok": {
+ "text": "TCP OK - {0:.3f}s response on port {1}"
+ },
+ "warning": {
+ "text": "TCP OK - {0:.3f}s response on port {1}",
+ "value": 1.5
+ },
+ "critical": {
+ "text": "Connection failed: {0} to {1}:{2}",
+ "value": 5.0
+ }
+ }
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/configuration/dinky-application-server.xml b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/configuration/dinky-application-server.xml
new file mode 100644
index 0000000000..79d78049bd
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/configuration/dinky-application-server.xml
@@ -0,0 +1,141 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+# -*- coding: utf-8 -*-
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+-->
+<configuration>
+ <!-- server port -->
+ <property require-input="true">
+ <name>server.port</name>
+ <value>8888</value>
+ <property-type>
+ <type>PORT</type>
+ <default-port>8888</default-port>
+ </property-type>
+ <on-ambari-upgrade add="true"/>
+ </property>
+
+ <!-- flink big version -->
+ <property require-input="true">
+ <name>flink.big.version</name>
+ <value>1.17</value>
+ <description>
+ en: The version of flink big version such as: 1.18, 1.17, 1.16, 1.15, 1.14
+ Note: The version of flink big version must be consistent with the version of flink big version installed on
+ the cluster.
+ |
+ zh: Flink大版本号,如:1.18, 1.17, 1.16, 1.15, 1.14
+ 注意:Flink大版本号必须与集群上安装的Flink大版本号保持一致。
+ </description>
+ <value-attributes>
+ <type>value-list</type>
+ <entries>
+ <entry>
+ <value>1.14</value>
+ </entry>
+ <entry>
+ <value>1.15</value>
+ </entry>
+ <entry>
+ <value>1.16</value>
+ </entry>
+ <entry>
+ <value>1.17</value>
+ </entry>
+ </entries>
+ </value-attributes>
+ <on-ambari-upgrade add="true"/>
+ </property>
+
+ <!-- 数据库类型 -->
+ <property require-input="true">
+ <name>spring.profiles.active</name>
+ <value>mysql</value>
+ <description>
+ en: The type of database to use. Valid values are mysql, postgresql , you must input the mysql/postgresql
+ information.| zh: 数据库类型,可选值为mysql, postgresql,必须输入mysql/postgresql的信息。
+ </description>
+ <value-attributes>
+ <type>value-list</type>
+ <entries>
+ <entry>
+ <value>mysql</value>
+ <description>
+ en: mysql database | zh: mysql数据库
+ </description>
+ </entry>
+ <entry>
+ <value>pgsql</value>
+ <description>
+ en: postgresql database | zh: postgresql数据库
+ </description>
+ </entry>
+ </entries>
+ </value-attributes>
+ <on-ambari-upgrade add="true"/>
+ </property>
+
+ <!-- 数据库主机 -->
+ <property require-input="true">
+ <name>spring.datasource.database.host</name>
+ <value>127.0.0.1</value>
+ <description>
+ en: DataBase host ip/hostname | zh: 数据库主机ip/主机名
+ </description>
+ <on-ambari-upgrade add="true"/>
+ </property>
+
+ <!-- 数据库端口 -->
+ <property require-input="true">
+ <name>spring.datasource.database.port</name>
+ <value>3306</value>
+ <description>
+ en: DataBase port | zh: 数据库端口
+ </description>
+ <property-type>PORT</property-type>
+ <on-ambari-upgrade add="true"/>
+ </property>
+
+ <!-- 数据库名称 -->
+ <property require-input="true">
+ <name>spring.datasource.database.name</name>
+ <value>dinky</value>
+ <description>
+ en: DataBase Name | zh: 数据库名称
+ </description>
+ <on-ambari-upgrade add="true"/>
+ </property>
+
+ <!-- 数据库用户名 -->
+ <property require-input="true">
+ <name>spring.datasource.database.username</name>
+ <value>dinky</value>
+ <description>
+ en: DataBase UserName | zh: 数据库用户名
+ </description>
+ <on-ambari-upgrade add="true"/>
+ </property>
+
+ <!-- 数据库密码 -->
+ <property require-input="true">
+ <name>spring.datasource.database.password</name>
+ <value>dinky1234!2</value>
+ <description>
+ en: DataBase Password | zh: 数据库密码
+ </description>
+ <property-type>PASSWORD</property-type>
+ <on-ambari-upgrade add="true"/>
+ </property>
+</configuration>
\ No newline at end of file
diff --git a/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/configuration/dinky-env.xml b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/configuration/dinky-env.xml
new file mode 100755
index 0000000000..4279e8d9bc
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/configuration/dinky-env.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * 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.
+ */
+-->
+<configuration supports_adding_forbidden="true">
+ <property>
+ <name>dinky_user</name>
+ <display-name>Dinky User</display-name>
+ <value>dinky</value>
+ <property-type>USER</property-type>
+ <value-attributes>
+ <type>user</type>
+ <overridable>false</overridable>
+ <user-groups>
+ <property>
+ <type>cluster-env</type>
+ <name>user_group</name>
+ </property>
+ <property>
+ <type>dinky-env</type>
+ <name>dinky_group</name>
+ </property>
+ </user-groups>
+ </value-attributes>
+ <on-ambari-upgrade add="true"/>
+ </property>
+ <property>
+ <name>dinky_group</name>
+ <display-name>Dinky Group</display-name>
+ <value>hadoop</value>
+ <property-type>GROUP</property-type>
+ <description>dinky group</description>
+ <value-attributes>
+ <type>user</type>
+ </value-attributes>
+ <on-ambari-upgrade add="true"/>
+ </property>
+ <property>
+ <name>dinky_log_dir</name>
+ <display-name>Dinky Log directory</display-name>
+ <value>/var/log/dinky</value>
+ <description>Dinky Log Dir</description>
+ <value-attributes>
+ <type>directory</type>
+ </value-attributes>
+ <on-ambari-upgrade add="true"/>
+ </property>
+ <property>
+ <name>dinky_pid_dir</name>
+ <display-name>Dinky PID directory</display-name>
+ <value>/var/run/dinky</value>
+ <value-attributes>
+ <type>directory</type>
+ </value-attributes>
+ <on-ambari-upgrade add="true"/>
+ </property>
+</configuration>
\ No newline at end of file
diff --git a/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/metainfo.xml b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/metainfo.xml
new file mode 100644
index 0000000000..3167565f2e
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/metainfo.xml
@@ -0,0 +1,99 @@
+<?xml version="1.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.
+*/
+-->
+<metainfo>
+ <schemaVersion>2.0</schemaVersion>
+ <services>
+ <service>
+ <name>DINKY</name>
+ <displayName>Dinky</displayName>
+ <comment>Dinky is a distributed multi-tenant Thrift JDBC/ODBC server for large-scale data management, processing, and analytics, built on top of Apache Spark and designed to support more engines (i.e., Flink). </comment>
+ <version>1.0.0</version>
+ <components>
+ <component>
+ <name>DINKY_SERVER</name>
+ <displayName>Dinky Server</displayName>
+ <category>MASTER</category>
+ <cardinality>1</cardinality>
+ <versionAdvertised>true</versionAdvertised>
+ <commandScript>
+ <script>scripts/dinky_server.py</script>
+ <scriptType>PYTHON</scriptType>
+ <timeout>600</timeout>
+ </commandScript>
+ <configFiles>
+ <configFile>
+ <type>env</type>
+ <fileName>dinky-application-server.xml</fileName>
+ <dictionaryName>dinky-defaults</dictionaryName>
+ </configFile>
+ <configFile>
+ <type>env</type>
+ <fileName>dinky-env.xml</fileName>
+ <dictionaryName>dinky-env</dictionaryName>
+ </configFile>
+ </configFiles>
+ <logs>
+ <log>
+ <logId>dinky_server</logId>
+ <primary>true</primary>
+ </log>
+ </logs>
+ </component>
+ </components>
+
+ <configuration-dependencies>
+ <config-type>dinky-application-server</config-type>
+ <config-type>dinky-env</config-type>
+ </configuration-dependencies>
+
+ <quickLinksConfigurations>
+ <quickLinksConfiguration>
+ <fileName>quicklinks.json</fileName>
+ <default>true</default>
+ </quickLinksConfiguration>
+ </quickLinksConfigurations>
+
+ <commandScript>
+ <script>scripts/service_check.py</script>
+ <scriptType>PYTHON</scriptType>
+ <timeout>300</timeout>
+ </commandScript>
+
+ <osSpecifics>
+ <osSpecific>
+ <osFamily>redhat9,redhat8,redhat7,amazonlinux2,redhat6,suse11,suse12</osFamily>
+ <packages>
+ <package>
+ <name>dinky_${stack_version}</name>
+ </package>
+ </packages>
+ </osSpecific>
+ <osSpecific>
+ <osFamily>debian7,debian9,ubuntu12,ubuntu14,ubuntu16,ubuntu18</osFamily>
+ <packages>
+ <package>
+ <name>dinky_${stack_version}</name>
+ </package>
+ </packages>
+ </osSpecific>
+ </osSpecifics>
+
+ </service>
+ </services>
+</metainfo>
diff --git a/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/scripts/dinky_env.py b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/scripts/dinky_env.py
new file mode 100644
index 0000000000..6e1ece7055
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/scripts/dinky_env.py
@@ -0,0 +1,70 @@
+"""
+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.
+
+"""
+
+from resource_management import *
+import os
+
+def dinky_env():
+ import params # import 导入params.py文件
+ # User(params.dinky_user, action="create", groups=params.dinky_group
+ # , ignore_already_exists=True # 忽略已经存在
+ # ) # 创建用户
+
+ Directory([params.dinky_log_dir, params.dinky_pid_dir],
+ owner=params.dinky_user,
+ group=params.dinky_group,
+ mode=0o775,
+ create_parents = True
+ )
+
+
+ ## 重写 启动脚本 auto.sh 文件
+ File(os.path.join(params.dinky_bin_dir, params.start_script_name),
+ mode=0o755,
+ content=Template(params.start_script_template_file),
+ owner=params.dinky_user,
+ group=params.dinky_group
+ )
+
+ #content=Template("hbase.conf.j2")
+ # 重写 application.yml 文件
+ File(os.path.join(params.dinky_conf_dir, params.dinky_application_main_config_file),
+ mode=0o755,
+ content=Template(params.dinky_application_main_config_template_file),
+ owner=params.dinky_user,
+ group=params.dinky_group
+ )
+
+ ## 根据 mysql 还是 pgsql 重写 application-xxx.yml 文件
+ if params.dinky_database_config['dinky_database_type'] == "mysql":
+ ## 重写 application-mysql.yml 文件
+ File(os.path.join(params.dinky_conf_dir , params.dinky_application_mysql_config_file),
+ mode=0o755,
+ content=Template(params.dinky_application_mysql_config_template_file),
+ owner=params.dinky_user,
+ group=params.dinky_group
+ )
+ else:
+ ## 重写 application-pgsql.yml 文件
+ File(os.path.join(params.dinky_conf_dir , params.dinky_application_pgsql_config_file),
+ mode=0o755,
+ content=Template(params.dinky_application_pgsql_config_template_file),
+ owner=params.dinky_user,
+ group=params.dinky_group
+ )
\ No newline at end of file
diff --git a/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/scripts/dinky_server.py b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/scripts/dinky_server.py
new file mode 100644
index 0000000000..63a8c93d2b
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/scripts/dinky_server.py
@@ -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.
+"""
+
+import time
+import os
+from resource_management import *
+from resource_management.libraries.functions.format import format
+from dinky_env import dinky_env
+
+
+class DinkyService(Script):
+
+ # 安装 dinky
+ def install(self, env):
+ import params
+ env.set_params(params)
+ self.install_packages(env)
+ #Execute(('chmod', '-R', '777', params.dinky_home))
+ #Execute(('chown', '-R', params.dinky_user + ":" + params.dinky_group, params.dinky_home))
+
+
+ def initialize(self, env):
+ import params
+ env.set_params(params)
+ dinky_setup_marker = os.path.join(params.dinky_conf_dir, "dinky_setup")
+ if not os.path.exists(dinky_setup_marker):
+ try :
+ Execute(params.init_sql, user=params.dinky_user)
+ Logger.info(format('dinky init finished, cmd: {params.init_sql}'))
+
+ File(dinky_setup_marker,
+ owner = params.dinky_user,
+ group = params.dinky_group,
+ mode = 0o640)
+ except Exception as e:
+ Logger.exception("There was an exception when ALTER SYSTEM ADD FOLLOWER: " + str(e))
+
+
+ def configure(self, env):
+ import params
+ params.pika_slave = True
+ env.set_params(params)
+ self.initialize(env)
+ dinky_env()
+
+ def start(self, env):
+ import params
+ env.set_params(params)
+ self.configure(env)
+
+ no_op_test = format("ls {params.dinky_pid_file} >/dev/null 2>&1 ")
+
+ start_cmd = format("sh {params.start_script_path} start {params.dinky_flink_big_version}")
+ Execute(start_cmd, user=params.dinky_user, not_if=no_op_test)
+
+ def stop(self, env):
+ import params
+ env.set_params(params)
+ stop_cmd = format("sh {params.start_script_path} stop ")
+ Execute(stop_cmd, user=params.dinky_user)
+ time.sleep(5)
+
+ def status(self, env):
+ import params
+ env.set_params(params)
+ check_process_status(params.dinky_pid_file)
+
+ def restart(self, env):
+ self.stop(env)
+ self.start(env)
+
+
+if __name__ == "__main__":
+ DinkyService().execute()
diff --git a/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/scripts/params.py b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/scripts/params.py
new file mode 100644
index 0000000000..a4fa11c2cd
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/scripts/params.py
@@ -0,0 +1,108 @@
+"""
+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
+import os
+from resource_management import *
+from resource_management.core.logger import Logger
+from resource_management.libraries.functions.format import format
+from resource_management.libraries.script.script import Script
+
+
+
+config = Script.get_config()
+
+stack_root = Script.get_stack_root()
+
+component_directory = "dinky-server"
+dinky_home = format("{stack_root}/current/{component_directory}")
+dinky_conf_dir = format("{dinky_home}/config")
+
+
+dinky_user = config['configurations']['dinky-env']['dinky_user']
+dinky_group = config['configurations']['dinky-env']['dinky_group']
+dinky_pid_dir = config['configurations']['dinky-env']['dinky_pid_dir']
+dinky_pid_filename = format("dinky-{dinky_user}.pid")
+dinky_pid_file = os.path.join(dinky_pid_dir, dinky_pid_filename)
+
+dinky_log_dir = config['configurations']['dinky-env']['dinky_log_dir']
+
+
+
+dinky_bin_dir = dinky_home
+dinky_lib_dir = os.path.join(dinky_home, "lib")
+dinky_lib_jars = format("{dinky_lib_dir}/*")
+dinky_extends_flink_dir = os.path.join(dinky_home, "extends")
+dinky_extends_flink_jars = format("{dinky_extends_flink_dir}/*")
+
+dinky_init_mysql_sqlfile = os.path.join(dinky_home, "sql/dinky-mysql.sql")
+dinky_init_pgsqll_sqlfile = os.path.join(dinky_home, "sql/dinky-pg.sql")
+dinky_application_main_config_file = "application.yml"
+dinky_application_main_config_template_file = format("{dinky_application_main_config_file}.j2")
+dinky_application_mysql_config_file = "application-mysql.yml"
+dinky_application_mysql_config_template_file = format("{dinky_application_mysql_config_file}.j2")
+dinky_application_pgsql_config_file = "application-pgsql.yml"
+dinky_application_pgsql_config_template_file = format("{dinky_application_pgsql_config_file}.j2")
+
+start_script_name = "auto.sh"
+start_script_path = os.path.join(dinky_home, start_script_name)
+start_script_template_file = format("{start_script_name}.j2")
+
+
+
+dinky_env_map = {}
+
+dinky_env_map.update(config['configurations']['dinky-application-server'])
+dinky_flink_big_version = dinky_env_map['flink.big.version']
+
+dinky_server_port = dinky_env_map['server.port']
+
+dinky_database_config = {'dinky_database_type': dinky_env_map['spring.profiles.active'],
+ 'dinky_database_username': dinky_env_map['spring.datasource.database.username'],
+ 'dinky_database_password': dinky_env_map['spring.datasource.database.password']}
+
+
+dinky_database_password = dinky_env_map['spring.datasource.database.password']
+dinky_database_name = dinky_env_map['spring.datasource.database.name']
+if 'mysql' == dinky_database_config['dinky_database_type']:
+
+ dinky_database_config['dinky_database_driver'] = 'com.mysql.jdbc.Driver'
+ dinky_database_config['dinky_database_url'] = 'jdbc:mysql://' + dinky_env_map['spring.datasource.database.host'] \
+ + ':' + dinky_env_map['spring.datasource.database.port'] \
+ + '/' + dinky_env_map['spring.datasource.database.name'] \
+ + '?useUnicode=true&characterEncoding=UTF-8'
+ database_host = dinky_env_map['spring.datasource.database.host']
+ database_port = dinky_env_map['spring.datasource.database.port']
+ dinky_init_sql_path = dinky_init_mysql_sqlfile
+ sql_client = "mysql"
+ #mysql -h hostname -P port -u username -p'password' dinky_database_name < /path/to/file.sql
+
+ init_sql = format("{sql_client} -h {database_host} -P {database_port} -u {dinky_user} -p'{dinky_database_password}' {dinky_database_name} < {dinky_init_sql_path}")
+else:
+
+ dinky_database_config['dinky_database_driver'] = 'org.postgresql.Driver'
+ dinky_database_config['dinky_database_url'] = 'jdbc:postgresql://' + dinky_env_map[
+ 'spring.datasource.database.host'] \
+ + ':' + dinky_env_map['spring.datasource.database.port'] \
+ + '/' + dinky_env_map['spring.datasource.database.name'] \
+ + '?stringtype=unspecified'
+ database_host = dinky_env_map['spring.datasource.database.host']
+ database_port = dinky_env_map['spring.datasource.database.port']
+ dinky_init_sql_path = dinky_init_pgsqll_sqlfile
+ sql_client = "psql"
+ init_sql = format("PGPASSWORD={dinky_database_password} {sql_client} -h {database_host} -p {database_port} -U {dinky_user} -d {dinky_database_name} < {dinky_init_sql_path}")
diff --git a/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/scripts/service_check.py b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/scripts/service_check.py
new file mode 100644
index 0000000000..9c9d23bff0
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/scripts/service_check.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+
+from resource_management import *
+
+class ServiceCheck(Script):
+ def service_check(self, env):
+ import params
+ env.set_params(params)
+
+ Execute(format("sh {dinky_bin_dir}/{start_script_name} status"))
+
+if __name__ == "__main__":
+ ServiceCheck().execute()
\ No newline at end of file
diff --git a/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/templates/application-mysql.yml.j2 b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/templates/application-mysql.yml.j2
new file mode 100644
index 0000000000..73864dfc80
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/templates/application-mysql.yml.j2
@@ -0,0 +1,24 @@
+#
+# 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
+#
+# https://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.
+#
+
+
+spring:
+ datasource:
+ driver-class-name: {{ dinky_database_config['dinky_database_driver'] }}
+ url: {{ dinky_database_config['dinky_database_url'] }}
+ username: {{ dinky_database_config['dinky_database_username'] }}
+ password: {{ dinky_database_config['dinky_database_password'] }}
\ No newline at end of file
diff --git a/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/templates/application-pgsql.yml.j2 b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/templates/application-pgsql.yml.j2
new file mode 100644
index 0000000000..3a158c08ec
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/templates/application-pgsql.yml.j2
@@ -0,0 +1,23 @@
+#
+# 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
+#
+# https://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.
+#
+
+spring:
+ datasource:
+ driver-class-name: {{ dinky_database_config['dinky_database_driver'] }}
+ url: {{ dinky_database_config['dinky_database_url'] }}
+ username: {{ dinky_database_config['dinky_database_username'] }}
+ password: {{ dinky_database_config['dinky_database_password'] }}
\ No newline at end of file
diff --git a/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/templates/application.yml.j2 b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/templates/application.yml.j2
new file mode 100644
index 0000000000..2efa79ea48
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/templates/application.yml.j2
@@ -0,0 +1,153 @@
+#################################################################################################################
+################################################# Common Config #################################################
+#################################################################################################################
+# Dinky application port
+server:
+ port: {{ dinky_server_port }}
+
+spring:
+ # Dinky application name
+ application:
+ name: Dinky
+ profiles:
+ # The h2 database is used by default. If you need to use other databases, please set the configuration active to: mysql, currently supports [mysql, pgsql, h2]
+ # If you use mysql database, please configure mysql database connection information in application-mysql.yml
+ # If you use pgsql database, please configure pgsql database connection information in application-pgsql.yml
+ # If you use the h2 database, please configure the h2 database connection information in application-h2.yml,
+ # note: the h2 database is only for experience use, and the related data that has been created cannot be migrated, please use it with caution
+ active: {{ dinky_database_config['dinky_database_type'] }} #[mysql,pgsql]
+ include: jmx
+
+ # mvc config
+ mvc:
+ pathmatch:
+ # Path matching strategy, default ant_path_matcher, support ant_path_matcher and path_pattern_parser
+ matching-strategy: ant_path_matcher
+ format:
+ date: yyyy-MM-dd HH:mm:ss # date format
+ time: HH:mm:ss # time format
+ date-time: yyyy-MM-dd HH:mm:ss # date-time format
+
+ # json format global configuration
+ jackson:
+ time-zone: GMT+8 # Time zone, default is GMT+8
+ date-format: yyyy-MM-dd HH:mm:ss # Date format, the default is yyyy-MM-dd HH:mm:ss
+
+ # circular references allowed
+ main:
+ allow-circular-references: true
+
+ # file upload config of servlet , the default is 500MB
+ servlet:
+ multipart:
+ enabled: true
+ max-file-size: 524288000
+ max-request-size: 524288000
+
+
+ # By default, memory cache metadata information is used,
+ # dinky supports redis cache, if necessary, please change simple to redis, and open the following redis connection configuration
+ # Sub-configuration items can be opened or customized as needed
+ cache:
+ type: simple
+ # If type is configured as redis, this item can be configured as needed, note: Pay attention to the indentation of this configuration item
+ # redis:
+ # # Whether to cache empty values, save the default
+ # cache-null-values: false
+ # # Cache expiration time, default 24 hours
+ # time-to-live: 86400
+
+ ########################################################## Redis配置 ##########################################################
+ # If sa-token needs to rely on redis, please open the redis configuration and depend on pom.xml and dinky-admin/pom.xml, and configure redis connection information in application.yml
+ # note: pay attention to the indentation of this configuration item
+# redis:
+# host: localhost
+# port: 6379
+# password:
+# database: 10
+# jedis:
+# pool:
+# # The maximum number of connections in the connection pool (use a negative value to indicate no limit)
+# max-active: 50
+# # The maximum blocking waiting time of the connection pool (use a negative value to indicate no limit)
+# max-wait: 3000
+# # The maximum number of idle connections in the connection pool
+# max-idle: 20
+# # The minimum number of idle connections in the connection pool
+# min-idle: 5
+# # Connection timeout (milliseconds)
+# timeout: 5000
+
+#################################################################################################################
+################################################# Mybatis Config ################################################
+######### Please note: that the following configurations are not recommended to be modified #####################
+#################################################################################################################
+mybatis-plus:
+ mapper-locations: classpath:/mapper/*Mapper.xml
+ # Entity scanning, multiple packages are separated by commas or semicolons
+ typeAliasesPackage: org.dinky.model
+ global-config:
+ db-config:
+ id-type: auto
+ # Logic delete configuration : 0: false(Not deleted), 1: true(deleted)
+ logic-delete-field: is_delete
+ logic-delete-value: 1
+ logic-not-delete-value: 0
+ banner: false
+ configuration:
+ ##### mybatis-plus prints complete sql (only for development environment)
+ #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+ log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
+ type-handlers-package: org.dinky.data.typehandler
+#################################################################################################################
+################################################# SMS Config ####################################################
+#################################################################################################################
+sms:
+ is-print: false
+
+
+
+#################################################################################################################
+################################################# Sa-Token Config ###############################################
+#################################################################################################################
+# Sa-Token basic configuration
+sa-token:
+ # The validity period of the token, the unit is 10 hours by default, -1 means it will never expire
+ timeout: 36000
+ # The temporary validity period of the token (the token will be considered as expired if there is no operation within the specified time)
+ # unit: second , if you do not need to set a temporary token, you can set it to -1
+ active-timeout: 1800
+ # Whether to allow the same account to log in concurrently (when true, allow login together, when false, new login squeezes out old login)
+ is-concurrent: false
+ # When multiple people log in to the same account, whether to share a token (if true, all logins share a token, and if false, create a new token for each login)
+ is-share: true
+ # token style
+ token-style: uuid
+ # Whether to output the operation log
+ is-log: false
+ # Whether to print banner
+ is-print: false
+ # The secret key
+ jwt-secret-key: 0DA4198858E84F1AADDF846340587A85
+ # is write header
+ is-write-header: true
+ # is read header
+ is-read-header: true
+ token-name: token
+
+#################################################################################################################
+################################################# knife4j Config ################################################
+#################################################################################################################
+knife4j:
+ enable: true
+ setting:
+ language: en
+
+
+
+#################################################################################################################
+################################################# Crypto Config #################################################
+#################################################################################################################
+crypto:
+ enabled: false
+ encryption-password:
diff --git a/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/templates/auto.sh.j2 b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/templates/auto.sh.j2
new file mode 100644
index 0000000000..4dd401c36d
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/package/templates/auto.sh.j2
@@ -0,0 +1,148 @@
+#!/bin/bash
+
+FLINK_VERSION={{ dinky_flink_big_version }}
+
+JAR_NAME="dinky-admin"
+
+PID_FILE={{ dinky_pid_filename }}
+
+# JMX path
+APP_HOME="$(cd `dirname $0`; pwd)"
+
+# Use FLINK_HOME:
+CLASS_PATH="${APP_HOME}:${APP_HOME}/lib/*:${APP_HOME}/config:${APP_HOME}/extends/*:${APP_HOME}/plugins/*:${APP_HOME}/customJar/*:${APP_HOME}/plugins/flink${FLINK_VERSION}/dinky/*:${APP_HOME}/plugins/flink${FLINK_VERSION}/*:${APP_HOME}/extends/flink${FLINK_VERSION}/dinky/*:${APP_HOME}/extends/flink${FLINK_VERSION}/*"
+
+
+JMX="-javaagent:$APP_HOME/lib/jmx_prometheus_javaagent-0.20.0.jar=10087:$APP_HOME/config/jmx/jmx_exporter_config.yaml"
+
+# Check whether the pid path exists
+PID_PATH={{ dinky_pid_dir }}
+
+if [ -d "${PID_PATH}" ];then
+ echo "${PID_PATH} is already exist." >> /dev/null
+else
+ mkdir -p "${PID_PATH}"
+fi
+
+# Check whether the pid file exists
+if [ -f "${PID_PATH}/${PID_FILE}" ];then
+ echo "${PID_PATH}/${PID_FILE} is already exist." >> /dev/null
+else
+ touch "${PID_PATH}"/${PID_FILE}
+fi
+
+tips() {
+ echo ""
+ echo "WARNING!!!......Tips, please use command: sh auto.sh [start|startOnPending|startWithJmx|stop|restart|restartWithJmx|status]. For example: sh auto.sh start "
+ echo ""
+ exit 1
+}
+
+updatePid() {
+ pid=$(ps -ef | grep [D]inky | awk '{print $2}' | head -1)
+ echo $pid >"${PID_PATH}"/${PID_FILE}
+}
+
+start() {
+ updatePid
+ if [ -z "$pid" ]; then
+ nohup java -Ddruid.mysql.usePingMethod=false -Dlog4j2.isThreadContextMapInheritable=true -Xms512M -Xmx2048M -XX:PermSize=512M -XX:MaxPermSize=1024M -XX:+HeapDumpOnOutOfMemoryError -Xverify:none -cp "${CLASS_PATH}" org.dinky.Dinky &
+ echo $! >"${PID_PATH}"/${PID_FILE}
+ echo "FLINK VERSION : $FLINK_VERSION"
+ echo "........................................Start Dinky Successfully........................................"
+ else
+ echo "Dinky pid $pid is in ${PID_PATH}/${PID_FILE}, Please stop first !!!"
+ fi
+}
+
+startOnPending() {
+ updatePid
+ if [ -z "$pid" ]; then
+ java -Ddruid.mysql.usePingMethod=false -Xms512M -Xmx2048M -XX:PermSize=512M -XX:MaxPermSize=1024M -XX:+HeapDumpOnOutOfMemoryError -Xverify:none -cp "${CLASS_PATH}" org.dinky.Dinky
+ echo "FLINK VERSION : $FLINK_VERSION"
+ echo "........................................Start Dinky Successfully........................................"
+ else
+ echo "Dinky pid $pid is in ${PID_PATH}/${PID_FILE}, Please stop first !!!"
+ fi
+}
+
+startWithJmx() {
+ updatePid
+ if [ -z "$pid" ]; then
+ nohup java -Ddruid.mysql.usePingMethod=false -Xms512M -Xmx2048M -XX:PermSize=512M -XX:MaxPermSize=1024M -XX:+HeapDumpOnOutOfMemoryError -Xverify:none "${JMX}" -cp "${CLASS_PATH}" org.dinky.Dinky &
+# echo $! >"${PID_PATH}"/${PID_FILE}
+ updatePid
+ echo "........................................Start Dinky with Jmx Successfully.....................................
+ ..."
+ else
+ echo "Dinky pid $pid is in ${PID_PATH}/${PID_FILE}, Please stop first !!!"
+ fi
+}
+
+stop() {
+ updatePid
+ pid=$(cat "${PID_PATH}"/${PID_FILE})
+ if [ -z $pid ]; then
+ echo "Dinky pid is not exist in ${PID_PATH}/${PID_FILE}"
+ else
+ kill -9 $pid
+ sleep 1
+ echo "........................................Stop Dinky Successfully....................................."
+ rm -f "${PID_PATH}"/${PID_FILE}
+ fi
+}
+
+status() {
+ updatePid
+ if [ -z $pid ]; then
+ echo ""
+ echo "Service ${JAR_NAME} is not running!"
+ echo ""
+ exit 1
+ else
+ echo ""
+ echo "Service ${JAR_NAME} is running. It's pid=${pid}"
+ echo ""
+ fi
+}
+
+restart() {
+ echo ""
+ stop
+ start
+ echo "........................................Restart Successfully........................................"
+}
+
+restartWithJmx() {
+ echo ""
+ stop
+ startWithJmx
+ echo "........................................Restart with Jmx Successfully........................................"
+}
+
+case "$1" in
+"start")
+ start
+ ;;
+"startOnPending")
+ startOnPending
+ ;;
+"startWithJmx")
+ startWithJmx
+ ;;
+"stop")
+ stop
+ ;;
+"status")
+ status
+ ;;
+"restart")
+ restart
+ ;;
+"restartWithJmx")
+ restartWithJmx
+ ;;
+*)
+ tips
+ ;;
+esac
diff --git a/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/quicklinks/quicklinks.json b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/quicklinks/quicklinks.json
new file mode 100644
index 0000000000..ec5e39e9fb
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/quicklinks/quicklinks.json
@@ -0,0 +1,26 @@
+{
+ "name": "default",
+ "description": "default quick links configuration",
+ "configuration": {
+ "protocol":
+ {
+ "type":"http"
+ },
+
+ "links": [
+ {
+ "name": "dinky-application-ui",
+ "label": "Dinky Web UI",
+ "requires_user_name": "false",
+ "component_name": "DINKY_SERVER",
+ "url": "%@://%@:%@",
+ "port":{
+ "http_property": "server.port",
+ "http_default_port": "8888",
+ "regex": "^(\\d+)$",
+ "site": "dinky-application-ui"
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/service_advisor.py b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/service_advisor.py
new file mode 100755
index 0000000000..c3f5586777
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/DINKY/service_advisor.py
@@ -0,0 +1,196 @@
+#!/usr/bin/env ambari-python-wrap
+"""
+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.
+"""
+
+# Python imports
+from ast import Param
+import imp
+import os
+import traceback
+import re
+import socket
+import fnmatch
+
+
+from resource_management.core.logger import Logger
+
+SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
+STACKS_DIR = os.path.join(SCRIPT_DIR, '../../../../../stacks/')
+PARENT_FILE = os.path.join(STACKS_DIR, 'service_advisor.py')
+
+try:
+ if "BASE_SERVICE_ADVISOR" in os.environ:
+ PARENT_FILE = os.environ["BASE_SERVICE_ADVISOR"]
+ with open(PARENT_FILE, 'rb') as fp:
+ service_advisor = imp.load_module('service_advisor', fp, PARENT_FILE, ('.py', 'rb', imp.PY_SOURCE))
+except Exception as e:
+ traceback.print_exc()
+ print "Failed to load parent"
+
+class DinkyServiceAdvisor(service_advisor.ServiceAdvisor):
+
+ def __init__(self, *args, **kwargs):
+ self.as_super = super(DinkyServiceAdvisor, self)
+ self.as_super.__init__(*args, **kwargs)
+
+ # Always call these methods
+ self.modifyMastersWithMultipleInstances()
+ self.modifyCardinalitiesDict()
+ self.modifyHeapSizeProperties()
+ self.modifyNotValuableComponents()
+ self.modifyComponentsNotPreferableOnServer()
+ self.modifyComponentLayoutSchemes()
+
+ def modifyMastersWithMultipleInstances(self):
+ """
+ Modify the set of masters with multiple instances.
+ Must be overriden in child class.
+ """
+ # Nothing to do
+ pass
+
+ def modifyCardinalitiesDict(self):
+ """
+ Modify the dictionary of cardinalities.
+ Must be overriden in child class.
+ """
+ # Nothing to do
+ pass
+
+ def modifyHeapSizeProperties(self):
+ """
+ Modify the dictionary of heap size properties.
+ Must be overriden in child class.
+ """
+ pass
+
+ def modifyNotValuableComponents(self):
+ """
+ Modify the set of components whose host assignment is based on other services.
+ Must be overriden in child class.
+ """
+ # Nothing to do
+ pass
+
+ def modifyComponentsNotPreferableOnServer(self):
+ """
+ Modify the set of components that are not preferable on the server.
+ Must be overriden in child class.
+ """
+ # Nothing to do
+ pass
+
+ def modifyComponentLayoutSchemes(self):
+ """
+ Modify layout scheme dictionaries for components.
+ The scheme dictionary basically maps the number of hosts to
+ host index where component should exist.
+ Must be overriden in child class.
+ """
+
+ # Nothing to do
+ pass
+
+
+ def getServiceComponentLayoutValidations(self, services, hosts):
+ """
+ Get a list of errors.
+ Must be overriden in child class.
+ """
+
+ return self.getServiceComponentCardinalityValidations(services, hosts, "KYUUBI")
+
+ def getServiceConfigurationRecommendations(self, configurations, clusterData, services, hosts):
+ """
+ Entry point.
+ Must be overriden in child class.
+ """
+ # Logger.info("Class: %s, Method: %s. Recommending Service Configurations." %
+ # (self.__class__.__name__, inspect.stack()[0][3]))
+
+ recommender = DinkyRecommender()
+ recommender.recommendDinkyConfigurationsFromHDP33(configurations, clusterData, services, hosts)
+
+
+ # def getServiceConfigurationRecommendationsForSSO(self, configurations, clusterData, services, hosts):
+ # """
+ # Entry point.
+ # Must be overriden in child class.
+ # """
+ # recommender = DinkyRecommender()
+ # recommender.recommendConfigurationsForSSO(configurations, clusterData, services, hosts)
+
+ def getServiceConfigurationsValidationItems(self, configurations, recommendedDefaults, services, hosts):
+ """
+ Entry point.
+ Validate configurations for the service. Return a list of errors.
+ The code for this function should be the same for each Service Advisor.
+ """
+ # Logger.info("Class: %s, Method: %s. Validating Configurations." %
+ # (self.__class__.__name__, inspect.stack()[0][3]))
+
+ return []
+
+ @staticmethod
+ def isKerberosEnabled(services, configurations):
+ """
+ Determines if security is enabled by testing the value of core-site/hadoop.security.authentication enabled.
+ If the property exists and is equal to "kerberos", then is it enabled; otherwise is it assumed to be
+ disabled.
+
+ :type services: dict
+ :param services: the dictionary containing the existing configuration values
+ :type configurations: dict
+ :param configurations: the dictionary containing the updated configuration values
+ :rtype: bool
+ :return: True or False
+ """
+ if configurations and "core-site" in configurations and \
+ "hadoop.security.authentication" in configurations["core-site"]["properties"]:
+ return configurations["core-site"]["properties"]["hadoop.security.authentication"].lower() == "kerberos"
+ elif services and "core-site" in services["configurations"] and \
+ "hadoop.security.authentication" in services["configurations"]["core-site"]["properties"]:
+ return services["configurations"]["core-site"]["properties"]["hadoop.security.authentication"].lower() == "kerberos"
+ else:
+ return False
+
+
+class DinkyRecommender(service_advisor.ServiceAdvisor):
+ """
+ Dinky Recommender suggests properties when adding the service for the first time or modifying configs via the UI.
+ """
+
+ def __init__(self, *args, **kwargs):
+ self.as_super = super(DinkyRecommender, self)
+ self.as_super.__init__(*args, **kwargs)
+
+ def recommendDinkyConfigurationsFromHDP33(self, configurations, clusterData, services, hosts):
+ """
+ Recommend configurations for this service based on HDP 3.3.
+ """
+
+
+
+
+
+
+
+
+
+
+
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ambari.apache.org
For additional commands, e-mail: commits-help@ambari.apache.org