diff --git a/doc/source/conf.py b/doc/source/conf.py index 96bce69365ce..365ead270ee2 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -46,6 +46,7 @@ extensions = ['sphinx.ext.autodoc', 'ext.versioned_notifications', 'ext.feature_matrix', 'sphinxcontrib.actdiag', + 'sphinxcontrib.seqdiag', ] # openstackdocstheme options @@ -62,6 +63,9 @@ sample_policy_basename = '_static/nova' actdiag_html_image_format = 'SVG' actdiag_antialias = True +seqdiag_html_image_format = 'SVG' +seqdiag_antialias = True + todo_include_todos = True # The suffix of source filenames. diff --git a/doc/source/index.rst b/doc/source/index.rst index f2b1fb7cb4b5..77cc3886d005 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -261,6 +261,7 @@ looking parts of our architecture. These are collected below. reference/api-microversion-history.rst reference/gmr reference/i18n + reference/live-migration reference/notifications reference/policy-enforcement reference/rpc diff --git a/doc/source/reference/index.rst b/doc/source/reference/index.rst index 603fe8af1be6..3c66005e09ba 100644 --- a/doc/source/reference/index.rst +++ b/doc/source/reference/index.rst @@ -13,6 +13,7 @@ The following is a dive into some of the internals in nova. * :doc:`/reference/rpc`: How nova uses AMQP as an RPC transport * :doc:`/reference/scheduling`: The workflow through the scheduling process +* :doc:`/reference/live-migration`: The live migration flow * :doc:`/reference/services`: Module descriptions for some of the key modules used in starting / running services * :doc:`/reference/vm-states`: Cheat sheet for understanding the life cycle of diff --git a/doc/source/reference/live-migration.rst b/doc/source/reference/live-migration.rst new file mode 100644 index 000000000000..41788e472795 --- /dev/null +++ b/doc/source/reference/live-migration.rst @@ -0,0 +1,47 @@ +.. + Licensed under the Apache License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may obtain + a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + License for the specific language governing permissions and limitations + under the License. + +================ + Live Migration +================ + +.. seqdiag:: + + seqdiag { + Conductor; Source; Destination; + edge_length = 300; + span_height = 15; + activation = none; + default_note_color = white; + + Conductor -> Destination [label = "call", note = "check_can_live_migrate_destination"]; + Source <- Destination [label = "call", leftnote = "check_can_live_migrate_source"]; + Source --> Destination; + Conductor <-- Destination; + + Conductor ->> Source [label = "cast", note = "live_migrate"]; + Source -> Destination [label = "call", note = "pre_live_migration (set up dest)"]; + Source <-- Destination; + + === driver.live_migration (success) === + + Source -> Source [leftnote = "post_live_migration (clean up source)"]; + Source -> Destination [label = "call", note = "post_live_migration_at_destination (finish dest)"]; + Source <-- Destination; + + === driver.live_migration (failure) === + + Source -> Destination [label = "call", note = "remove_volume_connections"]; + Source <-- Destination; + Source ->> Destination [label = "cast", note = "rollback_live_migration_at_destination"]; + } diff --git a/test-requirements.txt b/test-requirements.txt index e0947acd66a0..ee33a6adc3c5 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -16,6 +16,7 @@ python-subunit>=0.0.18 # Apache-2.0/BSD requests-mock>=1.1.0 # Apache-2.0 sphinx>=1.6.2 # BSD sphinxcontrib-actdiag>=0.8.5 # BSD +sphinxcontrib-seqdiag>=0.8.4 # BSD os-api-ref>=1.4.0 # Apache-2.0 oslotest>=1.10.0 # Apache-2.0 os-testr>=1.0.0 # Apache-2.0