mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-11 23:04:52 +09:00
Move the contents of node_modules/_app into lib/ as there shouldn't be any content in node_modules. This directory is automatically managed and pruned by npm. Add lib/ as a local package in package.json, this allows scripts everywhere to require it's content as "lib/path" instead of relying on local paths. This shadows the StdLib Node.js Bindings package, but I could care less. Change all requires with lib as a local path and _app to use just lib.
41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
const needle = require("needle");
|
|
|
|
module.exports = function(config){
|
|
const instances = [];
|
|
|
|
if(config){
|
|
return function getInstanceName(instanceID){
|
|
return new Promise((resolve, reject) => {
|
|
let instance = instances[instanceID];
|
|
if(!instance){
|
|
needle.get(config.masterIP+":"+config.masterPort+ '/api/slaves', (err, response) => {
|
|
if(err || response.statusCode != 200) {
|
|
console.log("Unable to get JSON master/api/slaves, master might be unaccessible");
|
|
} else if (response && response.body) {
|
|
if(Buffer.isBuffer(response.body)) {console.log(response.body.toString("utf-8")); reject(new Error())}
|
|
try {
|
|
for (let index in response.body)
|
|
instances[index] = response.body[index].instanceName;
|
|
} catch (e){
|
|
console.log(e);
|
|
return null;
|
|
}
|
|
instance = instances[instanceID]
|
|
if (!instance) instance = instanceID; //somehow the master doesn't know the instance
|
|
resolve(instance);
|
|
}
|
|
});
|
|
} else {
|
|
resolve(instance);
|
|
}
|
|
});
|
|
}
|
|
} else {
|
|
return async function thisAintGonnaWork(){
|
|
let err = new Error("getInstanceName from lib/clusterTools needs to be called with {config} to work");
|
|
console.log(err);
|
|
throw err;
|
|
}
|
|
}
|
|
}
|