diff --git a/ccserver/election.py b/ccserver/election.py index c41dd31eda275c35652e9ddb2719237d7fb2bb44..a04470dcae2848f4498da27c042701ffe86c30a2 100644 --- a/ccserver/election.py +++ b/ccserver/election.py @@ -9,7 +9,8 @@ from __future__ import absolute_import from copy import copy -from ccserver.exceptions import UnknownElectionAlgo, UnknownElectionType +from ccserver.exceptions import (UnknownElectionAlgo, UnknownElectionType, + ElectionError) def tags(*args): ''' @@ -126,10 +127,8 @@ class Elector(object): hv_alloc = {} for vm, hvs in candidates: if not hvs: - migration_plan.append({'sid': vm['id'], - 'did': '', - 'error': 'no destination hv found', - 'type': 'error'}) + raise ElectionError('No destination found for %r vm' % vm['id']) + else: # Try to take an hypervisor that is not already in the plan: for hv in hvs: diff --git a/ccserver/exceptions.py b/ccserver/exceptions.py index 3836ef85f756513842558d40d8bc89432fb7e287..55827f8311e31a523271d38f85b7c0542479666b 100644 --- a/ccserver/exceptions.py +++ b/ccserver/exceptions.py @@ -56,3 +56,7 @@ class UnknownMigrationType(Exception): class UnknownObjectError(Exception): pass + + +class ElectionError(Exception): + pass diff --git a/ccserver/handlers.py b/ccserver/handlers.py index 8e9822905f71dd50c3244130078036ee51bebed0..f2911be3604b709c10ba52d5b8d63ade2ce1145d 100644 --- a/ccserver/handlers.py +++ b/ccserver/handlers.py @@ -709,6 +709,7 @@ class CliHandler(OnlineCCHandler): else: errmsg = '%r unknown migration type' % migration['type'] errs.error(migration['sid'], errmsg) + continue # Construct the migration properties: migration_properties = {