)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fea42d510efb9e4f403a5fe3b382ab37c90d559e","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Task: 28650"},{"line_number":16,"context_line":"Task: 28656"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Depends-On: https://review.openstack.org/627307"},{"line_number":19,"context_line":"Depends-On: https://review.openstack.org/627308"},{"line_number":20,"context_line":"Change-Id: I3b9f2be581dcbd4a539b8040a387512b55597953"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1f769fc5_5afa7542","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":47},"updated":"2018-12-27 09:42:43.000000000","message":"python-vitragecient patch should be depended on API changes. You can\u0027t merge client code without API","commit_id":"495ce7e477af1191bb61275f89b85fc29ad33ef4"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"de0558c37fc21cd1cc541fe12c97cd2921f376e8","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Task: 28650"},{"line_number":16,"context_line":"Task: 28656"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Depends-On: https://review.openstack.org/627307"},{"line_number":19,"context_line":"Depends-On: https://review.openstack.org/627308"},{"line_number":20,"context_line":"Change-Id: I3b9f2be581dcbd4a539b8040a387512b55597953"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1f769fc5_9dab27d5","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":47},"in_reply_to":"1f769fc5_5afa7542","updated":"2018-12-27 10:18:46.000000000","message":"But than it will be circular, no?\nCan it be merged?","commit_id":"495ce7e477af1191bb61275f89b85fc29ad33ef4"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fea42d510efb9e4f403a5fe3b382ab37c90d559e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Task: 28656"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Depends-On: https://review.openstack.org/627307"},{"line_number":19,"context_line":"Depends-On: https://review.openstack.org/627308"},{"line_number":20,"context_line":"Change-Id: I3b9f2be581dcbd4a539b8040a387512b55597953"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1f769fc5_fa94a1ea","line":19,"range":{"start_line":19,"start_character":7,"end_line":19,"end_character":8},"updated":"2018-12-27 09:42:43.000000000","message":"The same as above.","commit_id":"495ce7e477af1191bb61275f89b85fc29ad33ef4"}],"doc/source/contributor/vitrage-api.rst":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"003081d0163ddf5ebaec2f824b514f92d0c12fdc","unresolved":false,"context_lines":[{"line_number":1437,"context_line":"Count resources"},{"line_number":1438,"context_line":""},{"line_number":1439,"context_line":"POST /v1/resources/count"},{"line_number":1440,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":1441,"context_line":""},{"line_number":1442,"context_line":"Headers"},{"line_number":1443,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1f769fc5_bf0aa587","line":1440,"range":{"start_line":1440,"start_character":24,"end_line":1440,"end_character":30},"updated":"2018-12-25 14:40:55.000000000","message":"Should be deleted","commit_id":"d35717ffedca30229a8fc3c25fc7e7be60a2cacf"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"1cc3632a07a76cfc2f0f24757ad9991520e7cfce","unresolved":false,"context_lines":[{"line_number":1437,"context_line":"Count resources"},{"line_number":1438,"context_line":""},{"line_number":1439,"context_line":"POST /v1/resources/count"},{"line_number":1440,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":1441,"context_line":""},{"line_number":1442,"context_line":"Headers"},{"line_number":1443,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1f769fc5_d178b5f9","line":1440,"range":{"start_line":1440,"start_character":24,"end_line":1440,"end_character":30},"in_reply_to":"1f769fc5_bf0aa587","updated":"2018-12-26 07:43:02.000000000","message":"Done","commit_id":"d35717ffedca30229a8fc3c25fc7e7be60a2cacf"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"003081d0163ddf5ebaec2f824b514f92d0c12fdc","unresolved":false,"context_lines":[{"line_number":1463,"context_line":"* resource_type - (string, optional) the type of resource, defaults to return all resources."},{"line_number":1464,"context_line":"* all_tenants - (boolean, optional) shows the resources of all tenants (in case the user has the permissions)."},{"line_number":1465,"context_line":"* query - (string, optional) a json query to filter the resources by"},{"line_number":1466,"context_line":"* group_by - (string, optional) a resource data field, to group by it\\\u0027s values"},{"line_number":1467,"context_line":""},{"line_number":1468,"context_line":"Request Examples"},{"line_number":1469,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1f769fc5_7f040d7c","line":1466,"range":{"start_line":1466,"start_character":69,"end_line":1466,"end_character":71},"updated":"2018-12-25 14:40:55.000000000","message":"Not needed","commit_id":"d35717ffedca30229a8fc3c25fc7e7be60a2cacf"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"1cc3632a07a76cfc2f0f24757ad9991520e7cfce","unresolved":false,"context_lines":[{"line_number":1463,"context_line":"* resource_type - (string, optional) the type of resource, defaults to return all resources."},{"line_number":1464,"context_line":"* all_tenants - (boolean, optional) shows the resources of all tenants (in case the user has the permissions)."},{"line_number":1465,"context_line":"* query - (string, optional) a json query to filter the resources by"},{"line_number":1466,"context_line":"* group_by - (string, optional) a resource data field, to group by it\\\u0027s values"},{"line_number":1467,"context_line":""},{"line_number":1468,"context_line":"Request Examples"},{"line_number":1469,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1f769fc5_91823dc8","line":1466,"range":{"start_line":1466,"start_character":69,"end_line":1466,"end_character":71},"in_reply_to":"1f769fc5_7f040d7c","updated":"2018-12-26 07:43:02.000000000","message":"Done","commit_id":"d35717ffedca30229a8fc3c25fc7e7be60a2cacf"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"003081d0163ddf5ebaec2f824b514f92d0c12fdc","unresolved":false,"context_lines":[{"line_number":1524,"context_line":"Response Examples"},{"line_number":1525,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":1526,"context_line":""},{"line_number":1527,"context_line":"For the above request, all count all instances with status OK or SUBOPTIMAL,"},{"line_number":1528,"context_line":"group by the status field."},{"line_number":1529,"context_line":""},{"line_number":1530,"context_line":"::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1f769fc5_dff2019b","line":1527,"range":{"start_line":1527,"start_character":23,"end_line":1527,"end_character":26},"updated":"2018-12-25 14:40:55.000000000","message":"will","commit_id":"d35717ffedca30229a8fc3c25fc7e7be60a2cacf"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"1cc3632a07a76cfc2f0f24757ad9991520e7cfce","unresolved":false,"context_lines":[{"line_number":1524,"context_line":"Response Examples"},{"line_number":1525,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":1526,"context_line":""},{"line_number":1527,"context_line":"For the above request, all count all instances with status OK or SUBOPTIMAL,"},{"line_number":1528,"context_line":"group by the status field."},{"line_number":1529,"context_line":""},{"line_number":1530,"context_line":"::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1f769fc5_b18739d8","line":1527,"range":{"start_line":1527,"start_character":23,"end_line":1527,"end_character":26},"in_reply_to":"1f769fc5_dff2019b","updated":"2018-12-26 07:43:02.000000000","message":"Done","commit_id":"d35717ffedca30229a8fc3c25fc7e7be60a2cacf"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fea42d510efb9e4f403a5fe3b382ab37c90d559e","unresolved":false,"context_lines":[{"line_number":1259,"context_line":"^^^^^^^^^^^^^"},{"line_number":1260,"context_line":"List the resources with specified type or all the resources."},{"line_number":1261,"context_line":""},{"line_number":1262,"context_line":"POST /v1/resources/"},{"line_number":1263,"context_line":"~~~~~~~~~~~~~~~~~~~"},{"line_number":1264,"context_line":""},{"line_number":1265,"context_line":"Headers"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f769fc5_9a856db0","line":1262,"updated":"2018-12-27 09:42:43.000000000","message":"Why did you change it to POST. It should be GET. At least, we should keep backward compatibility","commit_id":"495ce7e477af1191bb61275f89b85fc29ad33ef4"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"de0558c37fc21cd1cc541fe12c97cd2921f376e8","unresolved":false,"context_lines":[{"line_number":1259,"context_line":"^^^^^^^^^^^^^"},{"line_number":1260,"context_line":"List the resources with specified type or all the resources."},{"line_number":1261,"context_line":""},{"line_number":1262,"context_line":"POST /v1/resources/"},{"line_number":1263,"context_line":"~~~~~~~~~~~~~~~~~~~"},{"line_number":1264,"context_line":""},{"line_number":1265,"context_line":"Headers"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f769fc5_dd743f9c","line":1262,"in_reply_to":"1f769fc5_9a856db0","updated":"2018-12-27 10:18:46.000000000","message":"I\u0027ve added a json parameter that is better used with post. And so deprecated the previous GET impl while keeping it for backward compatibility, and added a new POST impl. The client now uses the new POST.","commit_id":"495ce7e477af1191bb61275f89b85fc29ad33ef4"}],"vitrage/api/controllers/v1/count.py":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"003081d0163ddf5ebaec2f824b514f92d0c12fdc","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            enforce(\"count resources\", pecan.request.headers,"},{"line_number":75,"context_line":"                    pecan.request.enforcer, {})"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        LOG.info(\u0027received get resource counts\u0027)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        try:"},{"line_number":80,"context_line":"            resource_counts_json \u003d pecan.request.client.call("}],"source_content_type":"text/x-python","patch_set":2,"id":"1f769fc5_bf2f05f5","line":77,"range":{"start_line":77,"start_character":12,"end_line":77,"end_character":16},"updated":"2018-12-25 14:40:55.000000000","message":"Do we want it in info level?","commit_id":"d35717ffedca30229a8fc3c25fc7e7be60a2cacf"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"1cc3632a07a76cfc2f0f24757ad9991520e7cfce","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            enforce(\"count resources\", pecan.request.headers,"},{"line_number":75,"context_line":"                    pecan.request.enforcer, {})"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        LOG.info(\u0027received get resource counts\u0027)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        try:"},{"line_number":80,"context_line":"            resource_counts_json \u003d pecan.request.client.call("}],"source_content_type":"text/x-python","patch_set":2,"id":"1f769fc5_f1cb711b","line":77,"range":{"start_line":77,"start_character":12,"end_line":77,"end_character":16},"in_reply_to":"1f769fc5_bf2f05f5","updated":"2018-12-26 07:43:02.000000000","message":"I think it\u0027s fine","commit_id":"d35717ffedca30229a8fc3c25fc7e7be60a2cacf"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fea42d510efb9e4f403a5fe3b382ab37c90d559e","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        except Exception:"},{"line_number":90,"context_line":"            LOG.exception(\u0027failed to get resource count.\u0027)"},{"line_number":91,"context_line":"            abort(404, \u0027Failed to get resource count.\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f769fc5_9aaecd2c","line":91,"updated":"2018-12-27 09:42:43.000000000","message":"Do we really want to return 404  in any case?","commit_id":"495ce7e477af1191bb61275f89b85fc29ad33ef4"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"de0558c37fc21cd1cc541fe12c97cd2921f376e8","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        except Exception:"},{"line_number":90,"context_line":"            LOG.exception(\u0027failed to get resource count.\u0027)"},{"line_number":91,"context_line":"            abort(404, \u0027Failed to get resource count.\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f769fc5_dd82ff4f","line":91,"in_reply_to":"1f769fc5_9aaecd2c","updated":"2018-12-27 10:18:46.000000000","message":"Good question, but it\u0027s the same for most APIs, i would solve this in a different change","commit_id":"495ce7e477af1191bb61275f89b85fc29ad33ef4"}],"vitrage/api/controllers/v1/resource.py":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"003081d0163ddf5ebaec2f824b514f92d0c12fdc","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        all_tenants \u003d kwargs.get(\u0027all_tenants\u0027, False)"},{"line_number":60,"context_line":"        all_tenants \u003d bool_from_string(all_tenants)"},{"line_number":61,"context_line":"        if kwargs.get(\u0027query\u0027):"},{"line_number":62,"context_line":"            LOG.warning(\u0027GET list resources does not supprt query - use POST\u0027)"},{"line_number":63,"context_line":"            abort(404, \u0027Query argument is not supported by GET, use POST\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        try:"},{"line_number":66,"context_line":"            return self._get_resources(resource_type, all_tenants)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f769fc5_7f396d3f","line":63,"range":{"start_line":62,"start_character":12,"end_line":63,"end_character":74},"updated":"2018-12-25 14:40:55.000000000","message":"Why two different warnings?","commit_id":"d35717ffedca30229a8fc3c25fc7e7be60a2cacf"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"1cc3632a07a76cfc2f0f24757ad9991520e7cfce","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        all_tenants \u003d kwargs.get(\u0027all_tenants\u0027, False)"},{"line_number":60,"context_line":"        all_tenants \u003d bool_from_string(all_tenants)"},{"line_number":61,"context_line":"        if kwargs.get(\u0027query\u0027):"},{"line_number":62,"context_line":"            LOG.warning(\u0027GET list resources does not supprt query - use POST\u0027)"},{"line_number":63,"context_line":"            abort(404, \u0027Query argument is not supported by GET, use POST\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        try:"},{"line_number":66,"context_line":"            return self._get_resources(resource_type, all_tenants)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f769fc5_11806d8b","line":63,"range":{"start_line":62,"start_character":12,"end_line":63,"end_character":74},"in_reply_to":"1f769fc5_7f396d3f","updated":"2018-12-26 07:43:02.000000000","message":"Done","commit_id":"d35717ffedca30229a8fc3c25fc7e7be60a2cacf"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"003081d0163ddf5ebaec2f824b514f92d0c12fdc","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            enforce(\u0027list resources\u0027, pecan.request.headers,"},{"line_number":81,"context_line":"                    pecan.request.enforcer, {})"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        LOG.info(\u0027received resources list with type filter %s and query %s\u0027,"},{"line_number":84,"context_line":"                 resource_type, str(query))"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        LOG.info(\u0027get_resources with type: %s, all_tenants: %s, query: %s\u0027,"},{"line_number":87,"context_line":"                 resource_type, all_tenants, str(query))"},{"line_number":88,"context_line":"        resources \u003d pecan.request.client.call("},{"line_number":89,"context_line":"            pecan.request.context,"},{"line_number":90,"context_line":"            \u0027get_resources\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f769fc5_1f3e3929","line":87,"range":{"start_line":83,"start_character":0,"end_line":87,"end_character":56},"updated":"2018-12-25 14:40:55.000000000","message":"info level?","commit_id":"d35717ffedca30229a8fc3c25fc7e7be60a2cacf"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"1cc3632a07a76cfc2f0f24757ad9991520e7cfce","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            enforce(\u0027list resources\u0027, pecan.request.headers,"},{"line_number":81,"context_line":"                    pecan.request.enforcer, {})"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        LOG.info(\u0027received resources list with type filter %s and query %s\u0027,"},{"line_number":84,"context_line":"                 resource_type, str(query))"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        LOG.info(\u0027get_resources with type: %s, all_tenants: %s, query: %s\u0027,"},{"line_number":87,"context_line":"                 resource_type, all_tenants, str(query))"},{"line_number":88,"context_line":"        resources \u003d pecan.request.client.call("},{"line_number":89,"context_line":"            pecan.request.context,"},{"line_number":90,"context_line":"            \u0027get_resources\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f769fc5_11594d59","line":87,"range":{"start_line":83,"start_character":0,"end_line":87,"end_character":56},"in_reply_to":"1f769fc5_1f3e3929","updated":"2018-12-26 07:43:02.000000000","message":"Thanks, I removed the first log. It is from the original code.","commit_id":"d35717ffedca30229a8fc3c25fc7e7be60a2cacf"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fea42d510efb9e4f403a5fe3b382ab37c90d559e","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        resource_type \u003d kwargs.get(\u0027resource_type\u0027, None)"},{"line_number":59,"context_line":"        all_tenants \u003d kwargs.get(\u0027all_tenants\u0027, False)"},{"line_number":60,"context_line":"        all_tenants \u003d bool_from_string(all_tenants)"},{"line_number":61,"context_line":"        if kwargs.get(\u0027query\u0027):"},{"line_number":62,"context_line":"            abort(404, \u0027Query argument is not supported by GET, use POST\u0027)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f769fc5_3aabf91d","line":61,"updated":"2018-12-27 09:42:43.000000000","message":"We need to keep backward compatibility","commit_id":"495ce7e477af1191bb61275f89b85fc29ad33ef4"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"3fc85ae9d595e528117ee4d15c7157036af358c9","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        resource_type \u003d kwargs.get(\u0027resource_type\u0027, None)"},{"line_number":59,"context_line":"        all_tenants \u003d kwargs.get(\u0027all_tenants\u0027, False)"},{"line_number":60,"context_line":"        all_tenants \u003d bool_from_string(all_tenants)"},{"line_number":61,"context_line":"        if kwargs.get(\u0027query\u0027):"},{"line_number":62,"context_line":"            abort(404, \u0027Query argument is not supported by GET, use POST\u0027)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f769fc5_3dbf73fc","line":61,"in_reply_to":"1f769fc5_3aabf91d","updated":"2018-12-27 10:21:29.000000000","message":"I dont see a problem here with this.\nBut, added a patchset to allow query use in the deprecated GET  get_all","commit_id":"495ce7e477af1191bb61275f89b85fc29ad33ef4"}],"vitrage/common/policies/resource.py":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"003081d0163ddf5ebaec2f824b514f92d0c12fdc","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        operations\u003d["},{"line_number":48,"context_line":"            {"},{"line_number":49,"context_line":"                \u0027path\u0027: \u0027/resources\u0027,"},{"line_number":50,"context_line":"                \u0027method\u0027: \u0027GET\u0027"},{"line_number":51,"context_line":"            }"},{"line_number":52,"context_line":"        ]"},{"line_number":53,"context_line":"    ),"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f769fc5_9f1329b9","line":50,"range":{"start_line":50,"start_character":16,"end_line":50,"end_character":31},"updated":"2018-12-25 14:40:55.000000000","message":"Should be changed to POST (or add another policy for POST)?","commit_id":"d35717ffedca30229a8fc3c25fc7e7be60a2cacf"}],"vitrage/graph/driver/networkx_graph.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"21a00242fe264855fde8f1bc1b085d3b3224d249","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        return vertices_ids"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def get_vertices_count(self, query_dict, group_by):"},{"line_number":267,"context_line":"        if not query_dict:"},{"line_number":268,"context_line":"            return list(self._g.nodes())"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        vertices_counts \u003d defaultdict(int)"},{"line_number":271,"context_line":"        match_func \u003d create_predicate(query_dict)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f769fc5_7f13ad0e","line":268,"range":{"start_line":267,"start_character":7,"end_line":268,"end_character":40},"updated":"2018-12-25 13:46:48.000000000","message":"I  think this is wrong","commit_id":"0da74e3a315c5b04284e505e19ed01632220cb1f"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"1cc3632a07a76cfc2f0f24757ad9991520e7cfce","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        return vertices_ids"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def get_vertices_count(self, query_dict, group_by):"},{"line_number":267,"context_line":"        if not query_dict:"},{"line_number":268,"context_line":"            return list(self._g.nodes())"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        vertices_counts \u003d defaultdict(int)"},{"line_number":271,"context_line":"        match_func \u003d create_predicate(query_dict)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f769fc5_5127c513","line":268,"range":{"start_line":267,"start_character":7,"end_line":268,"end_character":40},"in_reply_to":"1f769fc5_7f13ad0e","updated":"2018-12-26 07:43:02.000000000","message":"Fixed, thanks!","commit_id":"0da74e3a315c5b04284e505e19ed01632220cb1f"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"21a00242fe264855fde8f1bc1b085d3b3224d249","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        if not query_dict:"},{"line_number":268,"context_line":"            return list(self._g.nodes())"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        vertices_counts \u003d defaultdict(int)"},{"line_number":271,"context_line":"        match_func \u003d create_predicate(query_dict)"},{"line_number":272,"context_line":"        for node, node_data in self._g.nodes(data\u003dTrue):"},{"line_number":273,"context_line":"            if match_func(node_data):"},{"line_number":274,"context_line":"                vertices_counts[node_data.get(group_by, \u0027\u0027)] +\u003d 1"},{"line_number":275,"context_line":"        return vertices_counts"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def get_vertices_by_key(self, key_values_hash):"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f769fc5_df01a1b1","line":275,"range":{"start_line":270,"start_character":7,"end_line":275,"end_character":30},"updated":"2018-12-25 13:46:48.000000000","message":"consider using the Counter class in python\nhttps://docs.python.org/2/library/collections.html","commit_id":"0da74e3a315c5b04284e505e19ed01632220cb1f"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"1cc3632a07a76cfc2f0f24757ad9991520e7cfce","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        if not query_dict:"},{"line_number":268,"context_line":"            return list(self._g.nodes())"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        vertices_counts \u003d defaultdict(int)"},{"line_number":271,"context_line":"        match_func \u003d create_predicate(query_dict)"},{"line_number":272,"context_line":"        for node, node_data in self._g.nodes(data\u003dTrue):"},{"line_number":273,"context_line":"            if match_func(node_data):"},{"line_number":274,"context_line":"                vertices_counts[node_data.get(group_by, \u0027\u0027)] +\u003d 1"},{"line_number":275,"context_line":"        return vertices_counts"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def get_vertices_by_key(self, key_values_hash):"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f769fc5_311ec9ba","line":275,"range":{"start_line":270,"start_character":7,"end_line":275,"end_character":30},"in_reply_to":"1f769fc5_df01a1b1","updated":"2018-12-26 07:43:02.000000000","message":"Nice, but would require longer code","commit_id":"0da74e3a315c5b04284e505e19ed01632220cb1f"}]}
