You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sw...@apache.org on 2016/03/01 02:40:25 UTC
ambari git commit: AMBARI-15237. Create Grafana user through Ambari
and add user to Grafana. (avijayan, swagle via swagle)
Repository: ambari
Updated Branches:
refs/heads/branch-2.2 50c61d602 -> fbbc855d3
AMBARI-15237. Create Grafana user through Ambari and add user to Grafana. (avijayan, swagle via swagle)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/fbbc855d
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/fbbc855d
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/fbbc855d
Branch: refs/heads/branch-2.2
Commit: fbbc855d3adcdfc0abd92e4cb3d00ee994782491
Parents: 50c61d6
Author: Siddharth Wagle <sw...@hortonworks.com>
Authored: Mon Feb 29 17:27:58 2016 -0800
Committer: Siddharth Wagle <sw...@hortonworks.com>
Committed: Mon Feb 29 17:40:07 2016 -0800
----------------------------------------------------------------------
.../conf/unix/ams-grafana.ini | 6 +--
.../0.1.0/configuration/ams-grafana-env.xml | 28 +++++++++++++
.../0.1.0/configuration/ams-grafana-ini.xml | 4 +-
.../package/scripts/metrics_grafana_util.py | 43 +++++++++++++-------
.../0.1.0/package/scripts/params.py | 2 +
.../AMBARI_METRICS/test_metrics_grafana.py | 4 +-
.../python/stacks/2.0.6/configs/default.json | 4 +-
ambari-web/app/data/HDP2/site_properties.js | 14 +++++++
8 files changed, 83 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/fbbc855d/ambari-metrics/ambari-metrics-grafana/conf/unix/ams-grafana.ini
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-grafana/conf/unix/ams-grafana.ini b/ambari-metrics/ambari-metrics-grafana/conf/unix/ams-grafana.ini
index c0ccf1a..78f30b5 100644
--- a/ambari-metrics/ambari-metrics-grafana/conf/unix/ams-grafana.ini
+++ b/ambari-metrics/ambari-metrics-grafana/conf/unix/ams-grafana.ini
@@ -145,13 +145,13 @@ static_root_path = /usr/lib/ambari-metrics-grafana/public
#################################### Anonymous Auth ##########################
[auth.anonymous]
# enable anonymous access
-enabled = true
+;enabled = true
# specify organization name that should be used for unauthenticated users
-org_name = Main Org.
+;org_name = Main Org.
# specify role for unauthenticated users
-org_role = Admin
+;org_role = Admin
#################################### Github Auth ##########################
[auth.github]
http://git-wip-us.apache.org/repos/asf/ambari/blob/fbbc855d/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-grafana-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-grafana-env.xml b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-grafana-env.xml
index de32ead..f15cd20 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-grafana-env.xml
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-grafana-env.xml
@@ -38,6 +38,34 @@
<description>Metrics Grafana data directory.</description>
</property>
<property>
+ <name>metrics_grafana_username</name>
+ <value>admin</value>
+ <display-name>Metrics Grafana Admin Username</display-name>
+ <description>
+ Metrics Grafana Username. This value cannot be modified by Ambari
+ except on initial install. Please make sure the username change in
+ Grafana is reflected in Ambari.
+ </description>
+ <value-attributes>
+ <type>db_user</type>
+ <overridable>false</overridable>
+ </value-attributes>
+ </property>
+ <property require-input="true">
+ <name>metrics_grafana_password</name>
+ <value> </value>
+ <property-type>PASSWORD</property-type>
+ <display-name>Metrics Grafana Admin Password</display-name>
+ <description>
+ Metrics Grafana password. This value cannot be modified by Ambari
+ except on initial install. Please make sure the password change in
+ Grafana is reflected back in Ambari.
+ </description>
+ <value-attributes>
+ <overridable>false</overridable>
+ </value-attributes>
+ </property>
+ <property>
<name>content</name>
<value>
# Set environment variables here.
http://git-wip-us.apache.org/repos/asf/ambari/blob/fbbc855d/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-grafana-ini.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-grafana-ini.xml b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-grafana-ini.xml
index 0a1ff32..3a0e86b 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-grafana-ini.xml
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-grafana-ini.xml
@@ -153,10 +153,10 @@ cert_key = {{ams_grafana_cert_key}}
#################################### Security ####################################
[security]
# default admin user, created on startup
-;admin_user = admin
+admin_user = {{ams_grafana_admin_user}}
# default admin password, can be changed before first start of grafana, or in profile settings
-;admin_password = admin
+admin_password = {{ams_grafana_admin_pwd}}
# used for signing
;secret_key = SW2YcwTIb9zpOOhoPsMm
http://git-wip-us.apache.org/repos/asf/ambari/blob/fbbc855d/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/metrics_grafana_util.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/metrics_grafana_util.py b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/metrics_grafana_util.py
index 3309878..eb0b691 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/metrics_grafana_util.py
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/metrics_grafana_util.py
@@ -23,6 +23,7 @@ from resource_management.core.base import Fail
from resource_management import Template
from collections import namedtuple
from urlparse import urlparse
+from base64 import b64encode
import time
import socket
import ambari_simplejson as json
@@ -35,7 +36,7 @@ GRAFANA_DATASOURCE_URL = "/api/datasources"
GRAFANA_DASHBOARDS_URL = "/api/dashboards/db"
METRICS_GRAFANA_DATASOURCE_NAME = "AMBARI_METRICS"
-Server = namedtuple('Server', [ 'protocol', 'host', 'port' ])
+Server = namedtuple('Server', [ 'protocol', 'host', 'port', 'user', 'password' ])
def perform_grafana_get_call(url, server):
grafana_https_enabled = server.protocol.lower() == 'https'
@@ -44,10 +45,12 @@ def perform_grafana_get_call(url, server):
int(server.port),
grafana_https_enabled)
- Logger.info("Connecting (GET) to %s:%s%s" % (server.host,
- server.port,
- url))
- conn.request("GET", url)
+ userAndPass = b64encode('{0}:{1}'.format(server.user, server.password))
+ headers = { 'Authorization' : 'Basic %s' % userAndPass }
+
+ Logger.info("Connecting (GET) to %s:%s%s" % (server.host, server.port, url))
+
+ conn.request("GET", url, headers = headers)
response = conn.getresponse()
Logger.info("Http response: %s %s" % (response.status, response.reason))
@@ -56,7 +59,9 @@ def perform_grafana_get_call(url, server):
def perform_grafana_put_call(url, id, payload, server):
response = None
data = None
- headers = {"Content-Type": "application/json"}
+ userAndPass = b64encode('{0}:{1}'.format(server.user, server.password))
+ headers = {"Content-Type": "application/json",
+ 'Authorization' : 'Basic %s' % userAndPass }
grafana_https_enabled = server.protocol.lower() == 'https'
for i in xrange(0, GRAFANA_CONNECT_TRIES):
@@ -82,8 +87,10 @@ def perform_grafana_put_call(url, id, payload, server):
def perform_grafana_post_call(url, payload, server):
response = None
data = None
+ userAndPass = b64encode('{0}:{1}'.format(server.user, server.password))
Logger.debug('POST payload: %s' % payload)
- headers = {"Content-Type": "application/json", "Content-Length" : len(payload)}
+ headers = {"Content-Type": "application/json", "Content-Length" : len(payload),
+ 'Authorization' : 'Basic %s' % userAndPass}
grafana_https_enabled = server.protocol.lower() == 'https'
for i in xrange(0, GRAFANA_CONNECT_TRIES):
@@ -115,21 +122,24 @@ def perform_grafana_post_call(url, payload, server):
def is_unchanged_datasource_url(datasource_url):
import params
parsed_url = urlparse(datasource_url)
- Logger.debug("parsed url, scheme = %s, host = %s, port = %s" % (
+ Logger.debug("parsed url: scheme = %s, host = %s, port = %s" % (
parsed_url.scheme, parsed_url.hostname, parsed_url.port))
- Logger.debug("collector, scheme = %s, host = %s, port = %s" %
+ Logger.debug("collector: scheme = %s, host = %s, port = %s" %
(params.metric_collector_protocol, params.metric_collector_host,
params.metric_collector_port))
- return (parsed_url.scheme == params.metric_collector_protocol.strip()) and \
- (parsed_url.hostname == params.metric_collector_host.strip()) and \
- (parsed_url.port == params.metric_collector_port)
+ return parsed_url.scheme.strip() == params.metric_collector_protocol.strip() and \
+ parsed_url.hostname.strip() == params.metric_collector_host.strip() and \
+ str(parsed_url.port) == params.metric_collector_port
+
def create_ams_datasource():
import params
server = Server(protocol = params.ams_grafana_protocol.strip(),
host = params.ams_grafana_host.strip(),
- port = params.ams_grafana_port)
+ port = params.ams_grafana_port,
+ user = params.ams_grafana_admin_user,
+ password = params.ams_grafana_admin_pwd)
"""
Create AMS datasource in Grafana, if exsists make sure the collector url is accurate
@@ -206,7 +216,9 @@ def create_ams_dashboards():
import params
server = Server(protocol = params.ams_grafana_protocol.strip(),
host = params.ams_grafana_host.strip(),
- port = params.ams_grafana_port)
+ port = params.ams_grafana_port,
+ user = params.ams_grafana_admin_user,
+ password = params.ams_grafana_admin_pwd)
dashboard_files = params.get_grafana_dashboard_defs()
version = params.get_ambari_version()
@@ -283,7 +295,8 @@ def create_ams_dashboards():
else:
Logger.error("Failed creating dashboard: %s" % dashboard_def['title'])
pass
- pass
+ else:
+ Logger.info('No update needed for dashboard = %s' % dashboard_def['title'])
pass
pass
http://git-wip-us.apache.org/repos/asf/ambari/blob/fbbc855d/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params.py b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params.py
index 3bd98a2..294c025 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params.py
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params.py
@@ -127,6 +127,8 @@ ams_grafana_log_dir = default("/configurations/ams-grafana-env/metrics_grafana_l
ams_grafana_pid_dir = status_params.ams_grafana_pid_dir
ams_grafana_conf_dir = '/etc/ambari-metrics-grafana/conf'
ams_grafana_data_dir = default("/configurations/ams-grafana-env/metrics_grafana_data_dir", '/var/lib/ambari-metrics-grafana')
+ams_grafana_admin_user = config['configurations']['ams-grafana-env']['metrics_grafana_username']
+ams_grafana_admin_pwd = config['configurations']['ams-grafana-env']['metrics_grafana_password']
metrics_grafana_hosts = default('/clusterHostInfo/metrics_grafana_hosts', None)
ams_grafana_host = None
http://git-wip-us.apache.org/repos/asf/ambari/blob/fbbc855d/ambari-server/src/test/python/stacks/2.0.6/AMBARI_METRICS/test_metrics_grafana.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/AMBARI_METRICS/test_metrics_grafana.py b/ambari-server/src/test/python/stacks/2.0.6/AMBARI_METRICS/test_metrics_grafana.py
index 38ce90f..3810b07 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/AMBARI_METRICS/test_metrics_grafana.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/AMBARI_METRICS/test_metrics_grafana.py
@@ -38,7 +38,8 @@ class TestMetricsGrafana(RMFTestCase):
import metrics_grafana_util
@patch("metrics_grafana_util.create_ams_datasource")
- def test_start(self, create_ams_datasource_mock):
+ @patch("metrics_grafana_util.create_ams_dashboards")
+ def test_start(self, create_ams_datasource_mock, create_ams_dashboards_mock):
self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/metrics_grafana.py",
classname = "AmsGrafana",
command = "start",
@@ -64,6 +65,7 @@ class TestMetricsGrafana(RMFTestCase):
user = 'ams'
)
create_ams_datasource_mock.assertCalled()
+ create_ams_dashboards_mock.assertCalled()
self.assertNoMoreResources()
def assert_configure(self):
http://git-wip-us.apache.org/repos/asf/ambari/blob/fbbc855d/ambari-server/src/test/python/stacks/2.0.6/configs/default.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/configs/default.json b/ambari-server/src/test/python/stacks/2.0.6/configs/default.json
index 7626056..f35e8f7 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/configs/default.json
+++ b/ambari-server/src/test/python/stacks/2.0.6/configs/default.json
@@ -861,7 +861,9 @@
"metrics_grafana_log_dir": "/var/log/ambari-metrics-grafana",
"metrics_grafana_pid_dir": "/var/run/ambari-metrics-grafana",
"metrics_grafana_data_dir": "/var/lib/ambari-metrics-grafana",
- "content": "\n"
+ "content": "\n",
+ "metrics_grafana_username" : "admin",
+ "metrics_grafana_password" : "admin"
},
"ams-ssl-server": {
"content": "\n"
http://git-wip-us.apache.org/repos/asf/ambari/blob/fbbc855d/ambari-web/app/data/HDP2/site_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/HDP2/site_properties.js b/ambari-web/app/data/HDP2/site_properties.js
index e061c96..54dfde0 100644
--- a/ambari-web/app/data/HDP2/site_properties.js
+++ b/ambari-web/app/data/HDP2/site_properties.js
@@ -1696,6 +1696,20 @@ var hdp2properties = [
"index": 5
},
{
+ "name": "metrics_grafana_username",
+ "serviceName": "AMBARI_METRICS",
+ "filename": "ams-grafana-env.xml",
+ "category": "General",
+ "index": 6
+ },
+ {
+ "name": "metrics_grafana_password",
+ "serviceName": "AMBARI_METRICS",
+ "filename": "ams-grafana-env.xml",
+ "category": "General",
+ "index": 7
+ },
+ {
"name": "timeline.metrics.aggregator.checkpoint.dir",
"serviceName": "AMBARI_METRICS",
"filename": "ams-site.xml",