]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commit
Replication v2.1 (Cheesecake)
authorJohn Griffith <john.griffith8@gmail.com>
Wed, 3 Feb 2016 16:11:58 +0000 (16:11 +0000)
committerJohn Griffith <john.griffith8@gmail.com>
Fri, 26 Feb 2016 20:15:19 +0000 (13:15 -0700)
commit106c14a84be6193e9c067068e3c3e35665ad49fd
treee1cf9cb5456a1e03e250b0da4036fc5e8be213c5
parent0f5e61bf6ed143bc2b2ea83081c9bc7861548b00
Replication v2.1 (Cheesecake)

This focuses the replication work on a specific use case,
and eliminates some of the ambiguity in earlier versions.

Additionally this implementation addresses needs for
devices that do replication based on the whole backend-device
or on Pools.

Use case:
  DR scenario, where a storage device is rendered inoperable.
  This implementation allows the preservation of user data
  for those volumes that are of type replication-enabled.

  The goal is NOT to make failures completely transparent
  but instead to preserve data access while an Admin tries
  to rebuild/recover his/her cloud.

It's very important to note that we're no longer interested in
dealing with replication in Cinder at a Volume level.  The concept
of have "some" volumes failover, and "others" left behind, proved
to not only be overly complex and difficult to implement, but we
never identified a concrete use-case where one would use failover
in a scenario where some volumes would stay and be accessible on
a primary but other may be moved and accessed via a secondary.

In this model, it's host/backend based.  So when you failover,
you're failing over an entire backend.  We heavily leverage
existing resources, specifically services, and capabilities.

Implements: blueprint replication-update

Change-Id: If862bcd18515098639f94a8294a8e44e1358c52a
27 files changed:
cinder/api/contrib/admin_actions.py
cinder/api/contrib/capabilities.py
cinder/api/contrib/services.py
cinder/api/contrib/volume_replication.py [deleted file]
cinder/api/views/capabilities.py
cinder/db/sqlalchemy/migrate_repo/versions/065_add_replication_info_to_service.py [new file with mode: 0644]
cinder/db/sqlalchemy/models.py
cinder/exception.py
cinder/objects/base.py
cinder/objects/fields.py
cinder/objects/service.py
cinder/tests/unit/api/contrib/test_capabilities.py
cinder/tests/unit/api/contrib/test_services.py
cinder/tests/unit/api/contrib/test_volume_replication.py [deleted file]
cinder/tests/unit/objects/test_objects.py
cinder/tests/unit/test_migrations.py
cinder/tests/unit/test_replication.py [deleted file]
cinder/tests/unit/test_volume.py
cinder/tests/unit/test_volume_utils.py
cinder/utils.py
cinder/volume/api.py
cinder/volume/driver.py
cinder/volume/drivers/dell/dell_storagecenter_common.py
cinder/volume/drivers/solidfire.py
cinder/volume/manager.py
cinder/volume/rpcapi.py
doc/source/devref/replication.rst