diff --git a/packages/controller/src/Controller.ts b/packages/controller/src/Controller.ts index 22b54567..405df8b7 100644 --- a/packages/controller/src/Controller.ts +++ b/packages/controller/src/Controller.ts @@ -924,9 +924,7 @@ export default class Controller { addInstanceHooks(instance: InstanceInfo) { instance.config.on("fieldChanged", (field: string, curr: any, prev: any) => { instance.updatedAtMs = Date.now(); - if (field === "instance.name") { - this.instances.set(instance); // Trigger updated logic - } + this.instances.set(instance); // Trigger update logic lib.invokeHook(this.plugins, "onInstanceConfigFieldChanged", instance, field, curr, prev); }); diff --git a/test/controller/Controller.js b/test/controller/Controller.js index 4ff84f43..44ce9b11 100644 --- a/test/controller/Controller.js +++ b/test/controller/Controller.js @@ -17,7 +17,9 @@ class MockInstanceConfig extends EventEmitter { } set(field, value) { - return this._data.set(field, value); + const prev = this.get(field); + this._data.set(field, value); + this.emit("fieldChanged", field, value, prev); } } @@ -179,5 +181,13 @@ describe("controller/src/Controller", function() { ); }); }); + + describe(".instances", function() { + it("should set the dirty flag if the config is updated", function() { + controller.instances.dirty = false; + mockInstanceConfig.set("instance.assigned_host", null); + assert(controller.instances.dirty === true, "dirty flag was not set"); + }); + }); }); });