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); | ||||||
|  | 
 | ||||||
|  |         // reset apiVersion
 | ||||||
|  |         httpClient.setApiVersion(startApiVersion); | ||||||
|  | 
 | ||||||
|         return versionInfo; |         return versionInfo; | ||||||
|     } catch (e) {} |       } | ||||||
|  |     } 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); | ||||||
|     } catch (e) {} |  | ||||||
| 
 | 
 | ||||||
|         // reset apiVersion
 |         // reset apiVersion
 | ||||||
|         httpClient.setApiVersion(startApiVersion); |         httpClient.setApiVersion(startApiVersion); | ||||||
| 
 | 
 | ||||||
|     await this.setVersionInfoCache(versionInfo); |  | ||||||
|         return 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; | module.exports.FreeNASDriver = FreeNASDriver; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue