mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Merge pull request #13990 from grafana/exporter-fix-13891
Exporter bug fix
This commit is contained in:
commit
4e49c453b9
@ -29,19 +29,36 @@ export class DashboardExporter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const templateizeDatasourceUsage = obj => {
|
const templateizeDatasourceUsage = obj => {
|
||||||
|
let datasource = obj.datasource;
|
||||||
|
let datasourceVariable = null;
|
||||||
|
|
||||||
// ignore data source properties that contain a variable
|
// ignore data source properties that contain a variable
|
||||||
if (obj.datasource && obj.datasource.indexOf('$') === 0) {
|
if (datasource && datasource.indexOf('$') === 0) {
|
||||||
if (variableLookup[obj.datasource.substring(1)]) {
|
datasourceVariable = variableLookup[datasource.substring(1)];
|
||||||
return;
|
if (datasourceVariable && datasourceVariable.current) {
|
||||||
|
datasource = datasourceVariable.current.value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
promises.push(
|
promises.push(
|
||||||
this.datasourceSrv.get(obj.datasource).then(ds => {
|
this.datasourceSrv.get(datasource).then(ds => {
|
||||||
if (ds.meta.builtIn) {
|
if (ds.meta.builtIn) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// add data source type to require list
|
||||||
|
requires['datasource' + ds.meta.id] = {
|
||||||
|
type: 'datasource',
|
||||||
|
id: ds.meta.id,
|
||||||
|
name: ds.meta.name,
|
||||||
|
version: ds.meta.info.version || '1.0.0',
|
||||||
|
};
|
||||||
|
|
||||||
|
// if used via variable we can skip templatizing usage
|
||||||
|
if (datasourceVariable) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const refName = 'DS_' + ds.name.replace(' ', '_').toUpperCase();
|
const refName = 'DS_' + ds.name.replace(' ', '_').toUpperCase();
|
||||||
datasources[refName] = {
|
datasources[refName] = {
|
||||||
name: refName,
|
name: refName,
|
||||||
@ -51,14 +68,8 @@ export class DashboardExporter {
|
|||||||
pluginId: ds.meta.id,
|
pluginId: ds.meta.id,
|
||||||
pluginName: ds.meta.name,
|
pluginName: ds.meta.name,
|
||||||
};
|
};
|
||||||
obj.datasource = '${' + refName + '}';
|
|
||||||
|
|
||||||
requires['datasource' + ds.meta.id] = {
|
obj.datasource = '${' + refName + '}';
|
||||||
type: 'datasource',
|
|
||||||
id: ds.meta.id,
|
|
||||||
name: ds.meta.name,
|
|
||||||
version: ds.meta.info.version || '1.0.0',
|
|
||||||
};
|
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -32,8 +32,8 @@ describe('given dashboard with repeated panels', () => {
|
|||||||
{
|
{
|
||||||
name: 'ds',
|
name: 'ds',
|
||||||
type: 'datasource',
|
type: 'datasource',
|
||||||
query: 'testdb',
|
query: 'other2',
|
||||||
current: { value: 'prod', text: 'prod' },
|
current: { value: 'other2', text: 'other2' },
|
||||||
options: [],
|
options: [],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@ -205,6 +205,11 @@ describe('given dashboard with repeated panels', () => {
|
|||||||
expect(variable.options[0].text).toBe('${VAR_PREFIX}');
|
expect(variable.options[0].text).toBe('${VAR_PREFIX}');
|
||||||
expect(variable.options[0].value).toBe('${VAR_PREFIX}');
|
expect(variable.options[0].value).toBe('${VAR_PREFIX}');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should add datasources only use via datasource variable to requires', () => {
|
||||||
|
const require = _.find(exported.__requires, { name: 'OtherDB_2' });
|
||||||
|
expect(require.id).toBe('other2');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// Stub responses
|
// Stub responses
|
||||||
@ -219,6 +224,11 @@ stubs['other'] = {
|
|||||||
meta: { id: 'other', info: { version: '1.2.1' }, name: 'OtherDB' },
|
meta: { id: 'other', info: { version: '1.2.1' }, name: 'OtherDB' },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
stubs['other2'] = {
|
||||||
|
name: 'other2',
|
||||||
|
meta: { id: 'other2', info: { version: '1.2.1' }, name: 'OtherDB_2' },
|
||||||
|
};
|
||||||
|
|
||||||
stubs['-- Mixed --'] = {
|
stubs['-- Mixed --'] = {
|
||||||
name: 'mixed',
|
name: 'mixed',
|
||||||
meta: {
|
meta: {
|
||||||
|
Loading…
Reference in New Issue
Block a user