)]}'
{"specs/ocata/approved/prep-for-network-aware-scheduling-ocata.rst":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"6e67e6d7d11f5c7b5f144af5cc086557813754ed","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Some IP subnets can be restricted to a subset of hosts, due to an operators"},{"line_number":23,"context_line":"network configuration. In this environment, it means you could build somewhere"},{"line_number":24,"context_line":"that has no public IPs available. This is being added into Neutron by the"},{"line_number":25,"context_line":"Routed Networks feature."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"To make this possible, we need to know the details of all the user\u0027s requested"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_f634954b","line":24,"updated":"2016-11-14 23:52:48.000000000","message":"here...","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"6e67e6d7d11f5c7b5f144af5cc086557813754ed","unresolved":false,"context_lines":[{"line_number":24,"context_line":"that has no public IPs available. This is being added into Neutron by the"},{"line_number":25,"context_line":"Routed Networks feature."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"To make this possible, we need to know the details of all the user\u0027s requested"},{"line_number":28,"context_line":"ports, and what resources are required, before asking the scheduler for a"},{"line_number":29,"context_line":"host. In addition, after picking a location, we should check that there is"},{"line_number":30,"context_line":"an IP available before continuing with the rest of the build process."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_163af136","line":27,"updated":"2016-11-14 23:52:48.000000000","message":"and here, it\u0027s not clear to what \"this\" is referring.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e0889802e0dae3fb18f2ac22595918a78974133f","unresolved":false,"context_lines":[{"line_number":24,"context_line":"that has no public IPs available. This is being added into Neutron by the"},{"line_number":25,"context_line":"Routed Networks feature."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"To make this possible, we need to know the details of all the user\u0027s requested"},{"line_number":28,"context_line":"ports, and what resources are required, before asking the scheduler for a"},{"line_number":29,"context_line":"host. In addition, after picking a location, we should check that there is"},{"line_number":30,"context_line":"an IP available before continuing with the rest of the build process."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_f5c63915","line":27,"in_reply_to":"7a77a97e_163af136","updated":"2016-11-15 09:54:33.000000000","message":"Good catch, its routed networks, I will add that in.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"17013d84abc5f41ae0d1349c35d9e86403a9214b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Use Cases"},{"line_number":38,"context_line":"---------"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"This is largely a code refactor."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Proposed change"},{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_e64a19ac","line":40,"updated":"2016-11-14 13:38:17.000000000","message":"So, should it be really a blueprint needing a spec ?","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f350708bb722a4724965eabc44f4b7d07639f0c4","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Use Cases"},{"line_number":38,"context_line":"---------"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"This is largely a code refactor."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Proposed change"},{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_e20f5c2c","line":40,"in_reply_to":"9a629dbe_932438b0","updated":"2016-11-14 15:49:17.000000000","message":"Fair point.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e0889802e0dae3fb18f2ac22595918a78974133f","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Use Cases"},{"line_number":38,"context_line":"---------"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"This is largely a code refactor."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Proposed change"},{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_75022940","line":40,"in_reply_to":"9a629dbe_e20f5c2c","updated":"2016-11-15 09:54:33.000000000","message":"I just want buy in on the general direction, its tricky.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5e6167b7fd39f235034f910d40f709abc57af87b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Use Cases"},{"line_number":38,"context_line":"---------"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"This is largely a code refactor."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Proposed change"},{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_932438b0","line":40,"in_reply_to":"9a629dbe_e64a19ac","updated":"2016-11-14 14:30:24.000000000","message":"It\u0027s non-trivial so I think a spec is fine.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5e6167b7fd39f235034f910d40f709abc57af87b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"In newton we have changed the code inside allocate_for_instance into clear"},{"line_number":46,"context_line":"get/create and update phase. We need to complete the split, by ensuring the"},{"line_number":47,"context_line":"network info cache contains all the info required to be shared between the"},{"line_number":48,"context_line":"two phases of the operation."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"Second, we want to move the get/create ports before the scheduler is called."},{"line_number":51,"context_line":"In terms of upgrades, we need to ensure old compute nodes don\u0027t re-create"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_f34ad454","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":27},"updated":"2016-11-14 14:30:24.000000000","message":"This is a bit obscure, but I assume you mean create port (conductor) and update port host binding (compute) during instance creation.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"88bf7dc7009da6036a7a67263c3680560ce9f071","unresolved":false,"context_lines":[{"line_number":45,"context_line":"In newton we have changed the code inside allocate_for_instance into clear"},{"line_number":46,"context_line":"get/create and update phase. We need to complete the split, by ensuring the"},{"line_number":47,"context_line":"network info cache contains all the info required to be shared between the"},{"line_number":48,"context_line":"two phases of the operation."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"Second, we want to move the get/create ports before the scheduler is called."},{"line_number":51,"context_line":"In terms of upgrades, we need to ensure old compute nodes don\u0027t re-create"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_5c8c6d35","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":27},"in_reply_to":"9a629dbe_f34ad454","updated":"2016-11-14 15:49:19.000000000","message":"Yes.\n\nSeems I deleted the context here, oops.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"17013d84abc5f41ae0d1349c35d9e86403a9214b","unresolved":false,"context_lines":[{"line_number":48,"context_line":"two phases of the operation."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"Second, we want to move the get/create ports before the scheduler is called."},{"line_number":51,"context_line":"In terms of upgrades, we need to ensure old compute nodes don\u0027t re-create"},{"line_number":52,"context_line":"ports that the scheduler has already created. Similarly, when deleting an"},{"line_number":53,"context_line":"instance, the old node should correctly know which ports were created by Nova"},{"line_number":54,"context_line":"and can be deleted."},{"line_number":55,"context_line":"For nova-network users, the get/create ports can be a noop."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_46e745ac","line":52,"range":{"start_line":51,"start_character":0,"end_line":52,"end_character":45},"updated":"2016-11-14 13:38:17.000000000","message":"oh, maybe it\u0027s why you\u0027d like to write a spec ?","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"17013d84abc5f41ae0d1349c35d9e86403a9214b","unresolved":false,"context_lines":[{"line_number":51,"context_line":"In terms of upgrades, we need to ensure old compute nodes don\u0027t re-create"},{"line_number":52,"context_line":"ports that the scheduler has already created. Similarly, when deleting an"},{"line_number":53,"context_line":"instance, the old node should correctly know which ports were created by Nova"},{"line_number":54,"context_line":"and can be deleted."},{"line_number":55,"context_line":"For nova-network users, the get/create ports can be a noop."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"The third step is to move the port update into the conductor, right after"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_06bb8d76","line":54,"updated":"2016-11-14 13:38:17.000000000","message":"how do you plan that old computes will verify the pre-existence of the allocated ports ? Because the old Newton computes are already getting the ports before creating them, right ?","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5e6167b7fd39f235034f910d40f709abc57af87b","unresolved":false,"context_lines":[{"line_number":51,"context_line":"In terms of upgrades, we need to ensure old compute nodes don\u0027t re-create"},{"line_number":52,"context_line":"ports that the scheduler has already created. Similarly, when deleting an"},{"line_number":53,"context_line":"instance, the old node should correctly know which ports were created by Nova"},{"line_number":54,"context_line":"and can be deleted."},{"line_number":55,"context_line":"For nova-network users, the get/create ports can be a noop."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"The third step is to move the port update into the conductor, right after"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_138d887b","line":54,"in_reply_to":"9a629dbe_06bb8d76","updated":"2016-11-14 14:30:24.000000000","message":"Yeah I\u0027m also wondering about this, especially as I think we have a few open bugs related to not cleaning up networking (ports) between reschedules. I think the current goal of fixing those bugs is once we\u0027ve hit our last retry we need to cleanup the networks (ports).\n\nAt least if conductor is allocating the ports then it\u0027s a bit simpler to clean them up between reschedules (or afterward if we get NoValidHost).\n\nThis is the change I\u0027m thinking of: https://review.openstack.org/#/c/335788/","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"88bf7dc7009da6036a7a67263c3680560ce9f071","unresolved":false,"context_lines":[{"line_number":51,"context_line":"In terms of upgrades, we need to ensure old compute nodes don\u0027t re-create"},{"line_number":52,"context_line":"ports that the scheduler has already created. Similarly, when deleting an"},{"line_number":53,"context_line":"instance, the old node should correctly know which ports were created by Nova"},{"line_number":54,"context_line":"and can be deleted."},{"line_number":55,"context_line":"For nova-network users, the get/create ports can be a noop."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"The third step is to move the port update into the conductor, right after"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_dc5a3d50","line":54,"in_reply_to":"9a629dbe_138d887b","updated":"2016-11-14 15:49:19.000000000","message":"So the ports we create should now persist between re-schedules, just like the ports you pass in persist between re-schedules. At least that was my plan. The ports would get deleted when you delete the instance, be the instance in the error state or not.\n\nI should be more specific on the upgrade strategy, my current thinking was:\n* we extend the network_request_info to differentiate between: passed in by user, already created by nova, still to be created by nova\n* don\u0027t start using the new flow until all compute nodes are upgraded\n* once we all computes upgraded, start creating ports in advance, computes will know not to create them again\n\nThinking about that bug around ports not getting deleted, this is probably the better fix for that bug.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c4afdc0c060e83f5f9a385c09bcb571132bc60d2","unresolved":false,"context_lines":[{"line_number":51,"context_line":"In terms of upgrades, we need to ensure old compute nodes don\u0027t re-create"},{"line_number":52,"context_line":"ports that the scheduler has already created. Similarly, when deleting an"},{"line_number":53,"context_line":"instance, the old node should correctly know which ports were created by Nova"},{"line_number":54,"context_line":"and can be deleted."},{"line_number":55,"context_line":"For nova-network users, the get/create ports can be a noop."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"The third step is to move the port update into the conductor, right after"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_8ddc1148","line":54,"in_reply_to":"9a629dbe_dc5a3d50","updated":"2016-11-14 16:24:18.000000000","message":"I\u0027m not sure what network_request_info is, but assume it\u0027s something in conductor. Do you mean the nova.objects.NetworkRequestList? If so, if you pass in a pre-existing port, then the port_id field is set in a NetworkRequest object in that list. Otherwise you\u0027re passing in a network_id and nova creates a port in that network (or you\u0027re passing in \u0027auto\u0027 or \u0027none\u0027 for the get-me-a-network scenarios and nova acts accordingly based on which network is available to the tenant).","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5e6167b7fd39f235034f910d40f709abc57af87b","unresolved":false,"context_lines":[{"line_number":54,"context_line":"and can be deleted."},{"line_number":55,"context_line":"For nova-network users, the get/create ports can be a noop."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"The third step is to move the port update into the conductor, right after"},{"line_number":58,"context_line":"the scheduler has picked an appropriate host. We will not be able to run"},{"line_number":59,"context_line":"this code until all compute nodes have been upgraded to the newest version."},{"line_number":60,"context_line":"Until all nodes have been upgraded, the new nodes will still have to run this"},{"line_number":61,"context_line":"code on the Compute node. While annoying, this move is only to help with"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_d3c0707f","line":58,"range":{"start_line":57,"start_character":0,"end_line":58,"end_character":45},"updated":"2016-11-14 14:30:24.000000000","message":"I thought the compute would also do the port update for host binding and conductor was just in charge of creating the port.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"88bf7dc7009da6036a7a67263c3680560ce9f071","unresolved":false,"context_lines":[{"line_number":54,"context_line":"and can be deleted."},{"line_number":55,"context_line":"For nova-network users, the get/create ports can be a noop."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"The third step is to move the port update into the conductor, right after"},{"line_number":58,"context_line":"the scheduler has picked an appropriate host. We will not be able to run"},{"line_number":59,"context_line":"this code until all compute nodes have been upgraded to the newest version."},{"line_number":60,"context_line":"Until all nodes have been upgraded, the new nodes will still have to run this"},{"line_number":61,"context_line":"code on the Compute node. While annoying, this move is only to help with"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_073462dc","line":58,"range":{"start_line":57,"start_character":0,"end_line":58,"end_character":45},"in_reply_to":"9a629dbe_d3c0707f","updated":"2016-11-14 15:49:19.000000000","message":"I think we want both in the conductor, so there is a quick retry should a port binding fail due to things like IPs in the given segment having run out.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"17013d84abc5f41ae0d1349c35d9e86403a9214b","unresolved":false,"context_lines":[{"line_number":61,"context_line":"code on the Compute node. While annoying, this move is only to help with"},{"line_number":62,"context_line":"faster retries, and as such, should not block any progress. Note this port"},{"line_number":63,"context_line":"update step includes setting the host on the port, and in the future will"},{"line_number":64,"context_line":"be the point an IP is assigned, if the port does not yet have an IP."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"For nova-network, we can run the existing allocate-for-instance logic in the"},{"line_number":67,"context_line":"conductor, after the scheduler is called. For cells v1 users, this should"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_e67db9b2","line":64,"updated":"2016-11-14 13:38:17.000000000","message":"so you plan to verify the minimum version for all computes, right?\n\nIf so, do you plan some kind of warning (or debug due to the possible verbosity) logs for advertising the operator to upgrade sooner than later all their computes ?","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"88bf7dc7009da6036a7a67263c3680560ce9f071","unresolved":false,"context_lines":[{"line_number":61,"context_line":"code on the Compute node. While annoying, this move is only to help with"},{"line_number":62,"context_line":"faster retries, and as such, should not block any progress. Note this port"},{"line_number":63,"context_line":"update step includes setting the host on the port, and in the future will"},{"line_number":64,"context_line":"be the point an IP is assigned, if the port does not yet have an IP."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"For nova-network, we can run the existing allocate-for-instance logic in the"},{"line_number":67,"context_line":"conductor, after the scheduler is called. For cells v1 users, this should"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_c767cae8","line":64,"in_reply_to":"9a629dbe_5330e09e","updated":"2016-11-14 15:49:19.000000000","message":"Basically, during next cycle we can drop the compat, as we only support N to N+1.\n\nI don\u0027t think this changes upgrades in any way. We do this all over the place.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f350708bb722a4724965eabc44f4b7d07639f0c4","unresolved":false,"context_lines":[{"line_number":61,"context_line":"code on the Compute node. While annoying, this move is only to help with"},{"line_number":62,"context_line":"faster retries, and as such, should not block any progress. Note this port"},{"line_number":63,"context_line":"update step includes setting the host on the port, and in the future will"},{"line_number":64,"context_line":"be the point an IP is assigned, if the port does not yet have an IP."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"For nova-network, we can run the existing allocate-for-instance logic in the"},{"line_number":67,"context_line":"conductor, after the scheduler is called. For cells v1 users, this should"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_87115260","line":64,"in_reply_to":"9a629dbe_5330e09e","updated":"2016-11-14 15:49:17.000000000","message":"Yeah, I was also thinking about that, just wanted to make sure that\u0027s the plan, ie. that we won\u0027t update the port by the conductor unless all computes are current.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5e6167b7fd39f235034f910d40f709abc57af87b","unresolved":false,"context_lines":[{"line_number":61,"context_line":"code on the Compute node. While annoying, this move is only to help with"},{"line_number":62,"context_line":"faster retries, and as such, should not block any progress. Note this port"},{"line_number":63,"context_line":"update step includes setting the host on the port, and in the future will"},{"line_number":64,"context_line":"be the point an IP is assigned, if the port does not yet have an IP."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"For nova-network, we can run the existing allocate-for-instance logic in the"},{"line_number":67,"context_line":"conductor, after the scheduler is called. For cells v1 users, this should"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_5330e09e","line":64,"in_reply_to":"9a629dbe_e67db9b2","updated":"2016-11-14 14:30:24.000000000","message":"We already check for stuff like this elsewhere, like the 2.37 microversion in the REST API. Based on n-1 rolling upgrade support and DB migrations that break until you\u0027ve hit a certain minimum version I think we\u0027ve had compat code in place for a release or two and then we drop the hammer and things just don\u0027t work until you move up. I\u0027m not entirely sure if we\u0027re going to do that here, or just have the compat code working until ocata-eol or something.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"17013d84abc5f41ae0d1349c35d9e86403a9214b","unresolved":false,"context_lines":[{"line_number":67,"context_line":"conductor, after the scheduler is called. For cells v1 users, this should"},{"line_number":68,"context_line":"correctly be in the child cell conductor. For cells v2 users, it doesn\u0027t"},{"line_number":69,"context_line":"matter that this is in the api conductor."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Alternatives"},{"line_number":72,"context_line":"------------"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_612433af","line":70,"updated":"2016-11-14 13:38:17.000000000","message":"Just to make it clear, that means a port will be allocated to a compute once the scheduling is made, which means that we would update the port N times, N being the number of reschedules ? (the current situation is only one, once the instance is spawned on the compute, right)","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5e6167b7fd39f235034f910d40f709abc57af87b","unresolved":false,"context_lines":[{"line_number":67,"context_line":"conductor, after the scheduler is called. For cells v1 users, this should"},{"line_number":68,"context_line":"correctly be in the child cell conductor. For cells v2 users, it doesn\u0027t"},{"line_number":69,"context_line":"matter that this is in the api conductor."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Alternatives"},{"line_number":72,"context_line":"------------"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_f3f014cc","line":70,"in_reply_to":"9a629dbe_612433af","updated":"2016-11-14 14:30:24.000000000","message":"See above, today I don\u0027t think we cleanup networks between retries, but just updating the port with the compute host binding details on each compute we land on.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c4afdc0c060e83f5f9a385c09bcb571132bc60d2","unresolved":false,"context_lines":[{"line_number":67,"context_line":"conductor, after the scheduler is called. For cells v1 users, this should"},{"line_number":68,"context_line":"correctly be in the child cell conductor. For cells v2 users, it doesn\u0027t"},{"line_number":69,"context_line":"matter that this is in the api conductor."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Alternatives"},{"line_number":72,"context_line":"------------"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_add555ba","line":70,"in_reply_to":"9a629dbe_877b127b","updated":"2016-11-14 16:24:18.000000000","message":"If we don\u0027t retry, then we cleanup allocated networks which would unbind the host from pre-existing ports that the user passed in (nova didn\u0027t create):\n\nhttps://github.com/openstack/nova/blob/00bc0cb53d6113fae9a7714386953d1d75db71c1/nova/compute/manager.py#L1789\n\nThere is also this check but that\u0027s only true for ironic and sriov ports:\n\nhttps://github.com/openstack/nova/blob/00bc0cb53d6113fae9a7714386953d1d75db71c1/nova/compute/manager.py#L1812\n\nIt looks like conductor is what should unbind the ports between reschedules:\n\nhttps://github.com/openstack/nova/blob/00bc0cb53d6113fae9a7714386953d1d75db71c1/nova/conductor/manager.py#L509","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e0889802e0dae3fb18f2ac22595918a78974133f","unresolved":false,"context_lines":[{"line_number":67,"context_line":"conductor, after the scheduler is called. For cells v1 users, this should"},{"line_number":68,"context_line":"correctly be in the child cell conductor. For cells v2 users, it doesn\u0027t"},{"line_number":69,"context_line":"matter that this is in the api conductor."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Alternatives"},{"line_number":72,"context_line":"------------"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_35b431f1","line":70,"in_reply_to":"9a629dbe_add555ba","updated":"2016-11-15 09:54:33.000000000","message":"Seems we delete and unbind the ports:\nhttps://github.com/openstack/nova/blob/00bc0cb53d6113fae9a7714386953d1d75db71c1/nova/network/neutronv2/api.py#L1172\n\nWhich seems a bit odd. Looks like thats the same cleanup we do when you delete the instance. That might need some unwinding.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"88bf7dc7009da6036a7a67263c3680560ce9f071","unresolved":false,"context_lines":[{"line_number":67,"context_line":"conductor, after the scheduler is called. For cells v1 users, this should"},{"line_number":68,"context_line":"correctly be in the child cell conductor. For cells v2 users, it doesn\u0027t"},{"line_number":69,"context_line":"matter that this is in the api conductor."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Alternatives"},{"line_number":72,"context_line":"------------"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_877b127b","line":70,"in_reply_to":"9a629dbe_f3f014cc","updated":"2016-11-14 15:49:19.000000000","message":"Right, I expect we would stop creating ports the second time through, and just delete the ports when you delete the instance.\n\nToday we have to keep updating the port on every retry, that hasn\u0027t changed. You need to tell neutron which host the port is bound to.\n\nTechnically on a build retry we should unbind the ports, before we reschedule. I should double check the details on that.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f350708bb722a4724965eabc44f4b7d07639f0c4","unresolved":false,"context_lines":[{"line_number":67,"context_line":"conductor, after the scheduler is called. For cells v1 users, this should"},{"line_number":68,"context_line":"correctly be in the child cell conductor. For cells v2 users, it doesn\u0027t"},{"line_number":69,"context_line":"matter that this is in the api conductor."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Alternatives"},{"line_number":72,"context_line":"------------"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_277ec6ae","line":70,"in_reply_to":"9a629dbe_f3f014cc","updated":"2016-11-14 15:49:17.000000000","message":"So that looks the same behaviour.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"6e67e6d7d11f5c7b5f144af5cc086557813754ed","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Eventually it could mean we don\u0027t need any neutron related credentials on"},{"line_number":92,"context_line":"any of the compute nodes. This work will not achieve that goal, but it is a"},{"line_number":93,"context_line":"step in the right direction."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Notifications impact"},{"line_number":96,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_96e2819e","line":93,"updated":"2016-11-14 23:52:48.000000000","message":"+1","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5e6167b7fd39f235034f910d40f709abc57af87b","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Other deployer impact"},{"line_number":123,"context_line":"---------------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"We will need the neutron credentials on nova-conductor, which may not"},{"line_number":126,"context_line":"currently have been happening."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"Developer impact"},{"line_number":129,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_33dc4c18","line":126,"range":{"start_line":125,"start_character":0,"end_line":126,"end_character":30},"updated":"2016-11-14 14:30:24.000000000","message":"In terms of rolling upgrade, are we going to straddle this for a release? Meaning, if I\u0027m upgrading conductor to Ocata and I\u0027m using neutron but don\u0027t have the neutron credentials on my nova.conf for conductor, will instances fail to build? Or will you log a warning in Ocata, bypass the new code and do the old (like if the computes aren\u0027t new enough yet), and then in Pike it\u0027s a failure if you don\u0027t have the creds in nova.conf on conductor nodes?","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"88bf7dc7009da6036a7a67263c3680560ce9f071","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Other deployer impact"},{"line_number":123,"context_line":"---------------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"We will need the neutron credentials on nova-conductor, which may not"},{"line_number":126,"context_line":"currently have been happening."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"Developer impact"},{"line_number":129,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_678c3e36","line":126,"range":{"start_line":125,"start_character":0,"end_line":126,"end_character":30},"in_reply_to":"9a629dbe_33dc4c18","updated":"2016-11-14 15:49:19.000000000","message":"Hmm, I hadn\u0027t thought about doing that, but we probably should. \n\nSo the condition to create the ports on in the conductor is, computes upgraded and neutron credentials available.\n\nIronically, we haven\u0027t landed the bug fix to create the ports using admin credentials. We could just use the user credentials, assuming folks are running with the default policy.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c4afdc0c060e83f5f9a385c09bcb571132bc60d2","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Other deployer impact"},{"line_number":123,"context_line":"---------------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"We will need the neutron credentials on nova-conductor, which may not"},{"line_number":126,"context_line":"currently have been happening."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"Developer impact"},{"line_number":129,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_8db5f17f","line":126,"range":{"start_line":125,"start_character":0,"end_line":126,"end_character":30},"in_reply_to":"9a629dbe_678c3e36","updated":"2016-11-14 16:24:18.000000000","message":"\u003e Ironically, we haven\u0027t landed the bug fix to create the ports using admin credentials.\n\nI\u0027m not sure which bug fix that is specifically, but assume it\u0027s related to the thing auggy was working on.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"17013d84abc5f41ae0d1349c35d9e86403a9214b","unresolved":false,"context_lines":[{"line_number":158,"context_line":"Testing"},{"line_number":159,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Grenade + neutron should cover this well."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Documentation Impact"},{"line_number":164,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_e1476349","line":161,"updated":"2016-11-14 13:38:17.000000000","message":"I\u0027d be very interested in seeing if we cover reschedules.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f350708bb722a4724965eabc44f4b7d07639f0c4","unresolved":false,"context_lines":[{"line_number":158,"context_line":"Testing"},{"line_number":159,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Grenade + neutron should cover this well."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Documentation Impact"},{"line_number":164,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_279086ec","line":161,"in_reply_to":"9a629dbe_33036c78","updated":"2016-11-14 15:49:17.000000000","message":"Yeah, sounds a good path in there, just wanted to make sure we would cover that in case it\u0027s not done atm.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"88bf7dc7009da6036a7a67263c3680560ce9f071","unresolved":false,"context_lines":[{"line_number":158,"context_line":"Testing"},{"line_number":159,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Grenade + neutron should cover this well."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Documentation Impact"},{"line_number":164,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_e7220e01","line":161,"in_reply_to":"9a629dbe_33036c78","updated":"2016-11-14 15:49:19.000000000","message":"Yeah, the reschedule case isn\u0027t really changed that much, its really just the entry into that loop, in theory.\n\nYou are right though, a functional test would be good.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5e6167b7fd39f235034f910d40f709abc57af87b","unresolved":false,"context_lines":[{"line_number":158,"context_line":"Testing"},{"line_number":159,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Grenade + neutron should cover this well."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Documentation Impact"},{"line_number":164,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_33036c78","line":161,"in_reply_to":"9a629dbe_e1476349","updated":"2016-11-14 14:30:24.000000000","message":"We likely wouldn\u0027t in the dsvm jobs, but we could maybe test that with functional tests in tree.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"49fdde65be567540b3a25628065e9d2051b26998","unresolved":false,"context_lines":[{"line_number":163,"context_line":"Documentation Impact"},{"line_number":164,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"None"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"References"},{"line_number":169,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_d3223001","line":166,"updated":"2016-11-14 14:31:05.000000000","message":"I tend to think there is something that would need to be documented in an install guide about putting neutron creds into the nova.conf on the conductor node.\n\nOtherwise just release notes as usual.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"88bf7dc7009da6036a7a67263c3680560ce9f071","unresolved":false,"context_lines":[{"line_number":163,"context_line":"Documentation Impact"},{"line_number":164,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"None"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"References"},{"line_number":169,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a629dbe_021d3066","line":166,"in_reply_to":"9a629dbe_d3223001","updated":"2016-11-14 15:49:19.000000000","message":"Yeah, I was thinking release notes.\n\nWe don\u0027t currently help people at all by saying what config should go where. We should have a look at that, and revise the configuration reference guide to include such hints. That came up a few times with the centralize configuration work.","commit_id":"554c78e45af379c762c6f6435884c7245e48d862"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cca92f2eb10275fd6075c4b2a6799ba14cb240b1","unresolved":false,"context_lines":[{"line_number":22,"context_line":"Some IP subnets can be restricted to a subset of hosts, due to an operators"},{"line_number":23,"context_line":"network configuration. In this environment, it means you could build somewhere"},{"line_number":24,"context_line":"that has no public IPs available. The ability to manage IP addresses in this"},{"line_number":25,"context_line":"way is being added into Neutron by the Routed Networks feature."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"To make this possible, we need to know the details of all the user\u0027s requested"},{"line_number":28,"context_line":"ports, and what resources are required, before asking the scheduler for a"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_f1ddf1e0","line":25,"range":{"start_line":25,"start_character":39,"end_line":25,"end_character":62},"updated":"2016-11-17 13:36:22.000000000","message":"nit: we could link to this:\n\nhttp://specs.openstack.org/openstack/neutron-specs/specs/newton/routed-networks.html\n\nAnd the nova spec from Carl Baldwin:\n\nhttps://specs.openstack.org/openstack/nova-specs/specs/newton/implemented/neutron-routed-networks.html\n\nJust for references/context.","commit_id":"b8dbd3d0141f337c056b65e104972e706223c1cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cca92f2eb10275fd6075c4b2a6799ba14cb240b1","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Second, we want to move the get/create ports before the scheduler is called."},{"line_number":56,"context_line":"In terms of upgrades, we need to ensure old compute nodes don\u0027t re-create"},{"line_number":57,"context_line":"ports that the scheduler has already created. Similarly, when deleting an"},{"line_number":58,"context_line":"instance, the old node should correctly know which ports were created by Nova"},{"line_number":59,"context_line":"and can be deleted."},{"line_number":60,"context_line":"For nova-network users, the get/create ports can be a noop."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_5154e51f","line":57,"range":{"start_line":57,"start_character":15,"end_line":57,"end_character":24},"updated":"2016-11-17 13:36:22.000000000","message":"conductor, right?","commit_id":"b8dbd3d0141f337c056b65e104972e706223c1cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cca92f2eb10275fd6075c4b2a6799ba14cb240b1","unresolved":false,"context_lines":[{"line_number":55,"context_line":"Second, we want to move the get/create ports before the scheduler is called."},{"line_number":56,"context_line":"In terms of upgrades, we need to ensure old compute nodes don\u0027t re-create"},{"line_number":57,"context_line":"ports that the scheduler has already created. Similarly, when deleting an"},{"line_number":58,"context_line":"instance, the old node should correctly know which ports were created by Nova"},{"line_number":59,"context_line":"and can be deleted."},{"line_number":60,"context_line":"For nova-network users, the get/create ports can be a noop."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"To avoid problems across upgrades, the early creating of ports is not allowed"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_711ac17e","line":59,"range":{"start_line":58,"start_character":10,"end_line":59,"end_character":19},"updated":"2016-11-17 13:36:22.000000000","message":"This seems to contradict the statements on L49 above about re-using ports that nova created, but maybe that\u0027s only talking about after all of the compute nodes are upgraded and conductor starts creating the ports rather than the compute nodes.","commit_id":"b8dbd3d0141f337c056b65e104972e706223c1cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d0264fab4f74a79272e346d35aec85ffae5f1da1","unresolved":false,"context_lines":[{"line_number":55,"context_line":"Second, we want to move the get/create ports before the scheduler is called."},{"line_number":56,"context_line":"In terms of upgrades, we need to ensure old compute nodes don\u0027t re-create"},{"line_number":57,"context_line":"ports that the scheduler has already created. Similarly, when deleting an"},{"line_number":58,"context_line":"instance, the old node should correctly know which ports were created by Nova"},{"line_number":59,"context_line":"and can be deleted."},{"line_number":60,"context_line":"For nova-network users, the get/create ports can be a noop."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"To avoid problems across upgrades, the early creating of ports is not allowed"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_2aafe02a","line":59,"range":{"start_line":58,"start_character":10,"end_line":59,"end_character":19},"in_reply_to":"7a77a97e_4f7d1cb0","updated":"2016-11-17 18:29:28.000000000","message":"Right OK, we already have that logic for figuring out which are preexisting ports and that\u0027s stashed on the vif in the info_cache.","commit_id":"b8dbd3d0141f337c056b65e104972e706223c1cc"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f832b7dcfecd28219c0538d84a3b888abc6d12be","unresolved":false,"context_lines":[{"line_number":55,"context_line":"Second, we want to move the get/create ports before the scheduler is called."},{"line_number":56,"context_line":"In terms of upgrades, we need to ensure old compute nodes don\u0027t re-create"},{"line_number":57,"context_line":"ports that the scheduler has already created. Similarly, when deleting an"},{"line_number":58,"context_line":"instance, the old node should correctly know which ports were created by Nova"},{"line_number":59,"context_line":"and can be deleted."},{"line_number":60,"context_line":"For nova-network users, the get/create ports can be a noop."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"To avoid problems across upgrades, the early creating of ports is not allowed"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_4f7d1cb0","line":59,"range":{"start_line":58,"start_character":10,"end_line":59,"end_character":19},"in_reply_to":"7a77a97e_711ac17e","updated":"2016-11-17 18:19:47.000000000","message":"This is about when deleting the instance, not a reschedule.","commit_id":"b8dbd3d0141f337c056b65e104972e706223c1cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cca92f2eb10275fd6075c4b2a6799ba14cb240b1","unresolved":false,"context_lines":[{"line_number":59,"context_line":"and can be deleted."},{"line_number":60,"context_line":"For nova-network users, the get/create ports can be a noop."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"To avoid problems across upgrades, the early creating of ports is not allowed"},{"line_number":63,"context_line":"until all nova-compute nodes are upgraded to the version that understands if"},{"line_number":64,"context_line":"a port has been created or not. Once all are upgraded, and credentials are"},{"line_number":65,"context_line":"available on the nova-conductor node, ports will be created before calling the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_d40c633d","line":62,"updated":"2016-11-17 13:36:22.000000000","message":"OK I think this answers the question I had above.","commit_id":"b8dbd3d0141f337c056b65e104972e706223c1cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cca92f2eb10275fd6075c4b2a6799ba14cb240b1","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"To avoid problems across upgrades, the early creating of ports is not allowed"},{"line_number":63,"context_line":"until all nova-compute nodes are upgraded to the version that understands if"},{"line_number":64,"context_line":"a port has been created or not. Once all are upgraded, and credentials are"},{"line_number":65,"context_line":"available on the nova-conductor node, ports will be created before calling the"},{"line_number":66,"context_line":"scheduler."},{"line_number":67,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_5102250c","line":64,"range":{"start_line":64,"start_character":37,"end_line":64,"end_character":40},"updated":"2016-11-17 13:36:22.000000000","message":"all compute nodes","commit_id":"b8dbd3d0141f337c056b65e104972e706223c1cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cca92f2eb10275fd6075c4b2a6799ba14cb240b1","unresolved":false,"context_lines":[{"line_number":70,"context_line":"this code until all compute nodes have been upgraded to the newest version."},{"line_number":71,"context_line":"Until all nodes have been upgraded, the new nodes will still have to run this"},{"line_number":72,"context_line":"code on the Compute node. While annoying, this move is only to help with"},{"line_number":73,"context_line":"faster retries, and as such, should not block any progress. Note this port"},{"line_number":74,"context_line":"update step includes setting the host on the port, and in the future will"},{"line_number":75,"context_line":"be the point an IP is assigned, if the port does not yet have an IP."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"It is useful to update the port bindings in the conductor, so any failure in"},{"line_number":78,"context_line":"the port binding for a specific host can quickly trigger a retry. This is"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_9454abff","line":75,"range":{"start_line":73,"start_character":60,"end_line":75,"end_character":68},"updated":"2016-11-17 13:36:22.000000000","message":"Any issues for Ironic with getting MAC addresses from the host to set on the port?","commit_id":"b8dbd3d0141f337c056b65e104972e706223c1cc"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f832b7dcfecd28219c0538d84a3b888abc6d12be","unresolved":false,"context_lines":[{"line_number":70,"context_line":"this code until all compute nodes have been upgraded to the newest version."},{"line_number":71,"context_line":"Until all nodes have been upgraded, the new nodes will still have to run this"},{"line_number":72,"context_line":"code on the Compute node. While annoying, this move is only to help with"},{"line_number":73,"context_line":"faster retries, and as such, should not block any progress. Note this port"},{"line_number":74,"context_line":"update step includes setting the host on the port, and in the future will"},{"line_number":75,"context_line":"be the point an IP is assigned, if the port does not yet have an IP."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"It is useful to update the port bindings in the conductor, so any failure in"},{"line_number":78,"context_line":"the port binding for a specific host can quickly trigger a retry. This is"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_ca0cba3d","line":75,"range":{"start_line":73,"start_character":60,"end_line":75,"end_character":68},"in_reply_to":"7a77a97e_9454abff","updated":"2016-11-17 18:19:47.000000000","message":"Might need an RPC call for that. Hmm, that kinda sucks. Although there is a spec that stops us having to set the mac address.","commit_id":"b8dbd3d0141f337c056b65e104972e706223c1cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d0264fab4f74a79272e346d35aec85ffae5f1da1","unresolved":false,"context_lines":[{"line_number":70,"context_line":"this code until all compute nodes have been upgraded to the newest version."},{"line_number":71,"context_line":"Until all nodes have been upgraded, the new nodes will still have to run this"},{"line_number":72,"context_line":"code on the Compute node. While annoying, this move is only to help with"},{"line_number":73,"context_line":"faster retries, and as such, should not block any progress. Note this port"},{"line_number":74,"context_line":"update step includes setting the host on the port, and in the future will"},{"line_number":75,"context_line":"be the point an IP is assigned, if the port does not yet have an IP."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"It is useful to update the port bindings in the conductor, so any failure in"},{"line_number":78,"context_line":"the port binding for a specific host can quickly trigger a retry. This is"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_8a32b40e","line":75,"range":{"start_line":73,"start_character":60,"end_line":75,"end_character":68},"in_reply_to":"7a77a97e_ca0cba3d","updated":"2016-11-17 18:29:28.000000000","message":"Yeah I think that\u0027s this blueprint:\n\nhttps://blueprints.launchpad.net/nova/+spec/ironic-plug-unplug-vifs-update","commit_id":"b8dbd3d0141f337c056b65e104972e706223c1cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cca92f2eb10275fd6075c4b2a6799ba14cb240b1","unresolved":false,"context_lines":[{"line_number":82,"context_line":"For nova-network, we can run the existing allocate-for-instance logic in the"},{"line_number":83,"context_line":"conductor, after the scheduler is called. For cells v1 users, this should"},{"line_number":84,"context_line":"correctly be in the child cell conductor. For cells v2 users, it doesn\u0027t"},{"line_number":85,"context_line":"matter that this is in the api conductor."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Alternatives"},{"line_number":88,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_b4a367ff","line":85,"range":{"start_line":85,"start_character":27,"end_line":85,"end_character":40},"updated":"2016-11-17 13:36:22.000000000","message":"Is this assuming https://review.openstack.org/#/c/383419/ ?","commit_id":"b8dbd3d0141f337c056b65e104972e706223c1cc"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f832b7dcfecd28219c0538d84a3b888abc6d12be","unresolved":false,"context_lines":[{"line_number":82,"context_line":"For nova-network, we can run the existing allocate-for-instance logic in the"},{"line_number":83,"context_line":"conductor, after the scheduler is called. For cells v1 users, this should"},{"line_number":84,"context_line":"correctly be in the child cell conductor. For cells v2 users, it doesn\u0027t"},{"line_number":85,"context_line":"matter that this is in the api conductor."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Alternatives"},{"line_number":88,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_8a7ba28b","line":85,"range":{"start_line":85,"start_character":27,"end_line":85,"end_character":40},"in_reply_to":"7a77a97e_b4a367ff","updated":"2016-11-17 18:19:47.000000000","message":"Its kind of independent of that I think. Its more a nova-network is local to each cell in cells v1 discussion.\n\nAt least, the cells v2 plans don\u0027t really change what we would do here, we put the calls either side of the call the scheduler.\n\nActually there probably is a slight change, in that we can\u0027t persist information in the instance in the DB, because it doesn\u0027t really existing","commit_id":"b8dbd3d0141f337c056b65e104972e706223c1cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cca92f2eb10275fd6075c4b2a6799ba14cb240b1","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"To maintain our upgrade promise, we will fall back to the old behaviour for"},{"line_number":145,"context_line":"one cycle to give deployers a warning about the missing credentials. The"},{"line_number":146,"context_line":"following cycle will require the credentials to be resent on nova-conductor."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"Developer impact"},{"line_number":149,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_d4f623f8","line":146,"range":{"start_line":146,"start_character":51,"end_line":146,"end_character":57},"updated":"2016-11-17 13:36:22.000000000","message":"present","commit_id":"b8dbd3d0141f337c056b65e104972e706223c1cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cca92f2eb10275fd6075c4b2a6799ba14cb240b1","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"* Split allocate_for_instance into two functions"},{"line_number":166,"context_line":"* Move create/get port call into the conductor, before calling the scheduler,"},{"line_number":167,"context_line":"  such that allocate_for_instance no longer creates ports, no op for nova-net."},{"line_number":168,"context_line":"  This is likely to be achieved by adding a new method into the network API"},{"line_number":169,"context_line":"  for both neutron and nova-net."},{"line_number":170,"context_line":"* Move the remainder of allocate_for_instance call into conductor, for both"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_d4cd43b8","line":167,"range":{"start_line":167,"start_character":59,"end_line":167,"end_character":77},"updated":"2016-11-17 13:36:22.000000000","message":"Slightly confusing/contradictory as there is a mention earlier of also calling allocate_for_instance for nova-network too. Maybe you just mean the part about creating/updating ports?","commit_id":"b8dbd3d0141f337c056b65e104972e706223c1cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cca92f2eb10275fd6075c4b2a6799ba14cb240b1","unresolved":false,"context_lines":[{"line_number":167,"context_line":"  such that allocate_for_instance no longer creates ports, no op for nova-net."},{"line_number":168,"context_line":"  This is likely to be achieved by adding a new method into the network API"},{"line_number":169,"context_line":"  for both neutron and nova-net."},{"line_number":170,"context_line":"* Move the remainder of allocate_for_instance call into conductor, for both"},{"line_number":171,"context_line":"  nova-net and neutron"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"Dependencies"},{"line_number":174,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_f4d31f02","line":171,"range":{"start_line":170,"start_character":2,"end_line":171,"end_character":22},"updated":"2016-11-17 13:36:22.000000000","message":"OK yeah.","commit_id":"b8dbd3d0141f337c056b65e104972e706223c1cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cca92f2eb10275fd6075c4b2a6799ba14cb240b1","unresolved":false,"context_lines":[{"line_number":173,"context_line":"Dependencies"},{"line_number":174,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Need to describe the transition in the release notes, at a minimum."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"Testing"},{"line_number":179,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_74146f9f","line":176,"updated":"2016-11-17 13:36:22.000000000","message":"I\u0027ve started thinking that we should have release-specific sections of our upgrades docs in the nova devref, because like for newton you need to deploy the placement service at some point and we have docs for that now. To upgrade to ocata you have to have cells v2 setup, the placement service running, and we\u0027ll also now want you to be aware of this change for cells v2 and routed networks. So it seems we need to start putting some more thorough release-specific sections in our devref upgrade docs for things like this that are just too big for a simple release note (and because the release notes get overwhelming).","commit_id":"b8dbd3d0141f337c056b65e104972e706223c1cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cca92f2eb10275fd6075c4b2a6799ba14cb240b1","unresolved":false,"context_lines":[{"line_number":178,"context_line":"Testing"},{"line_number":179,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"Grenade + neutron should ensure the pre-upgrade flow is covered, the regular"},{"line_number":182,"context_line":"gate tests should ensure the post-upgrade flow is covered."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"We should add functional tests to test the re-schedule flow. We might also"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_f46f9f28","line":181,"updated":"2016-11-17 13:36:22.000000000","message":"Yeah good point, with multinode grenade + neutron we\u0027ll have one n-1 newton compute, with gate-grenade-dsvm-neutron (no multinode) we\u0027ll have a full upgrade with a single compute which will test the new flow.","commit_id":"b8dbd3d0141f337c056b65e104972e706223c1cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cca92f2eb10275fd6075c4b2a6799ba14cb240b1","unresolved":false,"context_lines":[{"line_number":188,"context_line":"Documentation Impact"},{"line_number":189,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"None"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"References"},{"line_number":194,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_94674b4c","line":191,"updated":"2016-11-17 13:36:22.000000000","message":"As noted above, I think we should consider release-specific upgrade nodes in our upgrades devref.","commit_id":"b8dbd3d0141f337c056b65e104972e706223c1cc"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f832b7dcfecd28219c0538d84a3b888abc6d12be","unresolved":false,"context_lines":[{"line_number":188,"context_line":"Documentation Impact"},{"line_number":189,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"None"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"References"},{"line_number":194,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_ea9b2864","line":191,"in_reply_to":"7a77a97e_94674b4c","updated":"2016-11-17 18:19:47.000000000","message":"oops, hang on, I put my docs in my dependencies section :S","commit_id":"b8dbd3d0141f337c056b65e104972e706223c1cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cca92f2eb10275fd6075c4b2a6799ba14cb240b1","unresolved":false,"context_lines":[{"line_number":193,"context_line":"References"},{"line_number":194,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"None"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"History"},{"line_number":199,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_b458c78b","line":196,"updated":"2016-11-17 13:36:22.000000000","message":"As noted above, we should reference the routed networks specs for nova and neutron.","commit_id":"b8dbd3d0141f337c056b65e104972e706223c1cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cd295bf1d90c9a714522cfc0f587cc884777afa7","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"To avoid problems across upgrades, the early creating of ports is not allowed"},{"line_number":66,"context_line":"until all nova-compute nodes are upgraded to the version that understands if"},{"line_number":67,"context_line":"a port has been created or not. Once all are upgraded, and credentials are"},{"line_number":68,"context_line":"available on the nova-conductor node, ports will be created before calling the"},{"line_number":69,"context_line":"scheduler."},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_855d4517","line":67,"range":{"start_line":67,"start_character":37,"end_line":67,"end_character":40},"updated":"2016-11-17 18:32:08.000000000","message":"nit: I\u0027d qualify this as \u0027all compute nodes\u0027.","commit_id":"620e13c0abb9815901b145ac17ebac0cb9d47fa5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cd295bf1d90c9a714522cfc0f587cc884777afa7","unresolved":false,"context_lines":[{"line_number":86,"context_line":"conductor, after the scheduler is called. For cells v1 users, this should"},{"line_number":87,"context_line":"correctly be in the child cell conductor, because each cells v1 cell has its"},{"line_number":88,"context_line":"own separate nova-network instance with a different set of IP addresses."},{"line_number":89,"context_line":"(For cells v2 users, the networking is global to the nova deployment, so its"},{"line_number":90,"context_line":"doesn\u0027t matter where that happens.)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_4567ade8","line":89,"range":{"start_line":89,"start_character":73,"end_line":89,"end_character":76},"updated":"2016-11-17 18:32:08.000000000","message":"it","commit_id":"620e13c0abb9815901b145ac17ebac0cb9d47fa5"}]}
