)]}'
{"specs/pike/approved/custom-resource-classes-in-flavors.rst":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6099e1b6396816f02600d42e62cf33ad2838511b","unresolved":false,"context_lines":[{"line_number":91,"context_line":"this resource class, and the node the instance exists on will be schedulable"},{"line_number":92,"context_line":"with new-style flavors."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"For example, let\u0027s say an existing ironic instance has a resource_class of"},{"line_number":95,"context_line":"``CUSTOM_BAREMETAL_GOLD`` which is consumed in the baremetal service but is"},{"line_number":96,"context_line":"not reported as a resource provider allocation in the placement service. If"},{"line_number":97,"context_line":"an operator configures a flavor\u0027s extra_specs and sets"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f1d235d_e04627c1","line":94,"range":{"start_line":94,"start_character":35,"end_line":94,"end_character":71},"updated":"2017-07-07 20:24:37.000000000","message":"This looks a bit controversial to me. What do you mean by \"ironic instance\"? An ironic node? Then the resource class field will be \"baremetal_gold\" (without CUSTOM_ and potentially lower case).","commit_id":"de1e63f4e9b2a08577344d0d98e9f6b08a583120"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a17c16b352b6408510d31ba46840ef5a874e0fb7","unresolved":false,"context_lines":[{"line_number":91,"context_line":"this resource class, and the node the instance exists on will be schedulable"},{"line_number":92,"context_line":"with new-style flavors."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"For example, let\u0027s say an existing ironic instance has a resource_class of"},{"line_number":95,"context_line":"``CUSTOM_BAREMETAL_GOLD`` which is consumed in the baremetal service but is"},{"line_number":96,"context_line":"not reported as a resource provider allocation in the placement service. If"},{"line_number":97,"context_line":"an operator configures a flavor\u0027s extra_specs and sets"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f1d235d_ac1dc974","line":94,"range":{"start_line":94,"start_character":35,"end_line":94,"end_character":71},"in_reply_to":"3f1d235d_403efbda","updated":"2017-07-07 22:59:54.000000000","message":"Well, I\u0027m using nova-speak, so not an ironic node, but a nova instance for an ironic node with the resource_class \u0027baremetal_gold\u0027, yes. Nova turns that into CUSTOM_BAREMETAL_GOLD in the get_inventory() method of the ironic driver in nova and returns that as inventory for the compute node resource provider to placement.","commit_id":"de1e63f4e9b2a08577344d0d98e9f6b08a583120"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"b00d9a91e31f6f0122dad27f4b3837dfa0058aa8","unresolved":false,"context_lines":[{"line_number":91,"context_line":"this resource class, and the node the instance exists on will be schedulable"},{"line_number":92,"context_line":"with new-style flavors."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"For example, let\u0027s say an existing ironic instance has a resource_class of"},{"line_number":95,"context_line":"``CUSTOM_BAREMETAL_GOLD`` which is consumed in the baremetal service but is"},{"line_number":96,"context_line":"not reported as a resource provider allocation in the placement service. If"},{"line_number":97,"context_line":"an operator configures a flavor\u0027s extra_specs and sets"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f1d235d_403efbda","line":94,"range":{"start_line":94,"start_character":35,"end_line":94,"end_character":71},"in_reply_to":"3f1d235d_e04627c1","updated":"2017-07-07 20:36:56.000000000","message":"Yeah, I guess it was meant to be smth like \"existing ironic node has a resource_class \u003cclass\u003e and has an instance running on it, but only standard resource class allocations (memory_mb, vcpus, local_gb) are reported in the placement service\"","commit_id":"de1e63f4e9b2a08577344d0d98e9f6b08a583120"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6099e1b6396816f02600d42e62cf33ad2838511b","unresolved":false,"context_lines":[{"line_number":92,"context_line":"with new-style flavors."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"For example, let\u0027s say an existing ironic instance has a resource_class of"},{"line_number":95,"context_line":"``CUSTOM_BAREMETAL_GOLD`` which is consumed in the baremetal service but is"},{"line_number":96,"context_line":"not reported as a resource provider allocation in the placement service. If"},{"line_number":97,"context_line":"an operator configures a flavor\u0027s extra_specs and sets"},{"line_number":98,"context_line":"``resources:CUSTOM_BAREMETAL_GOLD\u003d1``, the scheduler may pick a node to host"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f1d235d_e01f47b5","line":95,"range":{"start_line":95,"start_character":35,"end_line":95,"end_character":68},"updated":"2017-07-07 20:24:37.000000000","message":"Maybe it\u0027s Friday evening, but it is also not clear to me what you mean by \"consumed in the baremetal service\". If you mean ironic, it does not have any notion of consumption.\n\nPlease feel free to ignore these two comments, if I\u0027m missing some obvious context on Nova.","commit_id":"de1e63f4e9b2a08577344d0d98e9f6b08a583120"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a17c16b352b6408510d31ba46840ef5a874e0fb7","unresolved":false,"context_lines":[{"line_number":92,"context_line":"with new-style flavors."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"For example, let\u0027s say an existing ironic instance has a resource_class of"},{"line_number":95,"context_line":"``CUSTOM_BAREMETAL_GOLD`` which is consumed in the baremetal service but is"},{"line_number":96,"context_line":"not reported as a resource provider allocation in the placement service. If"},{"line_number":97,"context_line":"an operator configures a flavor\u0027s extra_specs and sets"},{"line_number":98,"context_line":"``resources:CUSTOM_BAREMETAL_GOLD\u003d1``, the scheduler may pick a node to host"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f1d235d_0c06fd21","line":95,"range":{"start_line":95,"start_character":35,"end_line":95,"end_character":68},"in_reply_to":"3f1d235d_e01f47b5","updated":"2017-07-07 22:59:54.000000000","message":"There is maybe better wording here, but by consumed I\u0027m talking about a \u0027consumer\u0027 of a provided resource in placement. The consumer is the nova instance, the resource being provided is the custom resource class. If we have an existing nova instance for a node with resource class \u0027baremetal_gold\u0027, then I\u0027m considering that ironic node as \u0027consumed\u0027, i.e. we can\u0027t schedule it again.","commit_id":"de1e63f4e9b2a08577344d0d98e9f6b08a583120"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0fe161228d4351290c8615797580f799425d680a","unresolved":false,"context_lines":[{"line_number":95,"context_line":"``CUSTOM_BAREMETAL_GOLD`` which is consumed in the baremetal service but is"},{"line_number":96,"context_line":"not reported as a resource provider allocation in the placement service. If"},{"line_number":97,"context_line":"an operator configures a flavor\u0027s extra_specs and sets"},{"line_number":98,"context_line":"``resources:CUSTOM_BAREMETAL_GOLD\u003d1``, the scheduler may pick a node to host"},{"line_number":99,"context_line":"build instance but the resource is actually already consumed and would result"},{"line_number":100,"context_line":"in a build failure."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"To resolve this, we need to do two things:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f1d235d_b66ba71d","line":99,"range":{"start_line":98,"start_character":69,"end_line":99,"end_character":14},"updated":"2017-07-13 14:51:18.000000000","message":"s/to host build instance/to host the instance/","commit_id":"de1e63f4e9b2a08577344d0d98e9f6b08a583120"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"f30a408fd76346e6f2379bc44b862638994d4c6e","unresolved":false,"context_lines":[{"line_number":97,"context_line":"an operator configures a flavor\u0027s extra_specs and sets"},{"line_number":98,"context_line":"``resources:CUSTOM_BAREMETAL_GOLD\u003d1``, the scheduler may pick a node to host"},{"line_number":99,"context_line":"build instance but the resource is actually already consumed and would result"},{"line_number":100,"context_line":"in a build failure."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"To resolve this, we need to do two things:"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f1d235d_09d584b7","line":100,"updated":"2017-07-11 14:13:38.000000000","message":"I\u0027m struggling to make any sense of this paragraph. Is the concern with deployed nodes that are granted custom resource classes after they\u0027ve been consumed? So this is as effort to correct the allocations in some way?","commit_id":"de1e63f4e9b2a08577344d0d98e9f6b08a583120"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d67c8f5886e54c5c61a623b26a276048047a4ff3","unresolved":false,"context_lines":[{"line_number":97,"context_line":"an operator configures a flavor\u0027s extra_specs and sets"},{"line_number":98,"context_line":"``resources:CUSTOM_BAREMETAL_GOLD\u003d1``, the scheduler may pick a node to host"},{"line_number":99,"context_line":"build instance but the resource is actually already consumed and would result"},{"line_number":100,"context_line":"in a build failure."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"To resolve this, we need to do two things:"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f1a1f67_573a8798","line":100,"in_reply_to":"1f1a1f67_9da2279a","updated":"2017-07-18 18:18:01.000000000","message":"The ironic node will expose inventory based on the custom resource class, which will cause placement to start offering it up as a suitable provider for any request that includes a new-style flavor asking for that type. The other half of the equation is that we have a bunch of instances today, which are recorded with old-style flavors and do not have allocations specifying the new resource type.\n\nSo, yes, until the numbers are healed, you can\u0027t put the new resource type in the base flavor because otherwise placement will offer up nodes that are already consumed. However, compute nodes coming on with new code will stop offering up CPU/RAM/DISK resources and start offering CUSTOM_IRONIC_SILVER. Old-style base flavors won\u0027t schedule to those.","commit_id":"de1e63f4e9b2a08577344d0d98e9f6b08a583120"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5cb9bad1e33bb4974feaa1a3224402d8bac29a38","unresolved":false,"context_lines":[{"line_number":97,"context_line":"an operator configures a flavor\u0027s extra_specs and sets"},{"line_number":98,"context_line":"``resources:CUSTOM_BAREMETAL_GOLD\u003d1``, the scheduler may pick a node to host"},{"line_number":99,"context_line":"build instance but the resource is actually already consumed and would result"},{"line_number":100,"context_line":"in a build failure."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"To resolve this, we need to do two things:"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f1a1f67_3d9b1373","line":100,"in_reply_to":"3f1d235d_09d584b7","updated":"2017-07-13 02:01:27.000000000","message":"\u003e Is the concern with deployed nodes that are granted custom resource classes after they\u0027ve been consumed? So this is as effort to correct the allocations in some way?\n\nYes, I believe so, because if it\u0027s already consumed but we weren\u0027t accounting for it in allocations in placement for that compute node resource provider, when scheduling with this thing in a flavor, we are going to say, give me compute nodes with CUSTOM_BAREMETAL_GOLD inventory and it will give us back the one that has this inventory, because we say it has the inventory but not that it\u0027s allocated - because we don\u0027t currently track the allocation in the update_available_resource periodic task.","commit_id":"de1e63f4e9b2a08577344d0d98e9f6b08a583120"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"ab44fd9f18f9e90c5a148d6f4a75a63dfb86d4cd","unresolved":false,"context_lines":[{"line_number":97,"context_line":"an operator configures a flavor\u0027s extra_specs and sets"},{"line_number":98,"context_line":"``resources:CUSTOM_BAREMETAL_GOLD\u003d1``, the scheduler may pick a node to host"},{"line_number":99,"context_line":"build instance but the resource is actually already consumed and would result"},{"line_number":100,"context_line":"in a build failure."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"To resolve this, we need to do two things:"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f1d235d_9543daaf","line":100,"in_reply_to":"3f1d235d_09d584b7","updated":"2017-07-11 19:30:03.000000000","message":"How would placement know about this node? IOW, if the request was for a flavor with the above custom resource class in extra_specs, the only way that placement would select that node is if it had already been updated to the \"new-style\" custom RC instead of the \"old-style\" of CPU/RAM/disk. During that update, if the node was in use, an allocation should have been made to account for that. So I\u0027m not sure where this could get out of sync.","commit_id":"de1e63f4e9b2a08577344d0d98e9f6b08a583120"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5cb9bad1e33bb4974feaa1a3224402d8bac29a38","unresolved":false,"context_lines":[{"line_number":97,"context_line":"an operator configures a flavor\u0027s extra_specs and sets"},{"line_number":98,"context_line":"``resources:CUSTOM_BAREMETAL_GOLD\u003d1``, the scheduler may pick a node to host"},{"line_number":99,"context_line":"build instance but the resource is actually already consumed and would result"},{"line_number":100,"context_line":"in a build failure."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"To resolve this, we need to do two things:"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f1a1f67_9da2279a","line":100,"in_reply_to":"3f1d235d_9543daaf","updated":"2017-07-13 02:01:27.000000000","message":"\u003e How would placement know about this node?\n\nIt wouldn\u0027t until we account for it in the allocations for that compute node resource provider, which is the same one that we\u0027re reporting against based on the ironic node for that instance, which has the node.resource_class set.\n\n\u003e the only way that placement would select that node\n\nThe scheduler isn\u0027t accounting for custom resource class overrides in the flavors in Ocata, or until the operator adjusts their flavor extra specs, right? So they could \u0027consume\u0027 the node with the resource class wholly by accident, just because it had available inventory.\n\nIf I\u0027m getting this wrong, or misunderstanding, we need to loop in Jay and/or Dan.","commit_id":"de1e63f4e9b2a08577344d0d98e9f6b08a583120"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"53fe1df698eaf6b0d551be031a894aabe1ce642f","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"1. We\u0027ll need to check each existing instance at Pike startup, in the driver"},{"line_number":105,"context_line":"   layer. If the ironic node that the instance exists on has a resource class"},{"line_number":106,"context_line":"   defined, we add the custom resource class to ``instance.flavor``."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"2. When updating instance allocations in the ``update_available_resource``"},{"line_number":109,"context_line":"   periodic task in the nova-compute service, the scheduler report client will"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f1d235d_56a8d375","line":106,"range":{"start_line":106,"start_character":12,"end_line":106,"end_character":68},"updated":"2017-07-10 19:43:09.000000000","message":"What exactly does it mean to add to the flavor? Are we modifying the instance.flavor.extra_specs field to include the proper key? Are we also zeroing out CPU/RAM/disk amounts, as in https://review.openstack.org/#/c/473627/11//COMMIT_MSG@13 ?","commit_id":"de1e63f4e9b2a08577344d0d98e9f6b08a583120"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e5625ac172f87773c706c4777b377e06a0552512","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"1. We\u0027ll need to check each existing instance at Pike startup, in the driver"},{"line_number":105,"context_line":"   layer. If the ironic node that the instance exists on has a resource class"},{"line_number":106,"context_line":"   defined, we add the custom resource class to ``instance.flavor``."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"2. When updating instance allocations in the ``update_available_resource``"},{"line_number":109,"context_line":"   periodic task in the nova-compute service, the scheduler report client will"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ff346bd7_6004334b","line":106,"range":{"start_line":106,"start_character":12,"end_line":106,"end_character":68},"in_reply_to":"1f1a1f67_976c9f9c","updated":"2017-07-25 09:26:29.000000000","message":"I see the explanation (but I\u0027m French so I suck in wording) as :\n- in Pike, we count old-style using RAM/CPU/disk\n- in Queens, we count new-style with custom RCs provided by flavors.\n\nThat said, there is a specific upgrade concern for instances that were old-style and require new-style when the upgrade is done, and that\u0027s why we do the instance check at the compute service startup.\n\nWhen computes will start running Queens code, we necessarly need to set nested flavors of existing instances to have 0 sums for DISK/RAM/CPU IMHO.\n\nCould we clarify that as the 3rd necessary step if we agree ?","commit_id":"de1e63f4e9b2a08577344d0d98e9f6b08a583120"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d67c8f5886e54c5c61a623b26a276048047a4ff3","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"1. We\u0027ll need to check each existing instance at Pike startup, in the driver"},{"line_number":105,"context_line":"   layer. If the ironic node that the instance exists on has a resource class"},{"line_number":106,"context_line":"   defined, we add the custom resource class to ``instance.flavor``."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"2. When updating instance allocations in the ``update_available_resource``"},{"line_number":109,"context_line":"   periodic task in the nova-compute service, the scheduler report client will"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f1a1f67_976c9f9c","line":106,"range":{"start_line":106,"start_character":12,"end_line":106,"end_character":68},"in_reply_to":"1f1a1f67_bdba83db","updated":"2017-07-18 18:18:01.000000000","message":"We have to heal the existing instances and their stored flavors per above yes. That means adding the custom type to extra specs, and potentially requesting none of the other types of resources, either in overrides or by modifying the base flavor (I think the former is better).","commit_id":"de1e63f4e9b2a08577344d0d98e9f6b08a583120"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5cb9bad1e33bb4974feaa1a3224402d8bac29a38","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"1. We\u0027ll need to check each existing instance at Pike startup, in the driver"},{"line_number":105,"context_line":"   layer. If the ironic node that the instance exists on has a resource class"},{"line_number":106,"context_line":"   defined, we add the custom resource class to ``instance.flavor``."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"2. When updating instance allocations in the ``update_available_resource``"},{"line_number":109,"context_line":"   periodic task in the nova-compute service, the scheduler report client will"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f1a1f67_bdba83db","line":106,"range":{"start_line":106,"start_character":12,"end_line":106,"end_character":68},"in_reply_to":"3f1d235d_56a8d375","updated":"2017-07-13 02:01:27.000000000","message":"\u003e Are we modifying the instance.flavor.extra_specs field to include the proper key?\n\nI think so, yes. What the value is, I\u0027m not sure. We need to talk to Jay and Dan.","commit_id":"de1e63f4e9b2a08577344d0d98e9f6b08a583120"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"b00d9a91e31f6f0122dad27f4b3837dfa0058aa8","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"2. When updating instance allocations in the ``update_available_resource``"},{"line_number":109,"context_line":"   periodic task in the nova-compute service, the scheduler report client will"},{"line_number":110,"context_line":"   need to check for custom resource classes on the ``instance.flavor`` and"},{"line_number":111,"context_line":"   report those into the placement service."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f1d235d_00092330","line":110,"updated":"2017-07-07 20:36:56.000000000","message":"is it going to remove the old allocations or only add the one for custom resource class?","commit_id":"de1e63f4e9b2a08577344d0d98e9f6b08a583120"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a17c16b352b6408510d31ba46840ef5a874e0fb7","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"2. When updating instance allocations in the ``update_available_resource``"},{"line_number":109,"context_line":"   periodic task in the nova-compute service, the scheduler report client will"},{"line_number":110,"context_line":"   need to check for custom resource classes on the ``instance.flavor`` and"},{"line_number":111,"context_line":"   report those into the placement service."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f1d235d_4f6867b9","line":110,"in_reply_to":"3f1d235d_00092330","updated":"2017-07-07 22:59:54.000000000","message":"It overwrites the allocations in placement based on what\u0027s calculated from the instance, or that\u0027s my understanding anyway:\n\nhttps://github.com/openstack/nova/blob/dcea3ff68793a28cd546805ebcb2c0ae6c9b684d/nova/scheduler/client/report.py#L873\n\nIt\u0027s not very clear though from the placement handler code, or the docs:\n\nhttps://review.openstack.org/#/c/470933/","commit_id":"de1e63f4e9b2a08577344d0d98e9f6b08a583120"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b4db3425cce759c06f0fc6912f7dd5dccfd290a","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"2. When updating instance allocations in the ``update_available_resource``"},{"line_number":109,"context_line":"   periodic task in the nova-compute service, the scheduler report client will"},{"line_number":110,"context_line":"   need to check for custom resource classes on the ``instance.flavor`` and"},{"line_number":111,"context_line":"   report those into the placement service."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f1d235d_af87fb61","line":110,"in_reply_to":"3f1d235d_4f6867b9","updated":"2017-07-07 23:03:15.000000000","message":"Found it:\n\nhttps://github.com/openstack/nova/blob/dcea3ff68793a28cd546805ebcb2c0ae6c9b684d/nova/objects/resource_provider.py#L1810\n\nIt\u0027s a complete overwrite/replacement for each PUT /allocations request. All existing allocations for the given resource provider and consumer are deleted and then the new allocations are inserted.","commit_id":"de1e63f4e9b2a08577344d0d98e9f6b08a583120"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e5625ac172f87773c706c4777b377e06a0552512","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"2. When updating instance allocations in the ``update_available_resource``"},{"line_number":109,"context_line":"   periodic task in the nova-compute service, the scheduler report client will"},{"line_number":110,"context_line":"   need to check for custom resource classes on the ``instance.flavor`` and"},{"line_number":111,"context_line":"   report those into the placement service."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ff346bd7_20498bcf","line":110,"in_reply_to":"3f1d235d_af87fb61","updated":"2017-07-25 09:26:29.000000000","message":"Correct, allocations for the same consumer UUID are always new. That\u0027s also why we can implement the scheduler-claims series because the last caller wins.","commit_id":"de1e63f4e9b2a08577344d0d98e9f6b08a583120"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e5af134f3ee705f06ed8588c5ac28f603fe6d2ac","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"To resolve this, we need to do two things:"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"1. We\u0027ll need to check each existing instance at Pike startup, in the driver"},{"line_number":106,"context_line":"   layer. If the ironic node that the instance exists on has a resource class"},{"line_number":107,"context_line":"   defined, we add the custom resource class to ``instance.flavor``."},{"line_number":108,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"df3967d1_dc5d9979","line":105,"updated":"2017-08-04 12:28:43.000000000","message":"Why only Pike start up? Resource classes are not mandatory still, so it may happen that the operators will add resource classes only on upgrade to Queens..","commit_id":"a4d1faea9ee0e9ec3c70e7d1836c5c1094285d76"}]}
