fix datasource provisioning with direct DB connection enabled, closes #688
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
import _ from 'lodash';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Query format migration.
|
* Query format migration.
|
||||||
* This module can detect query format version and make migration.
|
* This module can detect query format version and make migration.
|
||||||
@@ -54,13 +56,14 @@ export function migrateDSConfig(jsonData) {
|
|||||||
if (!jsonData) {
|
if (!jsonData) {
|
||||||
jsonData = {};
|
jsonData = {};
|
||||||
}
|
}
|
||||||
const oldVersion = jsonData.schema || 1;
|
|
||||||
jsonData.schema = DS_CONFIG_SCHEMA;
|
|
||||||
|
|
||||||
if (oldVersion === DS_CONFIG_SCHEMA) {
|
if (!shouldMigrateDSConfig(jsonData)) {
|
||||||
return jsonData;
|
return jsonData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const oldVersion = jsonData.schema || 1;
|
||||||
|
jsonData.schema = DS_CONFIG_SCHEMA;
|
||||||
|
|
||||||
if (oldVersion < 2) {
|
if (oldVersion < 2) {
|
||||||
const dbConnectionOptions = jsonData.dbConnection || {};
|
const dbConnectionOptions = jsonData.dbConnection || {};
|
||||||
jsonData.dbConnectionEnable = dbConnectionOptions.enable || false;
|
jsonData.dbConnectionEnable = dbConnectionOptions.enable || false;
|
||||||
@@ -70,3 +73,13 @@ export function migrateDSConfig(jsonData) {
|
|||||||
|
|
||||||
return jsonData;
|
return jsonData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function shouldMigrateDSConfig(jsonData): boolean {
|
||||||
|
if (jsonData.dbConnection && !_.isEmpty(jsonData.dbConnection)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (jsonData.schema && jsonData.schema !== DS_CONFIG_SCHEMA) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import _ from 'lodash';
|
||||||
import { migrateDSConfig, DS_CONFIG_SCHEMA } from '../migrations';
|
import { migrateDSConfig, DS_CONFIG_SCHEMA } from '../migrations';
|
||||||
|
|
||||||
describe('Migrations', () => {
|
describe('Migrations', () => {
|
||||||
@@ -38,4 +39,32 @@ describe('Migrations', () => {
|
|||||||
expect(ctx.jsonData.dbConnectionDatasourceId).toBeUndefined();
|
expect(ctx.jsonData.dbConnectionDatasourceId).toBeUndefined();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('When handling provisioned datasource config', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
ctx.jsonData = {
|
||||||
|
username: 'zabbix',
|
||||||
|
password: 'zabbix',
|
||||||
|
trends: true,
|
||||||
|
trendsFrom: '7d',
|
||||||
|
trendsRange: '4d',
|
||||||
|
cacheTTL: '1h',
|
||||||
|
alerting: true,
|
||||||
|
addThresholds: false,
|
||||||
|
alertingMinSeverity: 3,
|
||||||
|
disableReadOnlyUsersAck: true,
|
||||||
|
dbConnectionEnable: true,
|
||||||
|
dbConnectionDatasourceName: 'MySQL Zabbix',
|
||||||
|
dbConnectionRetentionPolicy: 'one_year'
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not touch anything if schema is up to date', () => {
|
||||||
|
const originalConf = _.cloneDeep(ctx.jsonData);
|
||||||
|
migrateDSConfig(ctx.jsonData);
|
||||||
|
expect(ctx.jsonData).toMatchObject(originalConf);
|
||||||
|
expect(ctx.jsonData.dbConnectionEnable).toBe(true);
|
||||||
|
expect(ctx.jsonData.dbConnectionDatasourceName).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user