AMBARI-21076. ADDENDUM. Delete the remaining DRUID files after moving superset as an independent project. (Nishant Bangarwa via Swapan Shridhar).
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/eef7b730 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/eef7b730 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/eef7b730 Branch: refs/heads/feature-branch-AMBARI-21307 Commit: eef7b7308e33a9da3639611d2e4d47e52f25671c Parents: 3f08324 Author: Nishant <nishant.mon...@gmail.com> Authored: Wed Aug 30 23:43:56 2017 +0530 Committer: Swapan Shridhar <sshrid...@hortonworks.com> Committed: Wed Aug 30 12:31:29 2017 -0700 ---------------------------------------------------------------------- .../0.9.2/configuration/druid-superset-env.xml | 130 -------------- .../0.9.2/configuration/druid-superset.xml | 178 ------------------- .../DRUID/0.9.2/package/scripts/superset.py | 167 ----------------- .../DRUID/0.9.2/package/templates/superset.sh | 95 ---------- .../0.15.0/configuration/superset-env.xml | 130 ++++++++++++++ .../SUPERSET/0.15.0/configuration/superset.xml | 178 +++++++++++++++++++ .../SUPERSET/0.15.0/package/scripts/superset.py | 167 +++++++++++++++++ .../0.15.0/package/templates/superset.sh | 95 ++++++++++ 8 files changed, 570 insertions(+), 570 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/eef7b730/ambari-server/src/main/resources/common-services/DRUID/0.9.2/configuration/druid-superset-env.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/DRUID/0.9.2/configuration/druid-superset-env.xml b/ambari-server/src/main/resources/common-services/DRUID/0.9.2/configuration/druid-superset-env.xml deleted file mode 100644 index 71fa3b6..0000000 --- a/ambari-server/src/main/resources/common-services/DRUID/0.9.2/configuration/druid-superset-env.xml +++ /dev/null @@ -1,130 +0,0 @@ -<?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> - <property> - <name>superset_log_dir</name> - <value>/var/log/superset</value> - <display-name>Superset log dir</display-name> - <description>Superset log directory.</description> - <value-attributes> - <type>directory</type> - </value-attributes> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>superset_pid_dir</name> - <value>/var/run/superset</value> - <display-name>Superset pid dir</display-name> - <description>Superset pid directory.</description> - <value-attributes> - <type>directory</type> - </value-attributes> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>superset_admin_user</name> - <value>admin</value> - <display-name>Superset Admin Username</display-name> - <description> - Superset Username. This value cannot be modified by Ambari - except on initial install. Please make sure the username change in - Superset is reflected in Ambari. - </description> - <value-attributes> - <type>db_user</type> - <overridable>false</overridable> - </value-attributes> - <on-ambari-upgrade add="true"/> - </property> - <property require-input="true"> - <name>superset_admin_password</name> - <value/> - <property-type>PASSWORD</property-type> - <display-name>Superset Admin Password</display-name> - <description> - Superset password. This value cannot be modified by Ambari - except on initial install. Please make sure the password change in - Superset is reflected back in Ambari. - </description> - <value-attributes> - <overridable>false</overridable> - <type>password</type> - </value-attributes> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>superset_admin_firstname</name> - <value></value> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>superset_admin_lastname</name> - <value></value> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>superset_admin_email</name> - <value></value> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>superset_user</name> - <display-name>Superset User</display-name> - <value>superset</value> - <property-type>USER</property-type> - <description></description> - <value-attributes> - <type>user</type> - <overridable>false</overridable> - </value-attributes> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>content</name> - <display-name>superset-env template</display-name> - <value> - # Set environment variables here. - - export LC_ALL=en_US.UTF-8 - export LANG=en_US.UTF-8 - - # Superset Home Dir - export SUPERSET_CONFIG_DIR={{superset_config_dir}} - - # Superset Log Dir - export SUPERSET_LOG_DIR={{superset_log_dir}} - - # Superset Log Dir - export SUPERSET_BIN_DIR={{superset_bin_dir}} - - # Superset PID Dir - export SUPERSET_PID_DIR={{superset_pid_dir}} - - # Add superset_config.py to PYTHONPATH - export PYTHONPATH=$PYTHONPATH:{{superset_config_dir}} - - export SUPERSET_WEBSERVER_PORT={{superset_webserver_port}} - export SUPERSET_WEBSERVER_ADDRESS={{superset_webserver_address}} - export SUPERSET_TIMEOUT={{superset_timeout}} - export SUPERSET_WORKERS={{superset_workers}} - </value> - <on-ambari-upgrade add="true"/> - </property> -</configuration> http://git-wip-us.apache.org/repos/asf/ambari/blob/eef7b730/ambari-server/src/main/resources/common-services/DRUID/0.9.2/configuration/druid-superset.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/DRUID/0.9.2/configuration/druid-superset.xml b/ambari-server/src/main/resources/common-services/DRUID/0.9.2/configuration/druid-superset.xml deleted file mode 100644 index 2fff10a..0000000 --- a/ambari-server/src/main/resources/common-services/DRUID/0.9.2/configuration/druid-superset.xml +++ /dev/null @@ -1,178 +0,0 @@ -<?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> - <property> - <name>ROW_LIMIT</name> - <value>5000</value> - <value-attributes> - <type>int</type> - <minimum>0</minimum> - </value-attributes> - <description></description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>SUPERSET_WORKERS</name> - <value>4</value> - <value-attributes> - <type>int</type> - <minimum>0</minimum> - </value-attributes> - <description></description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>SUPERSET_WEBSERVER_PORT</name> - <value>9088</value> - <description></description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>SUPERSET_WEBSERVER_ADDRESS</name> - <value>0.0.0.0</value> - <description></description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>SUPERSET_TIMEOUT</name> - <value>60</value> - <description></description> - <on-ambari-upgrade add="false"/> - </property> - <property require-input="true"> - <name>SUPERSET_DATABASE_TYPE</name> - <display-name>Superset Database type</display-name> - <value>sqlite</value> - <value-attributes> - <overridable>false</overridable> - <type>value-list</type> - <entries> - <entry> - <value>mysql</value> - <label>MYSQL</label> - </entry> - <entry> - <value>sqlite</value> - <label>SQLITE</label> - </entry> - <entry> - <value>postgresql</value> - <label>POSTGRESQL</label> - </entry> - </entries> - </value-attributes> - <description>Type of the Database. Note that sqlite db will be installed on the node where superset is installed. - Use mysql or postgred when installing superset on multiple nodes. - mysql installed by ambari is only for development and not suitable for production use cases due to it being not HA. - </description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>SUPERSET_DATABASE_NAME</name> - <value>superset</value> - <display-name>Superset Database name</display-name> - <description>Superset Database name</description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>SUPERSET_DATABASE_PASSWORD</name> - <value></value> - <property-type>PASSWORD</property-type> - <display-name>Superset Database password</display-name> - <description>Password for the database.</description> - <value-attributes> - <type>password</type> - <empty-value-valid>true</empty-value-valid> - </value-attributes> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>SUPERSET_DATABASE_USER</name> - <value>superset</value> - <display-name>Superset Database user</display-name> - <description>Superset Database user</description> - <value-attributes> - <empty-value-valid>true</empty-value-valid> - </value-attributes> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>SUPERSET_DATABASE_PORT</name> - <value></value> - <display-name>Superset Database port</display-name> - <description>Superset Database port</description> - <value-attributes> - <empty-value-valid>true</empty-value-valid> - </value-attributes> - <depends-on> - <property> - <type>superset</type> - <name>SUPERSET_DATABASE_TYPE</name> - </property> - </depends-on> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>SUPERSET_DATABASE_NAME</name> - <value>superset</value> - <display-name>Superset Database name</display-name> - <description>Superset Database name</description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>SUPERSET_DATABASE_HOSTNAME</name> - <value>localhost</value> - <display-name>Database hostname</display-name> - <description>Database hostname</description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>WTF_CSRF_ENABLED</name> - <value>True</value> - <description></description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>ENABLE_PROXY_FIX</name> - <value>True</value> - <description>When using Superset beind a Proxy server set this to True.</description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>MAPBOX_API_KEY</name> - <value></value> - <value-attributes> - <empty-value-valid>true</empty-value-valid> - </value-attributes> - <description>API key to enable Mapbox visualizations</description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>SECRET_KEY</name> - <value></value> - <value-attributes> - <type>password</type> - </value-attributes> - <description>Secret Key used to encrypt user passwords. A Long Random String is recommended.</description> - <on-ambari-upgrade add="false"/> - </property> -</configuration> http://git-wip-us.apache.org/repos/asf/ambari/blob/eef7b730/ambari-server/src/main/resources/common-services/DRUID/0.9.2/package/scripts/superset.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/DRUID/0.9.2/package/scripts/superset.py b/ambari-server/src/main/resources/common-services/DRUID/0.9.2/package/scripts/superset.py deleted file mode 100644 index adbe739..0000000 --- a/ambari-server/src/main/resources/common-services/DRUID/0.9.2/package/scripts/superset.py +++ /dev/null @@ -1,167 +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. - -""" -import os - -from resource_management import Script -from resource_management.core.logger import Logger -from resource_management.core.resources import File -from resource_management.core.resources.system import Directory -from resource_management.core.resources.system import Execute -from resource_management.core.source import InlineTemplate -from resource_management.core.source import Template -from resource_management.libraries.functions import StackFeature -from resource_management.libraries.functions import stack_select -from resource_management.libraries.functions.check_process_status import check_process_status -from resource_management.libraries.functions.format import format -from resource_management.libraries.functions.show_logs import show_logs -from resource_management.libraries.functions.stack_features import check_stack_feature -from resource_management.libraries.resources.properties_file import PropertiesFile - -class Superset(Script): - - def get_component_name(self): - return format("superset") - - def install(self, env): - self.install_packages(env) - - def configure(self, env, upgrade_type=None): - import params - Directory( - [params.superset_pid_dir, params.superset_log_dir, params.superset_config_dir, params.superset_home_dir], - mode=0755, - cd_access='a', - owner=params.superset_user, - group=params.user_group, - create_parents=True, - recursive_ownership=True - ) - - File(format("{params.superset_config_dir}/superset-env.sh"), - mode=0755, - owner=params.superset_user, - group=params.user_group, - content=InlineTemplate(params.superset_env_sh_template) - ) - - File(os.path.join(params.superset_bin_dir, 'superset.sh'), - owner=params.superset_user, - group=params.user_group, - mode=0755, - content=Template("superset.sh") - ) - superset_config = mutable_config_dict(params.config["configurations"]["superset"]) - - if params.superset_db_uri: - superset_config["SQLALCHEMY_DATABASE_URI"] = params.superset_db_uri - - PropertiesFile("superset_config.py", - dir=params.superset_config_dir, - properties=quote_string_values(superset_config), - owner=params.superset_user, - group=params.user_group - ) - - # Initialize DB and create admin user. - Execute(format("source {params.superset_config_dir}/superset-env.sh ; {params.superset_bin_dir}/superset db upgrade"), - user=params.superset_user) - Execute(format("source {params.superset_config_dir}/superset-env.sh ; {params.superset_bin_dir}/fabmanager create-admin --app superset --username '{params.superset_admin_user}' --password '{params.superset_admin_password!p}' --firstname '{params.superset_admin_firstname}' --lastname '{params.superset_admin_lastname}' --email '{params.superset_admin_email}'"), - user=params.superset_user) - Execute(format("source {params.superset_config_dir}/superset-env.sh ; {params.superset_bin_dir}/superset init"), - user=params.superset_user) - - # Configure Druid Cluster in superset DB - if len(params.druid_coordinator_hosts) > 0 : - Execute(format("source {params.superset_config_dir}/superset-env.sh ; {params.superset_bin_dir}/superset configure_druid_cluster --name druid-ambari --coordinator-host {params.druid_coordinator_host} --coordinator-port {params.druid_coordinator_port} --broker-host {params.druid_router_host} --broker-port {params.druid_router_port} --coordinator-endpoint druid/coordinator/v1/metadata --broker-endpoint druid/v2"), - user=params.superset_user) - - def pre_upgrade_restart(self, env, upgrade_type=None): - Logger.info("Executing superset Upgrade pre-restart") - import params - - env.set_params(params) - - if params.stack_version and check_stack_feature(StackFeature.ROLLING_UPGRADE, params.stack_version): - stack_select.select_packages(params.version) - - def start(self, env, upgrade_type=None): - import params - env.set_params(params) - self.configure(env, upgrade_type=upgrade_type) - daemon_cmd = self.get_daemon_cmd(params, "start") - try: - Execute(daemon_cmd, - user=params.superset_user - ) - except: - show_logs(params.superset_log_dir, params.superset_user) - raise - - def stop(self, env, upgrade_type=None): - import params - env.set_params(params) - self.configure(env, upgrade_type=upgrade_type) - daemon_cmd = self.get_daemon_cmd(params, "stop") - try: - Execute(daemon_cmd, - user=params.superset_user - ) - except: - show_logs(params.superset_log_dir, params.superset_user) - raise - - def status(self, env): - import status_params - env.set_params(status_params) - pid_file = status_params.superset_pid_dir + '/superset.pid' - check_process_status(pid_file) - - def get_log_folder(self): - import params - return params.superset_log_dir - - def get_user(self): - import params - return params.superset_user - - def get_daemon_cmd(self, params=None, command=None): - return format('source {params.superset_config_dir}/superset-env.sh ; {params.superset_bin_dir}/superset.sh {command}') - -def mutable_config_dict(config): - rv = {} - for key, value in config.iteritems(): - rv[key] = value - return rv - -def quote_string_values(config): - rv = {} - for key, value in config.iteritems(): - rv[key] = quote_string_value(value) - return rv - -def quote_string_value(value): - if value.lower() == "true" or value.lower() == "false" or value.isdigit(): - return value - else: - return "'{0}'".format(value) - - - -if __name__ == "__main__": - Superset().execute() http://git-wip-us.apache.org/repos/asf/ambari/blob/eef7b730/ambari-server/src/main/resources/common-services/DRUID/0.9.2/package/templates/superset.sh ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/DRUID/0.9.2/package/templates/superset.sh b/ambari-server/src/main/resources/common-services/DRUID/0.9.2/package/templates/superset.sh deleted file mode 100644 index ffef1fe..0000000 --- a/ambari-server/src/main/resources/common-services/DRUID/0.9.2/package/templates/superset.sh +++ /dev/null @@ -1,95 +0,0 @@ -#!/bin/bash -# -# 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. -# - -## Runs superset as a daemon -## Environment Variables used by this script - -## SUPERSET_CONFIG_DIR - directory having superset config files -## SUPERSET_LOG_DIR - directory used to store superset logs -## SUPERSET_PID_DIR - directory used to store pid file - -usage="Usage: superset.sh (start|stop|status)" - -if [ $# -le 0 ]; then - echo $usage - exit 1 -fi - -command=$1 - -CONF_DIR="${SUPERSET_CONFIG_DIR:=/etc/superset/conf}" -LOG_DIR="${SUPERSET_LOG_DIR:=/var/log/superset}" -PID_DIR="${SUPERSET_PID_DIR:=/var/run/superset}" -TIMEOUT="${SUPERSET_TIMEOUT:=60}" -WEBSERVER_ADDRESS="${SUPERSET_WEBSERVER_ADDRESS:=0.0.0.0}" -WEBSERVER_PORT="${SUPERSET_WEBSERVER_PORT:=9088}" -WORKERS="${SUPERSET_WORKERS:=4}" -BIN_DIR="${SUPERSET_BIN_DIR}" - -pid=$PID_DIR/superset.pid - -case $command in - (start) - - if [ -f $pid ]; then - if kill -0 `cat $pid| head -n 1` > /dev/null 2>&1; then - echo Superset node running as process `cat $pid | head -n 1`. Stop it first. - exit 1 - fi - fi - - $BIN_DIR/gunicorn -D --workers $WORKERS -p $pid --log-file $LOG_DIR/superset.log -t $TIMEOUT -b $WEBSERVER_ADDRESS:$WEBSERVER_PORT --limit-request-line 0 --limit-request-field_size 0 superset:app - - echo "Started Superset" - ;; - - (stop) - - if [ -f $pid ]; then - TARGET_PID=`cat $pid | head -n 1` - if kill -0 $TARGET_PID > /dev/null 2>&1; then - echo Stopping process `cat $pid | head -n 1`... - kill $TARGET_PID - else - echo No superset node to stop - fi - rm -f $pid - else - echo No superset node to stop - fi - ;; - - (status) - if [ -f $pid ]; then - if kill -0 `cat $pid | head -n 1` > /dev/null 2>&1; then - echo RUNNING - exit 0 - else - echo STOPPED - fi - else - echo STOPPED - fi - ;; - - (*) - echo $usage - exit 1 - ;; -esac \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/eef7b730/ambari-server/src/main/resources/common-services/SUPERSET/0.15.0/configuration/superset-env.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/SUPERSET/0.15.0/configuration/superset-env.xml b/ambari-server/src/main/resources/common-services/SUPERSET/0.15.0/configuration/superset-env.xml new file mode 100644 index 0000000..71fa3b6 --- /dev/null +++ b/ambari-server/src/main/resources/common-services/SUPERSET/0.15.0/configuration/superset-env.xml @@ -0,0 +1,130 @@ +<?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> + <property> + <name>superset_log_dir</name> + <value>/var/log/superset</value> + <display-name>Superset log dir</display-name> + <description>Superset log directory.</description> + <value-attributes> + <type>directory</type> + </value-attributes> + <on-ambari-upgrade add="true"/> + </property> + <property> + <name>superset_pid_dir</name> + <value>/var/run/superset</value> + <display-name>Superset pid dir</display-name> + <description>Superset pid directory.</description> + <value-attributes> + <type>directory</type> + </value-attributes> + <on-ambari-upgrade add="true"/> + </property> + <property> + <name>superset_admin_user</name> + <value>admin</value> + <display-name>Superset Admin Username</display-name> + <description> + Superset Username. This value cannot be modified by Ambari + except on initial install. Please make sure the username change in + Superset is reflected in Ambari. + </description> + <value-attributes> + <type>db_user</type> + <overridable>false</overridable> + </value-attributes> + <on-ambari-upgrade add="true"/> + </property> + <property require-input="true"> + <name>superset_admin_password</name> + <value/> + <property-type>PASSWORD</property-type> + <display-name>Superset Admin Password</display-name> + <description> + Superset password. This value cannot be modified by Ambari + except on initial install. Please make sure the password change in + Superset is reflected back in Ambari. + </description> + <value-attributes> + <overridable>false</overridable> + <type>password</type> + </value-attributes> + <on-ambari-upgrade add="true"/> + </property> + <property> + <name>superset_admin_firstname</name> + <value></value> + <on-ambari-upgrade add="true"/> + </property> + <property> + <name>superset_admin_lastname</name> + <value></value> + <on-ambari-upgrade add="true"/> + </property> + <property> + <name>superset_admin_email</name> + <value></value> + <on-ambari-upgrade add="true"/> + </property> + <property> + <name>superset_user</name> + <display-name>Superset User</display-name> + <value>superset</value> + <property-type>USER</property-type> + <description></description> + <value-attributes> + <type>user</type> + <overridable>false</overridable> + </value-attributes> + <on-ambari-upgrade add="false"/> + </property> + <property> + <name>content</name> + <display-name>superset-env template</display-name> + <value> + # Set environment variables here. + + export LC_ALL=en_US.UTF-8 + export LANG=en_US.UTF-8 + + # Superset Home Dir + export SUPERSET_CONFIG_DIR={{superset_config_dir}} + + # Superset Log Dir + export SUPERSET_LOG_DIR={{superset_log_dir}} + + # Superset Log Dir + export SUPERSET_BIN_DIR={{superset_bin_dir}} + + # Superset PID Dir + export SUPERSET_PID_DIR={{superset_pid_dir}} + + # Add superset_config.py to PYTHONPATH + export PYTHONPATH=$PYTHONPATH:{{superset_config_dir}} + + export SUPERSET_WEBSERVER_PORT={{superset_webserver_port}} + export SUPERSET_WEBSERVER_ADDRESS={{superset_webserver_address}} + export SUPERSET_TIMEOUT={{superset_timeout}} + export SUPERSET_WORKERS={{superset_workers}} + </value> + <on-ambari-upgrade add="true"/> + </property> +</configuration> http://git-wip-us.apache.org/repos/asf/ambari/blob/eef7b730/ambari-server/src/main/resources/common-services/SUPERSET/0.15.0/configuration/superset.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/SUPERSET/0.15.0/configuration/superset.xml b/ambari-server/src/main/resources/common-services/SUPERSET/0.15.0/configuration/superset.xml new file mode 100644 index 0000000..2fff10a --- /dev/null +++ b/ambari-server/src/main/resources/common-services/SUPERSET/0.15.0/configuration/superset.xml @@ -0,0 +1,178 @@ +<?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> + <property> + <name>ROW_LIMIT</name> + <value>5000</value> + <value-attributes> + <type>int</type> + <minimum>0</minimum> + </value-attributes> + <description></description> + <on-ambari-upgrade add="false"/> + </property> + <property> + <name>SUPERSET_WORKERS</name> + <value>4</value> + <value-attributes> + <type>int</type> + <minimum>0</minimum> + </value-attributes> + <description></description> + <on-ambari-upgrade add="false"/> + </property> + <property> + <name>SUPERSET_WEBSERVER_PORT</name> + <value>9088</value> + <description></description> + <on-ambari-upgrade add="false"/> + </property> + <property> + <name>SUPERSET_WEBSERVER_ADDRESS</name> + <value>0.0.0.0</value> + <description></description> + <on-ambari-upgrade add="false"/> + </property> + <property> + <name>SUPERSET_TIMEOUT</name> + <value>60</value> + <description></description> + <on-ambari-upgrade add="false"/> + </property> + <property require-input="true"> + <name>SUPERSET_DATABASE_TYPE</name> + <display-name>Superset Database type</display-name> + <value>sqlite</value> + <value-attributes> + <overridable>false</overridable> + <type>value-list</type> + <entries> + <entry> + <value>mysql</value> + <label>MYSQL</label> + </entry> + <entry> + <value>sqlite</value> + <label>SQLITE</label> + </entry> + <entry> + <value>postgresql</value> + <label>POSTGRESQL</label> + </entry> + </entries> + </value-attributes> + <description>Type of the Database. Note that sqlite db will be installed on the node where superset is installed. + Use mysql or postgred when installing superset on multiple nodes. + mysql installed by ambari is only for development and not suitable for production use cases due to it being not HA. + </description> + <on-ambari-upgrade add="false"/> + </property> + <property> + <name>SUPERSET_DATABASE_NAME</name> + <value>superset</value> + <display-name>Superset Database name</display-name> + <description>Superset Database name</description> + <on-ambari-upgrade add="false"/> + </property> + <property> + <name>SUPERSET_DATABASE_PASSWORD</name> + <value></value> + <property-type>PASSWORD</property-type> + <display-name>Superset Database password</display-name> + <description>Password for the database.</description> + <value-attributes> + <type>password</type> + <empty-value-valid>true</empty-value-valid> + </value-attributes> + <on-ambari-upgrade add="false"/> + </property> + <property> + <name>SUPERSET_DATABASE_USER</name> + <value>superset</value> + <display-name>Superset Database user</display-name> + <description>Superset Database user</description> + <value-attributes> + <empty-value-valid>true</empty-value-valid> + </value-attributes> + <on-ambari-upgrade add="false"/> + </property> + <property> + <name>SUPERSET_DATABASE_PORT</name> + <value></value> + <display-name>Superset Database port</display-name> + <description>Superset Database port</description> + <value-attributes> + <empty-value-valid>true</empty-value-valid> + </value-attributes> + <depends-on> + <property> + <type>superset</type> + <name>SUPERSET_DATABASE_TYPE</name> + </property> + </depends-on> + <on-ambari-upgrade add="false"/> + </property> + <property> + <name>SUPERSET_DATABASE_NAME</name> + <value>superset</value> + <display-name>Superset Database name</display-name> + <description>Superset Database name</description> + <on-ambari-upgrade add="false"/> + </property> + <property> + <name>SUPERSET_DATABASE_HOSTNAME</name> + <value>localhost</value> + <display-name>Database hostname</display-name> + <description>Database hostname</description> + <on-ambari-upgrade add="false"/> + </property> + <property> + <name>WTF_CSRF_ENABLED</name> + <value>True</value> + <description></description> + <on-ambari-upgrade add="false"/> + </property> + <property> + <name>ENABLE_PROXY_FIX</name> + <value>True</value> + <description>When using Superset beind a Proxy server set this to True.</description> + <on-ambari-upgrade add="false"/> + </property> + <property> + <name>MAPBOX_API_KEY</name> + <value></value> + <value-attributes> + <empty-value-valid>true</empty-value-valid> + </value-attributes> + <description>API key to enable Mapbox visualizations</description> + <on-ambari-upgrade add="false"/> + </property> + <property> + <name>SECRET_KEY</name> + <value></value> + <value-attributes> + <type>password</type> + </value-attributes> + <description>Secret Key used to encrypt user passwords. A Long Random String is recommended.</description> + <on-ambari-upgrade add="false"/> + </property> +</configuration> http://git-wip-us.apache.org/repos/asf/ambari/blob/eef7b730/ambari-server/src/main/resources/common-services/SUPERSET/0.15.0/package/scripts/superset.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/SUPERSET/0.15.0/package/scripts/superset.py b/ambari-server/src/main/resources/common-services/SUPERSET/0.15.0/package/scripts/superset.py new file mode 100644 index 0000000..adbe739 --- /dev/null +++ b/ambari-server/src/main/resources/common-services/SUPERSET/0.15.0/package/scripts/superset.py @@ -0,0 +1,167 @@ +""" +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 os + +from resource_management import Script +from resource_management.core.logger import Logger +from resource_management.core.resources import File +from resource_management.core.resources.system import Directory +from resource_management.core.resources.system import Execute +from resource_management.core.source import InlineTemplate +from resource_management.core.source import Template +from resource_management.libraries.functions import StackFeature +from resource_management.libraries.functions import stack_select +from resource_management.libraries.functions.check_process_status import check_process_status +from resource_management.libraries.functions.format import format +from resource_management.libraries.functions.show_logs import show_logs +from resource_management.libraries.functions.stack_features import check_stack_feature +from resource_management.libraries.resources.properties_file import PropertiesFile + +class Superset(Script): + + def get_component_name(self): + return format("superset") + + def install(self, env): + self.install_packages(env) + + def configure(self, env, upgrade_type=None): + import params + Directory( + [params.superset_pid_dir, params.superset_log_dir, params.superset_config_dir, params.superset_home_dir], + mode=0755, + cd_access='a', + owner=params.superset_user, + group=params.user_group, + create_parents=True, + recursive_ownership=True + ) + + File(format("{params.superset_config_dir}/superset-env.sh"), + mode=0755, + owner=params.superset_user, + group=params.user_group, + content=InlineTemplate(params.superset_env_sh_template) + ) + + File(os.path.join(params.superset_bin_dir, 'superset.sh'), + owner=params.superset_user, + group=params.user_group, + mode=0755, + content=Template("superset.sh") + ) + superset_config = mutable_config_dict(params.config["configurations"]["superset"]) + + if params.superset_db_uri: + superset_config["SQLALCHEMY_DATABASE_URI"] = params.superset_db_uri + + PropertiesFile("superset_config.py", + dir=params.superset_config_dir, + properties=quote_string_values(superset_config), + owner=params.superset_user, + group=params.user_group + ) + + # Initialize DB and create admin user. + Execute(format("source {params.superset_config_dir}/superset-env.sh ; {params.superset_bin_dir}/superset db upgrade"), + user=params.superset_user) + Execute(format("source {params.superset_config_dir}/superset-env.sh ; {params.superset_bin_dir}/fabmanager create-admin --app superset --username '{params.superset_admin_user}' --password '{params.superset_admin_password!p}' --firstname '{params.superset_admin_firstname}' --lastname '{params.superset_admin_lastname}' --email '{params.superset_admin_email}'"), + user=params.superset_user) + Execute(format("source {params.superset_config_dir}/superset-env.sh ; {params.superset_bin_dir}/superset init"), + user=params.superset_user) + + # Configure Druid Cluster in superset DB + if len(params.druid_coordinator_hosts) > 0 : + Execute(format("source {params.superset_config_dir}/superset-env.sh ; {params.superset_bin_dir}/superset configure_druid_cluster --name druid-ambari --coordinator-host {params.druid_coordinator_host} --coordinator-port {params.druid_coordinator_port} --broker-host {params.druid_router_host} --broker-port {params.druid_router_port} --coordinator-endpoint druid/coordinator/v1/metadata --broker-endpoint druid/v2"), + user=params.superset_user) + + def pre_upgrade_restart(self, env, upgrade_type=None): + Logger.info("Executing superset Upgrade pre-restart") + import params + + env.set_params(params) + + if params.stack_version and check_stack_feature(StackFeature.ROLLING_UPGRADE, params.stack_version): + stack_select.select_packages(params.version) + + def start(self, env, upgrade_type=None): + import params + env.set_params(params) + self.configure(env, upgrade_type=upgrade_type) + daemon_cmd = self.get_daemon_cmd(params, "start") + try: + Execute(daemon_cmd, + user=params.superset_user + ) + except: + show_logs(params.superset_log_dir, params.superset_user) + raise + + def stop(self, env, upgrade_type=None): + import params + env.set_params(params) + self.configure(env, upgrade_type=upgrade_type) + daemon_cmd = self.get_daemon_cmd(params, "stop") + try: + Execute(daemon_cmd, + user=params.superset_user + ) + except: + show_logs(params.superset_log_dir, params.superset_user) + raise + + def status(self, env): + import status_params + env.set_params(status_params) + pid_file = status_params.superset_pid_dir + '/superset.pid' + check_process_status(pid_file) + + def get_log_folder(self): + import params + return params.superset_log_dir + + def get_user(self): + import params + return params.superset_user + + def get_daemon_cmd(self, params=None, command=None): + return format('source {params.superset_config_dir}/superset-env.sh ; {params.superset_bin_dir}/superset.sh {command}') + +def mutable_config_dict(config): + rv = {} + for key, value in config.iteritems(): + rv[key] = value + return rv + +def quote_string_values(config): + rv = {} + for key, value in config.iteritems(): + rv[key] = quote_string_value(value) + return rv + +def quote_string_value(value): + if value.lower() == "true" or value.lower() == "false" or value.isdigit(): + return value + else: + return "'{0}'".format(value) + + + +if __name__ == "__main__": + Superset().execute() http://git-wip-us.apache.org/repos/asf/ambari/blob/eef7b730/ambari-server/src/main/resources/common-services/SUPERSET/0.15.0/package/templates/superset.sh ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/SUPERSET/0.15.0/package/templates/superset.sh b/ambari-server/src/main/resources/common-services/SUPERSET/0.15.0/package/templates/superset.sh new file mode 100644 index 0000000..ffef1fe --- /dev/null +++ b/ambari-server/src/main/resources/common-services/SUPERSET/0.15.0/package/templates/superset.sh @@ -0,0 +1,95 @@ +#!/bin/bash +# +# 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. +# + +## Runs superset as a daemon +## Environment Variables used by this script - +## SUPERSET_CONFIG_DIR - directory having superset config files +## SUPERSET_LOG_DIR - directory used to store superset logs +## SUPERSET_PID_DIR - directory used to store pid file + +usage="Usage: superset.sh (start|stop|status)" + +if [ $# -le 0 ]; then + echo $usage + exit 1 +fi + +command=$1 + +CONF_DIR="${SUPERSET_CONFIG_DIR:=/etc/superset/conf}" +LOG_DIR="${SUPERSET_LOG_DIR:=/var/log/superset}" +PID_DIR="${SUPERSET_PID_DIR:=/var/run/superset}" +TIMEOUT="${SUPERSET_TIMEOUT:=60}" +WEBSERVER_ADDRESS="${SUPERSET_WEBSERVER_ADDRESS:=0.0.0.0}" +WEBSERVER_PORT="${SUPERSET_WEBSERVER_PORT:=9088}" +WORKERS="${SUPERSET_WORKERS:=4}" +BIN_DIR="${SUPERSET_BIN_DIR}" + +pid=$PID_DIR/superset.pid + +case $command in + (start) + + if [ -f $pid ]; then + if kill -0 `cat $pid| head -n 1` > /dev/null 2>&1; then + echo Superset node running as process `cat $pid | head -n 1`. Stop it first. + exit 1 + fi + fi + + $BIN_DIR/gunicorn -D --workers $WORKERS -p $pid --log-file $LOG_DIR/superset.log -t $TIMEOUT -b $WEBSERVER_ADDRESS:$WEBSERVER_PORT --limit-request-line 0 --limit-request-field_size 0 superset:app + + echo "Started Superset" + ;; + + (stop) + + if [ -f $pid ]; then + TARGET_PID=`cat $pid | head -n 1` + if kill -0 $TARGET_PID > /dev/null 2>&1; then + echo Stopping process `cat $pid | head -n 1`... + kill $TARGET_PID + else + echo No superset node to stop + fi + rm -f $pid + else + echo No superset node to stop + fi + ;; + + (status) + if [ -f $pid ]; then + if kill -0 `cat $pid | head -n 1` > /dev/null 2>&1; then + echo RUNNING + exit 0 + else + echo STOPPED + fi + else + echo STOPPED + fi + ;; + + (*) + echo $usage + exit 1 + ;; +esac \ No newline at end of file