)]}'
{"doc/source/trace.rst":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"99c00816519b8acde3d789490815bd68c8f96670","unresolved":false,"context_lines":[{"line_number":35,"context_line":"more interested in the action methods themselves. These are held in:"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"* `nova/api/openstack/compute/servers.py`_"},{"line_number":38,"context_line":"* `nova/api/openstack/compute/contrib/`_"},{"line_number":39,"context_line":"* `nova/api/openstack/compute/plugins/v3/`_ (soon to be removed)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"We will find ``@wsgi.action(\u0027os-migrateLive\u0027)`` annotating ``_migrate_live`` in"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa1b9901_ba5b31f6","line":38,"updated":"2015-08-21 15:50:09.000000000","message":"it\u0027s removed","commit_id":"0059265db561244a89024ed8ea75d718aed8960e"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac7236fad9866d6a31f9e7382e8ca804af8f866a","unresolved":false,"context_lines":[{"line_number":35,"context_line":"more interested in the action methods themselves. These are held in:"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"* `nova/api/openstack/compute/servers.py`_"},{"line_number":38,"context_line":"* `nova/api/openstack/compute/contrib/`_"},{"line_number":39,"context_line":"* `nova/api/openstack/compute/plugins/v3/`_ (soon to be removed)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"We will find ``@wsgi.action(\u0027os-migrateLive\u0027)`` annotating ``_migrate_live`` in"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa1b9901_5d6c4f36","line":38,"in_reply_to":"fa1b9901_ba5b31f6","updated":"2015-08-21 16:11:16.000000000","message":"Done","commit_id":"0059265db561244a89024ed8ea75d718aed8960e"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"99c00816519b8acde3d789490815bd68c8f96670","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"* `nova/api/openstack/compute/servers.py`_"},{"line_number":38,"context_line":"* `nova/api/openstack/compute/contrib/`_"},{"line_number":39,"context_line":"* `nova/api/openstack/compute/plugins/v3/`_ (soon to be removed)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"We will find ``@wsgi.action(\u0027os-migrateLive\u0027)`` annotating ``_migrate_live`` in"},{"line_number":42,"context_line":"``contrib/admin_actions.py``. After parsing some arguments, this calls"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa1b9901_3abac10b","line":39,"updated":"2015-08-21 15:50:09.000000000","message":"it\u0027s already removed","commit_id":"0059265db561244a89024ed8ea75d718aed8960e"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac7236fad9866d6a31f9e7382e8ca804af8f866a","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"* `nova/api/openstack/compute/servers.py`_"},{"line_number":38,"context_line":"* `nova/api/openstack/compute/contrib/`_"},{"line_number":39,"context_line":"* `nova/api/openstack/compute/plugins/v3/`_ (soon to be removed)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"We will find ``@wsgi.action(\u0027os-migrateLive\u0027)`` annotating ``_migrate_live`` in"},{"line_number":42,"context_line":"``contrib/admin_actions.py``. After parsing some arguments, this calls"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa1b9901_1d76d706","line":39,"in_reply_to":"fa1b9901_3abac10b","updated":"2015-08-21 16:11:16.000000000","message":"Done","commit_id":"0059265db561244a89024ed8ea75d718aed8960e"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"99c00816519b8acde3d789490815bd68c8f96670","unresolved":false,"context_lines":[{"line_number":42,"context_line":"``contrib/admin_actions.py``. After parsing some arguments, this calls"},{"line_number":43,"context_line":"``self.compute_api.live_migrate``. Checking the ``__init__`` method of ``self``"},{"line_number":44,"context_line":"(the ``AdminActionsController``), we can see that ``self.compute_api`` is just"},{"line_number":45,"context_line":"an alias to ``nova.compute.API``."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"`nova/compute/api.py`_"},{"line_number":48,"context_line":"~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa1b9901_bab7b1f4","line":45,"updated":"2015-08-21 15:50:09.000000000","message":"I think we should say it\u0027s a instance, not an alias?","commit_id":"0059265db561244a89024ed8ea75d718aed8960e"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac7236fad9866d6a31f9e7382e8ca804af8f866a","unresolved":false,"context_lines":[{"line_number":42,"context_line":"``contrib/admin_actions.py``. After parsing some arguments, this calls"},{"line_number":43,"context_line":"``self.compute_api.live_migrate``. Checking the ``__init__`` method of ``self``"},{"line_number":44,"context_line":"(the ``AdminActionsController``), we can see that ``self.compute_api`` is just"},{"line_number":45,"context_line":"an alias to ``nova.compute.API``."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"`nova/compute/api.py`_"},{"line_number":48,"context_line":"~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa1b9901_3d739b17","line":45,"in_reply_to":"fa1b9901_bab7b1f4","updated":"2015-08-21 16:11:16.000000000","message":"Done","commit_id":"0059265db561244a89024ed8ea75d718aed8960e"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"99c00816519b8acde3d789490815bd68c8f96670","unresolved":false,"context_lines":[{"line_number":80,"context_line":"This method does some version negotiation. It\u0027s important to remember that the"},{"line_number":81,"context_line":"conductor may have been upgraded to a later version than the compute nodes, so"},{"line_number":82,"context_line":"requests which go through the conductor may have to be back-versioned. The"},{"line_number":83,"context_line":"request then disappears into: ``cctxt.call(context, \u0027migrate_server\u0027, **kw)``."},{"line_number":84,"context_line":"This is where some ``nova/rpc.py`` and ``oslo.messaging`` magic happens."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"So far, all this has been executing on the API server which received the HTTP"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa1b9901_1a76dd06","line":83,"updated":"2015-08-21 15:50:09.000000000","message":"worthy to find a cast case since it\u0027s also important for reader to understand?","commit_id":"0059265db561244a89024ed8ea75d718aed8960e"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ac7236fad9866d6a31f9e7382e8ca804af8f866a","unresolved":false,"context_lines":[{"line_number":80,"context_line":"This method does some version negotiation. It\u0027s important to remember that the"},{"line_number":81,"context_line":"conductor may have been upgraded to a later version than the compute nodes, so"},{"line_number":82,"context_line":"requests which go through the conductor may have to be back-versioned. The"},{"line_number":83,"context_line":"request then disappears into: ``cctxt.call(context, \u0027migrate_server\u0027, **kw)``."},{"line_number":84,"context_line":"This is where some ``nova/rpc.py`` and ``oslo.messaging`` magic happens."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"So far, all this has been executing on the API server which received the HTTP"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa1b9901_3df87b49","line":83,"in_reply_to":"fa1b9901_1a76dd06","updated":"2015-08-21 16:11:16.000000000","message":"Not 100% sure what you meant? I don\u0027t plan to explain the magic because 1) I don\u0027t understand it fully myself, 2) it\u0027s not really necessary to navigate the code. You can rely on the rpcapi.py -\u003e manager.py convention. This is why I emphasise it on lines 100-102 - maybe I could do that more strongly?","commit_id":"0059265db561244a89024ed8ea75d718aed8960e"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"78345ff01e655f7845d432660e1bf7724b5f3691","unresolved":false,"context_lines":[{"line_number":80,"context_line":"This method does some version negotiation. It\u0027s important to remember that the"},{"line_number":81,"context_line":"conductor may have been upgraded to a later version than the compute nodes, so"},{"line_number":82,"context_line":"requests which go through the conductor may have to be back-versioned. The"},{"line_number":83,"context_line":"request then disappears into: ``cctxt.call(context, \u0027migrate_server\u0027, **kw)``."},{"line_number":84,"context_line":"This is where some ``nova/rpc.py`` and ``oslo.messaging`` magic happens."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"So far, all this has been executing on the API server which received the HTTP"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa1b9901_e07256b0","line":83,"in_reply_to":"fa1b9901_3df87b49","updated":"2015-08-21 16:15:27.000000000","message":"make sense to me , I agree , it\u0027s not the doc to talk about call/cast thing, thanks~","commit_id":"0059265db561244a89024ed8ea75d718aed8960e"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"99c00816519b8acde3d789490815bd68c8f96670","unresolved":false,"context_lines":[{"line_number":117,"context_line":"Remembering the task was constructed by the"},{"line_number":118,"context_line":"``nova.conductor.manager.ComputeTaskManager``, we can trace through to that"},{"line_number":119,"context_line":"classes ``__init__`` where ``self.compute_rpcapi`` is set to"},{"line_number":120,"context_line":"``nova.compute.rpcapi.ComputeAPI``. "},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Thankfully we do find the ``live_migration`` method we\u0027re looking for on that"},{"line_number":123,"context_line":"class. Again, this disappears into RPC, to emerge on the compute node."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa1b9901_3ad721ef","line":120,"updated":"2015-08-21 15:50:09.000000000","message":"blank","commit_id":"0059265db561244a89024ed8ea75d718aed8960e"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"99c00816519b8acde3d789490815bd68c8f96670","unresolved":false,"context_lines":[{"line_number":197,"context_line":".. _nova/api/openstack/compute/servers.py:"},{"line_number":198,"context_line":"  https://github.com/openstack/nova/tree/master/nova/api/openstack/compute/servers.py"},{"line_number":199,"context_line":".. _nova/api/openstack/compute/contrib/:"},{"line_number":200,"context_line":"  https://github.com/openstack/nova/tree/master/nova/api/openstack/compute/contrib/"},{"line_number":201,"context_line":".. _nova/api/openstack/compute/plugins/v3/:"},{"line_number":202,"context_line":"  https://github.com/openstack/nova/tree/master/nova/api/openstack/compute/plugins/v3/"},{"line_number":203,"context_line":".. _nova/compute/__init__.py:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa1b9901_ba5d717b","line":200,"updated":"2015-08-21 15:50:09.000000000","message":"ditto","commit_id":"0059265db561244a89024ed8ea75d718aed8960e"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"99c00816519b8acde3d789490815bd68c8f96670","unresolved":false,"context_lines":[{"line_number":199,"context_line":".. _nova/api/openstack/compute/contrib/:"},{"line_number":200,"context_line":"  https://github.com/openstack/nova/tree/master/nova/api/openstack/compute/contrib/"},{"line_number":201,"context_line":".. _nova/api/openstack/compute/plugins/v3/:"},{"line_number":202,"context_line":"  https://github.com/openstack/nova/tree/master/nova/api/openstack/compute/plugins/v3/"},{"line_number":203,"context_line":".. _nova/compute/__init__.py:"},{"line_number":204,"context_line":"  https://github.com/openstack/nova/tree/master/nova/compute/__init__.py"},{"line_number":205,"context_line":".. _nova/compute/api.py:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa1b9901_fa63e93f","line":202,"updated":"2015-08-21 15:50:09.000000000","message":"ditto","commit_id":"0059265db561244a89024ed8ea75d718aed8960e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"65fbf277ccffd3ea5a306d2591cd98447a4428e0","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"When one first starts to look at the Nova code, it can be hard to see how the"},{"line_number":21,"context_line":"parts communicate. This document presents a vertical trace through a live"},{"line_number":22,"context_line":"migration request to help developers navigate the Nova codebase."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"API node"}],"source_content_type":"text/x-rst","patch_set":5,"id":"fa1b9901_20da8e18","line":22,"updated":"2015-08-21 16:28:53.000000000","message":"Since live migrations are hacky re: http://specs.openstack.org/openstack/nova-specs/specs/liberty/approved/check-destination-on-migrations.html I\u0027m not that sure that live-migration is the best workflow to document since it has many corner cases to document and needs to explain a bit more than what\u0027s needed.\n\nThat said, I don\u0027t want to particularly -1 that whole very well documented draft, I just wonder if you could give the precise API sample corresponding to the request body so that it would give the hypothesis that you made.","commit_id":"8e360ed268ebdefb5fe335b69b456eddace4f568"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"e5ad74aead23cf938a3b697df8d22f840d737cb3","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"When one first starts to look at the Nova code, it can be hard to see how the"},{"line_number":21,"context_line":"parts communicate. This document presents a vertical trace through a live"},{"line_number":22,"context_line":"migration request to help developers navigate the Nova codebase."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"API node"}],"source_content_type":"text/x-rst","patch_set":5,"id":"fa1b9901_ef817a90","line":22,"in_reply_to":"fa1b9901_20da8e18","updated":"2015-08-25 08:05:57.000000000","message":"You hit exactly why I chose live migrations, I\u0027m working on that spec and needed to learn the code path. I\u0027m reluctant to rewrite for another path since that\u0027s less useful to me.\n\nI don\u0027t quite understand your second point. Do you want me to show a sample REST request which hits the os-migrateLive action? I\u0027d be concerned about obscuring the trace with superfluous info about parameters and flags. I already give the exact API entrypoint on lines 40-41.","commit_id":"8e360ed268ebdefb5fe335b69b456eddace4f568"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c05090b4511fecb334aebb5c8c09b63c2485c2f8","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"When one first starts to look at the Nova code, it can be hard to see how the"},{"line_number":21,"context_line":"parts communicate. This document presents a vertical trace through a live"},{"line_number":22,"context_line":"migration request to help developers navigate the Nova codebase."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"API node"}],"source_content_type":"text/x-rst","patch_set":5,"id":"fa1b9901_50327411","line":22,"in_reply_to":"fa1b9901_ef817a90","updated":"2015-08-25 14:29:02.000000000","message":"I thought that for reproducing the behaviour, a specific JSON sample of the request body would help the reader to make sure he follows the right if conditionals.","commit_id":"8e360ed268ebdefb5fe335b69b456eddace4f568"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"65fbf277ccffd3ea5a306d2591cd98447a4428e0","unresolved":false,"context_lines":[{"line_number":116,"context_line":"Remembering the task was constructed by the"},{"line_number":117,"context_line":"``nova.conductor.manager.ComputeTaskManager``, we can trace through to that"},{"line_number":118,"context_line":"classes ``__init__`` where ``self.compute_rpcapi`` is set to"},{"line_number":119,"context_line":"``nova.compute.rpcapi.ComputeAPI``."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Thankfully we do find the ``live_migration`` method we\u0027re looking for on that"},{"line_number":122,"context_line":"class. Again, this disappears into RPC, to emerge on the compute node."}],"source_content_type":"text/x-rst","patch_set":5,"id":"fa1b9901_a00a1e78","line":119,"updated":"2015-08-21 16:28:53.000000000","message":"There is a specific case where if the live-migration host field is None, then it calls the scheduler. I think it would definitely be worth documenting that since scheduler is still a big piece of code involved in most of the placement requests.","commit_id":"8e360ed268ebdefb5fe335b69b456eddace4f568"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"e5ad74aead23cf938a3b697df8d22f840d737cb3","unresolved":false,"context_lines":[{"line_number":116,"context_line":"Remembering the task was constructed by the"},{"line_number":117,"context_line":"``nova.conductor.manager.ComputeTaskManager``, we can trace through to that"},{"line_number":118,"context_line":"classes ``__init__`` where ``self.compute_rpcapi`` is set to"},{"line_number":119,"context_line":"``nova.compute.rpcapi.ComputeAPI``."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Thankfully we do find the ``live_migration`` method we\u0027re looking for on that"},{"line_number":122,"context_line":"class. Again, this disappears into RPC, to emerge on the compute node."}],"source_content_type":"text/x-rst","patch_set":5,"id":"fa1b9901_2a69a0be","line":119,"in_reply_to":"fa1b9901_a00a1e78","updated":"2015-08-25 08:05:57.000000000","message":"Sure thing.","commit_id":"8e360ed268ebdefb5fe335b69b456eddace4f568"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"407fbbdafe074805676867d7d55937736f351915","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"When one first starts to look at the Nova code, it can be hard to see how the"},{"line_number":21,"context_line":"parts communicate. This document presents a vertical trace through a live"},{"line_number":22,"context_line":"migration request to help developers navigate the Nova codebase."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"API node"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa1b9901_701e9871","line":22,"updated":"2015-08-25 14:28:56.000000000","message":"Same comment as for PS5, I feel here that giving an example request body and a response (like we do for API samples) could help the reader to get that.","commit_id":"798154a22fcbc767b9e6924d904d9612aa440aee"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"60c662bf35ac6dfc82dfee233c153b7aaa2804fb","unresolved":false,"context_lines":[{"line_number":21,"context_line":"parts communicate. This document presents a vertical trace through a live"},{"line_number":22,"context_line":"migration request to help developers navigate the Nova codebase."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"API node"},{"line_number":26,"context_line":"--------"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa1b9901_84ef6a1d","line":24,"updated":"2015-08-25 15:16:22.000000000","message":"So, thinking about that, I just wonder that if instead of long-text, we shouldn\u0027t do that way :\nhttp://bodenr.blogspot.fr/2014/03/openstack-nova-boot-server-call-diagram.html\n\nThat sounds more maintainable to me and we can provide as many workflows as we want by copying the original pattern and adapting it. Now, the big stuff is : find a good way for rendering that in Sphinx using RST or markdown syntax","commit_id":"798154a22fcbc767b9e6924d904d9612aa440aee"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"407fbbdafe074805676867d7d55937736f351915","unresolved":false,"context_lines":[{"line_number":224,"context_line":"  https://github.com/openstack/nova/tree/master/nova/virt/libvirt/driver.py"},{"line_number":225,"context_line":".. _nova.conductor.rpcapi.ComputeTaskAPI:"},{"line_number":226,"context_line":"  https://github.com/openstack/nova/blob/master/nova/conductor/rpcapi.py#L256"},{"line_number":227,"context_line":".. _migrate_server:"},{"line_number":228,"context_line":"  https://github.com/openstack/nova/blob/master/nova/conductor/manager.py#L515"},{"line_number":229,"context_line":".. _self._live_migrate:"},{"line_number":230,"context_line":"  https://github.com/openstack/nova/blob/master/nova/conductor/manager.py#L594"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa1b9901_d3420e3e","line":227,"updated":"2015-08-25 14:28:56.000000000","message":"all your nice links won\u0027t be good by the next change. Here, either you provide a SHA1 commit for each, or you just explain the module, class and method related.","commit_id":"798154a22fcbc767b9e6924d904d9612aa440aee"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"bdd4398a52b7b1162c34bc0dd0d53f1e81f13326","unresolved":false,"context_lines":[{"line_number":32,"context_line":"request to help developers navigate the Nova codebase."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"**WARNING**: this was written during Liberty and the specifics may become out"},{"line_number":35,"context_line":"of date over time."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"API node"}],"source_content_type":"text/x-rst","patch_set":7,"id":"da20952f_472fb63e","line":35,"updated":"2015-09-01 04:14:17.000000000","message":"Like as a result of the mega API rewrite patch :( Which seems to be half complete in the SHA you\u0027re linking to.\n\nAlso I think you may want to be explicit in that you\u0027re only documenting the v2.1 API and ignore all the v2.0 code paths.","commit_id":"285eb4ad2ecdd9adc17abbfec231cddfcc813c6a"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"bdd4398a52b7b1162c34bc0dd0d53f1e81f13326","unresolved":false,"context_lines":[{"line_number":54,"context_line":"``contrib/admin_actions.py``. After parsing some arguments, this calls"},{"line_number":55,"context_line":"``self.compute_api.live_migrate``. Checking the ``__init__`` method of ``self``"},{"line_number":56,"context_line":"(the ``AdminActionsController``), we can see that ``self.compute_api`` is an"},{"line_number":57,"context_line":"instance of ``nova.compute.API``."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"`nova/compute/api.py`_"},{"line_number":60,"context_line":"~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":7,"id":"da20952f_27df223b","line":57,"updated":"2015-09-01 04:14:17.000000000","message":"So as noted above all the file paths have changed.\n\nI also think it\u0027d be helpful to link to the code rather as well as the textual description, but that might get \"bigger then Ben Hur\"\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/api/openstack/compute/migrate_server.py?id\u003dbd3b5a62b468c1f35895a73fb3a7da85c01321da#n63\n\n(git.openstack.org is preferred, unless you need to highlight a range of lines)","commit_id":"285eb4ad2ecdd9adc17abbfec231cddfcc813c6a"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"bdd4398a52b7b1162c34bc0dd0d53f1e81f13326","unresolved":false,"context_lines":[{"line_number":65,"context_line":"either ``nova.compute.api.API`` (in the normal case) or"},{"line_number":66,"context_line":"``nova.compute.cells_api.ComputeCellsAPI`` (if this node is configured as a"},{"line_number":67,"context_line":"Cells API node). Let\u0027s ignore Cells for now and look for the ``live_migrate``"},{"line_number":68,"context_line":"method we wanted on ``nova.compute.api.API``."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"This is easily found in `nova/compute/api.py`_. It calls"},{"line_number":71,"context_line":"``self.compute_task_api.live_migrate_instance``. ``self.compute_task_api`` is a"}],"source_content_type":"text/x-rst","patch_set":7,"id":"da20952f_07d0dec7","line":68,"updated":"2015-09-01 04:14:17.000000000","message":"I understand what you\u0027re saying here but I find this a little hard to parse. \n\nWhile you\u0027re saying \"we only document v2.1 here\" you could also say \"and we only document the non-Cells case\"  Although we shoudl be a cell(v2) of one by the end of Liberty so perhaps it\u0027s time to embrace it :)","commit_id":"285eb4ad2ecdd9adc17abbfec231cddfcc813c6a"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"bdd4398a52b7b1162c34bc0dd0d53f1e81f13326","unresolved":false,"context_lines":[{"line_number":79,"context_line":"``nova.conductor.ComputeTaskAPI`` proxies calls to either"},{"line_number":80,"context_line":"``nova.conductor.api.LocalComputeTaskAPI`` or"},{"line_number":81,"context_line":"``nova.conductor.api.ComputeTaskAPI`` depending on whether configuration"},{"line_number":82,"context_line":"parameter ``[conductor] use_local`` is set. Let\u0027s look at the RPC case first."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Remembering we called ``live_migrate_instance`` back in"},{"line_number":85,"context_line":"`nova/compute/api.py`_, we find that method on the ``ComputeTaskAPI`` class."}],"source_content_type":"text/x-rst","patch_set":7,"id":"da20952f_679bda18","line":82,"updated":"2015-09-01 04:14:17.000000000","message":"Please expand on this.  which of the 2 api classes above is \u0027RPC\u0027?","commit_id":"285eb4ad2ecdd9adc17abbfec231cddfcc813c6a"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"bdd4398a52b7b1162c34bc0dd0d53f1e81f13326","unresolved":false,"context_lines":[{"line_number":170,"context_line":"specific, so let\u0027s wrap up there and revisit Cells."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"Cells v1"},{"line_number":174,"context_line":"--------"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"When we were looking at the API node, we bypassed Cells. Let\u0027s return to that"}],"source_content_type":"text/x-rst","patch_set":7,"id":"da20952f_a7525233","line":173,"updated":"2015-09-01 04:14:17.000000000","message":"I\u0027m not convinced that documenting Cells v1 is worthwhile.","commit_id":"285eb4ad2ecdd9adc17abbfec231cddfcc813c6a"}]}
