)]}'
{"nova/api/openstack/placement/handlers/resource_provider.py":[{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"4a86dabb4ab3efa17a175d681eeda4f9914f4ce7","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    context \u003d req.environ[\u0027placement.context\u0027]"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    filters \u003d {}"},{"line_number":180,"context_line":"    for attr in [\u0027name\u0027, \u0027uuid\u0027]:"},{"line_number":181,"context_line":"        if attr in req.GET:"},{"line_number":182,"context_line":"            filters[attr] \u003d req.GET[attr]"},{"line_number":183,"context_line":"    resource_providers \u003d objects.ResourceProviderList.get_all_by_filters("}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_2af02990","line":180,"updated":"2016-08-09 06:45:21.000000000","message":"nit: It can be defined in model, e.g. ResourceProvider.filter_fields.","commit_id":"c6119fb641e8f2998bc905db745925276f4be4bb"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"61d715b1e591cb6c6763138fc583c46b95fbf5c6","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    context \u003d req.environ[\u0027placement.context\u0027]"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    filters \u003d {}"},{"line_number":180,"context_line":"    for attr in [\u0027name\u0027, \u0027uuid\u0027]:"},{"line_number":181,"context_line":"        if attr in req.GET:"},{"line_number":182,"context_line":"            filters[attr] \u003d req.GET[attr]"},{"line_number":183,"context_line":"    resource_providers \u003d objects.ResourceProviderList.get_all_by_filters("}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_e282a393","line":180,"in_reply_to":"9ad45d7e_2af02990","updated":"2016-08-09 15:44:21.000000000","message":"Makes sense. Done","commit_id":"c6119fb641e8f2998bc905db745925276f4be4bb"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"4a86dabb4ab3efa17a175d681eeda4f9914f4ce7","unresolved":false,"context_lines":[{"line_number":179,"context_line":"    filters \u003d {}"},{"line_number":180,"context_line":"    for attr in [\u0027name\u0027, \u0027uuid\u0027]:"},{"line_number":181,"context_line":"        if attr in req.GET:"},{"line_number":182,"context_line":"            filters[attr] \u003d req.GET[attr]"},{"line_number":183,"context_line":"    resource_providers \u003d objects.ResourceProviderList.get_all_by_filters("},{"line_number":184,"context_line":"        context, filters)"},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_aa7259e3","line":182,"updated":"2016-08-09 06:45:21.000000000","message":"nit: It would be great to have params cleaning up,\nor it already is somewhere? It\u0027s okay for sqlalchemy but ...","commit_id":"c6119fb641e8f2998bc905db745925276f4be4bb"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"61d715b1e591cb6c6763138fc583c46b95fbf5c6","unresolved":false,"context_lines":[{"line_number":179,"context_line":"    filters \u003d {}"},{"line_number":180,"context_line":"    for attr in [\u0027name\u0027, \u0027uuid\u0027]:"},{"line_number":181,"context_line":"        if attr in req.GET:"},{"line_number":182,"context_line":"            filters[attr] \u003d req.GET[attr]"},{"line_number":183,"context_line":"    resource_providers \u003d objects.ResourceProviderList.get_all_by_filters("},{"line_number":184,"context_line":"        context, filters)"},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_bbee0d89","line":182,"in_reply_to":"9ad45d7e_aa7259e3","updated":"2016-08-09 15:44:21.000000000","message":"Done","commit_id":"c6119fb641e8f2998bc905db745925276f4be4bb"}],"nova/objects/resource_provider.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7de0494aca078bde152c2f29e9cdc5f265f25594","unresolved":false,"context_lines":[{"line_number":359,"context_line":"    }"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    allowed_filters \u003d ("},{"line_number":362,"context_line":"        \u0027name\u0027, \u0027uuid\u0027"},{"line_number":363,"context_line":"    )"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":13,"id":"3ac371cc_cdd561ba","line":362,"range":{"start_line":362,"start_character":8,"end_line":362,"end_character":21},"updated":"2016-08-14 02:28:33.000000000","message":"Sorry, I missed this in previous review. I have question for the filters.\n\n1. should we return 400 when disallowed filters?\n2. should we validate the format for filter, like uuid should be a valid uuid, name should match the max length.","commit_id":"48d2af3de5d57ac52e9cb661061d8b9fe6f62913"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"f3c070479d2fd04b7577fc00738680b63f093ab9","unresolved":false,"context_lines":[{"line_number":359,"context_line":"    }"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    allowed_filters \u003d ("},{"line_number":362,"context_line":"        \u0027name\u0027, \u0027uuid\u0027"},{"line_number":363,"context_line":"    )"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":13,"id":"3ac371cc_599e2857","line":362,"range":{"start_line":362,"start_character":8,"end_line":362,"end_character":21},"in_reply_to":"3ac371cc_8d99a922","updated":"2016-08-15 15:49:47.000000000","message":"no problem :)","commit_id":"48d2af3de5d57ac52e9cb661061d8b9fe6f62913"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"f3c070479d2fd04b7577fc00738680b63f093ab9","unresolved":false,"context_lines":[{"line_number":359,"context_line":"    }"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    allowed_filters \u003d ("},{"line_number":362,"context_line":"        \u0027name\u0027, \u0027uuid\u0027"},{"line_number":363,"context_line":"    )"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":13,"id":"3ac371cc_7999646e","line":362,"range":{"start_line":362,"start_character":8,"end_line":362,"end_character":21},"in_reply_to":"3ac371cc_cdd561ba","updated":"2016-08-15 15:49:47.000000000","message":"Done","commit_id":"48d2af3de5d57ac52e9cb661061d8b9fe6f62913"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"8f01e2d96e811250fb86826a80e576486ecd80e9","unresolved":false,"context_lines":[{"line_number":359,"context_line":"    }"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    allowed_filters \u003d ("},{"line_number":362,"context_line":"        \u0027name\u0027, \u0027uuid\u0027"},{"line_number":363,"context_line":"    )"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":13,"id":"3ac371cc_8d99a922","line":362,"range":{"start_line":362,"start_character":8,"end_line":362,"end_character":21},"in_reply_to":"3ac371cc_cdd561ba","updated":"2016-08-14 02:30:47.000000000","message":"oops, there is check for second question, so just ignore that one.","commit_id":"48d2af3de5d57ac52e9cb661061d8b9fe6f62913"}]}
