Merge pull request #230 from vatesfr/pierre-vm-migration-details

Fix intra-pool migration on different SRs
This commit is contained in:
Julien Fontanet 2016-02-04 17:30:14 +01:00
commit bf6bd7cbdc
2 changed files with 18 additions and 19 deletions

View File

@ -198,30 +198,27 @@ migrate = $coroutine ({
mapVifsNetworks,
migrationNetwork
}) ->
permissions = []
if mapVdisSrs
mapVdisSrsXapi = {}
forEach mapVdisSrs, (srId, vdiId) =>
vdiXapiId = @getObject(vdiId, 'VDI')._xapiId
mapVdisSrsXapi[vdiXapiId] = @getObject(srId, 'SR')._xapiId
permissions.push([
srId,
'administrate'
])
if mapVifsNetworks
mapVifsNetworksXapi = {}
forEach mapVifsNetworks, (networkId, vifId) =>
vifXapiId = @getObject(vifId, 'VIF')._xapiId
mapVifsNetworksXapi[vifXapiId] = @getObject(networkId, 'network')._xapiId
permissions = []
for vif, network of mapVifsNetworks
permissions.push([
network,
'administrate'
])
for vdi, sr of mapVdisSrs
permissions.push([
sr,
'administrate'
])
permissions.push([
networkId,
'administrate'
])
unless yield @hasPermissions(@session.get('user_id'), permissions)
throw new Unauthorized()

View File

@ -1531,12 +1531,14 @@ export default class Xapi extends XapiBase {
}
// VIFs/Networks mapping
const vifsMap = {}
const defaultNetworkRef = find(host.$PIFs, pif => pif.management).$network.$ref
for (const vif of vm.$VIFs) {
vifsMap[vif.$ref] = mapVifsNetworks && mapVifsNetworks[vif.$id]
? hostXapi.getObject(mapVifsNetworks[vif.$id]).$ref
: defaultNetworkRef
let vifsMap = {}
if (vm.$pool !== host.$pool) {
const defaultNetworkRef = find(host.$PIFs, pif => pif.management).$network.$ref
for (const vif of vm.$VIFs) {
vifsMap[vif.$ref] = mapVifsNetworks && mapVifsNetworks[vif.$id]
? hostXapi.getObject(mapVifsNetworks[vif.$id]).$ref
: defaultNetworkRef
}
}
const token = await hostXapi.call(