mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
50 lines
1.2 KiB
TypeScript
50 lines
1.2 KiB
TypeScript
export interface MetricTankResultMeta {
|
|
'schema-name': string;
|
|
'schema-retentions': string; //"1s:35d:20min:5:1542274085,1min:38d:2h:1:true,10min:120d:6h:1:true,2h:2y:6h:2",
|
|
}
|
|
|
|
// https://github.com/grafana/metrictank/blob/master/scripts/config/storage-schemas.conf#L15-L46
|
|
|
|
export interface RetentionInfo {
|
|
interval: string;
|
|
retention?: string;
|
|
chunkspan?: string;
|
|
numchunks?: number;
|
|
ready?: boolean | number; // whether, or as of what data timestamp, the archive is ready for querying.
|
|
}
|
|
|
|
function toInteger(val?: string): number | undefined {
|
|
if (val) {
|
|
return parseInt(val, 10);
|
|
}
|
|
return undefined;
|
|
}
|
|
function toBooleanOrTimestamp(val?: string): number | boolean | undefined {
|
|
if (val) {
|
|
if (val === 'true') {
|
|
return true;
|
|
}
|
|
if (val === 'false') {
|
|
return false;
|
|
}
|
|
return parseInt(val, 10);
|
|
}
|
|
return undefined;
|
|
}
|
|
|
|
export function parseSchemaRetentions(spec: string): RetentionInfo[] {
|
|
if (!spec) {
|
|
return [];
|
|
}
|
|
return spec.split(',').map(str => {
|
|
const vals = str.split(':');
|
|
return {
|
|
interval: vals[0],
|
|
retention: vals[1],
|
|
chunkspan: vals[2],
|
|
numchunks: toInteger(vals[3]),
|
|
ready: toBooleanOrTimestamp(vals[4]),
|
|
};
|
|
});
|
|
}
|