feat(xo-server/deployProxy): dont destroy on error

Fixes #4815
This commit is contained in:
Julien Fontanet 2020-02-24 17:27:54 +01:00
parent c55ed42b2b
commit 4223bdd4ad

View File

@ -150,42 +150,49 @@ export default class Proxy {
}),
{ srId }
)
$defer.onFailure.call(xapi, '_deleteVm', vm)
let date, proxyAuthenticationToken, xenstoreData
try {
date = new Date()
proxyAuthenticationToken = await generateToken()
const [
password,
proxyAuthenticationToken,
{ registrationToken, registrationEmail: email },
] = await Promise.all([
generateToken(10),
generateToken(),
app.getApplianceRegistration(),
])
const date = new Date()
const xenstoreData = {
'vm-data/system-account-xoa-password': password,
'vm-data/xo-proxy-authenticationToken': JSON.stringify(
proxyAuthenticationToken
),
'vm-data/xoa-updater-credentials': JSON.stringify({
email,
registrationToken,
}),
'vm-data/xoa-updater-channel': JSON.stringify(xoProxyConf.channel),
}
if (network !== undefined) {
xenstoreData['vm-data/ip'] = network.ip
xenstoreData['vm-data/gateway'] = network.gateway
xenstoreData['vm-data/netmask'] = network.netmask
xenstoreData['vm-data/dns'] = network.dns
}
await Promise.all([
vm.add_tags(xoProxyConf.vmTag),
vm.set_name_label(this._generateDefaultVmName(date)),
vm.update_xenstore_data(xenstoreData),
])
const [
password,
{ registrationToken, registrationEmail: email },
] = await Promise.all([generateToken(10), app.getApplianceRegistration()])
xenstoreData = {
'vm-data/system-account-xoa-password': password,
'vm-data/xo-proxy-authenticationToken': JSON.stringify(
proxyAuthenticationToken
),
'vm-data/xoa-updater-credentials': JSON.stringify({
email,
registrationToken,
}),
'vm-data/xoa-updater-channel': JSON.stringify(xoProxyConf.channel),
}
if (network !== undefined) {
xenstoreData['vm-data/ip'] = network.ip
xenstoreData['vm-data/gateway'] = network.gateway
xenstoreData['vm-data/netmask'] = network.netmask
xenstoreData['vm-data/dns'] = network.dns
}
await Promise.all([
vm.add_tags(xoProxyConf.vmTag),
vm.set_name_label(this._generateDefaultVmName(date)),
vm.update_xenstore_data(xenstoreData),
])
await xapi.startVm(vm.$id)
await xapi.startVm(vm.$id)
} catch (error) {
await xapi._deleteVm(vm)
throw error
}
const { id } = await this.registerProxy({
authenticationToken: proxyAuthenticationToken,
name: this._generateDefaultProxyName(date),
vmUuid: vm.uuid,
})
await vm.update_xenstore_data(
mapValues(omit(xenstoreData, 'vm-data/xoa-updater-channel'), _ => null)
@ -217,13 +224,6 @@ export default class Proxy {
xoaUpgradeTimeout
)
const { id } = await this.registerProxy({
authenticationToken: proxyAuthenticationToken,
name: this._generateDefaultProxyName(date),
vmUuid: vm.uuid,
})
$defer.onFailure.call(this, 'unregisterProxy', id)
await this.checkProxyHealth(id)
}