commit
						e72b4b6ebf
					
				|  | @ -1776,6 +1776,8 @@ class FreeNASDriver extends ControllerZfsSshBaseDriver { | |||
|     let response; | ||||
|     const startApiVersion = httpClient.getApiVersion(); | ||||
|     const versionInfo = {}; | ||||
|     const versionErrors = {}; | ||||
|     const versionResponses = {}; | ||||
| 
 | ||||
|     httpClient.setApiVersion(2); | ||||
|     /** | ||||
|  | @ -1785,14 +1787,21 @@ class FreeNASDriver extends ControllerZfsSshBaseDriver { | |||
|      */ | ||||
|     try { | ||||
|       response = await httpClient.get(endpoint); | ||||
|       versionResponses.v2 = response; | ||||
|       if (response.statusCode == 200) { | ||||
|         versionInfo.v2 = response.body; | ||||
|       } | ||||
| 
 | ||||
|         // return immediately to save on resources and silly requests
 | ||||
|         await this.setVersionInfoCache(versionInfo); | ||||
| 
 | ||||
|         // reset apiVersion
 | ||||
|         httpClient.setApiVersion(startApiVersion); | ||||
| 
 | ||||
|         return versionInfo; | ||||
|     } catch (e) {} | ||||
|       } | ||||
|     } catch (e) { | ||||
|       versionErrors.v2 = e; | ||||
|     } | ||||
| 
 | ||||
|     httpClient.setApiVersion(1); | ||||
|     /** | ||||
|  | @ -1801,17 +1810,39 @@ class FreeNASDriver extends ControllerZfsSshBaseDriver { | |||
|      */ | ||||
|     try { | ||||
|       response = await httpClient.get(endpoint); | ||||
|       if (response.statusCode == 200) { | ||||
|       versionResponses.v1 = response; | ||||
|       if (response.statusCode == 200 && IsJsonString(response.body)) { | ||||
|         versionInfo.v1 = response.body; | ||||
|       } | ||||
|     } catch (e) {} | ||||
|         await this.setVersionInfoCache(versionInfo); | ||||
| 
 | ||||
|         // reset apiVersion
 | ||||
|         httpClient.setApiVersion(startApiVersion); | ||||
| 
 | ||||
|     await this.setVersionInfoCache(versionInfo); | ||||
|         return versionInfo; | ||||
|       } | ||||
|     } catch (e) { | ||||
|       versionErrors.v1 = e; | ||||
|     } | ||||
| 
 | ||||
|     // throw error if cannot get v1 or v2 data
 | ||||
|     // likely bad creds/url
 | ||||
|     throw new GrpcError( | ||||
|       grpc.status.UNKNOWN, | ||||
|       `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; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue