Add capability to use grafana folderid parameter
- retro-compatibility with default folder 'General' == 0 - add to config file with folderid key in grafana section - add to cmd with --grafana-folderid Change-Id: Iebfc5613f4c622d3d49d2f34df77ad3695f6b046
This commit is contained in:
parent
53fea97346
commit
67f55d53d6
@ -28,6 +28,7 @@ class Builder(object):
|
|||||||
self.cache = Cache(
|
self.cache = Cache(
|
||||||
config.get('cache', 'cachedir'),
|
config.get('cache', 'cachedir'),
|
||||||
config.getboolean('cache', 'enabled'))
|
config.getboolean('cache', 'enabled'))
|
||||||
|
self.folder_id = config.getint('grafana', 'folderid')
|
||||||
self.grafana = Grafana(
|
self.grafana = Grafana(
|
||||||
url=config.get('grafana', 'url'),
|
url=config.get('grafana', 'url'),
|
||||||
key=config.get('grafana', 'apikey'))
|
key=config.get('grafana', 'apikey'))
|
||||||
@ -84,7 +85,9 @@ class Builder(object):
|
|||||||
for name in data:
|
for name in data:
|
||||||
data, md5 = self.parser.get_dashboard(name)
|
data, md5 = self.parser.get_dashboard(name)
|
||||||
if self.cache.has_changed(name, md5):
|
if self.cache.has_changed(name, md5):
|
||||||
self.grafana.dashboard.create(name, data, overwrite=True)
|
self.grafana.dashboard.create(name, data,
|
||||||
|
overwrite=True,
|
||||||
|
folder_id=self.folder_id)
|
||||||
self.cache.set(name, md5)
|
self.cache.set(name, md5)
|
||||||
else:
|
else:
|
||||||
LOG.debug("'%s' has not changed" % name)
|
LOG.debug("'%s' has not changed" % name)
|
||||||
|
@ -53,6 +53,9 @@ class Client(object):
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--grafana-apikey', dest='grafana_apikey',
|
'--grafana-apikey', dest='grafana_apikey',
|
||||||
help='API key to access grafana.')
|
help='API key to access grafana.')
|
||||||
|
parser.add_argument(
|
||||||
|
'--grafana-folderid', dest='grafana_folderid',
|
||||||
|
help='The id of the folder to save the dashboard in.')
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--version', dest='version', action='version',
|
'--version', dest='version', action='version',
|
||||||
version=__version__, help="show "
|
version=__version__, help="show "
|
||||||
@ -94,6 +97,9 @@ class Client(object):
|
|||||||
if self.args.grafana_apikey:
|
if self.args.grafana_apikey:
|
||||||
self.config.set('grafana', 'apikey', self.args.grafana_apikey)
|
self.config.set('grafana', 'apikey', self.args.grafana_apikey)
|
||||||
LOG.debug('Grafana APIKey overridden')
|
LOG.debug('Grafana APIKey overridden')
|
||||||
|
if self.args.grafana_folderid:
|
||||||
|
self.config.set('grafana', 'folderid', self.args.grafana_folderid)
|
||||||
|
LOG.debug('Grafana Folderid overridden')
|
||||||
|
|
||||||
def setup_logging(self):
|
def setup_logging(self):
|
||||||
if self.args.debug:
|
if self.args.debug:
|
||||||
|
@ -27,3 +27,4 @@ class Config(ConfigParser.ConfigParser):
|
|||||||
self.add_section('grafana')
|
self.add_section('grafana')
|
||||||
self.set('grafana', 'apikey', '')
|
self.set('grafana', 'apikey', '')
|
||||||
self.set('grafana', 'url', 'http://localhost:8080')
|
self.set('grafana', 'url', 'http://localhost:8080')
|
||||||
|
self.set('grafana', 'folderid', '0')
|
||||||
|
@ -25,7 +25,7 @@ class Dashboard(object):
|
|||||||
self.url = utils.urljoin(url, 'api/dashboards/db/')
|
self.url = utils.urljoin(url, 'api/dashboards/db/')
|
||||||
self.session = session
|
self.session = session
|
||||||
|
|
||||||
def create(self, name, data, overwrite=False):
|
def create(self, name, data, overwrite=False, folder_id=0):
|
||||||
"""Create a new dashboard
|
"""Create a new dashboard
|
||||||
|
|
||||||
:param name: URL friendly title of the dashboard
|
:param name: URL friendly title of the dashboard
|
||||||
@ -35,12 +35,15 @@ class Dashboard(object):
|
|||||||
:param overwrite: Overwrite existing dashboard with newer version or
|
:param overwrite: Overwrite existing dashboard with newer version or
|
||||||
with the same dashboard title
|
with the same dashboard title
|
||||||
:type overwrite: bool
|
:type overwrite: bool
|
||||||
|
:param folder_id: The id of the folder to save the dashboard in.
|
||||||
|
:type folder_id: int
|
||||||
|
|
||||||
:raises Exception: if dashboard already exists
|
:raises Exception: if dashboard already exists
|
||||||
|
|
||||||
"""
|
"""
|
||||||
dashboard = {
|
dashboard = {
|
||||||
'dashboard': data,
|
'dashboard': data,
|
||||||
|
'folderId': folder_id,
|
||||||
'overwrite': overwrite,
|
'overwrite': overwrite,
|
||||||
}
|
}
|
||||||
if not overwrite and self.is_dashboard(name):
|
if not overwrite and self.is_dashboard(name):
|
||||||
|
@ -28,6 +28,7 @@ class TestCaseArgs(TestCase):
|
|||||||
required = [
|
required = [
|
||||||
'Grafana URL override: http://example.grafana.org:3000',
|
'Grafana URL override: http://example.grafana.org:3000',
|
||||||
'.*?^Grafana APIKey overridden',
|
'.*?^Grafana APIKey overridden',
|
||||||
|
'.*?^Grafana Folderid overridden',
|
||||||
'.*?^Validating schema in %s' % self.path,
|
'.*?^Validating schema in %s' % self.path,
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -36,6 +37,8 @@ class TestCaseArgs(TestCase):
|
|||||||
'http://example.grafana.org:3000',
|
'http://example.grafana.org:3000',
|
||||||
'--grafana-apikey',
|
'--grafana-apikey',
|
||||||
'xyz',
|
'xyz',
|
||||||
|
'--grafana-folderid',
|
||||||
|
'1',
|
||||||
'validate',
|
'validate',
|
||||||
self.path,
|
self.path,
|
||||||
]
|
]
|
||||||
|
@ -29,5 +29,7 @@ class TestCaseConfig(TestCase):
|
|||||||
self.config.get('cache', 'cachedir'), '~/.cache/grafyaml')
|
self.config.get('cache', 'cachedir'), '~/.cache/grafyaml')
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
self.config.get('grafana', 'apikey'), '')
|
self.config.get('grafana', 'apikey'), '')
|
||||||
|
self.assertEqual(
|
||||||
|
self.config.get('grafana', 'folderid'), '0')
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
self.config.get('grafana', 'url'), 'http://localhost:8080')
|
self.config.get('grafana', 'url'), 'http://localhost:8080')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user