better errors around versionInfo checks for FreeNAS
This commit is contained in:
parent
d4ab4fa4fe
commit
1fac9067f3
|
|
@ -3,6 +3,7 @@ const { GrpcError, grpc } = require("../../utils/grpc");
|
||||||
const HttpClient = require("./http").Client;
|
const HttpClient = require("./http").Client;
|
||||||
|
|
||||||
const Handlebars = require("handlebars");
|
const Handlebars = require("handlebars");
|
||||||
|
const { version } = require("uuid");
|
||||||
|
|
||||||
// freenas properties
|
// freenas properties
|
||||||
const FREENAS_NFS_SHARE_PROPERTY_NAME = "democratic-csi:freenas_nfs_share_id";
|
const FREENAS_NFS_SHARE_PROPERTY_NAME = "democratic-csi:freenas_nfs_share_id";
|
||||||
|
|
@ -1776,6 +1777,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 +1788,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 +1811,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