Merge "Add ability to failback for replication V2.1"

This commit is contained in:
Jenkins 2016-03-01 12:44:44 +00:00 committed by Gerrit Code Review
commit db2b57aed5
2 changed files with 16 additions and 7 deletions

View File

@ -1593,9 +1593,10 @@ class API(base.Base):
ctxt = context.get_admin_context()
svc_host = volume_utils.extract_host(host, 'backend')
service = objects.Service.get_by_host_and_topic(
service = objects.Service.get_by_args(
ctxt, svc_host, CONF.volume_topic)
expected = {'replication_status': fields.ReplicationStatus.ENABLED}
expected = {'replication_status': [fields.ReplicationStatus.ENABLED,
fields.ReplicationStatus.FAILED_OVER]}
result = service.conditional_update(
{'replication_status': fields.ReplicationStatus.FAILING_OVER},
expected)

View File

@ -3296,11 +3296,19 @@ class VolumeManager(manager.SchedulerDependentManager):
secondary_backend_id})
return None
service.replication_status = fields.ReplicationStatus.FAILED_OVER
service.active_backend_id = active_backend_id
service.disabled = True
service.disabled_reason = "failed-over"
service.save()
if secondary_backend_id == "default":
service.replication_status = fields.ReplicationStatus.ENABLED
service.active_backend_id = ""
service.disabled = False
service.disabled_reason = ""
service.save()
else:
service.replication_status = fields.ReplicationStatus.FAILED_OVER
service.active_backend_id = active_backend_id
service.disabled = True
service.disabled_reason = "failed-over"
service.save()
for update in volume_update_list:
# Response must include an id key: {volume_id: <cinder-uuid>}