Merge pull request #1957 from balena-os/avoid-config-appId-for-host-config-patch

Don't use config.get for appId when checking locks in host config PATCH
This commit is contained in:
bulldozer-balena[bot] 2022-06-07 03:02:15 +00:00 committed by GitHub
commit ddc00d196f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 4 deletions

View File

@ -5,6 +5,7 @@ import { promises as fs } from 'fs';
import * as path from 'path';
import * as config from './config';
import * as applicationManager from './compose/application-manager';
import * as constants from './lib/constants';
import * as dbus from './lib/dbus';
import { ENOENT, InternalInconsistencyError } from './lib/errors';
@ -217,12 +218,13 @@ export function get(): Bluebird<HostConfig> {
}
export async function patch(conf: HostConfig, force: boolean): Promise<void> {
const appId = await config.get('applicationId');
if (!appId) {
const apps = await applicationManager.getCurrentApps();
const appIds = Object.keys(apps).map((strId) => parseInt(strId, 10));
if (!appIds.length) {
throw new InternalInconsistencyError('Could not find an appId');
}
return updateLock.lock(appId, { force }, () => {
return updateLock.lock(appIds, { force }, () => {
const promises: Array<Promise<void>> = [];
if (conf != null && conf.network != null) {
if (conf.network.proxy != null) {

View File

@ -31,10 +31,11 @@ import * as targetStateCache from '../src/device-state/target-state-cache';
import blink = require('../src/lib/blink');
import constants = require('../src/lib/constants');
import * as deviceAPI from '../src/device-api/common';
import { UpdatesLockedError } from '../src/lib/errors';
import { SchemaTypeKey } from '../src/config/schema-type';
import log from '../src/lib/supervisor-console';
import * as applicationManager from '../src/compose/application-manager';
import App from '../src/compose/app';
describe('SupervisorAPI [V1 Endpoints]', () => {
let api: SupervisorAPI;
@ -937,11 +938,23 @@ describe('SupervisorAPI [V1 Endpoints]', () => {
before(() => {
configSetStub = stub(config, 'set').callsFake(configSetFakeFn);
logWarnStub = stub(log, 'warn');
stub(applicationManager, 'getCurrentApps').resolves({
'1234567': new App(
{
appId: 1234567,
services: [],
volumes: {},
networks: {},
},
false,
),
});
});
after(() => {
configSetStub.restore();
logWarnStub.restore();
(applicationManager.getCurrentApps as SinonStub).restore();
});
beforeEach(() => {