6 Commits

Author SHA1 Message Date
d761b1459d 1.0.21 2022-02-27 23:21:50 +01:00
26f0ac0508 update 2022-02-27 22:21:35 +00:00
efa5982dc9 1.0.20 2022-02-27 22:36:18 +01:00
db8f587d8d fix(core): update 2022-02-27 22:36:17 +01:00
cbc3334994 1.0.19 2022-02-27 21:57:01 +01:00
d111e3709b fix(core): update 2022-02-27 21:57:00 +01:00
4 changed files with 30 additions and 12 deletions

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{
"name": "@mojoio/bobcat",
"version": "1.0.18",
"version": "1.0.21",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@mojoio/bobcat",
"version": "1.0.18",
"version": "1.0.21",
"license": "MIT",
"dependencies": {
"@pushrocks/smartdelay": "^2.0.13",

View File

@ -1,6 +1,6 @@
{
"name": "@mojoio/bobcat",
"version": "1.0.18",
"version": "1.0.21",
"private": false,
"description": "a module to talk to bobcat miners",
"main": "dist_ts/index.js",

View File

@ -38,7 +38,7 @@ export class Bobcat {
*/
public async checkMinerStatus () {
const response = await plugins.smartrequest.getJson(`http://${this.networkAddress}/status.json`, {
timeout: 30000
timeout: 60000
});
const body: interfaces.IMinerStatus = response.body;
this.latestStatus = body;
@ -50,7 +50,7 @@ export class Bobcat {
*/
public async gatherMinerDetails () {
const response = await plugins.smartrequest.getJson(`http://${this.networkAddress}/miner.json`, {
timeout: 30000
timeout: 60000
});
const body: interfaces.IMinerDetailsResponse = response.body;
this.latestMinerDetails = body;
@ -61,9 +61,14 @@ export class Bobcat {
* runs maintenance on the bobcat
*/
public async runMaintenance () {
await this.checkMinerStatus();
await this.gatherMinerDetails();
if (this.latestStatus.status === 'Synced' && parseInt(this.latestStatus.gap) > -50 && parseInt(this.latestStatus.gap) < 50) {
await plugins.smartpromise.timeoutAndContinue(this.checkMinerStatus());
await plugins.smartdelay.delayFor(10000);
await plugins.smartpromise.timeoutAndContinue(this.gatherMinerDetails());
await plugins.smartdelay.delayFor(10000);
await plugins.smartpromise.timeoutAndContinue(this.checkMinerStatus());
await plugins.smartdelay.delayFor(10000);
await plugins.smartpromise.timeoutAndContinue(this.gatherMinerDetails());
if (this.latestStatus.status === 'Synced' && parseInt(this.latestStatus.gap) > -100 && parseInt(this.latestStatus.gap) < 50) {
console.log(`Miner ${this.latestMinerDetails.animal} at ${this.networkAddress} is Synced. ok!`)
return;
}
@ -78,11 +83,24 @@ export class Bobcat {
if (this.latestStatus.status !== 'Synced') {
console.log(`Miner ${this.latestMinerDetails.animal} is not synced. Restarting now!`);
try {
await this.restart()
await this.restart();
return;
} catch (err) {
}
}
if (this.latestStatus.status === 'Synced' && parseInt(this.latestStatus.gap) < -100) {
console.log(`Miner ${this.latestMinerDetails.animal} is Synced, but strangely ahead of blockchain. Restarting!`);
try {
await this.restart();
return;
} catch (err) {
}
}
console.log(`Looks like miner ${this.latestMinerDetails.animal} is Synced, but does not fall under predefined statuses!`);
}
/**
@ -103,7 +121,7 @@ export class Bobcat {
await plugins.smartdelay.delayFor(10000);
const response = await plugins.smartrequest.request(`http://${this.networkAddress}/admin/reboot`, {
method: 'POST',
timeout: 30000,
timeout: 60000,
...Bobcat.minerAuthObject
});
console.log(response.statusCode);

View File

@ -33,7 +33,7 @@ export class BobcatManager {
public async addBobcat (networkAddressArg: string) {
const newBobcat = await Bobcat.createFromNetworkAddress(networkAddressArg);
this.bobcats.push(newBobcat);
console.log(`added ${newBobcat.latestMinerDetails.animal} at ${newBobcat.networkAddress}`);
console.log(`added ${newBobcat.latestMinerDetails?.animal} at ${newBobcat.networkAddress}`);
}
/**
@ -44,7 +44,7 @@ export class BobcatManager {
console.log(`cooling down for 10 seconds`);
await plugins.smartdelay.delayFor(10000);
for (const bobcat of this.bobcats) {
console.log(`now running maintenance on ${bobcat.latestMinerDetails.animal} at ${bobcat.networkAddress}`);
console.log(`now running maintenance on ${bobcat.latestMinerDetails?.animal} at ${bobcat.networkAddress}`);
await plugins.smartpromise.timeoutAndContinue(bobcat.runMaintenance());
}
};