Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
f2ce0180d3 | |||
8c1be6555f |
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@serve.zone/nupst",
|
"name": "@serve.zone/nupst",
|
||||||
"version": "4.2.1",
|
"version": "4.2.2",
|
||||||
"exports": "./mod.ts",
|
"exports": "./mod.ts",
|
||||||
"tasks": {
|
"tasks": {
|
||||||
"dev": "deno run --allow-all mod.ts",
|
"dev": "deno run --allow-all mod.ts",
|
||||||
|
@@ -8,4 +8,4 @@ export { BaseMigration } from './base-migration.ts';
|
|||||||
export { MigrationRunner } from './migration-runner.ts';
|
export { MigrationRunner } from './migration-runner.ts';
|
||||||
export { MigrationV1ToV2 } from './migration-v1-to-v2.ts';
|
export { MigrationV1ToV2 } from './migration-v1-to-v2.ts';
|
||||||
export { MigrationV3ToV4 } from './migration-v3-to-v4.ts';
|
export { MigrationV3ToV4 } from './migration-v3-to-v4.ts';
|
||||||
export { MigrationV4_0ToV4_1 } from './migration-v4.0-to-v4.1.ts';
|
export { MigrationV4_1ToV4_2 } from './migration-v4.1-to-v4.2.ts';
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import { BaseMigration } from './base-migration.ts';
|
import { BaseMigration } from './base-migration.ts';
|
||||||
import { MigrationV1ToV2 } from './migration-v1-to-v2.ts';
|
import { MigrationV1ToV2 } from './migration-v1-to-v2.ts';
|
||||||
import { MigrationV3ToV4 } from './migration-v3-to-v4.ts';
|
import { MigrationV3ToV4 } from './migration-v3-to-v4.ts';
|
||||||
import { MigrationV4_0ToV4_1 } from './migration-v4.0-to-v4.1.ts';
|
import { MigrationV4_1ToV4_2 } from './migration-v4.1-to-v4.2.ts';
|
||||||
import { logger } from '../logger.ts';
|
import { logger } from '../logger.ts';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -18,8 +18,8 @@ export class MigrationRunner {
|
|||||||
this.migrations = [
|
this.migrations = [
|
||||||
new MigrationV1ToV2(),
|
new MigrationV1ToV2(),
|
||||||
new MigrationV3ToV4(),
|
new MigrationV3ToV4(),
|
||||||
new MigrationV4_0ToV4_1(),
|
new MigrationV4_1ToV4_2(),
|
||||||
// Add future migrations here (v4.2, v4.3, etc.)
|
// Add future migrations here (v4.3, v4.4, etc.)
|
||||||
];
|
];
|
||||||
|
|
||||||
// Sort by version order to ensure they run in sequence
|
// Sort by version order to ensure they run in sequence
|
||||||
|
@@ -2,7 +2,7 @@ import { BaseMigration } from './base-migration.ts';
|
|||||||
import { logger } from '../logger.ts';
|
import { logger } from '../logger.ts';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Migration from v4.0 to v4.1
|
* Migration from v4.1 to v4.2
|
||||||
*
|
*
|
||||||
* Major changes:
|
* Major changes:
|
||||||
* 1. Moves thresholds from UPS level to action level
|
* 1. Moves thresholds from UPS level to action level
|
||||||
@@ -10,23 +10,24 @@ import { logger } from '../logger.ts';
|
|||||||
* 3. Adds empty actions array to UPS devices without actions
|
* 3. Adds empty actions array to UPS devices without actions
|
||||||
* 4. Adds empty actions array to groups
|
* 4. Adds empty actions array to groups
|
||||||
*
|
*
|
||||||
* Transforms v4.0 format:
|
* Transforms v4.1 format (with UPS-level thresholds):
|
||||||
* {
|
* {
|
||||||
* version: "4.0",
|
* version: "4.1",
|
||||||
* upsDevices: [
|
* upsDevices: [
|
||||||
* {
|
* {
|
||||||
* id: "ups-1",
|
* id: "ups-1",
|
||||||
* name: "UPS 1",
|
* name: "UPS 1",
|
||||||
* snmp: {...},
|
* snmp: {...},
|
||||||
* thresholds: { battery: 60, runtime: 20 }, // UPS-level
|
* thresholds: { battery: 60, runtime: 20 }, // UPS-level
|
||||||
* groups: []
|
* groups: [],
|
||||||
|
* actions: []
|
||||||
* }
|
* }
|
||||||
* ]
|
* ]
|
||||||
* }
|
* }
|
||||||
*
|
*
|
||||||
* To v4.1 format:
|
* To v4.2 format (with action-level thresholds):
|
||||||
* {
|
* {
|
||||||
* version: "4.1",
|
* version: "4.2",
|
||||||
* upsDevices: [
|
* upsDevices: [
|
||||||
* {
|
* {
|
||||||
* id: "ups-1",
|
* id: "ups-1",
|
||||||
@@ -37,7 +38,7 @@ import { logger } from '../logger.ts';
|
|||||||
* {
|
* {
|
||||||
* type: "shutdown",
|
* type: "shutdown",
|
||||||
* thresholds: { battery: 60, runtime: 20 },
|
* thresholds: { battery: 60, runtime: 20 },
|
||||||
* onlyOnThresholdViolation: true,
|
* triggerMode: "onlyThresholds",
|
||||||
* shutdownDelay: 5
|
* shutdownDelay: 5
|
||||||
* }
|
* }
|
||||||
* ]
|
* ]
|
||||||
@@ -45,28 +46,28 @@ import { logger } from '../logger.ts';
|
|||||||
* ]
|
* ]
|
||||||
* }
|
* }
|
||||||
*/
|
*/
|
||||||
export class MigrationV4_0ToV4_1 extends BaseMigration {
|
export class MigrationV4_1ToV4_2 extends BaseMigration {
|
||||||
readonly fromVersion = '4.0';
|
readonly fromVersion = '4.1';
|
||||||
readonly toVersion = '4.1';
|
readonly toVersion = '4.2';
|
||||||
|
|
||||||
async shouldRun(config: any): Promise<boolean> {
|
async shouldRun(config: any): Promise<boolean> {
|
||||||
// Run if config is version 4.0 or missing version with v4 structure
|
// Run if config is version 4.1
|
||||||
if (config.version === '4.0') {
|
if (config.version === '4.1') {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Also run if config has upsDevices with thresholds at UPS level (v4.0 format)
|
// Also run if config has upsDevices with thresholds at UPS level (v4.1 format)
|
||||||
if (config.upsDevices && config.upsDevices.length > 0) {
|
if (config.upsDevices && config.upsDevices.length > 0) {
|
||||||
const firstDevice = config.upsDevices[0];
|
const firstDevice = config.upsDevices[0];
|
||||||
// v4.0 has thresholds at UPS level, v4.1 has them in actions
|
// v4.1 has thresholds at UPS level, v4.2 has them in actions
|
||||||
return firstDevice.thresholds !== undefined && firstDevice.actions === undefined;
|
return firstDevice.thresholds !== undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
async migrate(config: any): Promise<any> {
|
async migrate(config: any): Promise<any> {
|
||||||
logger.info(`${this.getName()}: Migrating v4.0 config to v4.1 format...`);
|
logger.info(`${this.getName()}: Migrating v4.1 config to v4.2 format...`);
|
||||||
logger.dim(` - Moving thresholds from UPS level to action level`);
|
logger.dim(` - Moving thresholds from UPS level to action level`);
|
||||||
logger.dim(` - Creating default shutdown actions from existing thresholds`);
|
logger.dim(` - Creating default shutdown actions from existing thresholds`);
|
||||||
|
|
Reference in New Issue
Block a user