)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"6265676f784e7a0dd836e661184c6946addd0263","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix placement calls in placement client"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Based on the placement api-ref fix the alreayd implemented placement API"},{"line_number":10,"context_line":"calls in the placement client of neutron-lib."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Fixed/changed parts:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"df7087c5_812ac229","line":9,"range":{"start_line":9,"start_character":39,"end_line":9,"end_character":46},"updated":"2018-03-20 13:32:08.000000000","message":"already","commit_id":"d56d7b7911fd238cf15adce5db51ebf4765101cb"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"99c21aea620cdd9e2757f70446abdf5986c83ca8","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix placement calls in placement client"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Based on the placement api-ref fix the alreayd implemented placement API"},{"line_number":10,"context_line":"calls in the placement client of neutron-lib."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Fixed/changed parts:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"df7087c5_6c3963d5","line":9,"range":{"start_line":9,"start_character":39,"end_line":9,"end_character":46},"in_reply_to":"df7087c5_812ac229","updated":"2018-03-22 12:26:25.000000000","message":"Done","commit_id":"d56d7b7911fd238cf15adce5db51ebf4765101cb"}],"neutron_lib/clients/placement.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"6265676f784e7a0dd836e661184c6946addd0263","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"API_VERSION_REQUEST_HEADER \u003d \u0027OpenStack-API-Version\u0027"},{"line_number":31,"context_line":"PLACEMENT_API_WITH_MEMBER_OF \u003d \u0027placement 1.3\u0027"},{"line_number":32,"context_line":"PLACEMENT_API_LATEST_SUPPORTED \u003d \u0027placement 1.14\u0027"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def _check_placement_api_available(f):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_0172324a","line":32,"updated":"2018-03-20 13:32:08.000000000","message":"I\u0027m not sure if You should change this name. Maybe You can add new constant PLACEMENT_API_LATEST_SUPPORTED which will be equal to e.g. PLACEMENT_API_WITH_NESTED_RESOURCES currently and changed in future.","commit_id":"d56d7b7911fd238cf15adce5db51ebf4765101cb"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"99c21aea620cdd9e2757f70446abdf5986c83ca8","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"API_VERSION_REQUEST_HEADER \u003d \u0027OpenStack-API-Version\u0027"},{"line_number":31,"context_line":"PLACEMENT_API_WITH_MEMBER_OF \u003d \u0027placement 1.3\u0027"},{"line_number":32,"context_line":"PLACEMENT_API_LATEST_SUPPORTED \u003d \u0027placement 1.14\u0027"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def _check_placement_api_available(f):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_4cdd7f6e","line":32,"in_reply_to":"df7087c5_0172324a","updated":"2018-03-22 12:26:25.000000000","message":"I understand your arguments.\nMy idea was to make this client as simple as possible and avoid the unnecessary conditions for checking the version.\nSo let\u0027s have one version which points to the latest placement API version which is necessary for neutron to communicate with placement.","commit_id":"d56d7b7911fd238cf15adce5db51ebf4765101cb"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"6265676f784e7a0dd836e661184c6946addd0263","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            filters[\u0027resources\u0027] \u003d resources"},{"line_number":183,"context_line":"        if in_tree:"},{"line_number":184,"context_line":"            needed_version \u003d _get_version("},{"line_number":185,"context_line":"                PLACEMENT_API_LATEST_SUPPORTED)"},{"line_number":186,"context_line":"            if self._target_version \u003c needed_version:"},{"line_number":187,"context_line":"                raise n_exc.PlacementAPIVersionIncorrect("},{"line_number":188,"context_line":"                    current_version\u003dself._target_version,"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_21a2d69b","line":185,"updated":"2018-03-20 13:32:08.000000000","message":"That\u0027s why I don\u0027t want to change this name of constant. If latest supported version will be changed this check will be wrong then as it will fail when shouldn\u0027t.","commit_id":"d56d7b7911fd238cf15adce5db51ebf4765101cb"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"99c21aea620cdd9e2757f70446abdf5986c83ca8","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            filters[\u0027resources\u0027] \u003d resources"},{"line_number":183,"context_line":"        if in_tree:"},{"line_number":184,"context_line":"            needed_version \u003d _get_version("},{"line_number":185,"context_line":"                PLACEMENT_API_LATEST_SUPPORTED)"},{"line_number":186,"context_line":"            if self._target_version \u003c needed_version:"},{"line_number":187,"context_line":"                raise n_exc.PlacementAPIVersionIncorrect("},{"line_number":188,"context_line":"                    current_version\u003dself._target_version,"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_cc4d0f73","line":185,"in_reply_to":"df7087c5_21a2d69b","updated":"2018-03-22 12:26:25.000000000","message":"Ok, I understand now.","commit_id":"d56d7b7911fd238cf15adce5db51ebf4765101cb"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"893bc3c86674090f25c86f3ca9533a7d3807320e","unresolved":false,"context_lines":[{"line_number":30,"context_line":"API_VERSION_REQUEST_HEADER \u003d \u0027OpenStack-API-Version\u0027"},{"line_number":31,"context_line":"PLACEMENT_API_WITH_MEMBER_OF \u003d \u0027placement 1.3\u0027"},{"line_number":32,"context_line":"PLACEMENT_API_WITH_NESTED_RESOURCES \u003d \u0027placement 1.14\u0027"},{"line_number":33,"context_line":"PLACEMENT_API_LATEST_SUPPORTED \u003d PLACEMENT_API_WITH_NESTED_RESOURCES"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def _check_placement_api_available(f):"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_d4cedf58","line":33,"updated":"2018-03-23 08:41:45.000000000","message":"Thx, that was exactly what I had in mind here :)","commit_id":"c734bbc54904ceac6eb98a102729d7052c526075"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"48bcff516c1c43d6bdc244c03564e1a7c536e162","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                         **filters).json()"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    @_check_placement_api_available"},{"line_number":199,"context_line":"    def update_resource_provider_inventories("},{"line_number":200,"context_line":"            self, resource_provider_uuid, inventories):"},{"line_number":201,"context_line":"        \"\"\"Update resource provider inventories."},{"line_number":202,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_cb007505","line":199,"range":{"start_line":199,"start_character":8,"end_line":199,"end_character":44},"updated":"2018-03-23 12:34:40.000000000","message":"Looks like this was already released as create_inventory [1]. For completeness we should be probably include a release note to doc it.\n\n\n[1] https://github.com/openstack/neutron-lib/blob/1.13.0/neutron_lib/clients/placement.py#L158","commit_id":"c734bbc54904ceac6eb98a102729d7052c526075"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"a26512733951944983e9b67faf81c685ca65d726","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                         **filters).json()"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    @_check_placement_api_available"},{"line_number":199,"context_line":"    def update_resource_provider_inventories("},{"line_number":200,"context_line":"            self, resource_provider_uuid, inventories):"},{"line_number":201,"context_line":"        \"\"\"Update resource provider inventories."},{"line_number":202,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_813aae95","line":199,"range":{"start_line":199,"start_character":8,"end_line":199,"end_character":44},"in_reply_to":"df7087c5_cb007505","updated":"2018-03-27 15:43:49.000000000","message":"I added a release note, could you please check, because I am not sure if that is really what you meant.","commit_id":"c734bbc54904ceac6eb98a102729d7052c526075"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"45bacba831aea6bf866e3ec80e603ea31bee4486","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        \"\"\"Update resource provider inventories."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        :param resource_provider_uuid: UUID of the resource provider."},{"line_number":204,"context_line":"        :param inventories: The inventory. A dict with resource_class"},{"line_number":205,"context_line":"                            (required), total (required), reserved (required),"},{"line_number":206,"context_line":"                            min_unit (required), max_unit (required),"},{"line_number":207,"context_line":"                            step_size (required) and allocation_ratio"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_a2505f34","line":204,"range":{"start_line":204,"start_character":32,"end_line":204,"end_character":41},"updated":"2018-03-23 22:29:29.000000000","message":"should we change this to inventories","commit_id":"c734bbc54904ceac6eb98a102729d7052c526075"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"a26512733951944983e9b67faf81c685ca65d726","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        \"\"\"Update resource provider inventories."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        :param resource_provider_uuid: UUID of the resource provider."},{"line_number":204,"context_line":"        :param inventories: The inventory. A dict with resource_class"},{"line_number":205,"context_line":"                            (required), total (required), reserved (required),"},{"line_number":206,"context_line":"                            min_unit (required), max_unit (required),"},{"line_number":207,"context_line":"                            step_size (required) and allocation_ratio"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_2141620c","line":204,"range":{"start_line":204,"start_character":32,"end_line":204,"end_character":41},"in_reply_to":"bf659307_a2505f34","updated":"2018-03-27 15:43:49.000000000","message":"Done","commit_id":"c734bbc54904ceac6eb98a102729d7052c526075"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6cadd7e058605351afb08fe2f5b44adb8eb64fe9","unresolved":false,"context_lines":[{"line_number":242,"context_line":"                raise"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    @_check_placement_api_available"},{"line_number":245,"context_line":"    def update_resource_provider_inventory("},{"line_number":246,"context_line":"            self, resource_provider_uuid, inventory, resource_class):"},{"line_number":247,"context_line":"        \"\"\"Update resource provider inventory."},{"line_number":248,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_2bdb5c1b","line":245,"range":{"start_line":245,"start_character":4,"end_line":245,"end_character":43},"updated":"2018-03-28 15:31:06.000000000","message":"I think this method name represents better what is in the placement API:\nhttps://developer.openstack.org/api-ref/placement/#update-resource-provider-inventory","commit_id":"7218288d9ceb98012263278da766c1d48bee857a"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"d4d4e12201582f6a8d40d64b3ce51295d785e7d3","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        \"\"\""},{"line_number":118,"context_line":"        url \u003d \u0027/resource_providers\u0027"},{"line_number":119,"context_line":"        self._post(url, resource_provider,"},{"line_number":120,"context_line":"                   headers\u003d{API_VERSION_REQUEST_HEADER:"},{"line_number":121,"context_line":"                            self._openstack_api_version})"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @_check_placement_api_available"},{"line_number":124,"context_line":"    def delete_resource_provider(self, resource_provider_uuid):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_36986abe","line":121,"range":{"start_line":120,"start_character":0,"end_line":121,"end_character":57},"updated":"2018-04-12 12:48:36.000000000","message":"Given the next patch in the series why do we need this?","commit_id":"63ee09b25c35315c94ed5a908f1f9135c536a505"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0e7673e1eb83906fefbc5242cf513d1e92cb8ced","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        \"\"\""},{"line_number":118,"context_line":"        url \u003d \u0027/resource_providers\u0027"},{"line_number":119,"context_line":"        self._post(url, resource_provider,"},{"line_number":120,"context_line":"                   headers\u003d{API_VERSION_REQUEST_HEADER:"},{"line_number":121,"context_line":"                            self._openstack_api_version})"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @_check_placement_api_available"},{"line_number":124,"context_line":"    def delete_resource_provider(self, resource_provider_uuid):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_f1c09852","line":121,"range":{"start_line":120,"start_character":0,"end_line":121,"end_character":57},"in_reply_to":"bf659307_36986abe","updated":"2018-04-13 13:15:51.000000000","message":"Without adding the api_version header this call is not working for nested resources, so this change ha place in this fix patch.\n\nThe exception: BadRequest: Bad Request (HTTP 400)\nIn placement log:\nPlacement API returning an error response: JSON does not va\nlidate: Additional properties are not allowed (u\u0027parent_provider_uuid\u0027 was unexpected)","commit_id":"63ee09b25c35315c94ed5a908f1f9135c536a505"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"d4d4e12201582f6a8d40d64b3ce51295d785e7d3","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        \"\"\"Update resource provider inventories."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        :param resource_provider_uuid: UUID of the resource provider."},{"line_number":205,"context_line":"        :param inventories: The inventories. A dict with resource_class"},{"line_number":206,"context_line":"                            (required), total (required), reserved (required),"},{"line_number":207,"context_line":"                            min_unit (required), max_unit (required),"},{"line_number":208,"context_line":"                            step_size (required) and allocation_ratio"},{"line_number":209,"context_line":"                            (required)."},{"line_number":210,"context_line":"        :param resource_provider_generation: The generation of the resource"},{"line_number":211,"context_line":"                                             provider."},{"line_number":212,"context_line":"        :raises PlacementResourceProviderNotFound: if the resource provider"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_5f7411cf","line":209,"range":{"start_line":205,"start_character":45,"end_line":209,"end_character":39},"updated":"2018-04-12 12:48:36.000000000","message":"This is not describing the expected format:\n\nhttps://developer.openstack.org/api-ref/placement/#update-resource-provider-inventories\n\nAn example from there:\n\n {\n     \"inventories\": {\n         \"MEMORY_MB\": {\n             \"allocation_ratio\": 2.0,\n             \"max_unit\": 16,\n             \"step_size\": 4,\n             \"total\": 128\n         },\n         \"VCPU\": {\n             \"allocation_ratio\": 10.0,\n             \"reserved\": 2,\n             \"total\": 64\n         }\n     }\n }\n\nOf which IMO it would make sense to only ask for this part in the call:\n\n {\n     \"MEMORY_MB\": {\n         \"allocation_ratio\": 2.0,\n         \"max_unit\": 16,\n         \"step_size\": 4,\n         \"total\": 128\n     },\n     \"VCPU\": {\n         \"allocation_ratio\": 10.0,\n         \"reserved\": 2,\n         \"total\": 64\n     }\n }","commit_id":"63ee09b25c35315c94ed5a908f1f9135c536a505"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0e7673e1eb83906fefbc5242cf513d1e92cb8ced","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        \"\"\"Update resource provider inventories."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        :param resource_provider_uuid: UUID of the resource provider."},{"line_number":205,"context_line":"        :param inventories: The inventories. A dict with resource_class"},{"line_number":206,"context_line":"                            (required), total (required), reserved (required),"},{"line_number":207,"context_line":"                            min_unit (required), max_unit (required),"},{"line_number":208,"context_line":"                            step_size (required) and allocation_ratio"},{"line_number":209,"context_line":"                            (required)."},{"line_number":210,"context_line":"        :param resource_provider_generation: The generation of the resource"},{"line_number":211,"context_line":"                                             provider."},{"line_number":212,"context_line":"        :raises PlacementResourceProviderNotFound: if the resource provider"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_779f984f","line":209,"range":{"start_line":205,"start_character":45,"end_line":209,"end_character":39},"in_reply_to":"bf659307_5f7411cf","updated":"2018-04-13 13:15:51.000000000","message":"Hope this something you missed.","commit_id":"63ee09b25c35315c94ed5a908f1f9135c536a505"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"d4d4e12201582f6a8d40d64b3ce51295d785e7d3","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        \"\"\""},{"line_number":220,"context_line":"        url \u003d \u0027/resource_providers/%s/inventories\u0027 % resource_provider_uuid"},{"line_number":221,"context_line":"        body \u003d {"},{"line_number":222,"context_line":"            \u0027resource_provider_generation\u0027: resource_provider_generation,"},{"line_number":223,"context_line":"        }"},{"line_number":224,"context_line":"        body.update(inventories)"},{"line_number":225,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_1f01b906","line":222,"updated":"2018-04-12 12:48:36.000000000","message":"With the 2nd format above here we could say:\n\n \u0027inventories\u0027: inventories,","commit_id":"63ee09b25c35315c94ed5a908f1f9135c536a505"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0e7673e1eb83906fefbc5242cf513d1e92cb8ced","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        \"\"\""},{"line_number":220,"context_line":"        url \u003d \u0027/resource_providers/%s/inventories\u0027 % resource_provider_uuid"},{"line_number":221,"context_line":"        body \u003d {"},{"line_number":222,"context_line":"            \u0027resource_provider_generation\u0027: resource_provider_generation,"},{"line_number":223,"context_line":"        }"},{"line_number":224,"context_line":"        body.update(inventories)"},{"line_number":225,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_37a5a09f","line":222,"in_reply_to":"bf659307_1f01b906","updated":"2018-04-13 13:15:51.000000000","message":"Done","commit_id":"63ee09b25c35315c94ed5a908f1f9135c536a505"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"d4d4e12201582f6a8d40d64b3ce51295d785e7d3","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        body \u003d {"},{"line_number":222,"context_line":"            \u0027resource_provider_generation\u0027: resource_provider_generation,"},{"line_number":223,"context_line":"        }"},{"line_number":224,"context_line":"        body.update(inventories)"},{"line_number":225,"context_line":"        try:"},{"line_number":226,"context_line":"            return self._put(url, body).json()"},{"line_number":227,"context_line":"        except ks_exc.NotFound:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_8a0a691d","line":224,"range":{"start_line":224,"start_character":8,"end_line":224,"end_character":32},"updated":"2018-04-12 12:48:36.000000000","message":"... and delete this.","commit_id":"63ee09b25c35315c94ed5a908f1f9135c536a505"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0e7673e1eb83906fefbc5242cf513d1e92cb8ced","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        body \u003d {"},{"line_number":222,"context_line":"            \u0027resource_provider_generation\u0027: resource_provider_generation,"},{"line_number":223,"context_line":"        }"},{"line_number":224,"context_line":"        body.update(inventories)"},{"line_number":225,"context_line":"        try:"},{"line_number":226,"context_line":"            return self._put(url, body).json()"},{"line_number":227,"context_line":"        except ks_exc.NotFound:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_d7b9c4cb","line":224,"range":{"start_line":224,"start_character":8,"end_line":224,"end_character":32},"in_reply_to":"bf659307_8a0a691d","updated":"2018-04-13 13:15:51.000000000","message":"Done","commit_id":"63ee09b25c35315c94ed5a908f1f9135c536a505"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"1e7d3d3daaf0ff01d1fa5e56d220bac894c658c1","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        try:"},{"line_number":291,"context_line":"            return self._put(url, inventory).json()"},{"line_number":292,"context_line":"        except ks_exc.NotFound as e:"},{"line_number":293,"context_line":"            if e.details and \"No resource provider with uuid\" in e.details:"},{"line_number":294,"context_line":"                raise n_exc.PlacementResourceProviderNotFound("},{"line_number":295,"context_line":"                    resource_provider\u003dresource_provider_uuid)"},{"line_number":296,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f6a8fd7_66d0f7f8","line":293,"range":{"start_line":293,"start_character":30,"end_line":293,"end_character":60},"updated":"2018-04-17 10:44:27.000000000","message":"I don\u0027t think that relaying on error message. As I found in https://github.com/openstack/nova/blob/2a83f333b18ac2b4c2fd3e1f0114dbcef763946d/nova/api/openstack/placement/handlers/inventory.py#L236 this message is translated so what if user will use different than English language?","commit_id":"002c8c03c7f9c78972450c378df33629d877e972"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"71c373144c93c5d852861fce4f3860dbdf6bfa13","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        try:"},{"line_number":291,"context_line":"            return self._put(url, inventory).json()"},{"line_number":292,"context_line":"        except ks_exc.NotFound as e:"},{"line_number":293,"context_line":"            if e.details and \"No resource provider with uuid\" in e.details:"},{"line_number":294,"context_line":"                raise n_exc.PlacementResourceProviderNotFound("},{"line_number":295,"context_line":"                    resource_provider\u003dresource_provider_uuid)"},{"line_number":296,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f6a8fd7_920f65e0","line":293,"range":{"start_line":293,"start_character":30,"end_line":293,"end_character":60},"in_reply_to":"9f6a8fd7_66d0f7f8","updated":"2018-04-18 11:08:05.000000000","message":"Thanks Slawek.\nWithout the details\u0027 text information, I simplified the exception to PlacementResourceNotFound, is it acceptable?\nAnother simpler solution is to reraise the original exception.\n\nIn this file now there\u0027s some different solutions which do decisions based on e.details, i.e.:\nhttps://github.com/openstack/neutron-lib/blob/master/neutron_lib/clients/placement.py#L223-L226\n\nShall I upload a new patch which tries to change those?","commit_id":"002c8c03c7f9c78972450c378df33629d877e972"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8e396a40031c04ca957f5127dff66ca9877d4629","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        try:"},{"line_number":291,"context_line":"            return self._put(url, inventory).json()"},{"line_number":292,"context_line":"        except ks_exc.NotFound as e:"},{"line_number":293,"context_line":"            if e.details and \"No resource provider with uuid\" in e.details:"},{"line_number":294,"context_line":"                raise n_exc.PlacementResourceProviderNotFound("},{"line_number":295,"context_line":"                    resource_provider\u003dresource_provider_uuid)"},{"line_number":296,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f6a8fd7_94d51046","line":293,"range":{"start_line":293,"start_character":30,"end_line":293,"end_character":60},"in_reply_to":"9f6a8fd7_920f65e0","updated":"2018-04-18 13:14:20.000000000","message":"IMO it\u0027s better now. And IMO yes, we should not rely on error message anywhere else - as I said, if user will have different translation enabled, You will get different message in error and such \"if\" condition will fail :)","commit_id":"002c8c03c7f9c78972450c378df33629d877e972"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"a488bc2dc5761a33b000865c3f57d05e4bd74eef","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        try:"},{"line_number":291,"context_line":"            return self._put(url, inventory).json()"},{"line_number":292,"context_line":"        except ks_exc.NotFound as e:"},{"line_number":293,"context_line":"            if e.details and \"No resource provider with uuid\" in e.details:"},{"line_number":294,"context_line":"                raise n_exc.PlacementResourceProviderNotFound("},{"line_number":295,"context_line":"                    resource_provider\u003dresource_provider_uuid)"},{"line_number":296,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f6a8fd7_95dbb819","line":293,"range":{"start_line":293,"start_character":30,"end_line":293,"end_character":60},"in_reply_to":"9f6a8fd7_94d51046","updated":"2018-04-19 07:34:55.000000000","message":"Ok, I will check and upload a patch which address that problem in placement client, thanks for noticing","commit_id":"002c8c03c7f9c78972450c378df33629d877e972"}],"neutron_lib/tests/unit/clients/test_placement.py":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"d4d4e12201582f6a8d40d64b3ce51295d785e7d3","unresolved":false,"context_lines":[{"line_number":26,"context_line":"RESOURCE_PROVIDER_UUID \u003d uuidutils.generate_uuid()"},{"line_number":27,"context_line":"RESOURCE_PROVIDER_GENERATION \u003d 1"},{"line_number":28,"context_line":"RESOURCE_CLASS_NAME \u003d \u0027resource_class_name\u0027"},{"line_number":29,"context_line":"INVENTORY \u003d {"},{"line_number":30,"context_line":"    \u0027inventories\u0027: {"},{"line_number":31,"context_line":"        RESOURCE_CLASS_NAME: {"},{"line_number":32,"context_line":"            \u0027total\u0027: 42"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_4a6771ea","line":29,"range":{"start_line":29,"start_character":8,"end_line":29,"end_character":9},"updated":"2018-04-12 12:48:36.000000000","message":"Plural please.","commit_id":"63ee09b25c35315c94ed5a908f1f9135c536a505"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0e7673e1eb83906fefbc5242cf513d1e92cb8ced","unresolved":false,"context_lines":[{"line_number":26,"context_line":"RESOURCE_PROVIDER_UUID \u003d uuidutils.generate_uuid()"},{"line_number":27,"context_line":"RESOURCE_PROVIDER_GENERATION \u003d 1"},{"line_number":28,"context_line":"RESOURCE_CLASS_NAME \u003d \u0027resource_class_name\u0027"},{"line_number":29,"context_line":"INVENTORY \u003d {"},{"line_number":30,"context_line":"    \u0027inventories\u0027: {"},{"line_number":31,"context_line":"        RESOURCE_CLASS_NAME: {"},{"line_number":32,"context_line":"            \u0027total\u0027: 42"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_b7e770e3","line":29,"range":{"start_line":29,"start_character":8,"end_line":29,"end_character":9},"in_reply_to":"bf659307_4a6771ea","updated":"2018-04-13 13:15:51.000000000","message":"I kept the singular as now only one inventory is in the dict with 1 resource class.","commit_id":"63ee09b25c35315c94ed5a908f1f9135c536a505"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"d4d4e12201582f6a8d40d64b3ce51295d785e7d3","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            in_tree\u003d\u0027tree1_uuid\u0027)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def test_update_resource_provider_inventories(self):"},{"line_number":109,"context_line":"        expected_inventory \u003d {"},{"line_number":110,"context_line":"            \u0027resource_provider_generation\u0027: RESOURCE_PROVIDER_GENERATION,"},{"line_number":111,"context_line":"        }"},{"line_number":112,"context_line":"        expected_inventory.update(INVENTORY)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_ca894175","line":109,"range":{"start_line":109,"start_character":8,"end_line":109,"end_character":26},"updated":"2018-04-12 12:48:36.000000000","message":"This is more of an \u0027expected_body\u0027. The INVENTORIES dict is just part of it.","commit_id":"63ee09b25c35315c94ed5a908f1f9135c536a505"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0e7673e1eb83906fefbc5242cf513d1e92cb8ced","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            in_tree\u003d\u0027tree1_uuid\u0027)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def test_update_resource_provider_inventories(self):"},{"line_number":109,"context_line":"        expected_inventory \u003d {"},{"line_number":110,"context_line":"            \u0027resource_provider_generation\u0027: RESOURCE_PROVIDER_GENERATION,"},{"line_number":111,"context_line":"        }"},{"line_number":112,"context_line":"        expected_inventory.update(INVENTORY)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_17d89c1b","line":109,"range":{"start_line":109,"start_character":8,"end_line":109,"end_character":26},"in_reply_to":"bf659307_ca894175","updated":"2018-04-13 13:15:51.000000000","message":"Valid","commit_id":"63ee09b25c35315c94ed5a908f1f9135c536a505"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"d4d4e12201582f6a8d40d64b3ce51295d785e7d3","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                          RESOURCE_PROVIDER_UUID, RESOURCE_CLASS_NAME)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def test_update_resource_provider_inventory(self):"},{"line_number":160,"context_line":"        expected_inventory \u003d {"},{"line_number":161,"context_line":"            \u0027resource_provider_generation\u0027: RESOURCE_PROVIDER_GENERATION,"},{"line_number":162,"context_line":"        }"},{"line_number":163,"context_line":"        expected_inventory.update(INVENTORY)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_2add5d6f","line":160,"range":{"start_line":160,"start_character":8,"end_line":160,"end_character":26},"updated":"2018-04-12 12:48:36.000000000","message":"Again this the body, of which the inventory is just part.","commit_id":"63ee09b25c35315c94ed5a908f1f9135c536a505"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0e7673e1eb83906fefbc5242cf513d1e92cb8ced","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                          RESOURCE_PROVIDER_UUID, RESOURCE_CLASS_NAME)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def test_update_resource_provider_inventory(self):"},{"line_number":160,"context_line":"        expected_inventory \u003d {"},{"line_number":161,"context_line":"            \u0027resource_provider_generation\u0027: RESOURCE_PROVIDER_GENERATION,"},{"line_number":162,"context_line":"        }"},{"line_number":163,"context_line":"        expected_inventory.update(INVENTORY)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_77f6b891","line":160,"range":{"start_line":160,"start_character":8,"end_line":160,"end_character":26},"in_reply_to":"bf659307_2add5d6f","updated":"2018-04-13 13:15:51.000000000","message":"Done","commit_id":"63ee09b25c35315c94ed5a908f1f9135c536a505"}],"neutron_lib/tests/unit/test_fixture.py":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"d4d4e12201582f6a8d40d64b3ce51295d785e7d3","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        p_fixture.mock_post.assert_called_once()"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def test_put(self):"},{"line_number":142,"context_line":"        inventory \u003d {\u0027inventories\u0027: {\u0027resource_class\u0027: {\u0027total\u0027: 42}}}"},{"line_number":143,"context_line":"        p_client, p_fixture \u003d self._create_client_and_fixture()"},{"line_number":144,"context_line":"        p_client.update_resource_provider_inventory(\u0027resource\u0027, inventory,"},{"line_number":145,"context_line":"                                                    \u0027class_name\u0027, 1)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_2a779dd6","line":142,"range":{"start_line":142,"start_character":20,"end_line":142,"end_character":70},"updated":"2018-04-12 12:48:36.000000000","message":"Here I think you wanted the format of the singular inventory format:\n\nhttps://developer.openstack.org/api-ref/placement/#update-resource-provider-inventory","commit_id":"63ee09b25c35315c94ed5a908f1f9135c536a505"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0e7673e1eb83906fefbc5242cf513d1e92cb8ced","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        p_fixture.mock_post.assert_called_once()"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def test_put(self):"},{"line_number":142,"context_line":"        inventory \u003d {\u0027inventories\u0027: {\u0027resource_class\u0027: {\u0027total\u0027: 42}}}"},{"line_number":143,"context_line":"        p_client, p_fixture \u003d self._create_client_and_fixture()"},{"line_number":144,"context_line":"        p_client.update_resource_provider_inventory(\u0027resource\u0027, inventory,"},{"line_number":145,"context_line":"                                                    \u0027class_name\u0027, 1)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_d72c6403","line":142,"range":{"start_line":142,"start_character":20,"end_line":142,"end_character":70},"in_reply_to":"bf659307_2a779dd6","updated":"2018-04-13 13:15:51.000000000","message":"Good catch","commit_id":"63ee09b25c35315c94ed5a908f1f9135c536a505"}]}
