)]}'
{"specs/liberty/approved/migration-fix-resource-tracking.rst":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6d4170e2e8726e87c0d25fd7cee407170e612f5f","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"* Migrate/resize"},{"line_number":25,"context_line":"* Live migrate"},{"line_number":26,"context_line":"* Rebuild"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"There are 2 problems"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_ca73a5e6","line":26,"updated":"2015-06-19 16:18:20.000000000","message":"Might want to say /Evacuate here just because evacuate is such the hotness these days.","commit_id":"812c658415bc10a4f803988a80a6d4334f04fe1f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6d4170e2e8726e87c0d25fd7cee407170e612f5f","unresolved":false,"context_lines":[{"line_number":62,"context_line":"and store the claimed resources there to be used for tracking migration"},{"line_number":63,"context_line":"resources. Part of this work will mean also changing the resource tracker to"},{"line_number":64,"context_line":"consider these when doing resource tracking. Initially it will only contain the"},{"line_number":65,"context_line":"\u0027new\u0027 NUMA topology."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Second step is to make evacuate and live-migrate code paths do claims before"},{"line_number":68,"context_line":"starting the work (and also abort claims on failure). This is really bug-fixing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_2525a2ad","line":65,"updated":"2015-06-19 16:18:20.000000000","message":"So the resource tracker will just need to linearly examine the resources in the migration context for each instance?","commit_id":"812c658415bc10a4f803988a80a6d4334f04fe1f"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"8095346b311ae246c543045f6729cb58db8d3851","unresolved":false,"context_lines":[{"line_number":62,"context_line":"and store the claimed resources there to be used for tracking migration"},{"line_number":63,"context_line":"resources. Part of this work will mean also changing the resource tracker to"},{"line_number":64,"context_line":"consider these when doing resource tracking. Initially it will only contain the"},{"line_number":65,"context_line":"\u0027new\u0027 NUMA topology."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Second step is to make evacuate and live-migrate code paths do claims before"},{"line_number":68,"context_line":"starting the work (and also abort claims on failure). This is really bug-fixing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_3a13800f","line":65,"in_reply_to":"fa32b979_2525a2ad","updated":"2015-06-19 17:05:59.000000000","message":"Well we grab all migrations - see:\n\nhttps://github.com/openstack/nova/blob/master/nova/compute/resource_tracker.py#L470-L473\n\nSo the instance may not be on the host (yet) but we need to consider the migration record for it.","commit_id":"812c658415bc10a4f803988a80a6d4334f04fe1f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6d4170e2e8726e87c0d25fd7cee407170e612f5f","unresolved":false,"context_lines":[{"line_number":67,"context_line":"Second step is to make evacuate and live-migrate code paths do claims before"},{"line_number":68,"context_line":"starting the work (and also abort claims on failure). This is really bug-fixing"},{"line_number":69,"context_line":"work. It will also move creating migration entries proposed by [2]_ to happen"},{"line_number":70,"context_line":"as part of the claim."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Alternatives"},{"line_number":73,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_257362b6","line":70,"updated":"2015-06-19 16:18:20.000000000","message":"This seems like less work and more bugfixy. Why not do this first and then move onto the more strange resources (i.e. NUMA and PCI, etc)?","commit_id":"812c658415bc10a4f803988a80a6d4334f04fe1f"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"8095346b311ae246c543045f6729cb58db8d3851","unresolved":false,"context_lines":[{"line_number":67,"context_line":"Second step is to make evacuate and live-migrate code paths do claims before"},{"line_number":68,"context_line":"starting the work (and also abort claims on failure). This is really bug-fixing"},{"line_number":69,"context_line":"work. It will also move creating migration entries proposed by [2]_ to happen"},{"line_number":70,"context_line":"as part of the claim."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Alternatives"},{"line_number":73,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_7a86e866","line":70,"in_reply_to":"fa32b979_257362b6","updated":"2015-06-19 17:05:59.000000000","message":"Sounds good.","commit_id":"812c658415bc10a4f803988a80a6d4334f04fe1f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6d4170e2e8726e87c0d25fd7cee407170e612f5f","unresolved":false,"context_lines":[{"line_number":72,"context_line":"Alternatives"},{"line_number":73,"context_line":"------------"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"None really."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Data model impact"},{"line_number":78,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_0572dead","line":75,"updated":"2015-06-19 16:18:20.000000000","message":"Continue sucking?","commit_id":"812c658415bc10a4f803988a80a6d4334f04fe1f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6d4170e2e8726e87c0d25fd7cee407170e612f5f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"Add a single column to the instance_extra table called migration_context."},{"line_number":81,"context_line":"This column is NULL by default, or contains serialized objects. It will be"},{"line_number":82,"context_line":"accessible from the Instance object (we might want to wrap it in an object of"},{"line_number":83,"context_line":"it\u0027s own)."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"We\u0027ll be accessing this data on the Instance object, in the same fashion other"},{"line_number":86,"context_line":"data stored in the instance_extra is accessed."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_459f86b4","line":83,"updated":"2015-06-19 16:18:20.000000000","message":"The context will need to be an object. Perhaps you meant add query methods to the context object itself?","commit_id":"812c658415bc10a4f803988a80a6d4334f04fe1f"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"8095346b311ae246c543045f6729cb58db8d3851","unresolved":false,"context_lines":[{"line_number":80,"context_line":"Add a single column to the instance_extra table called migration_context."},{"line_number":81,"context_line":"This column is NULL by default, or contains serialized objects. It will be"},{"line_number":82,"context_line":"accessible from the Instance object (we might want to wrap it in an object of"},{"line_number":83,"context_line":"it\u0027s own)."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"We\u0027ll be accessing this data on the Instance object, in the same fashion other"},{"line_number":86,"context_line":"data stored in the instance_extra is accessed."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa32b979_5ad20436","line":83,"in_reply_to":"fa32b979_459f86b4","updated":"2015-06-19 17:05:59.000000000","message":"yes let me re-word this paragraph to be less confusing.","commit_id":"812c658415bc10a4f803988a80a6d4334f04fe1f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ac3d5293db862c869fd13a57d80740bb1f2dd65a","unresolved":false,"context_lines":[{"line_number":43,"context_line":"Use Cases"},{"line_number":44,"context_line":"----------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Live/cold migrate and rebuild, but it\u0027s essentially a bug fix."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Project Priority"},{"line_number":49,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_d9cdc95e","line":46,"updated":"2015-06-19 15:17:50.000000000","message":"nit: IMHO then, just put N/A","commit_id":"8e8234d49784107f79030ac32e94eeea3db92064"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e6e0f9301b800cff54f62128bd340f864eab9b77","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Fix ressource tracking for migration operations (live, cold, rebuild)"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/migration-fix-resource-tracking"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa32b979_742202a5","line":8,"range":{"start_line":8,"start_character":4,"end_line":8,"end_character":13},"updated":"2015-06-23 18:56:15.000000000","message":"\"Resource\" is misspelled","commit_id":"f76ba9b71b8619045d01c0b02e3e27684755743e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e6e0f9301b800cff54f62128bd340f864eab9b77","unresolved":false,"context_lines":[{"line_number":132,"context_line":"  \u003cndipanov\u003e"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Other contributors:"},{"line_number":135,"context_line":"  \u003cdanms\u003e"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"Work Items"},{"line_number":138,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa32b979_ef171b43","line":135,"updated":"2015-06-23 18:56:15.000000000","message":"ORLY?","commit_id":"f76ba9b71b8619045d01c0b02e3e27684755743e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1ad1aaca7144b50ebf6bc9840e7842a85b18e203","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"1. In order for resources to be tracked properly in a Nova cloud, whenever a"},{"line_number":31,"context_line":"   request to build an instance gets to a compute host, a resource claim needs"},{"line_number":32,"context_line":"   to be done holding a global process-wide lock. Failure to do this can result"},{"line_number":33,"context_line":"   in wrong resource allocation that will not follow the policy cloud"},{"line_number":34,"context_line":"   administrator wants, or in some cases, failure to launch an instance."},{"line_number":35,"context_line":"   Live-migrate and rebuild code paths currently do not use claims at all."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa32b979_8a7de86e","line":32,"updated":"2015-06-24 18:53:26.000000000","message":"I think this is just a matter of wording, but a global lock is something that spans multiple scheduler and conductor processes, no? Or are you just referring to the semaphore locking that occurs around, say, the instance_claim() method on the resource tracker?","commit_id":"2fc46ad041350558b7cac6021c11b93d77528730"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"95d00d2dffc2a9a0c828ecd84d6c406b4250481d","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"1. In order for resources to be tracked properly in a Nova cloud, whenever a"},{"line_number":31,"context_line":"   request to build an instance gets to a compute host, a resource claim needs"},{"line_number":32,"context_line":"   to be done holding a global process-wide lock. Failure to do this can result"},{"line_number":33,"context_line":"   in wrong resource allocation that will not follow the policy cloud"},{"line_number":34,"context_line":"   administrator wants, or in some cases, failure to launch an instance."},{"line_number":35,"context_line":"   Live-migrate and rebuild code paths currently do not use claims at all."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa32b979_f6181d20","line":32,"in_reply_to":"fa32b979_8a7de86e","updated":"2015-06-24 20:46:19.000000000","message":"I think it\u0027s the latter that Nikola refers, since he says \"process-wide\"","commit_id":"2fc46ad041350558b7cac6021c11b93d77528730"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"d63d9765dc392dcd537a952b3c16048cd1b4971a","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"1. In order for resources to be tracked properly in a Nova cloud, whenever a"},{"line_number":31,"context_line":"   request to build an instance gets to a compute host, a resource claim needs"},{"line_number":32,"context_line":"   to be done holding a global process-wide lock. Failure to do this can result"},{"line_number":33,"context_line":"   in wrong resource allocation that will not follow the policy cloud"},{"line_number":34,"context_line":"   administrator wants, or in some cases, failure to launch an instance."},{"line_number":35,"context_line":"   Live-migrate and rebuild code paths currently do not use claims at all."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa32b979_7532aef3","line":32,"in_reply_to":"fa32b979_f6181d20","updated":"2015-06-25 09:51:39.000000000","message":"yes! I took global to mean what it means in python usual terminology - an interpreter-process wide lock","commit_id":"2fc46ad041350558b7cac6021c11b93d77528730"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1ad1aaca7144b50ebf6bc9840e7842a85b18e203","unresolved":false,"context_lines":[{"line_number":38,"context_line":"   calculated from the flavor in case of a move operations, and must be"},{"line_number":39,"context_line":"   persisted after a successful claim, as they don\u0027t simply refer to a count"},{"line_number":40,"context_line":"   of a single uniform resource (like a vCPU) but refer to an actual unique"},{"line_number":41,"context_line":"   device/resource. [1]_"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Use Cases"},{"line_number":44,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa32b979_caa0d0f6","line":41,"updated":"2015-06-24 18:53:26.000000000","message":"Technically, this is incorrect. The requested NUMA topology is in the flavor and image metadata, and while you are correct that the *chosen* numa node that the original virtual machine was placed to is stored in instance.numa_topology, the *requested* NUMA topology can always be reconstructed from the flavor and image metadata that is stored in instance_extra.","commit_id":"2fc46ad041350558b7cac6021c11b93d77528730"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"d63d9765dc392dcd537a952b3c16048cd1b4971a","unresolved":false,"context_lines":[{"line_number":38,"context_line":"   calculated from the flavor in case of a move operations, and must be"},{"line_number":39,"context_line":"   persisted after a successful claim, as they don\u0027t simply refer to a count"},{"line_number":40,"context_line":"   of a single uniform resource (like a vCPU) but refer to an actual unique"},{"line_number":41,"context_line":"   device/resource. [1]_"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Use Cases"},{"line_number":44,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa32b979_0033de62","line":41,"in_reply_to":"fa32b979_caa0d0f6","updated":"2015-06-25 09:51:39.000000000","message":"We discussed this yesterday on IRC, and we agree that based on footnote (1) it actually is correct.","commit_id":"2fc46ad041350558b7cac6021c11b93d77528730"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1ad1aaca7144b50ebf6bc9840e7842a85b18e203","unresolved":false,"context_lines":[{"line_number":60,"context_line":"First step is to make evacuate and live-migrate code paths do claims before"},{"line_number":61,"context_line":"starting the work (and also abort claims on failure). This is really bug-fixing"},{"line_number":62,"context_line":"work. It will also move creating migration entries proposed by [2]_ to happen"},{"line_number":63,"context_line":"as part of the claim."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Second, we will add additional data to track resources after being claimed for"},{"line_number":66,"context_line":"a migration, we will add a migration_context column to the instance_extra table"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa32b979_ea5354e0","line":63,"updated":"2015-06-24 18:53:26.000000000","message":"So, I can see this working for live-migrate, since the entire code path of relevance is in the nova.compute.manager and its interaction with the libvirt live migrate commands.\n\nHowever, for rebuild, the conductor plays an important part in the rebuild task workflow, no? Therefore, the claim would need to exist on the conductor as well as the compute node(s), right?","commit_id":"2fc46ad041350558b7cac6021c11b93d77528730"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"95d00d2dffc2a9a0c828ecd84d6c406b4250481d","unresolved":false,"context_lines":[{"line_number":60,"context_line":"First step is to make evacuate and live-migrate code paths do claims before"},{"line_number":61,"context_line":"starting the work (and also abort claims on failure). This is really bug-fixing"},{"line_number":62,"context_line":"work. It will also move creating migration entries proposed by [2]_ to happen"},{"line_number":63,"context_line":"as part of the claim."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Second, we will add additional data to track resources after being claimed for"},{"line_number":66,"context_line":"a migration, we will add a migration_context column to the instance_extra table"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa32b979_b6913549","line":63,"in_reply_to":"fa32b979_ea5354e0","updated":"2015-06-24 20:46:19.000000000","message":"I can\u0027t see much difference between a boot request workflow and a rebuild workflow. Both are using the conductor which gets a destination from the scheduler and calls the compute node, which itself claims for the resource. \n\nDid I missed something?","commit_id":"2fc46ad041350558b7cac6021c11b93d77528730"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1ad1aaca7144b50ebf6bc9840e7842a85b18e203","unresolved":false,"context_lines":[{"line_number":67,"context_line":"and store the claimed resources there to be used for tracking migration"},{"line_number":68,"context_line":"resources. Part of this work will mean also changing the resource tracker to"},{"line_number":69,"context_line":"consider these when doing resource tracking. Initially it will only contain the"},{"line_number":70,"context_line":"\u0027new\u0027 NUMA topology."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa32b979_ea6a7480","line":70,"updated":"2015-06-24 18:53:26.000000000","message":"OK, sounds good. Seems similar to the existing use of the \"new\" and \"old\" flavor information that is now stored in the instance_extra table?","commit_id":"2fc46ad041350558b7cac6021c11b93d77528730"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1ad1aaca7144b50ebf6bc9840e7842a85b18e203","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Add a single column to the instance_extra table called migration_context."},{"line_number":82,"context_line":"This column is NULL by default, or contains a serialized MigrationContext"},{"line_number":83,"context_line":"object, which we will also add as part of this work."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"We\u0027ll be accessing this data on the Instance object, in the same fashion other"},{"line_number":86,"context_line":"data stored in the instance_extra is accessed."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa32b979_8ade483c","line":83,"updated":"2015-06-24 18:53:26.000000000","message":"I\u0027m kinda curious to see what the proposed object model would look like...","commit_id":"2fc46ad041350558b7cac6021c11b93d77528730"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"8d839a95aa78e930d750812701189e88793aae35","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"We\u0027ll be accessing this data on the Instance object, in the same fashion other"},{"line_number":86,"context_line":"data stored in the instance_extra is accessed."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"REST API impact"},{"line_number":89,"context_line":"---------------"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_9847024b","line":87,"updated":"2015-06-30 13:26:28.000000000","message":"What about the existing model we have for this data?\nhttps://github.com/openstack/nova/blob/master/nova/db/sqlalchemy/models.py#L713","commit_id":"2fc46ad041350558b7cac6021c11b93d77528730"}]}
