)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2a45dbedbd7fa0a1db4cd80db059c0fb6d246617","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Neutron-Classifier service plugin"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Neutron classifier\u0027s exceptions, plugin resource definition,"},{"line_number":10,"context_line":"api-ref and release notes"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I80dc865e5f21243f903450077ee2a644c8c44dd7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"3fa7e38b_b875e1cb","line":10,"updated":"2020-02-03 09:35:58.000000000","message":"Please link it to the related BP","commit_id":"0879fefdabe4234052489a601d72b06554a4f8a6"}],"api-ref/source/v2/classifier.inc":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"831258a5c5d17803f33726d28008d0d773688355","unresolved":false,"context_lines":[{"line_number":10,"context_line":"classification."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"List classification types"},{"line_number":13,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":".. rest_method::  GET /v2.0/classification_type"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":8,"id":"3fa7e38b_114e9d8f","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":19},"updated":"2020-01-24 04:53:39.000000000","message":"too short underline","commit_id":"2493ef4a4ffaaecf248e0ba88d53d9037ee6f27b"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"c2c1602decb1ef9931ea52ce72fef67ac7d825b4","unresolved":false,"context_lines":[{"line_number":10,"context_line":"classification."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"List classification types"},{"line_number":13,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":".. rest_method::  GET /v2.0/classification_type"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":8,"id":"3fa7e38b_e2baf86e","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":19},"in_reply_to":"3fa7e38b_114e9d8f","updated":"2020-01-27 17:16:57.000000000","message":"Done","commit_id":"2493ef4a4ffaaecf248e0ba88d53d9037ee6f27b"}],"api-ref/source/v2/index.rst":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"831258a5c5d17803f33726d28008d0d773688355","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3fa7e38b_f150a12f","updated":"2020-01-24 04:53:39.000000000","message":"Add please classifier.inc to this file as well","commit_id":"2493ef4a4ffaaecf248e0ba88d53d9037ee6f27b"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"c2c1602decb1ef9931ea52ce72fef67ac7d825b4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3fa7e38b_a2b0808e","in_reply_to":"3fa7e38b_f150a12f","updated":"2020-01-27 17:16:57.000000000","message":"Done","commit_id":"2493ef4a4ffaaecf248e0ba88d53d9037ee6f27b"}],"api-ref/source/v2/parameters.yaml":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"831258a5c5d17803f33726d28008d0d773688355","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3fa7e38b_1123fdbc","updated":"2020-01-24 04:53:39.000000000","message":"you have to add your request parameters here as well.","commit_id":"2493ef4a4ffaaecf248e0ba88d53d9037ee6f27b"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"c2c1602decb1ef9931ea52ce72fef67ac7d825b4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3fa7e38b_82a9c425","in_reply_to":"3fa7e38b_1123fdbc","updated":"2020-01-27 17:16:57.000000000","message":"I think I\u0027ve added everything to this file.","commit_id":"2493ef4a4ffaaecf248e0ba88d53d9037ee6f27b"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1458f806567c6716aeb59b415ec08b05b31944e9","unresolved":false,"context_lines":[{"line_number":2107,"context_line":"  type: string"},{"line_number":2108,"context_line":"classification-type:"},{"line_number":2109,"context_line":"  description: |"},{"line_number":2110,"context_line":"    The protocol this classification targets."},{"line_number":2111,"context_line":"  in: body"},{"line_number":2112,"context_line":"  required: true"},{"line_number":2113,"context_line":"  type: dict"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3fa7e38b_5dbb6a0f","line":2110,"updated":"2020-01-31 09:58:47.000000000","message":"As a followup patch here would be good to see the possibilities, like for security-group-rules:\n\nhttps://opendev.org/openstack/neutron-lib/src/branch/master/api-ref/source/v2/parameters.yaml#L4401-L4415","commit_id":"0879fefdabe4234052489a601d72b06554a4f8a6"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1458f806567c6716aeb59b415ec08b05b31944e9","unresolved":false,"context_lines":[{"line_number":2113,"context_line":"  type: dict"},{"line_number":2114,"context_line":"classification-types:"},{"line_number":2115,"context_line":"  description: |"},{"line_number":2116,"context_line":"    Mapping of supported classification types and their supported parameters."},{"line_number":2117,"context_line":"  in: body"},{"line_number":2118,"context_line":"  required: true"},{"line_number":2119,"context_line":"  type: dict"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3fa7e38b_dd343aae","line":2116,"range":{"start_line":2116,"start_character":4,"end_line":2116,"end_character":77},"updated":"2020-01-31 09:58:47.000000000","message":"ditto","commit_id":"0879fefdabe4234052489a601d72b06554a4f8a6"}],"neutron_lib/api/definitions/classification.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7d7176b71f6bdf5e69220c4d408424dfd1588476","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from neutron_lib.db import constants as const"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"def validate_string(String):"},{"line_number":20,"context_line":"    if String is None:"},{"line_number":21,"context_line":"        String \u003d \u0027\u0027"},{"line_number":22,"context_line":"    return String"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_2f6de031","line":19,"updated":"2019-09-10 13:29:56.000000000","message":"Why do you need this? You have validators.validate_string()","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a1772e7d243541e0fbcc111ace3e5ba4c745b724","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from neutron_lib.db import constants as const"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"def validate_string(String):"},{"line_number":20,"context_line":"    if String is None:"},{"line_number":21,"context_line":"        String \u003d \u0027\u0027"},{"line_number":22,"context_line":"    return String"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_f762b8ad","line":19,"in_reply_to":"5faad753_2f6de031","updated":"2019-10-02 12:58:10.000000000","message":"This was probably poorly named, it was actually used to convert None to empty strings. but it\u0027s removed now.","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7d7176b71f6bdf5e69220c4d408424dfd1588476","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":44,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: \u0027\u0027,"},{"line_number":45,"context_line":"        \u0027validate\u0027: {\u0027type:string\u0027: const.DESCRIPTION_FIELD_SIZE},"},{"line_number":46,"context_line":"        \u0027convert_to\u0027: validate_string},"},{"line_number":47,"context_line":"    \u0027project_id\u0027: {"},{"line_number":48,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":49,"context_line":"        \u0027required_by_policy\u0027: True,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_ead57644","line":46,"range":{"start_line":46,"start_character":22,"end_line":46,"end_character":37},"updated":"2019-09-10 13:29:56.000000000","message":"Why do you need this\u003e?","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a1772e7d243541e0fbcc111ace3e5ba4c745b724","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":44,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: \u0027\u0027,"},{"line_number":45,"context_line":"        \u0027validate\u0027: {\u0027type:string\u0027: const.DESCRIPTION_FIELD_SIZE},"},{"line_number":46,"context_line":"        \u0027convert_to\u0027: validate_string},"},{"line_number":47,"context_line":"    \u0027project_id\u0027: {"},{"line_number":48,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":49,"context_line":"        \u0027required_by_policy\u0027: True,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_f73958a3","line":46,"range":{"start_line":46,"start_character":22,"end_line":46,"end_character":37},"in_reply_to":"5faad753_ead57644","updated":"2019-10-02 12:58:10.000000000","message":"Done","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7d7176b71f6bdf5e69220c4d408424dfd1588476","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    \u0027operator\u0027: {"},{"line_number":57,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":58,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: \u0027AND\u0027,"},{"line_number":59,"context_line":"        \u0027validate\u0027: {\u0027type:string\u0027: const.NAME_FIELD_SIZE},"},{"line_number":60,"context_line":"        \u0027convert_to\u0027: validate_string},"},{"line_number":61,"context_line":"    \u0027classification\u0027: {"},{"line_number":62,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_aa81be4c","line":59,"range":{"start_line":59,"start_character":20,"end_line":59,"end_character":59},"updated":"2019-09-10 13:29:56.000000000","message":"This should be a enum\n\n\u0027validate\u0027: { \u0027type:values\u0027: constants.OPERATORS }","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a1772e7d243541e0fbcc111ace3e5ba4c745b724","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    \u0027operator\u0027: {"},{"line_number":57,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":58,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: \u0027AND\u0027,"},{"line_number":59,"context_line":"        \u0027validate\u0027: {\u0027type:string\u0027: const.NAME_FIELD_SIZE},"},{"line_number":60,"context_line":"        \u0027convert_to\u0027: validate_string},"},{"line_number":61,"context_line":"    \u0027classification\u0027: {"},{"line_number":62,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_57b94c12","line":59,"range":{"start_line":59,"start_character":20,"end_line":59,"end_character":59},"in_reply_to":"5faad753_aa81be4c","updated":"2019-10-02 12:58:10.000000000","message":"Done","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7d7176b71f6bdf5e69220c4d408424dfd1588476","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":58,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: \u0027AND\u0027,"},{"line_number":59,"context_line":"        \u0027validate\u0027: {\u0027type:string\u0027: const.NAME_FIELD_SIZE},"},{"line_number":60,"context_line":"        \u0027convert_to\u0027: validate_string},"},{"line_number":61,"context_line":"    \u0027classification\u0027: {"},{"line_number":62,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":63,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: [],"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_2a8dce7a","line":60,"range":{"start_line":60,"start_character":22,"end_line":60,"end_character":37},"updated":"2019-09-10 13:29:56.000000000","message":"Why do you need this\u003e","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a1772e7d243541e0fbcc111ace3e5ba4c745b724","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":58,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: \u0027AND\u0027,"},{"line_number":59,"context_line":"        \u0027validate\u0027: {\u0027type:string\u0027: const.NAME_FIELD_SIZE},"},{"line_number":60,"context_line":"        \u0027convert_to\u0027: validate_string},"},{"line_number":61,"context_line":"    \u0027classification\u0027: {"},{"line_number":62,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":63,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: [],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_97c34489","line":60,"range":{"start_line":60,"start_character":22,"end_line":60,"end_character":37},"in_reply_to":"5faad753_2a8dce7a","updated":"2019-10-02 12:58:10.000000000","message":"Done","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7d7176b71f6bdf5e69220c4d408424dfd1588476","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":77,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: None,"},{"line_number":78,"context_line":"        \u0027validate\u0027: {\u0027type:string\u0027: const.NAME_FIELD_SIZE},"},{"line_number":79,"context_line":"        \u0027convert_to\u0027: validate_string},"},{"line_number":80,"context_line":"    \u0027description\u0027: {"},{"line_number":81,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":82,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: None,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_aacf7eae","line":79,"range":{"start_line":79,"start_character":22,"end_line":79,"end_character":37},"updated":"2019-09-10 13:29:56.000000000","message":"ditto","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a1772e7d243541e0fbcc111ace3e5ba4c745b724","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":77,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: None,"},{"line_number":78,"context_line":"        \u0027validate\u0027: {\u0027type:string\u0027: const.NAME_FIELD_SIZE},"},{"line_number":79,"context_line":"        \u0027convert_to\u0027: validate_string},"},{"line_number":80,"context_line":"    \u0027description\u0027: {"},{"line_number":81,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":82,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: None,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_77c808a5","line":79,"range":{"start_line":79,"start_character":22,"end_line":79,"end_character":37},"in_reply_to":"5faad753_aacf7eae","updated":"2019-10-02 12:58:10.000000000","message":"Done","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7d7176b71f6bdf5e69220c4d408424dfd1588476","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":82,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: None,"},{"line_number":83,"context_line":"        \u0027validate\u0027: {\u0027type:string\u0027: const.DESCRIPTION_FIELD_SIZE},"},{"line_number":84,"context_line":"        \u0027convert_to\u0027: validate_string},"},{"line_number":85,"context_line":"    \u0027project_id\u0027: {"},{"line_number":86,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":87,"context_line":"        \u0027required_by_policy\u0027: True,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_4ac60a9d","line":84,"range":{"start_line":84,"start_character":22,"end_line":84,"end_character":37},"updated":"2019-09-10 13:29:56.000000000","message":"ditto","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a1772e7d243541e0fbcc111ace3e5ba4c745b724","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":82,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: None,"},{"line_number":83,"context_line":"        \u0027validate\u0027: {\u0027type:string\u0027: const.DESCRIPTION_FIELD_SIZE},"},{"line_number":84,"context_line":"        \u0027convert_to\u0027: validate_string},"},{"line_number":85,"context_line":"    \u0027project_id\u0027: {"},{"line_number":86,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":87,"context_line":"        \u0027required_by_policy\u0027: True,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_b7ca009e","line":84,"range":{"start_line":84,"start_character":22,"end_line":84,"end_character":37},"in_reply_to":"5faad753_4ac60a9d","updated":"2019-10-02 12:58:10.000000000","message":"Done","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7d7176b71f6bdf5e69220c4d408424dfd1588476","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    \u0027c_type\u0027: {"},{"line_number":95,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":96,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: None,"},{"line_number":97,"context_line":"        \u0027validate\u0027: {\u0027type:string\u0027: const.NAME_FIELD_SIZE},"},{"line_number":98,"context_line":"        \u0027convert_to\u0027: validate_string},"},{"line_number":99,"context_line":"    \u0027negated\u0027: {"},{"line_number":100,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_0a5572c6","line":97,"range":{"start_line":97,"start_character":20,"end_line":97,"end_character":58},"updated":"2019-09-10 13:29:56.000000000","message":"Shouldn\u0027t this be a list of types? A enum","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a1772e7d243541e0fbcc111ace3e5ba4c745b724","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    \u0027c_type\u0027: {"},{"line_number":95,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":96,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: None,"},{"line_number":97,"context_line":"        \u0027validate\u0027: {\u0027type:string\u0027: const.NAME_FIELD_SIZE},"},{"line_number":98,"context_line":"        \u0027convert_to\u0027: validate_string},"},{"line_number":99,"context_line":"    \u0027negated\u0027: {"},{"line_number":100,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_17d8b478","line":97,"range":{"start_line":97,"start_character":20,"end_line":97,"end_character":58},"in_reply_to":"5faad753_0a5572c6","updated":"2019-10-02 12:58:10.000000000","message":"Done","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7d7176b71f6bdf5e69220c4d408424dfd1588476","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    \u0027definition\u0027: {"},{"line_number":104,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":105,"context_line":"        \u0027is_visible\u0027: True,"},{"line_number":106,"context_line":"        \u0027convert_to\u0027: converters.convert_none_to_empty_dict},"},{"line_number":107,"context_line":"}"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"CLASSIFICATION_TYPE_RESOURCE_MAP \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_aa5d3eea","line":106,"range":{"start_line":106,"start_character":33,"end_line":106,"end_character":59},"updated":"2019-09-10 13:29:56.000000000","message":"?? Why this conversion?","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a1772e7d243541e0fbcc111ace3e5ba4c745b724","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    \u0027definition\u0027: {"},{"line_number":104,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":105,"context_line":"        \u0027is_visible\u0027: True,"},{"line_number":106,"context_line":"        \u0027convert_to\u0027: converters.convert_none_to_empty_dict},"},{"line_number":107,"context_line":"}"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"CLASSIFICATION_TYPE_RESOURCE_MAP \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_455e8f44","line":106,"range":{"start_line":106,"start_character":33,"end_line":106,"end_character":59},"in_reply_to":"5faad753_aa5d3eea","updated":"2019-10-02 12:58:10.000000000","message":"The definition is where the actual classification is stored inside the classification resource.\nIf it isn\u0027t provided then it should still be presented as a dict.\nIn hind sight this is probably unnecessary and should just thrown an exception if one isn\u0027t provided.","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7d7176b71f6bdf5e69220c4d408424dfd1588476","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":112,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: None,"},{"line_number":113,"context_line":"        \u0027validate\u0027: {\u0027type:string\u0027: const.NAME_FIELD_SIZE},"},{"line_number":114,"context_line":"        \u0027convert_to\u0027: validate_string},"},{"line_number":115,"context_line":"    \u0027supported_parameters\u0027: {"},{"line_number":116,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":117,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: [],"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_aa73feb0","line":114,"range":{"start_line":114,"start_character":22,"end_line":114,"end_character":37},"updated":"2019-09-10 13:29:56.000000000","message":"Shouldn\u0027t we have a list of types? In a constant.","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a1772e7d243541e0fbcc111ace3e5ba4c745b724","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":112,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: None,"},{"line_number":113,"context_line":"        \u0027validate\u0027: {\u0027type:string\u0027: const.NAME_FIELD_SIZE},"},{"line_number":114,"context_line":"        \u0027convert_to\u0027: validate_string},"},{"line_number":115,"context_line":"    \u0027supported_parameters\u0027: {"},{"line_number":116,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":117,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: [],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_e57d3bb2","line":114,"range":{"start_line":114,"start_character":22,"end_line":114,"end_character":37},"in_reply_to":"5faad753_aa73feb0","updated":"2019-10-02 12:58:10.000000000","message":"Done","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b6dc7bb406a9c8114f659e2c9a5935e4bf7e1cc4","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    \u0027classification_groups\u0027: CLASSIFICATION_GROUP_RESOURCE_MAP,"},{"line_number":113,"context_line":"    \u0027classifications\u0027: CLASSIFICATION_RESOURCE_MAP,"},{"line_number":114,"context_line":"}"},{"line_number":115,"context_line":"SUB_RESOURCE_ATTRIBUTE_MAP \u003d {}"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_70bab90a","line":115,"updated":"2019-10-08 12:30:02.000000000","message":"nit: add empty line","commit_id":"de5d1e77d8ca199f8fcb3f55e9c06e0ac95b3e97"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"ed61be02fae3c10bccfdb06238d1025cef45b730","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3fa7e38b_d725430b","updated":"2020-01-08 09:07:52.000000000","message":"After reading again the spec and start playing with it in devstack, I come to this:\n\nIf I understand well this is a hierarchical object structure:\n-|\n |__classification_groups\n |        |__classifications\n |        |__classifications\n |\n |__classification_type\n\nThis is the same like the QoS structure, so I suggest something like this:\nRESOURCE_ATTRIBUTE_MAP \u003d {\n CLASSIFICATION_GROUPS: {.....},\n CLASSIFICATION_TYPES: {....}\n}\nSUB_RESOURCE_ATTRIBUTE_MAP \u003d {\n CLASSIFICATIONS: {\u0027parent\u0027:CLASSIFICATION_GROUPS, .....}\n}\n\nI understand that the current API extension in neutron-classifier has this api structure (see: https://opendev.org/x/neutron-classifier/src/branch/master/neutron_classifier/extensions/classification.py#L44-L51), but:\n* this seems to be more \"neutronic\" for me,\n* follows the logical hierarchic structure of the resources.","commit_id":"50ba4ee55d88efd72f8368c61089aa888bb88bd7"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0e337d923af7a4404c5f77cd557a605fbee13369","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3fa7e38b_00706208","in_reply_to":"3fa7e38b_12ac4986","updated":"2020-01-09 08:49:32.000000000","message":"Ok, I think I see now why you use this structure.","commit_id":"50ba4ee55d88efd72f8368c61089aa888bb88bd7"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"c9875fbfb381e76fef7eef1b57aa007eb78efb16","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3fa7e38b_12ac4986","in_reply_to":"3fa7e38b_d725430b","updated":"2020-01-08 10:11:27.000000000","message":"The hierarchical structure is missing one thing, that an \"AND\" operand classification group can contain an \"OR\" operand classification group.\n\nWe also tried to stay away from this model early on because we didn\u0027t know how we could enforce other Neutron extensions listening for updates to classification groups.\nThe best solution we came up with at the time was make the classification seperately and add them all into the classification group at creation, this way you could also recycle a generic classification, like ethertype is ipv4 for example.","commit_id":"50ba4ee55d88efd72f8368c61089aa888bb88bd7"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5a2de6dbba0bc63c8075edddccdba4ee6aedbc5b","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"CLASSIFICATION_TYPE_RESOURCE_MAP \u003d {"},{"line_number":96,"context_line":"    \u0027type\u0027: {"},{"line_number":97,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":98,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: None,"},{"line_number":99,"context_line":"        \u0027validate\u0027: {\u0027type:values\u0027: constants.NC_TYPES}},"},{"line_number":100,"context_line":"    \u0027supported_parameters\u0027: {"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_5ca665ae","line":97,"range":{"start_line":97,"start_character":8,"end_line":97,"end_character":46},"updated":"2020-01-07 14:45:27.000000000","message":"These are false, am I wrong?\nI see only get method for classification type (in https://review.opendev.org/#/c/670050/7/neutron/services/classification/plugin.py )","commit_id":"50ba4ee55d88efd72f8368c61089aa888bb88bd7"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e57ee3c1e1ba8083cd650a3a0fe6177138fd8e28","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"CLASSIFICATION_TYPE_RESOURCE_MAP \u003d {"},{"line_number":96,"context_line":"    \u0027type\u0027: {"},{"line_number":97,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":98,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: None,"},{"line_number":99,"context_line":"        \u0027validate\u0027: {\u0027type:values\u0027: constants.NC_TYPES}},"},{"line_number":100,"context_line":"    \u0027supported_parameters\u0027: {"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_5cf7455b","line":97,"range":{"start_line":97,"start_character":8,"end_line":97,"end_character":46},"in_reply_to":"3fa7e38b_5ca665ae","updated":"2020-01-07 15:02:38.000000000","message":"That\u0027s correct. This is a list of resources, in this case OVOs, defined in https://review.opendev.org/#/c/670050/7/neutron/objects/extensions/classification.py@226, not a register in the DB.\n\nSame as with QoS rule types [1], these kind of lists are static.\n\nhttps://github.com/openstack/neutron-lib/blob/master/neutron_lib/api/definitions/qos_rule_type_details.py","commit_id":"50ba4ee55d88efd72f8368c61089aa888bb88bd7"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5a2de6dbba0bc63c8075edddccdba4ee6aedbc5b","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: None,"},{"line_number":99,"context_line":"        \u0027validate\u0027: {\u0027type:values\u0027: constants.NC_TYPES}},"},{"line_number":100,"context_line":"    \u0027supported_parameters\u0027: {"},{"line_number":101,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":102,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: [],"},{"line_number":103,"context_line":"        \u0027convert_to\u0027: converters.convert_to_list},"},{"line_number":104,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_1cb6addd","line":101,"range":{"start_line":101,"start_character":8,"end_line":101,"end_character":46},"updated":"2020-01-07 14:45:27.000000000","message":"ditto","commit_id":"50ba4ee55d88efd72f8368c61089aa888bb88bd7"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"26f1c0508228137c78eb3fe8da47acaef72c0fbe","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: constants.NC_AND,"},{"line_number":53,"context_line":"        \u0027validate\u0027: {\u0027type:values\u0027: constants.OPERATORS}},"},{"line_number":54,"context_line":"    \u0027classification\u0027: {"},{"line_number":55,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":56,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: [],"},{"line_number":57,"context_line":"        \u0027convert_to\u0027: converters.convert_to_list},"},{"line_number":58,"context_line":"    \u0027classification_group\u0027: {"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_5743f7b0","line":55,"updated":"2020-01-18 19:53:30.000000000","message":"Ok, I see here [1] many changes. Now you can\u0027t update the CG classification or the nested CG. And the same for the classification API. But this is not what we have in the spec. Is that correct??\n\n\n[1] https://review.opendev.org/#/c/670049/7..6/neutron_lib/api/definitions/classification.py","commit_id":"ca23ed4d6b23c48f5539d593c205c057ea97c2d1"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"97b8a12911292a15e23c325b5e528c0d85a38bca","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: constants.NC_AND,"},{"line_number":53,"context_line":"        \u0027validate\u0027: {\u0027type:values\u0027: constants.OPERATORS}},"},{"line_number":54,"context_line":"    \u0027classification\u0027: {"},{"line_number":55,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":56,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: [],"},{"line_number":57,"context_line":"        \u0027convert_to\u0027: converters.convert_to_list},"},{"line_number":58,"context_line":"    \u0027classification_group\u0027: {"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_eb80f7c0","line":55,"in_reply_to":"3fa7e38b_2582be52","updated":"2020-01-20 13:20:23.000000000","message":"Please, talk to Slawek for this. I think you can amend the current spec, that\u0027s a minor change.\n\nIMO, you are right: it\u0027s \"dangerous\" to change them and you can\u0027t force other extensions to be updated at the same time.","commit_id":"ca23ed4d6b23c48f5539d593c205c057ea97c2d1"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"c58d3c83de5c6959217171c20dda1fdd157b169f","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: constants.NC_AND,"},{"line_number":53,"context_line":"        \u0027validate\u0027: {\u0027type:values\u0027: constants.OPERATORS}},"},{"line_number":54,"context_line":"    \u0027classification\u0027: {"},{"line_number":55,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":56,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: [],"},{"line_number":57,"context_line":"        \u0027convert_to\u0027: converters.convert_to_list},"},{"line_number":58,"context_line":"    \u0027classification_group\u0027: {"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_2582be52","line":55,"in_reply_to":"3fa7e38b_5743f7b0","updated":"2020-01-20 10:34:46.000000000","message":"It was intended that you couldn\u0027t update a classification after it had been created, same for a classification group.\nIt\u0027s explictily blocked in the Service plugin\n\nThe main reason was that we, as the neutron classifier, couldn\u0027t force other extensions to listen for updates to classification objects.\n\nIt also seemed risky if 1 classification was used for QoS and Security Groups but the person changing the classification was only aware of the QoS consuming it. It just made more sense to restrict updating the neutron-classifier\u0027s resources.\n\nI can post a patch to the spec to include this?","commit_id":"ca23ed4d6b23c48f5539d593c205c057ea97c2d1"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2a45dbedbd7fa0a1db4cd80db059c0fb6d246617","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    \u0027id\u0027: {"},{"line_number":30,"context_line":"        \u0027allow_post\u0027: False, \u0027allow_put\u0027: False,"},{"line_number":31,"context_line":"        \u0027validate\u0027: {\u0027type:uuid\u0027: None},"},{"line_number":32,"context_line":"        \u0027is_visible\u0027: True, \u0027primary_key\u0027: True},"},{"line_number":33,"context_line":"    \u0027name\u0027: {"},{"line_number":34,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":35,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_a3010d06","line":32,"updated":"2020-02-03 09:35:58.000000000","message":"here \"is_sort_key\" flag is missed","commit_id":"837c294c1fa85bb007763e1528b9ec5d93ccffe4"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a207619f419f1aabd755efb631ed92f53c0fad4d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    \u0027id\u0027: {"},{"line_number":30,"context_line":"        \u0027allow_post\u0027: False, \u0027allow_put\u0027: False,"},{"line_number":31,"context_line":"        \u0027validate\u0027: {\u0027type:uuid\u0027: None},"},{"line_number":32,"context_line":"        \u0027is_visible\u0027: True, \u0027primary_key\u0027: True},"},{"line_number":33,"context_line":"    \u0027name\u0027: {"},{"line_number":34,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":35,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_69fbefbe","line":32,"in_reply_to":"3fa7e38b_a3010d06","updated":"2020-02-13 14:21:08.000000000","message":"Done","commit_id":"837c294c1fa85bb007763e1528b9ec5d93ccffe4"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2a45dbedbd7fa0a1db4cd80db059c0fb6d246617","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":43,"context_line":"        \u0027required_by_policy\u0027: True,"},{"line_number":44,"context_line":"        \u0027validate\u0027: {\u0027type:string\u0027: db_const.PROJECT_ID_FIELD_SIZE},"},{"line_number":45,"context_line":"        \u0027is_visible\u0027: True},"},{"line_number":46,"context_line":"    \u0027shared\u0027: {"},{"line_number":47,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":48,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: False,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_8833d012","line":45,"updated":"2020-02-03 09:35:58.000000000","message":"I think it misses \"is_sort_key\" to be set to True","commit_id":"837c294c1fa85bb007763e1528b9ec5d93ccffe4"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a207619f419f1aabd755efb631ed92f53c0fad4d","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":43,"context_line":"        \u0027required_by_policy\u0027: True,"},{"line_number":44,"context_line":"        \u0027validate\u0027: {\u0027type:string\u0027: db_const.PROJECT_ID_FIELD_SIZE},"},{"line_number":45,"context_line":"        \u0027is_visible\u0027: True},"},{"line_number":46,"context_line":"    \u0027shared\u0027: {"},{"line_number":47,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":48,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: False,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_89f8abc1","line":45,"in_reply_to":"3fa7e38b_8833d012","updated":"2020-02-13 14:21:08.000000000","message":"Done","commit_id":"837c294c1fa85bb007763e1528b9ec5d93ccffe4"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2a45dbedbd7fa0a1db4cd80db059c0fb6d246617","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    \u0027operator\u0027: {"},{"line_number":51,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":52,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: const.NC_AND,"},{"line_number":53,"context_line":"        \u0027validate\u0027: {\u0027type:values\u0027: const.OPERATORS}},"},{"line_number":54,"context_line":"    \u0027classification\u0027: {"},{"line_number":55,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":56,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: [],"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_481dd876","line":53,"updated":"2020-02-03 09:35:58.000000000","message":"and same for this one","commit_id":"837c294c1fa85bb007763e1528b9ec5d93ccffe4"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a207619f419f1aabd755efb631ed92f53c0fad4d","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    \u0027operator\u0027: {"},{"line_number":51,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":52,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: const.NC_AND,"},{"line_number":53,"context_line":"        \u0027validate\u0027: {\u0027type:values\u0027: const.OPERATORS}},"},{"line_number":54,"context_line":"    \u0027classification\u0027: {"},{"line_number":55,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":56,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: [],"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_29273769","line":53,"in_reply_to":"3fa7e38b_481dd876","updated":"2020-02-13 14:21:08.000000000","message":"Done","commit_id":"837c294c1fa85bb007763e1528b9ec5d93ccffe4"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2a45dbedbd7fa0a1db4cd80db059c0fb6d246617","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":78,"context_line":"        \u0027required_by_policy\u0027: True,"},{"line_number":79,"context_line":"        \u0027validate\u0027: {\u0027type:string\u0027: db_const.PROJECT_ID_FIELD_SIZE},"},{"line_number":80,"context_line":"        \u0027is_visible\u0027: True},"},{"line_number":81,"context_line":"    \u0027shared\u0027: {"},{"line_number":82,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":83,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: False,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_c8122865","line":80,"updated":"2020-02-03 09:35:58.000000000","message":"same here","commit_id":"837c294c1fa85bb007763e1528b9ec5d93ccffe4"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a207619f419f1aabd755efb631ed92f53c0fad4d","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":78,"context_line":"        \u0027required_by_policy\u0027: True,"},{"line_number":79,"context_line":"        \u0027validate\u0027: {\u0027type:string\u0027: db_const.PROJECT_ID_FIELD_SIZE},"},{"line_number":80,"context_line":"        \u0027is_visible\u0027: True},"},{"line_number":81,"context_line":"    \u0027shared\u0027: {"},{"line_number":82,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":83,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: False,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_492cf348","line":80,"in_reply_to":"3fa7e38b_c8122865","updated":"2020-02-13 14:21:08.000000000","message":"Done","commit_id":"837c294c1fa85bb007763e1528b9ec5d93ccffe4"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2a45dbedbd7fa0a1db4cd80db059c0fb6d246617","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    \u0027c_type\u0027: {"},{"line_number":86,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":87,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: None,"},{"line_number":88,"context_line":"        \u0027validate\u0027: {\u0027type:values\u0027: list(const.NC_CLASS_DEF.keys())}},"},{"line_number":89,"context_line":"    \u0027definition\u0027: {"},{"line_number":90,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":91,"context_line":"        \u0027is_visible\u0027: True,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_28241cc3","line":88,"updated":"2020-02-03 09:35:58.000000000","message":"same here (and probably in other attributes which are allowed to be used for sorting in api ref","commit_id":"837c294c1fa85bb007763e1528b9ec5d93ccffe4"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a207619f419f1aabd755efb631ed92f53c0fad4d","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    \u0027c_type\u0027: {"},{"line_number":86,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":87,"context_line":"        \u0027is_visible\u0027: True, \u0027default\u0027: None,"},{"line_number":88,"context_line":"        \u0027validate\u0027: {\u0027type:values\u0027: list(const.NC_CLASS_DEF.keys())}},"},{"line_number":89,"context_line":"    \u0027definition\u0027: {"},{"line_number":90,"context_line":"        \u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":91,"context_line":"        \u0027is_visible\u0027: True,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_e9203f4e","line":88,"in_reply_to":"3fa7e38b_28241cc3","updated":"2020-02-13 14:21:08.000000000","message":"Done","commit_id":"837c294c1fa85bb007763e1528b9ec5d93ccffe4"}],"neutron_lib/constants.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b6dc7bb406a9c8114f659e2c9a5935e4bf7e1cc4","unresolved":false,"context_lines":[{"line_number":632,"context_line":""},{"line_number":633,"context_line":"# Neutron Classifier types"},{"line_number":634,"context_line":"NC_ETHERNET \u003d \"ethernet\""},{"line_number":635,"context_line":"NC_IPV4 \u003d \"ipv4\""},{"line_number":636,"context_line":"NC_IPV6 \u003d \"ipv6\""},{"line_number":637,"context_line":"NC_TCP \u003d \"tcp\""},{"line_number":638,"context_line":"NC_UDP \u003d \"udp\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_705e3913","line":635,"updated":"2019-10-08 12:30:02.000000000","message":"constants.IPv4","commit_id":"de5d1e77d8ca199f8fcb3f55e9c06e0ac95b3e97"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b6dc7bb406a9c8114f659e2c9a5935e4bf7e1cc4","unresolved":false,"context_lines":[{"line_number":633,"context_line":"# Neutron Classifier types"},{"line_number":634,"context_line":"NC_ETHERNET \u003d \"ethernet\""},{"line_number":635,"context_line":"NC_IPV4 \u003d \"ipv4\""},{"line_number":636,"context_line":"NC_IPV6 \u003d \"ipv6\""},{"line_number":637,"context_line":"NC_TCP \u003d \"tcp\""},{"line_number":638,"context_line":"NC_UDP \u003d \"udp\""},{"line_number":639,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_d0a4cd0a","line":636,"updated":"2019-10-08 12:30:02.000000000","message":"nit: constants.IPv6","commit_id":"de5d1e77d8ca199f8fcb3f55e9c06e0ac95b3e97"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b6dc7bb406a9c8114f659e2c9a5935e4bf7e1cc4","unresolved":false,"context_lines":[{"line_number":634,"context_line":"NC_ETHERNET \u003d \"ethernet\""},{"line_number":635,"context_line":"NC_IPV4 \u003d \"ipv4\""},{"line_number":636,"context_line":"NC_IPV6 \u003d \"ipv6\""},{"line_number":637,"context_line":"NC_TCP \u003d \"tcp\""},{"line_number":638,"context_line":"NC_UDP \u003d \"udp\""},{"line_number":639,"context_line":""},{"line_number":640,"context_line":"NC_TYPES \u003d [NC_ETHERNET, NC_IPV4, NC_IPV6, NC_TCP, NC_UDP]"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_d06fedc2","line":637,"updated":"2019-10-08 12:30:02.000000000","message":"nit: PROTO_NAME_TCP","commit_id":"de5d1e77d8ca199f8fcb3f55e9c06e0ac95b3e97"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b6dc7bb406a9c8114f659e2c9a5935e4bf7e1cc4","unresolved":false,"context_lines":[{"line_number":635,"context_line":"NC_IPV4 \u003d \"ipv4\""},{"line_number":636,"context_line":"NC_IPV6 \u003d \"ipv6\""},{"line_number":637,"context_line":"NC_TCP \u003d \"tcp\""},{"line_number":638,"context_line":"NC_UDP \u003d \"udp\""},{"line_number":639,"context_line":""},{"line_number":640,"context_line":"NC_TYPES \u003d [NC_ETHERNET, NC_IPV4, NC_IPV6, NC_TCP, NC_UDP]"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_f07229ad","line":638,"updated":"2019-10-08 12:30:02.000000000","message":"nit: PROTO_NAME_UDP","commit_id":"de5d1e77d8ca199f8fcb3f55e9c06e0ac95b3e97"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2a45dbedbd7fa0a1db4cd80db059c0fb6d246617","unresolved":false,"context_lines":[{"line_number":633,"context_line":"NC_AND \u003d \"AND\""},{"line_number":634,"context_line":"NC_OR \u003d \"OR\""},{"line_number":635,"context_line":""},{"line_number":636,"context_line":"OPERATORS \u003d [NC_AND, NC_OR]"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"# Neutron Classifier types"},{"line_number":639,"context_line":"NC_ETHERNET \u003d \"ethernet\""}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_a31a6d68","line":636,"range":{"start_line":636,"start_character":0,"end_line":636,"end_character":9},"updated":"2020-02-03 09:35:58.000000000","message":"nit: to keep naming convention it should be named NC_OPERATORS probably","commit_id":"837c294c1fa85bb007763e1528b9ec5d93ccffe4"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a207619f419f1aabd755efb631ed92f53c0fad4d","unresolved":false,"context_lines":[{"line_number":633,"context_line":"NC_AND \u003d \"AND\""},{"line_number":634,"context_line":"NC_OR \u003d \"OR\""},{"line_number":635,"context_line":""},{"line_number":636,"context_line":"OPERATORS \u003d [NC_AND, NC_OR]"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"# Neutron Classifier types"},{"line_number":639,"context_line":"NC_ETHERNET \u003d \"ethernet\""}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_a9f1e7e1","line":636,"range":{"start_line":636,"start_character":0,"end_line":636,"end_character":9},"in_reply_to":"3fa7e38b_a31a6d68","updated":"2020-02-13 14:21:08.000000000","message":"Done","commit_id":"837c294c1fa85bb007763e1528b9ec5d93ccffe4"}],"neutron_lib/exceptions/classification.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7d7176b71f6bdf5e69220c4d408424dfd1588476","unresolved":false,"context_lines":[{"line_number":16,"context_line":"neutron-classifier exception handling."},{"line_number":17,"context_line":"\"\"\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from neutron_lib import exceptions as nexceptions"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class ConsumedClassification(nexceptions.NeutronException):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_6a1d060e","line":19,"range":{"start_line":19,"start_character":35,"end_line":19,"end_character":49},"updated":"2019-09-10 13:29:56.000000000","message":"small nit: in n-lib, neutron_lib.exceptions is not renamed.\n\n  from neutron_lib import exceptions","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a1772e7d243541e0fbcc111ace3e5ba4c745b724","unresolved":false,"context_lines":[{"line_number":16,"context_line":"neutron-classifier exception handling."},{"line_number":17,"context_line":"\"\"\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from neutron_lib import exceptions as nexceptions"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class ConsumedClassification(nexceptions.NeutronException):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_7776c872","line":19,"range":{"start_line":19,"start_character":35,"end_line":19,"end_character":49},"in_reply_to":"5faad753_6a1d060e","updated":"2019-10-02 12:58:10.000000000","message":"Done","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7d7176b71f6bdf5e69220c4d408424dfd1588476","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class ConsumedClassification(nexceptions.NeutronException):"},{"line_number":23,"context_line":"    message \u003d (\"\"\"One or more classification is already being consumed"},{"line_number":24,"context_line":"               and can\u0027t be used or deleted.\"\"\")"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_4af92ac6","line":23,"range":{"start_line":23,"start_character":15,"end_line":23,"end_character":18},"updated":"2019-09-10 13:29:56.000000000","message":"Not needed, just one quote (or double quotes); you have a parenthesis wrapping the text.","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a1772e7d243541e0fbcc111ace3e5ba4c745b724","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class ConsumedClassification(nexceptions.NeutronException):"},{"line_number":23,"context_line":"    message \u003d (\"\"\"One or more classification is already being consumed"},{"line_number":24,"context_line":"               and can\u0027t be used or deleted.\"\"\")"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_97710479","line":23,"range":{"start_line":23,"start_character":15,"end_line":23,"end_character":18},"in_reply_to":"5faad753_4af92ac6","updated":"2019-10-02 12:58:10.000000000","message":"Done","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7d7176b71f6bdf5e69220c4d408424dfd1588476","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class ConsumedClassificationGroup(nexceptions.NeutronException):"},{"line_number":36,"context_line":"    message \u003d (\"\"\"One or more classification group is being consumed"},{"line_number":37,"context_line":"               and can\u0027t be deleted.\"\"\")"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_2a170ef0","line":36,"range":{"start_line":36,"start_character":14,"end_line":36,"end_character":18},"updated":"2019-09-10 13:29:56.000000000","message":"ditto","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a1772e7d243541e0fbcc111ace3e5ba4c745b724","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class ConsumedClassificationGroup(nexceptions.NeutronException):"},{"line_number":36,"context_line":"    message \u003d (\"\"\"One or more classification group is being consumed"},{"line_number":37,"context_line":"               and can\u0027t be deleted.\"\"\")"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_376cd09a","line":36,"range":{"start_line":36,"start_character":14,"end_line":36,"end_character":18},"in_reply_to":"5faad753_2a170ef0","updated":"2019-10-02 12:58:10.000000000","message":"Done","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7d7176b71f6bdf5e69220c4d408424dfd1588476","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class InvalidUpdateRequest(nexceptions.NeutronException):"},{"line_number":41,"context_line":"    message \u003d (\"\"\"The update request is invalid. Only the name and description"},{"line_number":42,"context_line":"               can be updated.\"\"\")"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_ead6d627","line":41,"range":{"start_line":41,"start_character":14,"end_line":41,"end_character":18},"updated":"2019-09-10 13:29:56.000000000","message":"ditto","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a1772e7d243541e0fbcc111ace3e5ba4c745b724","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class InvalidUpdateRequest(nexceptions.NeutronException):"},{"line_number":41,"context_line":"    message \u003d (\"\"\"The update request is invalid. Only the name and description"},{"line_number":42,"context_line":"               can be updated.\"\"\")"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_57670cb8","line":41,"range":{"start_line":41,"start_character":14,"end_line":41,"end_character":18},"in_reply_to":"5faad753_ead6d627","updated":"2019-10-02 12:58:10.000000000","message":"Done","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7d7176b71f6bdf5e69220c4d408424dfd1588476","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class InvalidClassificationDefintion(nexceptions.NeutronException):"},{"line_number":46,"context_line":"    message \u003d (\"\"\"The classification definition(fields) is incorrect."},{"line_number":47,"context_line":"               Please check the valid fields for the classification.\"\"\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_0aca526c","line":46,"range":{"start_line":46,"start_character":48,"end_line":46,"end_character":54},"updated":"2019-09-10 13:29:56.000000000","message":"Do you want here to pass an argument? If so, this should be %(fields)s","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7d7176b71f6bdf5e69220c4d408424dfd1588476","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class InvalidClassificationDefintion(nexceptions.NeutronException):"},{"line_number":46,"context_line":"    message \u003d (\"\"\"The classification definition(fields) is incorrect."},{"line_number":47,"context_line":"               Please check the valid fields for the classification.\"\"\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_6ae2e603","line":46,"range":{"start_line":46,"start_character":14,"end_line":46,"end_character":18},"updated":"2019-09-10 13:29:56.000000000","message":"ditto","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a1772e7d243541e0fbcc111ace3e5ba4c745b724","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class InvalidClassificationDefintion(nexceptions.NeutronException):"},{"line_number":46,"context_line":"    message \u003d (\"\"\"The classification definition(fields) is incorrect."},{"line_number":47,"context_line":"               Please check the valid fields for the classification.\"\"\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_77fb28c0","line":46,"range":{"start_line":46,"start_character":48,"end_line":46,"end_character":54},"in_reply_to":"5faad753_0aca526c","updated":"2019-10-02 12:58:10.000000000","message":"No, this was just specifying that the definition refers to the classification fields.\nDuring my refactor I\u0027ve made this more consistent across the code that the fields are referred to as the definition.","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"a1772e7d243541e0fbcc111ace3e5ba4c745b724","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class InvalidClassificationDefintion(nexceptions.NeutronException):"},{"line_number":46,"context_line":"    message \u003d (\"\"\"The classification definition(fields) is incorrect."},{"line_number":47,"context_line":"               Please check the valid fields for the classification.\"\"\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_97f6e4d6","line":46,"range":{"start_line":46,"start_character":14,"end_line":46,"end_character":18},"in_reply_to":"5faad753_6ae2e603","updated":"2019-10-02 12:58:10.000000000","message":"Done","commit_id":"5f9498a2ea4a0ce54ec894c770906f4824179db9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b6dc7bb406a9c8114f659e2c9a5935e4bf7e1cc4","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class ConsumedClassification(exceptions.NeutronException):"},{"line_number":23,"context_line":"    message \u003d (\"One or more classification is already being consumed\""},{"line_number":24,"context_line":"               \"and can\u0027t be used or deleted.\")"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_90dc1575","line":23,"updated":"2019-10-08 12:30:02.000000000","message":"nit: space needed","commit_id":"de5d1e77d8ca199f8fcb3f55e9c06e0ac95b3e97"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b6dc7bb406a9c8114f659e2c9a5935e4bf7e1cc4","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class ConsumedClassificationGroup(exceptions.NeutronException):"},{"line_number":36,"context_line":"    message \u003d (\"One or more classification group is being consumed\""},{"line_number":37,"context_line":"               \"and can\u0027t be deleted.\")"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_50e69d46","line":36,"updated":"2019-10-08 12:30:02.000000000","message":"nit: space needed","commit_id":"de5d1e77d8ca199f8fcb3f55e9c06e0ac95b3e97"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b6dc7bb406a9c8114f659e2c9a5935e4bf7e1cc4","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class InvalidUpdateRequest(exceptions.NeutronException):"},{"line_number":41,"context_line":"    message \u003d (\"The update request is invalid. Only the name and description\""},{"line_number":42,"context_line":"               \"can be updated.\")"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_30ec4128","line":41,"updated":"2019-10-08 12:30:02.000000000","message":"nit: space needed","commit_id":"de5d1e77d8ca199f8fcb3f55e9c06e0ac95b3e97"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b6dc7bb406a9c8114f659e2c9a5935e4bf7e1cc4","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class InvalidClassificationDefintion(exceptions.NeutronException):"},{"line_number":46,"context_line":"    message \u003d (\"The classification definition is incorrect.\""},{"line_number":47,"context_line":"               \"Please check the valid fields for the classification.\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_30d52144","line":46,"updated":"2019-10-08 12:30:02.000000000","message":"ditto","commit_id":"de5d1e77d8ca199f8fcb3f55e9c06e0ac95b3e97"}]}
