Registry: provide response body on auth token request failure (#51)

* Registry: provide response body on auth token request failure

* Clone.swift: fix typo
This commit is contained in:
Nikolay Edigaryev 2022-05-06 21:19:27 +03:00 committed by GitHub
parent f20a98bf01
commit 4a60c41dd3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 6 deletions

View File

@ -19,12 +19,12 @@ struct Clone: AsyncParsableCommand {
let registry = try Registry(host: remoteName.host, namespace: remoteName.namespace)
try await VMStorageOCI().pull(remoteName, registry: registry)
}
let removeVM = try VMStorageHelper.open(sourceName)
let remoteVM = try VMStorageHelper.open(sourceName)
let removeConfig = try VMConfig.init(fromURL: removeVM.configURL)
let needToGenerateNewMAC = try localVMExistsWith(macAddress: removeConfig.macAddress.string)
let remoteConfig = try VMConfig.init(fromURL: remoteVM.configURL)
let needToGenerateNewMAC = try localVMExistsWith(macAddress: remoteConfig.macAddress.string)
try removeVM.clone(to: VMStorageLocal().create(newName), generateMAC: needToGenerateNewMAC)
try remoteVM.clone(to: VMStorageLocal().create(newName), generateMAC: needToGenerateNewMAC)
} else {
try VMStorageHelper.open(sourceName).clone(to: VMStorageLocal().create(newName), generateMAC: true)
}

View File

@ -3,7 +3,7 @@ import Foundation
enum RegistryError: Error {
case UnexpectedHTTPStatusCode(when: String, code: Int, details: String = "")
case MissingLocationHeader
case AuthFailed(why: String)
case AuthFailed(why: String, details: String = "")
case MalformedHeader(why: String)
}
@ -202,7 +202,7 @@ class Registry {
let (responseData, response) = try await rawRequest("GET", authenticateURL, headers: headers)
if response.statusCode != 200 {
throw RegistryError.AuthFailed(why: "received unexpected HTTP status code \(response.statusCode) "
+ "while retrieving an authentication token")
+ "while retrieving an authentication token", details: String(decoding: responseData, as: UTF8.self))
}
token = try JSONDecoder().decode(TokenResponse.self, from: responseData).token