Refactor device-config as part of device-state

Move the device-config module to the device-state folder and export only
those functions that are needed elsewhere in the codebase

This moves us closer to making the device-state module the only way to
modify application and configuration.

Change-type: patch
This commit is contained in:
Felipe Lalanne 2024-10-21 17:17:21 -03:00
parent 89ddfa6554
commit 51f1fb0f30
No known key found for this signature in database
GPG Key ID: 03E696BFD472B26A
8 changed files with 34 additions and 29 deletions

View File

@ -5,7 +5,6 @@ import _ from 'lodash';
import type { PinejsClientRequest } from 'pinejs-client-request';
import * as config from '../config';
import * as deviceConfig from '../device-config';
import * as eventTracker from '../event-tracker';
import { loadBackupFromMigration } from '../lib/migration';
@ -332,10 +331,10 @@ async function reportInitialEnv(
);
}
const defaultConfig = deviceConfig.getDefaults();
const defaultConfig = deviceState.getDefaultConfig();
const currentConfig = await deviceConfig.getCurrent();
const targetConfig = deviceConfig.formatConfigKeys(targetConfigUnformatted);
const currentConfig = await deviceState.getCurrentConfig();
const targetConfig = deviceState.formatConfigKeys(targetConfigUnformatted);
if (!currentConfig) {
throw new InternalInconsistencyError(

View File

@ -11,7 +11,6 @@ import { Volume } from '../compose/volume';
import * as commitStore from '../compose/commit';
import * as config from '../config';
import * as db from '../db';
import * as deviceConfig from '../device-config';
import * as logger from '../logging';
import * as images from '../compose/images';
import * as volumeManager from '../compose/volume-manager';
@ -512,7 +511,7 @@ router.get('/v2/device/tags', async (_req, res) => {
});
router.get('/v2/device/vpn', async (_req, res) => {
const conf = await deviceConfig.getCurrent();
const conf = await deviceState.getCurrentConfig();
// Build VPNInfo
const info = {
enabled: conf.SUPERVISOR_VPN_CONTROL === 'true',

View File

@ -2,21 +2,22 @@ import _ from 'lodash';
import { inspect } from 'util';
import { promises as fs } from 'fs';
import * as config from './config';
import * as db from './db';
import * as logger from './logging';
import * as dbus from './lib/dbus';
import type { EnvVarObject } from './types';
import { UnitNotLoadedError } from './lib/errors';
import { checkInt, checkTruthy } from './lib/validation';
import log from './lib/supervisor-console';
import * as configUtils from './config/utils';
import type { SchemaTypeKey } from './config/schema-type';
import { matchesAnyBootConfig } from './config/backends';
import type { ConfigBackend } from './config/backends/backend';
import { Odmdata } from './config/backends/odmdata';
import * as fsUtils from './lib/fs-utils';
import { pathOnRoot } from './lib/host-utils';
import * as config from '../config';
import * as db from '../db';
import * as logger from '../logging';
import * as dbus from '../lib/dbus';
import type { EnvVarObject } from '../types';
import { UnitNotLoadedError } from '../lib/errors';
import { checkInt, checkTruthy } from '../lib/validation';
import log from '../lib/supervisor-console';
import * as fsUtils from '../lib/fs-utils';
import { pathOnRoot } from '../lib/host-utils';
import * as configUtils from '../config/utils';
import type { SchemaTypeKey } from '../config/schema-type';
import { matchesAnyBootConfig } from '../config/backends';
import type { ConfigBackend } from '../config/backends/backend';
import { Odmdata } from '../config/backends/odmdata';
const vpnServiceName = 'openvpn';
@ -210,7 +211,7 @@ const configKeys: Dictionary<ConfigOption> = {
},
};
export const validKeys = [
const validKeys = [
'SUPERVISOR_VPN_CONTROL',
'OVERRIDE_LOCK',
..._.map(configKeys, 'envVarName'),

View File

@ -9,7 +9,7 @@ import * as config from '../config';
import * as logger from '../logging';
import * as network from '../network';
import * as deviceConfig from '../device-config';
import * as deviceConfig from './device-config';
import * as constants from '../lib/constants';
import * as dbus from '../lib/dbus';
@ -26,6 +26,12 @@ import type { InstancedDeviceState } from './target-state';
import * as TargetState from './target-state';
export { getTarget, setTarget } from './target-state';
export {
formatConfigKeys,
getCurrent as getCurrentConfig,
getDefaults as getDefaultConfig,
} from './device-config';
import type { DeviceLegacyState, DeviceState, DeviceReport } from '../types';
import type {
CompositionStepT,

View File

@ -6,9 +6,9 @@ import { imageFromService } from '../compose/images';
import { NumericIdentifier } from '../types';
import { setTarget } from './target-state';
import * as config from '../config';
import * as deviceConfig from '../device-config';
import * as eventTracker from '../event-tracker';
import * as imageManager from '../compose/images';
import * as deviceState from '../device-state';
import {
AppsJsonParseError,
@ -126,8 +126,8 @@ export async function loadTargetFromFile(appsPath: string): Promise<boolean> {
await imageManager.save(image);
}
const deviceConf = await deviceConfig.getCurrent();
const formattedConf = deviceConfig.formatConfigKeys(preloadState.config);
const deviceConf = await deviceState.getCurrentConfig();
const formattedConf = deviceState.formatConfigKeys(preloadState.config);
const localState = {
[uuid]: {
name: '',

View File

@ -6,7 +6,7 @@ import * as config from '../config';
import * as db from '../db';
import * as globalEventBus from '../event-bus';
import * as deviceConfig from '../device-config';
import * as deviceConfig from './device-config';
import { TargetStateError } from '../lib/errors';
import { takeGlobalLockRO, takeGlobalLockRW } from '../lib/process-lock';

View File

@ -5,7 +5,7 @@ import type { SinonStub, SinonSpy } from 'sinon';
import { stub, spy } from 'sinon';
import { expect } from 'chai';
import * as deviceConfig from '~/src/device-config';
import * as deviceConfig from '~/src/device-state/device-config';
import * as fsUtils from '~/lib/fs-utils';
import * as logger from '~/src/logging';
import { Extlinux } from '~/src/config/backends/extlinux';

View File

@ -8,7 +8,7 @@ import { expect } from 'chai';
import * as TargetState from '~/src/api-binder/poll';
import Log from '~/lib/supervisor-console';
import * as request from '~/lib/request';
import * as deviceConfig from '~/src/device-config';
import * as deviceConfig from '~/src/device-state/device-config';
import { UpdatesLockedError } from '~/lib/errors';
import { setTimeout } from 'timers/promises';