Add reference to Slave in Instance

Add a reference to the Slave that's running the given instance in order
for it to be able to access the slave config.
This commit is contained in:
Hornwitser committed 2020-05-26 14:04:25 +02:00
1 parent f8597f500c
commit f3d4cfdcf5
2 files changed
+9 -8

No files matched your search

+7 -6
View File
@@ -58,9 +58,10 @@ const instanceFactorioAutosaveSize = new prometheus.Gauge(
* Keeps track of the runtime parameters of an instance
*/
class Instance extends link.Link{
constructor(connector, dir, factorioDir, instanceConfig) {
constructor(slave, connector, dir, factorioDir, instanceConfig) {
super('instance', 'slave', connector);
link.attachAllMessages(this);
this._slave = slave;
this._dir = dir;
this.plugins = new Map();
@@ -141,21 +142,21 @@ class Instance extends link.Link{
console.log(`Clusterio | Loaded plugin ${pluginInfo.name} in ${Date.now() - pluginLoadStarted}ms`);
}
async init(pluginInfos, slave) {
async init(pluginInfos) {
await this.server.init();
// load plugins
for (let pluginInfo of pluginInfos) {
if (
!pluginInfo.instanceEntrypoint
|| !slave.serverPlugins.has(pluginInfo.name)
|| !this._slave.serverPlugins.has(pluginInfo.name)
|| !this.config.group(pluginInfo.name).get("enabled")
) {
continue;
}
try {
await this._loadPlugin(pluginInfo, slave);
await this._loadPlugin(pluginInfo, this._slave);
} catch (err) {
this.notifyExit();
throw err;
@@ -801,9 +802,9 @@ class Slave extends link.Link {
let [connectionClient, connectionServer] = link.VirtualConnector.makePair();
let instanceConnection = new InstanceConnection(connectionServer, this, instanceId);
let instance = new Instance(
connectionClient, instanceInfo.path, this.config.get("slave.factorio_directory"), instanceInfo.config
this, connectionClient, instanceInfo.path, this.config.get("slave.factorio_directory"), instanceInfo.config
);
await instance.init(this.pluginInfos, this);
await instance.init(this.pluginInfos);
// XXX: race condition on multiple simultanious calls
this.instanceConnections.set(instanceId, instanceConnection);
+2 -2
View File
@@ -17,7 +17,7 @@ describe("Slave testing", function() {
let instanceConfig = new config.InstanceConfig();
await instanceConfig.init();
instanceConfig.set("instance.name", "foo");
instance = new slave._Instance(new link.VirtualConnector(), "dir", "factorioDir", instanceConfig);
instance = new slave._Instance({}, new link.VirtualConnector(), "dir", "factorioDir", instanceConfig);
});
describe(".name", function() {
@@ -109,7 +109,7 @@ describe("Slave testing", function() {
await instanceConfig.init();
instanceConfig.set("instance.name", "test");
instance = new slave._Instance(
new link.VirtualConnector(), path.join(testDir, "instance"), "factorioDir", instanceConfig
{}, new link.VirtualConnector(), path.join(testDir, "instance"), "factorioDir", instanceConfig
);
await fs.outputFile(instance.path("mods", "mod_i.zip"), "i");
});