)]}'
{"specs/pike/approved/placement-project-user.rst":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"803ff5d0f892aef244356aff0dd0424626747839","unresolved":false,"context_lines":[{"line_number":157,"context_line":"Other deployer impact"},{"line_number":158,"context_line":"---------------------"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"Deployers must be aware of the ````nova-manage```` command that will perform"},{"line_number":161,"context_line":"one time data migration to populate the ``consumers`` table from existing"},{"line_number":162,"context_line":"``allocations`` records."},{"line_number":163,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"bff0334d_72a2c04d","line":160,"updated":"2017-04-06 21:18:56.000000000","message":"overzealous search and replace here?","commit_id":"ea77fc44e44620712da987dabe5c49ae8146e8c4"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"341299fdc339b0d6b71f88859caef09057c6aee7","unresolved":false,"context_lines":[{"line_number":157,"context_line":"Other deployer impact"},{"line_number":158,"context_line":"---------------------"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"Deployers must be aware of the ````nova-manage```` command that will perform"},{"line_number":161,"context_line":"one time data migration to populate the ``consumers`` table from existing"},{"line_number":162,"context_line":"``allocations`` records."},{"line_number":163,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"bff0334d_0db9192d","line":160,"in_reply_to":"bff0334d_72a2c04d","updated":"2017-04-06 21:27:27.000000000","message":"Dangit. Thanks.","commit_id":"ea77fc44e44620712da987dabe5c49ae8146e8c4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"8520c4b59c137cfd02c7f026dd65458617364093","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        project_id VARCHAR(255) NOT NULL,"},{"line_number":64,"context_line":"        user_id VARCHAR(255) NOT NULL,"},{"line_number":65,"context_line":"        INDEX (project_id, consumer_id),"},{"line_number":66,"context_line":"        INDEX (project_id, user_id, consumer_id)"},{"line_number":67,"context_line":"    );"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"The records should have the same lifetime as ``allocations`` records."}],"source_content_type":"text/x-rst","patch_set":2,"id":"bff0334d_1397a13c","line":66,"updated":"2017-04-10 15:49:47.000000000","message":"++","commit_id":"ec17263bb0ab76fb8f3e40167324204c763a6221"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"30bc5b58f5a505ef758be4f1039dab309574ea69","unresolved":false,"context_lines":[{"line_number":104,"context_line":"REST API impact"},{"line_number":105,"context_line":"---------------"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"A new endpoint ``/usages`` will be added and the GET method will accept query"},{"line_number":108,"context_line":"strings in the URI called \u0027project_id\u0027 and \u0027user_id\u0027 that will return a list of"},{"line_number":109,"context_line":"usages matching the project_id and user_id. The addition of the endpoint will"},{"line_number":110,"context_line":"require a new placement API microversion."}],"source_content_type":"text/x-rst","patch_set":2,"id":"bff0334d_b43703b1","line":107,"range":{"start_line":107,"start_character":6,"end_line":107,"end_character":14},"updated":"2017-04-07 08:27:08.000000000","message":"technically, it\u0027s a REST resource, not an endpoint but meh.","commit_id":"ec17263bb0ab76fb8f3e40167324204c763a6221"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"30bc5b58f5a505ef758be4f1039dab309574ea69","unresolved":false,"context_lines":[{"line_number":105,"context_line":"---------------"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"A new endpoint ``/usages`` will be added and the GET method will accept query"},{"line_number":108,"context_line":"strings in the URI called \u0027project_id\u0027 and \u0027user_id\u0027 that will return a list of"},{"line_number":109,"context_line":"usages matching the project_id and user_id. The addition of the endpoint will"},{"line_number":110,"context_line":"require a new placement API microversion."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Example::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bff0334d_d41607f2","line":109,"range":{"start_line":108,"start_character":72,"end_line":109,"end_character":42},"updated":"2017-04-07 08:27:08.000000000","message":"so I suppose the usage for a specific user_id or project_id is the sum of allocations that match that attribute grouped by resource classes ?\n\ncould you please make it explicit ?","commit_id":"ec17263bb0ab76fb8f3e40167324204c763a6221"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"834889916659639d7f335e313f12e647bd0c1817","unresolved":false,"context_lines":[{"line_number":105,"context_line":"---------------"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"A new endpoint ``/usages`` will be added and the GET method will accept query"},{"line_number":108,"context_line":"strings in the URI called \u0027project_id\u0027 and \u0027user_id\u0027 that will return a list of"},{"line_number":109,"context_line":"usages matching the project_id and user_id. The addition of the endpoint will"},{"line_number":110,"context_line":"require a new placement API microversion."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Example::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bff0334d_c93ae532","line":109,"range":{"start_line":108,"start_character":72,"end_line":109,"end_character":42},"in_reply_to":"bff0334d_d41607f2","updated":"2017-04-07 14:33:41.000000000","message":"Sure","commit_id":"ec17263bb0ab76fb8f3e40167324204c763a6221"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"8520c4b59c137cfd02c7f026dd65458617364093","unresolved":false,"context_lines":[{"line_number":185,"context_line":"  https://bugs.launchpad.net/nova/+bug/1679750"},{"line_number":186,"context_line":"* Create database migration that creates the ``consumers`` table"},{"line_number":187,"context_line":"* Update AllocationList object to read/write the ``consumers`` table"},{"line_number":188,"context_line":"* Add a new endpoint ``/usages`` for the placement REST API to query usages by"},{"line_number":189,"context_line":"  project_id and user_id"},{"line_number":190,"context_line":"* Add online data migration that pulls all ``allocations`` records and for each"},{"line_number":191,"context_line":"  allocation, look up the instance via consumer_id and write its consumer to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bff0334d_d36ed92d","line":188,"range":{"start_line":188,"start_character":12,"end_line":188,"end_character":20},"updated":"2017-04-10 15:49:47.000000000","message":"s/endpoint/REST resource/","commit_id":"ec17263bb0ab76fb8f3e40167324204c763a6221"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"c02117c68bf80d4ecbeae6968a0c2079861ed0d5","unresolved":false,"context_lines":[{"line_number":179,"context_line":"          \"type\": \"string\""},{"line_number":180,"context_line":"        },"},{"line_number":181,"context_line":"        \"user_id\": {"},{"line_number":182,"context_line":"          \"type\": \"string\""},{"line_number":183,"context_line":"        }"},{"line_number":184,"context_line":"      },"},{"line_number":185,"context_line":"      \"required\": ["}],"source_content_type":"text/x-rst","patch_set":4,"id":"bff0334d_ec2574c3","line":182,"updated":"2017-04-10 22:33:36.000000000","message":"I wasn\u0027t sure whether to specify anything more about these such as:\n\n \u0027type\u0027: \u0027string\u0027, \u0027minLength\u0027: 1, \u0027maxLength\u0027: 255\n\nIt doesn\u0027t seem consistent in the existing schemas for project_id and user_id.\n\n[1] https://github.com/openstack/nova/blob/4f91ed3/nova/api/openstack/compute/schemas/flavor_access.py#L23","commit_id":"21dd6d52b319ca2af9208edd068330bf25b565cd"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"3f22fa89f78e89014bdf2c833e7142da2918a1fe","unresolved":false,"context_lines":[{"line_number":179,"context_line":"          \"type\": \"string\""},{"line_number":180,"context_line":"        },"},{"line_number":181,"context_line":"        \"user_id\": {"},{"line_number":182,"context_line":"          \"type\": \"string\""},{"line_number":183,"context_line":"        }"},{"line_number":184,"context_line":"      },"},{"line_number":185,"context_line":"      \"required\": ["}],"source_content_type":"text/x-rst","patch_set":4,"id":"bff0334d_1df66764","line":182,"in_reply_to":"bff0334d_3975ca64","updated":"2017-04-11 16:21:53.000000000","message":"Okay. They are uuids in practice, but technically not guaranteed to be, probably from back when openstack was meant to be able to support auth services other than keystone (I think ...).","commit_id":"21dd6d52b319ca2af9208edd068330bf25b565cd"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"ffaf806c6d38400c4c7a99357b3b3993ff3176d6","unresolved":false,"context_lines":[{"line_number":179,"context_line":"          \"type\": \"string\""},{"line_number":180,"context_line":"        },"},{"line_number":181,"context_line":"        \"user_id\": {"},{"line_number":182,"context_line":"          \"type\": \"string\""},{"line_number":183,"context_line":"        }"},{"line_number":184,"context_line":"      },"},{"line_number":185,"context_line":"      \"required\": ["}],"source_content_type":"text/x-rst","patch_set":4,"id":"bff0334d_3975ca64","line":182,"in_reply_to":"bff0334d_ec2574c3","updated":"2017-04-11 10:37:41.000000000","message":"If we\u0027re having limits in the database table we may as well reflect those limits in the schema, so we can catch issues as early as possible. So I\u0027d say, yeah, both minLength and maxLength.\n\nIt\u0027s a shame it\u0027s not a uuid, but it\u0027s not, so oh well.","commit_id":"21dd6d52b319ca2af9208edd068330bf25b565cd"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1f4a1d41008fc6cbe63f8a4954744abf48845be6","unresolved":false,"context_lines":[{"line_number":32,"context_line":"such as cores and ram must be counted by querying for instances owned by"},{"line_number":33,"context_line":"a project in all cells and summing their cores and ram. The counts could"},{"line_number":34,"context_line":"be more efficiently obtained if placement stored project/user associations"},{"line_number":35,"context_line":"for resource consumers and we could query placement for allocations based"},{"line_number":36,"context_line":"on project/user and resource classes."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"There is also the problem of relying on cell databases for allocated"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bff0334d_b6f6525c","line":35,"range":{"start_line":35,"start_character":56,"end_line":35,"end_character":67},"updated":"2017-04-12 14:51:37.000000000","message":"allocations or usages now?","commit_id":"287eb9284c3d20e8411861e98b7493607a9d4556"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1f4a1d41008fc6cbe63f8a4954744abf48845be6","unresolved":false,"context_lines":[{"line_number":107,"context_line":"A new REST resource: ``/usages`` will be added and the GET method will accept"},{"line_number":108,"context_line":"query strings in the URI called \u0027project_id\u0027 and \u0027user_id\u0027 that will return"},{"line_number":109,"context_line":"usages matching the project_id and user_id. A usage is a sum of allocations"},{"line_number":110,"context_line":"that match the project_id and user_id, grouped by resource classes. The"},{"line_number":111,"context_line":"addition of the REST resource will require a new placement API microversion."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Example::"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bff0334d_b62772c7","line":110,"range":{"start_line":110,"start_character":39,"end_line":110,"end_character":46},"updated":"2017-04-12 14:51:37.000000000","message":"\u0027keyed\u0027 is maybe better? But you don\u0027t need to change anything, I\u0027m just thinking out loud.","commit_id":"287eb9284c3d20e8411861e98b7493607a9d4556"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"d841bfba3e48387d89697a2e283836cf2d5905a3","unresolved":false,"context_lines":[{"line_number":107,"context_line":"A new REST resource: ``/usages`` will be added and the GET method will accept"},{"line_number":108,"context_line":"query strings in the URI called \u0027project_id\u0027 and \u0027user_id\u0027 that will return"},{"line_number":109,"context_line":"usages matching the project_id and user_id. A usage is a sum of allocations"},{"line_number":110,"context_line":"that match the project_id and user_id, grouped by resource classes. The"},{"line_number":111,"context_line":"addition of the REST resource will require a new placement API microversion."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Example::"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bff0334d_8ad5611e","line":110,"range":{"start_line":110,"start_character":39,"end_line":110,"end_character":46},"in_reply_to":"bff0334d_b62772c7","updated":"2017-04-12 16:20:06.000000000","message":"I used the wording from Sylvain and he was speaking in terms of the database query, a sum with group_by class. But yeah, this could have just described the output/response instead and maybe would make more sense.","commit_id":"287eb9284c3d20e8411861e98b7493607a9d4556"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1f4a1d41008fc6cbe63f8a4954744abf48845be6","unresolved":false,"context_lines":[{"line_number":217,"context_line":"over them, summing the cores and ram values. Instead of N database queries"},{"line_number":218,"context_line":"for N cells, there will be one database query by placement of consumers"},{"line_number":219,"context_line":"associated with a project/user joined on allocations to get the matching"},{"line_number":220,"context_line":"allocations. Performance will also be improved in that cells being temporarily"},{"line_number":221,"context_line":"down will no longer have the potential for end users to exceed allowed quota"},{"line_number":222,"context_line":"limits."},{"line_number":223,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"bff0334d_d93349f5","line":220,"range":{"start_line":220,"start_character":0,"end_line":220,"end_character":11},"updated":"2017-04-12 14:51:37.000000000","message":"usages?","commit_id":"287eb9284c3d20e8411861e98b7493607a9d4556"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"d841bfba3e48387d89697a2e283836cf2d5905a3","unresolved":false,"context_lines":[{"line_number":217,"context_line":"over them, summing the cores and ram values. Instead of N database queries"},{"line_number":218,"context_line":"for N cells, there will be one database query by placement of consumers"},{"line_number":219,"context_line":"associated with a project/user joined on allocations to get the matching"},{"line_number":220,"context_line":"allocations. Performance will also be improved in that cells being temporarily"},{"line_number":221,"context_line":"down will no longer have the potential for end users to exceed allowed quota"},{"line_number":222,"context_line":"limits."},{"line_number":223,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"bff0334d_8a91e149","line":220,"range":{"start_line":220,"start_character":0,"end_line":220,"end_character":11},"in_reply_to":"bff0334d_d93349f5","updated":"2017-04-12 16:20:06.000000000","message":"I left this as allocations because the database query will be for allocations, it\u0027s just going to take a sum over resource class before returning.","commit_id":"287eb9284c3d20e8411861e98b7493607a9d4556"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1f4a1d41008fc6cbe63f8a4954744abf48845be6","unresolved":false,"context_lines":[{"line_number":278,"context_line":""},{"line_number":279,"context_line":"New unit tests for the migration and changes to the AllocationList object will"},{"line_number":280,"context_line":"be added. Gabbi functional tests will be added to test the new query parameters"},{"line_number":281,"context_line":"in the allocations REST API."},{"line_number":282,"context_line":""},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bff0334d_797b1d8b","line":281,"range":{"start_line":281,"start_character":7,"end_line":281,"end_character":18},"updated":"2017-04-12 14:51:37.000000000","message":"and usages?","commit_id":"287eb9284c3d20e8411861e98b7493607a9d4556"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"d841bfba3e48387d89697a2e283836cf2d5905a3","unresolved":false,"context_lines":[{"line_number":278,"context_line":""},{"line_number":279,"context_line":"New unit tests for the migration and changes to the AllocationList object will"},{"line_number":280,"context_line":"be added. Gabbi functional tests will be added to test the new query parameters"},{"line_number":281,"context_line":"in the allocations REST API."},{"line_number":282,"context_line":""},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bff0334d_0aa5d1a1","line":281,"range":{"start_line":281,"start_character":7,"end_line":281,"end_character":18},"in_reply_to":"bff0334d_797b1d8b","updated":"2017-04-12 16:20:06.000000000","message":"Yeah, need to add that.","commit_id":"287eb9284c3d20e8411861e98b7493607a9d4556"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1f4a1d41008fc6cbe63f8a4954744abf48845be6","unresolved":false,"context_lines":[{"line_number":284,"context_line":"Documentation Impact"},{"line_number":285,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"The placement-api-ref will be updated to document the new ``/usages`` endpoint"},{"line_number":288,"context_line":"and query parameters."},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bff0334d_b95c0519","line":287,"updated":"2017-04-12 14:51:37.000000000","message":"You\u0027ll also need to document that project_id and user_id are required in the allocations/consumer_id API with the new microversion.","commit_id":"287eb9284c3d20e8411861e98b7493607a9d4556"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"d841bfba3e48387d89697a2e283836cf2d5905a3","unresolved":false,"context_lines":[{"line_number":284,"context_line":"Documentation Impact"},{"line_number":285,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"The placement-api-ref will be updated to document the new ``/usages`` endpoint"},{"line_number":288,"context_line":"and query parameters."},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bff0334d_aaa5c5a0","line":287,"in_reply_to":"bff0334d_b95c0519","updated":"2017-04-12 16:20:06.000000000","message":"Right, I missed this one.","commit_id":"287eb9284c3d20e8411861e98b7493607a9d4556"}]}
