)]}'
{"specs/newton/approved/compute-node-inventory-newton.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"28a56e86972adaae7d5153d68dc27160373660fe","unresolved":false,"context_lines":[{"line_number":148,"context_line":"object. We propose having a method called `_migrate_inventory()` that handles"},{"line_number":149,"context_line":"the data migration steps that is called on `_from_db_object()` when certain"},{"line_number":150,"context_line":"conditions are found to be in place (for instance, the compute node doesn\u0027t"},{"line_number":151,"context_line":"have a UUID field value). The `_migrate_inventory()` method should be a"},{"line_number":152,"context_line":"use a single database transaction to ensure all DB writes are done atomically"},{"line_number":153,"context_line":"and it should first check to ensure that all API and conductor nodes have been"},{"line_number":154,"context_line":"upgraded to a version that can support the migration."},{"line_number":155,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_38225e02","line":152,"range":{"start_line":151,"start_character":60,"end_line":152,"end_character":12},"updated":"2016-04-02 01:32:14.000000000","message":"\u0027should use a single...\u0027\n\nDrop \u0027be a\u0027.","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"daad90239af5829062f89a07d2ef562222e6b7b1","unresolved":false,"context_lines":[{"line_number":149,"context_line":"the data migration steps that is called on `_from_db_object()` when certain"},{"line_number":150,"context_line":"conditions are found to be in place (for instance, the compute node doesn\u0027t"},{"line_number":151,"context_line":"have a UUID field value). The `_migrate_inventory()` method should be a"},{"line_number":152,"context_line":"use a single database transaction to ensure all DB writes are done atomically"},{"line_number":153,"context_line":"and it should first check to ensure that all API and conductor nodes have been"},{"line_number":154,"context_line":"upgraded to a version that can support the migration."},{"line_number":155,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a061dce_e655d9c6","line":152,"updated":"2016-04-04 15:55:47.000000000","message":"done.","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"03d3355df7a8baeb42985a15d576cb30fa377663","unresolved":false,"context_lines":[{"line_number":154,"context_line":"upgraded to a version that can support the migration."},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"2) Compute nodes that have no `uuid` field set should have a new random UUID"},{"line_number":157,"context_line":"generated on-demand."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"3) A record must be added to the `resource_providers` table for each compute"},{"line_number":160,"context_line":"node::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_fc192f23","line":157,"updated":"2016-04-01 00:26:24.000000000","message":"I know that this is all just copied from the original spec, but the above two things are done in Mitaka and enforced by migration in newton. You could just remove both of these and shorten things up a bit.","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"daad90239af5829062f89a07d2ef562222e6b7b1","unresolved":false,"context_lines":[{"line_number":154,"context_line":"upgraded to a version that can support the migration."},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"2) Compute nodes that have no `uuid` field set should have a new random UUID"},{"line_number":157,"context_line":"generated on-demand."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"3) A record must be added to the `resource_providers` table for each compute"},{"line_number":160,"context_line":"node::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a061dce_c65255dd","line":157,"updated":"2016-04-04 15:55:47.000000000","message":"done (marked complete but kept in spec)","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"28a56e86972adaae7d5153d68dc27160373660fe","unresolved":false,"context_lines":[{"line_number":154,"context_line":"upgraded to a version that can support the migration."},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"2) Compute nodes that have no `uuid` field set should have a new random UUID"},{"line_number":157,"context_line":"generated on-demand."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"3) A record must be added to the `resource_providers` table for each compute"},{"line_number":160,"context_line":"node::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_7845f6b1","line":157,"in_reply_to":"ba0121b8_fc192f23","updated":"2016-04-02 01:32:14.000000000","message":"I like having the full story in here, but we could mark some items as (completed in Mitaka) or something, as people have been doing in other re-proposed specs that were partially implemented.","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"28a56e86972adaae7d5153d68dc27160373660fe","unresolved":false,"context_lines":[{"line_number":198,"context_line":"for the ephemeral disks."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"4c) For the PCI device resource classes (`PCI_GENERIC`, `PCI_SRIOV_PF` and"},{"line_number":201,"context_line":"`PCI_SRIOV_VF`, the inventories table records represent the class of"},{"line_number":202,"context_line":"resources as a whole, not, for example, individual VFs on an SR-IOV-enabled"},{"line_number":203,"context_line":"NIC PF. As such, a single record representing the total amount of each PCI"},{"line_number":204,"context_line":"resource class would be added to the inventories table for each compute"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_180b1a7f","line":201,"range":{"start_line":201,"start_character":13,"end_line":201,"end_character":15},"updated":"2016-04-02 01:32:14.000000000","message":"Missing a closing ) here.","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"daad90239af5829062f89a07d2ef562222e6b7b1","unresolved":false,"context_lines":[{"line_number":198,"context_line":"for the ephemeral disks."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"4c) For the PCI device resource classes (`PCI_GENERIC`, `PCI_SRIOV_PF` and"},{"line_number":201,"context_line":"`PCI_SRIOV_VF`, the inventories table records represent the class of"},{"line_number":202,"context_line":"resources as a whole, not, for example, individual VFs on an SR-IOV-enabled"},{"line_number":203,"context_line":"NIC PF. As such, a single record representing the total amount of each PCI"},{"line_number":204,"context_line":"resource class would be added to the inventories table for each compute"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a061dce_265eb1e9","line":201,"updated":"2016-04-04 15:55:47.000000000","message":"done.","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"daad90239af5829062f89a07d2ef562222e6b7b1","unresolved":false,"context_lines":[{"line_number":207,"context_line":"For example, let us assume that a compute node has one SR-IOV-enabled NIC,"},{"line_number":208,"context_line":"supporting 255 virtual functions (VFs) and not exposing the physical"},{"line_number":209,"context_line":"function (PF) for use by a cloud user. We want to limit the number of VFs"},{"line_number":210,"context_line":"that any single instance can consume to 8."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"We would insert the following into the inventories table::"},{"line_number":213,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a061dce_0663adb2","line":210,"updated":"2016-04-04 15:55:47.000000000","message":"@moshele: The inventories record for the compute node resource provider\u0027s PCI_SRIOV_VF resource class would have a total amount of 30, a min_unit of 1 and a max_unit of 20. The resource class is PCI_SRIOV_VF. There is no qualification of physical network in the inventories table. It is strictly quantitative at the moment. The qualitative part of the equation (such as your example of the launch requesting a particular physical network) would be evaluated on the compute node itself and could trigger a retry operation.","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"485602ca165b80704b0947492f1075fbced2bdd2","unresolved":false,"context_lines":[{"line_number":204,"context_line":"resource class would be added to the inventories table for each compute"},{"line_number":205,"context_line":"node that has PCI devices."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"For example, let us assume that a compute node has one SR-IOV-enabled NIC,"},{"line_number":208,"context_line":"supporting 255 virtual functions (VFs) and not exposing the physical"},{"line_number":209,"context_line":"function (PF) for use by a cloud user. We want to limit the number of VFs"},{"line_number":210,"context_line":"that any single instance can consume to 8."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"We would insert the following into the inventories table::"},{"line_number":213,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_e5194f24","line":210,"range":{"start_line":207,"start_character":0,"end_line":210,"end_character":42},"updated":"2016-04-03 13:39:59.000000000","message":"where do you take into account the physnet?\nfor example let say we have computeA which has 10 VF on physnet1 and 20 VF on physnet2 and the user want to boot a vm on network which happens to be on physnet2.\nhow will that work? what will be the resource provider in such case?","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"dd95a35e012cc067f71c12794a527d2086de4ded","unresolved":false,"context_lines":[{"line_number":207,"context_line":"For example, let us assume that a compute node has one SR-IOV-enabled NIC,"},{"line_number":208,"context_line":"supporting 255 virtual functions (VFs) and not exposing the physical"},{"line_number":209,"context_line":"function (PF) for use by a cloud user. We want to limit the number of VFs"},{"line_number":210,"context_line":"that any single instance can consume to 8."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"We would insert the following into the inventories table::"},{"line_number":213,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a061dce_616d3304","line":210,"in_reply_to":"9a061dce_0663adb2","updated":"2016-04-04 16:18:13.000000000","message":"ok but today nova scheduler know the physnet of the Virtual function in the in the tags of the pci_device_pool https://github.com/openstack/nova/blob/master/nova/objects/pci_device_pool.py#L37 and with change it will have to reschedule until it will (or not) fine compute so it not deterministic behavior of the scheduler.","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"daad90239af5829062f89a07d2ef562222e6b7b1","unresolved":false,"context_lines":[{"line_number":241,"context_line":"constraints and the total value to the combined number of the resource. So,"},{"line_number":242,"context_line":"for instance, for the `NUMA_CORES`, we\u0027d set total to 8 (2 sockets having 4"},{"line_number":243,"context_line":"cores each), min_unit to 1, and max_unit to 4 (since each cell has 4 cores)."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":".. note::"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    In the following release from when this code merges, we will do a followup"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a061dce_6658a9fb","line":244,"updated":"2016-04-04 15:55:47.000000000","message":"No, I don\u0027t have any concerns about this. It\u0027s only done once and especially for the inventories table, it\u0027s not a lot of information at all.","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"28a56e86972adaae7d5153d68dc27160373660fe","unresolved":false,"context_lines":[{"line_number":241,"context_line":"constraints and the total value to the combined number of the resource. So,"},{"line_number":242,"context_line":"for instance, for the `NUMA_CORES`, we\u0027d set total to 8 (2 sockets having 4"},{"line_number":243,"context_line":"cores each), min_unit to 1, and max_unit to 4 (since each cell has 4 cores)."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":".. note::"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    In the following release from when this code merges, we will do a followup"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_f88626da","line":244,"updated":"2016-04-02 01:32:14.000000000","message":"The above migrations sound good, but seems like a lot of stuff to be doing in a single access of the ComputeNode record from the database. Do we have any concerns about this taking so long that it could cause issues, like RPC timeouts if we\u0027re migrating a lot of information?","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"28a56e86972adaae7d5153d68dc27160373660fe","unresolved":false,"context_lines":[{"line_number":244,"context_line":""},{"line_number":245,"context_line":".. note::"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    In the following release from when this code merges, we will do a followup"},{"line_number":248,"context_line":"    patch that makes the UUID column non-nullable and adds a unique constraint"},{"line_number":249,"context_line":"    on the compute_nodes.uuid column."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Changes to `ComputeNode` object model"},{"line_number":252,"context_line":"-------------------------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_781cd6c1","line":249,"range":{"start_line":247,"start_character":4,"end_line":249,"end_character":37},"updated":"2016-04-02 01:32:14.000000000","message":"I\u0027m assuming as part of this migration you\u0027d automatically update any records that haven\u0027t been migrated yet and have a uuid value set? Or would that be part of our \u0027block at the beginning of the release\u0027 migration that halts you from upgrading until you\u0027ve done the migrations (via the nova-manage db online_data_migration CLI)?","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"daad90239af5829062f89a07d2ef562222e6b7b1","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    In the following release from when this code merges, we will do a followup"},{"line_number":248,"context_line":"    patch that makes the UUID column non-nullable and adds a unique constraint"},{"line_number":249,"context_line":"    on the compute_nodes.uuid column."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Changes to `ComputeNode` object model"},{"line_number":252,"context_line":"-------------------------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a061dce_465da5e8","line":249,"updated":"2016-04-04 15:55:47.000000000","message":"Matt, that is part of the \"block upgrade until X data migration has occurred\" thing.","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"03d3355df7a8baeb42985a15d576cb30fa377663","unresolved":false,"context_lines":[{"line_number":282,"context_line":""},{"line_number":283,"context_line":".. note::"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    The resource tracker should be changed to only save capacity information to"},{"line_number":286,"context_line":"    the inventory table, but **only** if all conductor and API nodes have been"},{"line_number":287,"context_line":"    upgraded to a version that supports the new inventory schema."},{"line_number":288,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_9ce5930a","line":285,"updated":"2016-04-01 00:26:24.000000000","message":"Just to be clear, the resource tracker doesn\u0027t know about any of this (AFAIK), it\u0027s all in the object.","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"daad90239af5829062f89a07d2ef562222e6b7b1","unresolved":false,"context_lines":[{"line_number":282,"context_line":""},{"line_number":283,"context_line":".. note::"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    The resource tracker should be changed to only save capacity information to"},{"line_number":286,"context_line":"    the inventory table, but **only** if all conductor and API nodes have been"},{"line_number":287,"context_line":"    upgraded to a version that supports the new inventory schema."},{"line_number":288,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a061dce_a672c17a","line":285,"updated":"2016-04-04 15:55:47.000000000","message":"Yes, sorry, fixed.","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"28a56e86972adaae7d5153d68dc27160373660fe","unresolved":false,"context_lines":[{"line_number":289,"context_line":"Alternatives"},{"line_number":290,"context_line":"------------"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"This is step 3 in an irreversible process that completely changes that way that"},{"line_number":293,"context_line":"quantitative things are tracked and claimed in Nova."},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_98760a05","line":292,"range":{"start_line":292,"start_character":66,"end_line":292,"end_character":70},"updated":"2016-04-02 01:32:14.000000000","message":"the","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"28a56e86972adaae7d5153d68dc27160373660fe","unresolved":false,"context_lines":[{"line_number":290,"context_line":"------------"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"This is step 3 in an irreversible process that completely changes that way that"},{"line_number":293,"context_line":"quantitative things are tracked and claimed in Nova."},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"Data model impact"},{"line_number":296,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_78733616","line":293,"updated":"2016-04-02 01:32:14.000000000","message":"So there is no going back, is what I think you\u0027re trying to say here. :) Could prefix with \"None; TS!\".","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"03d3355df7a8baeb42985a15d576cb30fa377663","unresolved":false,"context_lines":[{"line_number":295,"context_line":"Data model impact"},{"line_number":296,"context_line":"-----------------"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"The `compute_nodes` table will get a new column called `uuid`."},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"No other database schema changes will be required by this blueprint. The work"},{"line_number":301,"context_line":"in this blueprint only populates the `inventories` table that is created in the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_dceb8bda","line":298,"updated":"2016-04-01 00:26:24.000000000","message":"Already has..","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"daad90239af5829062f89a07d2ef562222e6b7b1","unresolved":false,"context_lines":[{"line_number":295,"context_line":"Data model impact"},{"line_number":296,"context_line":"-----------------"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"The `compute_nodes` table will get a new column called `uuid`."},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"No other database schema changes will be required by this blueprint. The work"},{"line_number":301,"context_line":"in this blueprint only populates the `inventories` table that is created in the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a061dce_866fbd91","line":298,"updated":"2016-04-04 15:55:47.000000000","message":"done.","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"28a56e86972adaae7d5153d68dc27160373660fe","unresolved":false,"context_lines":[{"line_number":324,"context_line":"Performance Impact"},{"line_number":325,"context_line":"------------------"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"None."},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"Other deployer impact"},{"line_number":330,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_5853d26c","line":327,"updated":"2016-04-02 01:32:14.000000000","message":"Same question here about how long we think it\u0027s going to take to migrate all of that data (1-4 above) in a single get of the ComputeNode object.","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"28a56e86972adaae7d5153d68dc27160373660fe","unresolved":false,"context_lines":[{"line_number":329,"context_line":"Other deployer impact"},{"line_number":330,"context_line":"---------------------"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"There will be a database schema migration needed that adds the `uuid` column to"},{"line_number":333,"context_line":"the `compute_nodes` table."},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_38509e5e","line":332,"updated":"2016-04-02 01:32:14.000000000","message":"This is already done in Mitaka right? We could note that for clarity.","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"03d3355df7a8baeb42985a15d576cb30fa377663","unresolved":false,"context_lines":[{"line_number":359,"context_line":"  `compute_nodes` table"},{"line_number":360,"context_line":"* Modify `nova.objects.ComputeNode.create()` to populate the `uuid` attribute"},{"line_number":361,"context_line":"  of the compute node, insert a record into the `resource_providers` table and"},{"line_number":362,"context_line":"  add any inventory/capacity fields to the `inventories` table."},{"line_number":363,"context_line":"* Add a `nova.objects.ComputeNode._migrate_inventory()` method to migrate the"},{"line_number":364,"context_line":"  inventory/capacity fields from `compute_nodes` to `inventories` and populate"},{"line_number":365,"context_line":"  `uuid` column value if it is None, as it would be if an older `nova-compute`"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_1cc0634f","line":362,"updated":"2016-04-01 00:26:24.000000000","message":"These are already done.","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"daad90239af5829062f89a07d2ef562222e6b7b1","unresolved":false,"context_lines":[{"line_number":383,"context_line":"Testing"},{"line_number":384,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"Full unit, functional, and integration testing of the"},{"line_number":387,"context_line":"`ComputeNode._migrate_inventory()` method that performs the data migration"},{"line_number":388,"context_line":"itself."},{"line_number":389,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a061dce_e66cb99e","line":386,"updated":"2016-04-04 15:55:47.000000000","message":"No, I was really referring to functional testing of the data migrations within the Nova tree...","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"28a56e86972adaae7d5153d68dc27160373660fe","unresolved":false,"context_lines":[{"line_number":383,"context_line":"Testing"},{"line_number":384,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"Full unit, functional, and integration testing of the"},{"line_number":387,"context_line":"`ComputeNode._migrate_inventory()` method that performs the data migration"},{"line_number":388,"context_line":"itself."},{"line_number":389,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_784a16ae","line":386,"range":{"start_line":386,"start_character":27,"end_line":386,"end_character":38},"updated":"2016-04-02 01:32:14.000000000","message":"What is this? Tempest? Tempest won\u0027t have any idea about this since there is no REST API for it (well, except I guess any REST API that hit the compute nodes table).","commit_id":"806942e0bceeb19209a31eb778aac1aef227a650"}]}
