commit
e72b4b6ebf
|
|
@ -1776,6 +1776,8 @@ class FreeNASDriver extends ControllerZfsSshBaseDriver {
|
||||||
let response;
|
let response;
|
||||||
const startApiVersion = httpClient.getApiVersion();
|
const startApiVersion = httpClient.getApiVersion();
|
||||||
const versionInfo = {};
|
const versionInfo = {};
|
||||||
|
const versionErrors = {};
|
||||||
|
const versionResponses = {};
|
||||||
|
|
||||||
httpClient.setApiVersion(2);
|
httpClient.setApiVersion(2);
|
||||||
/**
|
/**
|
||||||
|
|
@ -1785,14 +1787,21 @@ class FreeNASDriver extends ControllerZfsSshBaseDriver {
|
||||||
*/
|
*/
|
||||||
try {
|
try {
|
||||||
response = await httpClient.get(endpoint);
|
response = await httpClient.get(endpoint);
|
||||||
|
versionResponses.v2 = response;
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
versionInfo.v2 = response.body;
|
versionInfo.v2 = response.body;
|
||||||
}
|
|
||||||
|
|
||||||
// return immediately to save on resources and silly requests
|
// return immediately to save on resources and silly requests
|
||||||
await this.setVersionInfoCache(versionInfo);
|
await this.setVersionInfoCache(versionInfo);
|
||||||
return versionInfo;
|
|
||||||
} catch (e) {}
|
// reset apiVersion
|
||||||
|
httpClient.setApiVersion(startApiVersion);
|
||||||
|
|
||||||
|
return versionInfo;
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
versionErrors.v2 = e;
|
||||||
|
}
|
||||||
|
|
||||||
httpClient.setApiVersion(1);
|
httpClient.setApiVersion(1);
|
||||||
/**
|
/**
|
||||||
|
|
@ -1801,17 +1810,39 @@ class FreeNASDriver extends ControllerZfsSshBaseDriver {
|
||||||
*/
|
*/
|
||||||
try {
|
try {
|
||||||
response = await httpClient.get(endpoint);
|
response = await httpClient.get(endpoint);
|
||||||
if (response.statusCode == 200) {
|
versionResponses.v1 = response;
|
||||||
|
if (response.statusCode == 200 && IsJsonString(response.body)) {
|
||||||
versionInfo.v1 = response.body;
|
versionInfo.v1 = response.body;
|
||||||
|
await this.setVersionInfoCache(versionInfo);
|
||||||
|
|
||||||
|
// reset apiVersion
|
||||||
|
httpClient.setApiVersion(startApiVersion);
|
||||||
|
|
||||||
|
return versionInfo;
|
||||||
}
|
}
|
||||||
} catch (e) {}
|
} catch (e) {
|
||||||
|
versionErrors.v1 = e;
|
||||||
|
}
|
||||||
|
|
||||||
// reset apiVersion
|
// throw error if cannot get v1 or v2 data
|
||||||
httpClient.setApiVersion(startApiVersion);
|
// likely bad creds/url
|
||||||
|
throw new GrpcError(
|
||||||
await this.setVersionInfoCache(versionInfo);
|
grpc.status.UNKNOWN,
|
||||||
return versionInfo;
|
`FreeNAS error getting system version info: ${JSON.stringify({
|
||||||
|
errors: versionErrors,
|
||||||
|
responses: versionResponses,
|
||||||
|
})}`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function IsJsonString(str) {
|
||||||
|
try {
|
||||||
|
JSON.parse(str);
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
module.exports.FreeNASDriver = FreeNASDriver;
|
module.exports.FreeNASDriver = FreeNASDriver;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue