)]}'
{"doc/source/topics/settings.rst":[{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"f1291642b5f6751257fc26d0afa58447436ea4b3","unresolved":false,"context_lines":[{"line_number":1299,"context_line":"``enable_qos``"},{"line_number":1300,"context_line":"~~~~~~~~~~~~~~"},{"line_number":1301,"context_line":""},{"line_number":1302,"context_line":"(Deprecated)"},{"line_number":1303,"context_line":""},{"line_number":1304,"context_line":"Default: ``True``"},{"line_number":1305,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"3a1ff146_7d884d23","line":1302,"updated":"2017-03-15 13:31:15.000000000","message":"Why are we adding a deprecated setting? If we don\u0027t want to control it via a setting, and just detect it, then remove this. Personally I would just control panel visibility by extension and policy, not a setting.","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"8a734e486359b57ccf7d9bc7acc67520360c436d","unresolved":false,"context_lines":[{"line_number":1299,"context_line":"``enable_qos``"},{"line_number":1300,"context_line":"~~~~~~~~~~~~~~"},{"line_number":1301,"context_line":""},{"line_number":1302,"context_line":"(Deprecated)"},{"line_number":1303,"context_line":""},{"line_number":1304,"context_line":"Default: ``True``"},{"line_number":1305,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"3a1ff146_94e23ed4","line":1302,"in_reply_to":"3a1ff146_7d884d23","updated":"2017-03-15 15:25:27.000000000","message":"removed","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"}],"openstack_dashboard/api/neutron.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"af5c4dfaff3cbbf55b2f8bbe91eefc9601669f20","unresolved":false,"context_lines":[{"line_number":1329,"context_line":"    \"\"\"Wrapper for neutron QoS Policy.\"\"\""},{"line_number":1330,"context_line":""},{"line_number":1331,"context_line":"    def to_dict(self):"},{"line_number":1332,"context_line":"        policy_dict \u003d self._apidict"},{"line_number":1333,"context_line":"        return policy_dict"},{"line_number":1334,"context_line":""},{"line_number":1335,"context_line":""},{"line_number":1336,"context_line":"def policy_create(request, **kwargs):"}],"source_content_type":"text/x-python","patch_set":31,"id":"ff0f0b1f_8fc80274","line":1333,"range":{"start_line":1332,"start_character":8,"end_line":1333,"end_character":26},"updated":"2017-05-24 07:04:58.000000000","message":"You don\u0027t need to assign a value to \u0027policy_dict\u0027.\n\n  return self._apidict","commit_id":"4ea2d66aed03360263ebc0000b14bb3080cd0a56"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"a443f7f8b5ee160afdb6aaf45fc9ea5728456e50","unresolved":false,"context_lines":[{"line_number":1329,"context_line":"    \"\"\"Wrapper for neutron QoS Policy.\"\"\""},{"line_number":1330,"context_line":""},{"line_number":1331,"context_line":"    def to_dict(self):"},{"line_number":1332,"context_line":"        policy_dict \u003d self._apidict"},{"line_number":1333,"context_line":"        return policy_dict"},{"line_number":1334,"context_line":""},{"line_number":1335,"context_line":""},{"line_number":1336,"context_line":"def policy_create(request, **kwargs):"}],"source_content_type":"text/x-python","patch_set":31,"id":"ff0f0b1f_8fd237d0","line":1333,"range":{"start_line":1332,"start_character":8,"end_line":1333,"end_character":26},"in_reply_to":"ff0f0b1f_8fc80274","updated":"2017-05-24 15:54:14.000000000","message":"Done","commit_id":"4ea2d66aed03360263ebc0000b14bb3080cd0a56"}],"openstack_dashboard/api/neutron_qos.py":[{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"f1291642b5f6751257fc26d0afa58447436ea4b3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015, 2016 Red Hat, Inc."},{"line_number":2,"context_line":"# All Rights Reserved"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a1ff146_ddb941eb","line":1,"updated":"2017-03-15 13:31:15.000000000","message":"This applies to all files, but it needs to be 2017","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"8a734e486359b57ccf7d9bc7acc67520360c436d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015, 2016 Red Hat, Inc."},{"line_number":2,"context_line":"# All Rights Reserved"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a1ff146_94095e98","line":1,"in_reply_to":"3a1ff146_ddb941eb","updated":"2017-03-15 15:25:27.000000000","message":"This actually needs to be removed altogether - this was added prior to Red Hat saying they don\u0027t need to have their copyright across files.","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"f1291642b5f6751257fc26d0afa58447436ea4b3","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from openstack_dashboard.api import neutron"},{"line_number":18,"context_line":"from openstack_dashboard.api.neutron import neutronclient"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class QoSPolicy(neutron.NeutronAPIDictWrapper):"},{"line_number":22,"context_line":"    \"\"\"Wrapper for neutron QoS Policy.\"\"\""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3a1ff146_5dc63168","line":20,"updated":"2017-03-15 13:31:15.000000000","message":"Any reason not to just add this to the api/neutron file?","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"8a734e486359b57ccf7d9bc7acc67520360c436d","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from openstack_dashboard.api import neutron"},{"line_number":18,"context_line":"from openstack_dashboard.api.neutron import neutronclient"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class QoSPolicy(neutron.NeutronAPIDictWrapper):"},{"line_number":22,"context_line":"    \"\"\"Wrapper for neutron QoS Policy.\"\"\""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3a1ff146_747942fc","line":20,"in_reply_to":"3a1ff146_5dc63168","updated":"2017-03-15 15:25:27.000000000","message":"I think it\u0027s clearer to have it as a separate file for the QoS specific definitions. If there were just 1 or 2 I would probably agree but as there are more I think a separate file keeps it cleaner.\n\nOn this note though, do you think it would be clearer again to have the rest api file separated out as well for consistency? That one is in with the neutron.py due to there only being 2 of them.","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6af3a71c50cbf8059623337b7e36387859d3d367","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"7ffa3b31_676312b3","updated":"2017-04-18 10:31:39.000000000","message":"nit: We usually have all stuff related to neutron in api.neutron. Could you merge this into api.neutron?","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"9ce4cb7e826142484c7c5f2d875453a2b5b5e189","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"ff0f0b1f_189a486d","in_reply_to":"7ffa3b31_676312b3","updated":"2017-05-22 12:01:33.000000000","message":"Done","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6af3a71c50cbf8059623337b7e36387859d3d367","unresolved":false,"context_lines":[{"line_number":21,"context_line":"class QoSPolicy(neutron.NeutronAPIDictWrapper):"},{"line_number":22,"context_line":"    \"\"\"Wrapper for neutron QoS Policy.\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def get_dict(self):"},{"line_number":25,"context_line":"        policy_dict \u003d self._apidict"},{"line_number":26,"context_line":"        policy_dict[\u0027policy_id\u0027] \u003d policy_dict[\u0027id\u0027]"},{"line_number":27,"context_line":"        return policy_dict"}],"source_content_type":"text/x-python","patch_set":29,"id":"7ffa3b31_a7fd9ab2","line":24,"range":{"start_line":24,"start_character":8,"end_line":24,"end_character":16},"updated":"2017-04-18 10:31:39.000000000","message":"Why is this method needed? to_dict() method is not enough for you?","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"9ce4cb7e826142484c7c5f2d875453a2b5b5e189","unresolved":false,"context_lines":[{"line_number":21,"context_line":"class QoSPolicy(neutron.NeutronAPIDictWrapper):"},{"line_number":22,"context_line":"    \"\"\"Wrapper for neutron QoS Policy.\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def get_dict(self):"},{"line_number":25,"context_line":"        policy_dict \u003d self._apidict"},{"line_number":26,"context_line":"        policy_dict[\u0027policy_id\u0027] \u003d policy_dict[\u0027id\u0027]"},{"line_number":27,"context_line":"        return policy_dict"}],"source_content_type":"text/x-python","patch_set":29,"id":"ff0f0b1f_f88af418","line":24,"range":{"start_line":24,"start_character":8,"end_line":24,"end_character":16},"in_reply_to":"7ffa3b31_a7fd9ab2","updated":"2017-05-22 12:01:33.000000000","message":"removed","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6af3a71c50cbf8059623337b7e36387859d3d367","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def get_dict(self):"},{"line_number":25,"context_line":"        policy_dict \u003d self._apidict"},{"line_number":26,"context_line":"        policy_dict[\u0027policy_id\u0027] \u003d policy_dict[\u0027id\u0027]"},{"line_number":27,"context_line":"        return policy_dict"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"7ffa3b31_07e7ae14","line":26,"range":{"start_line":26,"start_character":8,"end_line":26,"end_character":52},"updated":"2017-04-18 10:31:39.000000000","message":"Why do you require policy_id? I think QoSPolicy.id is clear enough as attribute name.","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"9ce4cb7e826142484c7c5f2d875453a2b5b5e189","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def get_dict(self):"},{"line_number":25,"context_line":"        policy_dict \u003d self._apidict"},{"line_number":26,"context_line":"        policy_dict[\u0027policy_id\u0027] \u003d policy_dict[\u0027id\u0027]"},{"line_number":27,"context_line":"        return policy_dict"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"ff0f0b1f_b8847c0d","line":26,"range":{"start_line":26,"start_character":8,"end_line":26,"end_character":52},"in_reply_to":"7ffa3b31_07e7ae14","updated":"2017-05-22 12:01:33.000000000","message":"removed","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"def0b5e63e4e1387f734ef0369e66590ff9a0c2e","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    return [QoSPolicy(p) for p in policies]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"def policy_get(request, policy_id, **kwargs):"},{"line_number":53,"context_line":"    \"\"\"Get QoS policy for a given policy id.\"\"\""},{"line_number":54,"context_line":"    policy \u003d neutronclient(request).show_qos_policy("},{"line_number":55,"context_line":"        policy_id, **kwargs).get(\u0027policy\u0027)"},{"line_number":56,"context_line":"    return QoSPolicy(policy)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"def policy_update(request, policy_id, **kwargs):"},{"line_number":60,"context_line":"    \"\"\"Update the QoS policy with the given params.\"\"\""},{"line_number":61,"context_line":"    body \u003d {\u0027policy\u0027: kwargs}"},{"line_number":62,"context_line":"    policy \u003d neutronclient(request).update_qos_policy("},{"line_number":63,"context_line":"        policy_id, body\u003dbody).get(\u0027policy\u0027)"},{"line_number":64,"context_line":"    return QoSPolicy(policy)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"def policy_delete(request, policy_id):"},{"line_number":68,"context_line":"    \"\"\"Delete the given QoS Policy.\"\"\""},{"line_number":69,"context_line":"    neutronclient(request).delete_qos_policy(policy_id)"}],"source_content_type":"text/x-python","patch_set":29,"id":"1f013ff3_8b6c1437","line":69,"range":{"start_line":52,"start_character":0,"end_line":69,"end_character":55},"updated":"2017-05-15 19:22:22.000000000","message":"As I see you don\u0027t use these methods in this patch, consider adding new methods only when you start using them to make the actual patch easy to read/review.","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"9ce4cb7e826142484c7c5f2d875453a2b5b5e189","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    return [QoSPolicy(p) for p in policies]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"def policy_get(request, policy_id, **kwargs):"},{"line_number":53,"context_line":"    \"\"\"Get QoS policy for a given policy id.\"\"\""},{"line_number":54,"context_line":"    policy \u003d neutronclient(request).show_qos_policy("},{"line_number":55,"context_line":"        policy_id, **kwargs).get(\u0027policy\u0027)"},{"line_number":56,"context_line":"    return QoSPolicy(policy)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"def policy_update(request, policy_id, **kwargs):"},{"line_number":60,"context_line":"    \"\"\"Update the QoS policy with the given params.\"\"\""},{"line_number":61,"context_line":"    body \u003d {\u0027policy\u0027: kwargs}"},{"line_number":62,"context_line":"    policy \u003d neutronclient(request).update_qos_policy("},{"line_number":63,"context_line":"        policy_id, body\u003dbody).get(\u0027policy\u0027)"},{"line_number":64,"context_line":"    return QoSPolicy(policy)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"def policy_delete(request, policy_id):"},{"line_number":68,"context_line":"    \"\"\"Delete the given QoS Policy.\"\"\""},{"line_number":69,"context_line":"    neutronclient(request).delete_qos_policy(policy_id)"}],"source_content_type":"text/x-python","patch_set":29,"id":"ff0f0b1f_f88f9420","line":69,"range":{"start_line":52,"start_character":0,"end_line":69,"end_character":55},"in_reply_to":"1f013ff3_8b6c1437","updated":"2017-05-22 12:01:33.000000000","message":"Removed until actions added in subsequent patch","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"}],"openstack_dashboard/api/rest/neutron.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"def0b5e63e4e1387f734ef0369e66590ff9a0c2e","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        return{\u0027items\u0027: [p.to_dict() for p in result]}"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"@urls.register"},{"line_number":254,"context_line":"class QoSPolicy(generic.View):"},{"line_number":255,"context_line":"    \"\"\"API for QoS Policy."},{"line_number":256,"context_line":"    \"\"\""},{"line_number":257,"context_line":"    url_regex \u003d r\u0027neutron/qos_policy/(?P\u003cpolicy_id\u003e[^/]+)/$\u0027"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    @rest_utils.ajax()"},{"line_number":260,"context_line":"    def delete(self, request, policy_id):"},{"line_number":261,"context_line":"        api.neutron_qos.policy_delete(request, policy_id)"}],"source_content_type":"text/x-python","patch_set":29,"id":"1f013ff3_2b1e20ba","line":261,"range":{"start_line":253,"start_character":0,"end_line":261,"end_character":57},"updated":"2017-05-15 19:22:22.000000000","message":"As I see you don\u0027t use this in your patch, consider adding new    methods only when you really need them, to make the patch as short and straight forward as possible.","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"9ce4cb7e826142484c7c5f2d875453a2b5b5e189","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        return{\u0027items\u0027: [p.to_dict() for p in result]}"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"@urls.register"},{"line_number":254,"context_line":"class QoSPolicy(generic.View):"},{"line_number":255,"context_line":"    \"\"\"API for QoS Policy."},{"line_number":256,"context_line":"    \"\"\""},{"line_number":257,"context_line":"    url_regex \u003d r\u0027neutron/qos_policy/(?P\u003cpolicy_id\u003e[^/]+)/$\u0027"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    @rest_utils.ajax()"},{"line_number":260,"context_line":"    def delete(self, request, policy_id):"},{"line_number":261,"context_line":"        api.neutron_qos.policy_delete(request, policy_id)"}],"source_content_type":"text/x-python","patch_set":29,"id":"ff0f0b1f_98ae5896","line":261,"range":{"start_line":253,"start_character":0,"end_line":261,"end_character":57},"in_reply_to":"1f013ff3_2b1e20ba","updated":"2017-05-22 12:01:33.000000000","message":"Removed until actions added in subsequent patch :) thanks!","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"2bffc7060b9dd8183309ecabfd287a168f53541f","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        \"\"\""},{"line_number":266,"context_line":"        result \u003d api.neutron.policy_list(request,"},{"line_number":267,"context_line":"                                         tenant_id\u003drequest.user.project_id)"},{"line_number":268,"context_line":"        return{\u0027items\u0027: [p.to_dict() for p in result]}"}],"source_content_type":"text/x-python","patch_set":33,"id":"ff0f0b1f_51b71d3b","line":268,"updated":"2017-05-24 17:38:27.000000000","message":"Missing a space here","commit_id":"2d9f11105ce935ec2db5d05107119d03bd4c4dad"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"2451d719e2c5031cb233c7ad6bab345c96cd8704","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        \"\"\""},{"line_number":266,"context_line":"        result \u003d api.neutron.policy_list(request,"},{"line_number":267,"context_line":"                                         tenant_id\u003drequest.user.project_id)"},{"line_number":268,"context_line":"        return{\u0027items\u0027: [p.to_dict() for p in result]}"}],"source_content_type":"text/x-python","patch_set":33,"id":"ff0f0b1f_d01f92b4","line":268,"in_reply_to":"ff0f0b1f_51b71d3b","updated":"2017-05-25 09:03:46.000000000","message":"Not sure where you mean that I need a space? Can you be more specific please?","commit_id":"2d9f11105ce935ec2db5d05107119d03bd4c4dad"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"ecee760acbc6b1d96450d9faa3ce8a0ef74cffa7","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        \"\"\""},{"line_number":266,"context_line":"        result \u003d api.neutron.policy_list(request,"},{"line_number":267,"context_line":"                                         tenant_id\u003drequest.user.project_id)"},{"line_number":268,"context_line":"        return{\u0027items\u0027: [p.to_dict() for p in result]}"}],"source_content_type":"text/x-python","patch_set":33,"id":"ff0f0b1f_6e7c57eb","line":268,"in_reply_to":"ff0f0b1f_9aeb6ddb","updated":"2017-05-25 17:15:07.000000000","message":"Yes, exactly.","commit_id":"2d9f11105ce935ec2db5d05107119d03bd4c4dad"},{"author":{"_account_id":10112,"name":"Jason E. Rist","email":"jrist@redhat.com","username":"jrist"},"change_message_id":"a9f019f0b0d5a11ec4194bde16f994852d11faa4","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        \"\"\""},{"line_number":266,"context_line":"        result \u003d api.neutron.policy_list(request,"},{"line_number":267,"context_line":"                                         tenant_id\u003drequest.user.project_id)"},{"line_number":268,"context_line":"        return{\u0027items\u0027: [p.to_dict() for p in result]}"}],"source_content_type":"text/x-python","patch_set":33,"id":"ff0f0b1f_9aeb6ddb","line":268,"in_reply_to":"ff0f0b1f_d01f92b4","updated":"2017-05-25 15:07:02.000000000","message":"I think he means before the squiggly and after \u0027return\u0027:\nreturn {","commit_id":"2d9f11105ce935ec2db5d05107119d03bd4c4dad"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"67b6845f429035d702aa0eacd3c2b181dd5293e6","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        Each item is a qos policy."},{"line_number":265,"context_line":"        \"\"\""},{"line_number":266,"context_line":"        result \u003d api.neutron.policy_list(request,"},{"line_number":267,"context_line":"                                         tenant_id\u003drequest.user.project_id)"},{"line_number":268,"context_line":"        return {\u0027items\u0027: [p.to_dict() for p in result]}"}],"source_content_type":"text/x-python","patch_set":35,"id":"df140735_5c905695","line":267,"range":{"start_line":267,"start_character":41,"end_line":267,"end_character":50},"updated":"2017-06-05 18:29:06.000000000","message":"I confirmed the current neutron API does not accept \u0027tenant_id\u0027 and it only accepts \u0027project_id\u0027. While we are thinking this is a bug, you can change this to project_id. If so, the error we hit now will go.","commit_id":"f4ae8c9d362e9e6134c1b841f6ee16dc6f4545d3"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"0be5d2750bc57219ad36cb6e68431e5945d5fdb7","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        Each item is a qos policy."},{"line_number":265,"context_line":"        \"\"\""},{"line_number":266,"context_line":"        result \u003d api.neutron.policy_list(request,"},{"line_number":267,"context_line":"                                         tenant_id\u003drequest.user.project_id)"},{"line_number":268,"context_line":"        return {\u0027items\u0027: [p.to_dict() for p in result]}"}],"source_content_type":"text/x-python","patch_set":35,"id":"df140735_7ce43a0d","line":267,"range":{"start_line":267,"start_character":41,"end_line":267,"end_character":50},"in_reply_to":"df140735_5c905695","updated":"2017-06-05 18:35:53.000000000","message":"Yea - it feels like this should be changed in a separate patch to me, or at least we should follow up with a patch to change it everywhere else, as most of the code above refers to tenant_id, and not project_id.","commit_id":"f4ae8c9d362e9e6134c1b841f6ee16dc6f4545d3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"97a7b3fbe8073aa121ef28788da14d8e6e14010b","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        Each item is a qos policy."},{"line_number":265,"context_line":"        \"\"\""},{"line_number":266,"context_line":"        result \u003d api.neutron.policy_list(request,"},{"line_number":267,"context_line":"                                         tenant_id\u003drequest.user.project_id)"},{"line_number":268,"context_line":"        return {\u0027items\u0027: [p.to_dict() for p in result]}"}],"source_content_type":"text/x-python","patch_set":35,"id":"df140735_dc07bdc9","line":267,"range":{"start_line":267,"start_character":41,"end_line":267,"end_character":50},"in_reply_to":"df140735_7ce43a0d","updated":"2017-06-06 01:18:48.000000000","message":"Precisely, it is specific to QoS policy list at now. It is a neutron bug, but I think we should not block a horizon patch by it.\n\nSo my suggestion is to use \u0027project_id\u0027 here and add a comment.\n\nNote that a neutron bug is bug 1695954 and I am working on it.","commit_id":"f4ae8c9d362e9e6134c1b841f6ee16dc6f4545d3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"15a2010a6e67990acf375652e49a8a3e81178c08","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        Each item is a qos policy."},{"line_number":265,"context_line":"        \"\"\""},{"line_number":266,"context_line":"        result \u003d api.neutron.policy_list(request,"},{"line_number":267,"context_line":"                                         tenant_id\u003drequest.user.project_id)"},{"line_number":268,"context_line":"        return {\u0027items\u0027: [p.to_dict() for p in result]}"}],"source_content_type":"text/x-python","patch_set":35,"id":"df140735_d450710d","line":267,"range":{"start_line":267,"start_character":41,"end_line":267,"end_character":50},"in_reply_to":"df140735_befefc68","updated":"2017-06-07 16:12:17.000000000","message":"I talked to Akihiro and the bug is correct. The Neutron API should accept both parameters and now it\u0027s not happening.","commit_id":"f4ae8c9d362e9e6134c1b841f6ee16dc6f4545d3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d6f9b5cdda25a0bb0cf4199c66acdb31079acc17","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        Each item is a qos policy."},{"line_number":265,"context_line":"        \"\"\""},{"line_number":266,"context_line":"        result \u003d api.neutron.policy_list(request,"},{"line_number":267,"context_line":"                                         tenant_id\u003drequest.user.project_id)"},{"line_number":268,"context_line":"        return {\u0027items\u0027: [p.to_dict() for p in result]}"}],"source_content_type":"text/x-python","patch_set":35,"id":"df140735_befefc68","line":267,"range":{"start_line":267,"start_character":41,"end_line":267,"end_character":50},"in_reply_to":"df140735_dc07bdc9","updated":"2017-06-07 15:37:14.000000000","message":"This is not a bug in Neutron. In Newton release \"tenant_id\" was changed to \"project_id\" [1]. Also neutron client and openstack client only accept \"project_id\".\n\nYou shouldn\u0027t use \"tenant_id\" anymore.\n\n[1] https://review.openstack.org/#/c/335786/","commit_id":"f4ae8c9d362e9e6134c1b841f6ee16dc6f4545d3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6bc4497e7e7abaf7336c8a91fbbc6ec6a6caf4c4","unresolved":false,"context_lines":[{"line_number":263,"context_line":"        The listing result is an object with property \"items\"."},{"line_number":264,"context_line":"        Each item is a qos policy."},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        project_id\u003drequest.user.project_id should be changed to"},{"line_number":267,"context_line":"        tenant_id\u003drequest.user.project_id once bug 1695954 is"},{"line_number":268,"context_line":"        addressed to allow tenant_id to be accepted."},{"line_number":269,"context_line":"        \"\"\""},{"line_number":270,"context_line":"        result \u003d api.neutron.policy_list(request,"},{"line_number":271,"context_line":"                                         project_id\u003drequest.user.project_id)"}],"source_content_type":"text/x-python","patch_set":36,"id":"df140735_576583e0","line":268,"range":{"start_line":266,"start_character":8,"end_line":268,"end_character":52},"updated":"2017-06-07 16:38:38.000000000","message":"This should be a usual inline comment. The docstring is a description on the method.\n\n  \"\"\"Get a list of QoS policies.\n\n  The listing result is an object with property \"items\".\n  Each item is a qos policy.\n  \"\"\"\n  # TODO(amotoki):\n  # project_id\u003drequest.user.project_id should be changed to\n  # tenant_id\u003drequest.user.project_id once bug 1695954 is\n  # addressed to allow tenant_id to be accepted.\n\nYou can assign me as a TODO owner :)","commit_id":"2cd686c2c2c6373c6e30c8cb993b962219aaba71"},{"author":{"_account_id":15905,"name":"Cao Xuan Hoang","email":"xuanhoangqb@gmail.com","username":"hoangcx"},"change_message_id":"a8042480124363115592bb9b746f3a49d9ca8699","unresolved":false,"context_lines":[{"line_number":253,"context_line":"@urls.register"},{"line_number":254,"context_line":"class QoSPolicies(generic.View):"},{"line_number":255,"context_line":"    \"\"\"API for QoS Policy."},{"line_number":256,"context_line":"    \"\"\""},{"line_number":257,"context_line":"    url_regex \u003d r\u0027neutron/qos_policies/$\u0027"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    @rest_utils.ajax()"}],"source_content_type":"text/x-python","patch_set":37,"id":"bf091321_9a2e97a3","line":256,"range":{"start_line":256,"start_character":4,"end_line":256,"end_character":7},"updated":"2017-06-09 02:17:20.000000000","message":"Move this to above line.","commit_id":"fe2c0ece44840ed98eb3e5b6783c7b4c730c1869"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"5db0701d9506d8cf5d89da9871a1e7c25e175abe","unresolved":false,"context_lines":[{"line_number":253,"context_line":"@urls.register"},{"line_number":254,"context_line":"class QoSPolicies(generic.View):"},{"line_number":255,"context_line":"    \"\"\"API for QoS Policy."},{"line_number":256,"context_line":"    \"\"\""},{"line_number":257,"context_line":"    url_regex \u003d r\u0027neutron/qos_policies/$\u0027"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    @rest_utils.ajax()"}],"source_content_type":"text/x-python","patch_set":37,"id":"9f0e0f27_a6c5f85d","line":256,"range":{"start_line":256,"start_character":4,"end_line":256,"end_character":7},"in_reply_to":"9f0e0f27_863674b4","updated":"2017-06-09 10:03:13.000000000","message":"I think that if we want to enforce this kind of style thing, we should really write a Hacking rule for it, so that it applies equally to everyone and we don\u0027t need to waste our time on it.","commit_id":"fe2c0ece44840ed98eb3e5b6783c7b4c730c1869"},{"author":{"_account_id":15905,"name":"Cao Xuan Hoang","email":"xuanhoangqb@gmail.com","username":"hoangcx"},"change_message_id":"4b62c7ebfa5ba1db8e967d700445066b399135cd","unresolved":false,"context_lines":[{"line_number":253,"context_line":"@urls.register"},{"line_number":254,"context_line":"class QoSPolicies(generic.View):"},{"line_number":255,"context_line":"    \"\"\"API for QoS Policy."},{"line_number":256,"context_line":"    \"\"\""},{"line_number":257,"context_line":"    url_regex \u003d r\u0027neutron/qos_policies/$\u0027"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    @rest_utils.ajax()"}],"source_content_type":"text/x-python","patch_set":37,"id":"7f231b9d_e494edea","line":256,"range":{"start_line":256,"start_character":4,"end_line":256,"end_character":7},"in_reply_to":"9f0e0f27_8661d43c","updated":"2017-06-12 01:55:59.000000000","message":"Indeed :-)","commit_id":"fe2c0ece44840ed98eb3e5b6783c7b4c730c1869"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c0c7a6792c1a176060bd828eccd68c9d9c4d4508","unresolved":false,"context_lines":[{"line_number":253,"context_line":"@urls.register"},{"line_number":254,"context_line":"class QoSPolicies(generic.View):"},{"line_number":255,"context_line":"    \"\"\"API for QoS Policy."},{"line_number":256,"context_line":"    \"\"\""},{"line_number":257,"context_line":"    url_regex \u003d r\u0027neutron/qos_policies/$\u0027"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    @rest_utils.ajax()"}],"source_content_type":"text/x-python","patch_set":37,"id":"9f0e0f27_863674b4","line":256,"range":{"start_line":256,"start_character":4,"end_line":256,"end_character":7},"in_reply_to":"9f0e0f27_9a55a920","updated":"2017-06-09 09:58:33.000000000","message":"Actually this is the bad convention in Horizon. It might be clean up later.\n\nFYI: In python convention, in this case the closing \"\"\" should be in the previous line,.","commit_id":"fe2c0ece44840ed98eb3e5b6783c7b4c730c1869"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"537c3afae9fa597f8f37878470faee76c6cf3dc1","unresolved":false,"context_lines":[{"line_number":253,"context_line":"@urls.register"},{"line_number":254,"context_line":"class QoSPolicies(generic.View):"},{"line_number":255,"context_line":"    \"\"\"API for QoS Policy."},{"line_number":256,"context_line":"    \"\"\""},{"line_number":257,"context_line":"    url_regex \u003d r\u0027neutron/qos_policies/$\u0027"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    @rest_utils.ajax()"}],"source_content_type":"text/x-python","patch_set":37,"id":"9f0e0f27_8661d43c","line":256,"range":{"start_line":256,"start_character":4,"end_line":256,"end_character":7},"in_reply_to":"9f0e0f27_a6c5f85d","updated":"2017-06-09 10:14:14.000000000","message":"Yes, exactly. we disable H405 and this is the rule.","commit_id":"fe2c0ece44840ed98eb3e5b6783c7b4c730c1869"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"038ba1f7ec0680396b53391ab9594b63e64647e8","unresolved":false,"context_lines":[{"line_number":253,"context_line":"@urls.register"},{"line_number":254,"context_line":"class QoSPolicies(generic.View):"},{"line_number":255,"context_line":"    \"\"\"API for QoS Policy."},{"line_number":256,"context_line":"    \"\"\""},{"line_number":257,"context_line":"    url_regex \u003d r\u0027neutron/qos_policies/$\u0027"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    @rest_utils.ajax()"}],"source_content_type":"text/x-python","patch_set":37,"id":"9f0e0f27_9a55a920","line":256,"range":{"start_line":256,"start_character":4,"end_line":256,"end_character":7},"in_reply_to":"bf091321_9a2e97a3","updated":"2017-06-09 08:06:00.000000000","message":"this seems inconsistent with the format of docstrings elsewhere where the closing \"\"\" is on the line below.","commit_id":"fe2c0ece44840ed98eb3e5b6783c7b4c730c1869"},{"author":{"_account_id":15905,"name":"Cao Xuan Hoang","email":"xuanhoangqb@gmail.com","username":"hoangcx"},"change_message_id":"a8042480124363115592bb9b746f3a49d9ca8699","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    @rest_utils.ajax()"},{"line_number":260,"context_line":"    def get(self, request):"},{"line_number":261,"context_line":"        \"\"\"Get a list of QoS policies."},{"line_number":262,"context_line":"        The listing result is an object with property \"items\"."},{"line_number":263,"context_line":"        Each item is a qos policy."},{"line_number":264,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":37,"id":"bf091321_1a14c74d","line":261,"range":{"start_line":261,"start_character":8,"end_line":261,"end_character":38},"updated":"2017-06-09 02:17:20.000000000","message":"Need a blank line after this As previous Akihiro\u0027s example. See [1]\n\n[1] https://docs.openstack.org/developer/hacking/#docstrings","commit_id":"fe2c0ece44840ed98eb3e5b6783c7b4c730c1869"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c0c7a6792c1a176060bd828eccd68c9d9c4d4508","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    @rest_utils.ajax()"},{"line_number":260,"context_line":"    def get(self, request):"},{"line_number":261,"context_line":"        \"\"\"Get a list of QoS policies."},{"line_number":262,"context_line":"        The listing result is an object with property \"items\"."},{"line_number":263,"context_line":"        Each item is a qos policy."},{"line_number":264,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":37,"id":"9f0e0f27_c6e58c3a","line":261,"range":{"start_line":261,"start_character":8,"end_line":261,"end_character":38},"in_reply_to":"9f0e0f27_7a309508","updated":"2017-06-09 09:58:33.000000000","message":"Ah.... I wrote a blank line in my comment, but gerrit suppress the blank line.... It is an UI issue of the gerrit :(","commit_id":"fe2c0ece44840ed98eb3e5b6783c7b4c730c1869"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"038ba1f7ec0680396b53391ab9594b63e64647e8","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    @rest_utils.ajax()"},{"line_number":260,"context_line":"    def get(self, request):"},{"line_number":261,"context_line":"        \"\"\"Get a list of QoS policies."},{"line_number":262,"context_line":"        The listing result is an object with property \"items\"."},{"line_number":263,"context_line":"        Each item is a qos policy."},{"line_number":264,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":37,"id":"9f0e0f27_7a309508","line":261,"range":{"start_line":261,"start_character":8,"end_line":261,"end_character":38},"in_reply_to":"bf091321_1a14c74d","updated":"2017-06-09 08:06:00.000000000","message":"Done","commit_id":"fe2c0ece44840ed98eb3e5b6783c7b4c730c1869"}],"openstack_dashboard/dashboards/project/network_qos/panel.py":[{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"f1291642b5f6751257fc26d0afa58447436ea4b3","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import horizon"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from openstack_dashboard.api import neutron"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3a1ff146_3d4a55c6","line":21,"updated":"2017-03-15 13:31:15.000000000","message":"Don\u0027t really need all these line breaks","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"8a734e486359b57ccf7d9bc7acc67520360c436d","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import horizon"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from openstack_dashboard.api import neutron"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3a1ff146_14000e34","line":21,"in_reply_to":"3a1ff146_3d4a55c6","updated":"2017-03-15 15:25:27.000000000","message":"Done","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"f1291642b5f6751257fc26d0afa58447436ea4b3","unresolved":false,"context_lines":[{"line_number":26,"context_line":"class NetworkQoS(horizon.Panel):"},{"line_number":27,"context_line":"    name \u003d _(\"Network QoS\")"},{"line_number":28,"context_line":"    slug \u003d \u0027network_qos\u0027"},{"line_number":29,"context_line":"    permissions \u003d (\u0027openstack.services.network\u0027,)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def allowed(self, context):"},{"line_number":32,"context_line":"        request \u003d context[\u0027request\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a1ff146_1d3d992b","line":29,"updated":"2017-03-15 13:31:15.000000000","message":"We need policy checks too, for list","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"8a734e486359b57ccf7d9bc7acc67520360c436d","unresolved":false,"context_lines":[{"line_number":26,"context_line":"class NetworkQoS(horizon.Panel):"},{"line_number":27,"context_line":"    name \u003d _(\"Network QoS\")"},{"line_number":28,"context_line":"    slug \u003d \u0027network_qos\u0027"},{"line_number":29,"context_line":"    permissions \u003d (\u0027openstack.services.network\u0027,)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def allowed(self, context):"},{"line_number":32,"context_line":"        request \u003d context[\u0027request\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a1ff146_547fe6a9","line":29,"in_reply_to":"3a1ff146_1d3d992b","updated":"2017-03-15 15:25:27.000000000","message":"Done","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6af3a71c50cbf8059623337b7e36387859d3d367","unresolved":false,"context_lines":[{"line_number":32,"context_line":"            return False"},{"line_number":33,"context_line":"        try:"},{"line_number":34,"context_line":"            if not neutron.is_service_enabled(request,"},{"line_number":35,"context_line":"                                              config_name\u003d\u0027enable_qos\u0027,"},{"line_number":36,"context_line":"                                              ext_name\u003d\u0027qos\u0027):"},{"line_number":37,"context_line":"                return False"},{"line_number":38,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":29,"id":"7ffa3b31_077e8e18","line":35,"range":{"start_line":35,"start_character":46,"end_line":35,"end_character":71},"updated":"2017-04-18 10:31:39.000000000","message":"I don\u0027t think we need a new config option. Could you check only neutron extension?\n\n  neutron.is_extension_supported(\u0027qos\u0027)\n\n\u0027enable_router\u0027 config option was introduced from the different reason: some operators requested us to disable router panel even if they use L3 extension. I did not find the exact bug link, but it does not apply to neutron QoS case.","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"def0b5e63e4e1387f734ef0369e66590ff9a0c2e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    policy_rules \u003d ((\u0027QoSPolicy\u0027, \u0027getQoSPolicies\u0027),)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def allowed(self, context):"},{"line_number":30,"context_line":"        request \u003d context[\u0027request\u0027]"},{"line_number":31,"context_line":"        if not request.user.has_perms(self.permissions):"},{"line_number":32,"context_line":"            return False"},{"line_number":33,"context_line":"        try:"},{"line_number":34,"context_line":"            if not neutron.is_service_enabled(request,"},{"line_number":35,"context_line":"                                              config_name\u003d\u0027enable_qos\u0027,"},{"line_number":36,"context_line":"                                              ext_name\u003d\u0027qos\u0027):"},{"line_number":37,"context_line":"                return False"},{"line_number":38,"context_line":"        except Exception:"},{"line_number":39,"context_line":"            LOG.exception(\"Call to list enabled services failed. This is \""},{"line_number":40,"context_line":"                          \"likely due to a problem communicating with the \""},{"line_number":41,"context_line":"                          \"Neutron endpoint. Network QoS panel will not be \""},{"line_number":42,"context_line":"                          \"displayed.\")"},{"line_number":43,"context_line":"            return False"},{"line_number":44,"context_line":"        if not super(NetworkQoS, self).allowed(context):"},{"line_number":45,"context_line":"            return False"},{"line_number":46,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":29,"id":"1f013ff3_2bc62069","line":46,"range":{"start_line":30,"start_character":0,"end_line":46,"end_character":19},"updated":"2017-05-15 19:22:22.000000000","message":"It is hard to read this method, check this one (thanks to Bence for helping in that): https://review.openstack.org/449217","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"30dc11e8f5d0ca4d9b0495162855373cf231e590","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class NetworkQoS(horizon.Panel):"},{"line_number":24,"context_line":"    name \u003d _(\"Network QoS\")"},{"line_number":25,"context_line":"    slug \u003d \u0027network_qos\u0027"},{"line_number":26,"context_line":"    permissions \u003d (\u0027openstack.services.network\u0027,)"},{"line_number":27,"context_line":"    policy_rules \u003d ((\u0027QoSPolicy\u0027, \u0027getQoSPolicies\u0027),)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def allowed(self, context):"},{"line_number":30,"context_line":"        request \u003d context[\u0027request\u0027]"},{"line_number":31,"context_line":"        if not request.user.has_perms(self.permissions):"},{"line_number":32,"context_line":"            return False"},{"line_number":33,"context_line":"        try:"},{"line_number":34,"context_line":"            if not neutron.is_service_enabled(request,"},{"line_number":35,"context_line":"                                              config_name\u003d\u0027enable_qos\u0027,"},{"line_number":36,"context_line":"                                              ext_name\u003d\u0027qos\u0027):"},{"line_number":37,"context_line":"                return False"},{"line_number":38,"context_line":"        except Exception:"},{"line_number":39,"context_line":"            LOG.exception(\"Call to list enabled services failed. This is \""},{"line_number":40,"context_line":"                          \"likely due to a problem communicating with the \""},{"line_number":41,"context_line":"                          \"Neutron endpoint. Network QoS panel will not be \""},{"line_number":42,"context_line":"                          \"displayed.\")"},{"line_number":43,"context_line":"            return False"},{"line_number":44,"context_line":"        if not super(NetworkQoS, self).allowed(context):"},{"line_number":45,"context_line":"            return False"},{"line_number":46,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":30,"id":"ff0f0b1f_8946ecbf","line":46,"range":{"start_line":24,"start_character":0,"end_line":46,"end_character":19},"updated":"2017-05-23 04:55:36.000000000","message":"It is hard to read this method, check this one (thanks to Bence for helping in that): https://review.openstack.org/449217","commit_id":"35bbc7f34463a718df0398e8cbefe05919d6d556"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"af5c4dfaff3cbbf55b2f8bbe91eefc9601669f20","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from django.utils.translation import ugettext_lazy as _"},{"line_number":14,"context_line":"import horizon"},{"line_number":15,"context_line":"import logging"},{"line_number":16,"context_line":"from openstack_dashboard.api import neutron"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"ff0f0b1f_cfd39a03","line":16,"updated":"2017-05-24 07:04:58.000000000","message":"Could you check the guideline on the import order ?\nhttps://docs.openstack.org/developer/hacking/#import-order-template\n\n  from logging\n  \u003cblank line\u003e\n  from django.....\n  \u003cblank line\u003e\n  import horizon\n  \u003cblank line\u003e\n  from openstack_dashboard.api import neutron\n\nThe last two groups (horizon and openstack_dashboard) are horizon-specific convention.","commit_id":"4ea2d66aed03360263ebc0000b14bb3080cd0a56"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"a443f7f8b5ee160afdb6aaf45fc9ea5728456e50","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from django.utils.translation import ugettext_lazy as _"},{"line_number":14,"context_line":"import horizon"},{"line_number":15,"context_line":"import logging"},{"line_number":16,"context_line":"from openstack_dashboard.api import neutron"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"ff0f0b1f_af6bbbee","line":16,"in_reply_to":"ff0f0b1f_cfd39a03","updated":"2017-05-24 15:54:14.000000000","message":"Done","commit_id":"4ea2d66aed03360263ebc0000b14bb3080cd0a56"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"af5c4dfaff3cbbf55b2f8bbe91eefc9601669f20","unresolved":false,"context_lines":[{"line_number":29,"context_line":"            return ("},{"line_number":30,"context_line":"                super(NetworkQoS, self).allowed(context)"},{"line_number":31,"context_line":"                and request.user.has_perms(self.permissions)"},{"line_number":32,"context_line":"                and neutron.is_service_enabled(request,"},{"line_number":33,"context_line":"                                               config_name\u003d\u0027enable_qos\u0027,"},{"line_number":34,"context_line":"                                               ext_name\u003d\u0027qos\u0027)"},{"line_number":35,"context_line":"            )"},{"line_number":36,"context_line":"        except Exception:"},{"line_number":37,"context_line":"            LOG.error(\"Call to list enabled services failed. This is likely \""}],"source_content_type":"text/x-python","patch_set":31,"id":"ff0f0b1f_2f0c56a3","line":34,"range":{"start_line":32,"start_character":20,"end_line":34,"end_character":62},"updated":"2017-05-24 07:04:58.000000000","message":"Consider using\n\n  neutorn.is_extension_supported(request, \u0027qos\u0027)\n\nWe don\u0027t use \u0027enable_qos\u0027 configuration now.","commit_id":"4ea2d66aed03360263ebc0000b14bb3080cd0a56"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"a443f7f8b5ee160afdb6aaf45fc9ea5728456e50","unresolved":false,"context_lines":[{"line_number":29,"context_line":"            return ("},{"line_number":30,"context_line":"                super(NetworkQoS, self).allowed(context)"},{"line_number":31,"context_line":"                and request.user.has_perms(self.permissions)"},{"line_number":32,"context_line":"                and neutron.is_service_enabled(request,"},{"line_number":33,"context_line":"                                               config_name\u003d\u0027enable_qos\u0027,"},{"line_number":34,"context_line":"                                               ext_name\u003d\u0027qos\u0027)"},{"line_number":35,"context_line":"            )"},{"line_number":36,"context_line":"        except Exception:"},{"line_number":37,"context_line":"            LOG.error(\"Call to list enabled services failed. This is likely \""}],"source_content_type":"text/x-python","patch_set":31,"id":"ff0f0b1f_cf36ef03","line":34,"range":{"start_line":32,"start_character":20,"end_line":34,"end_character":62},"in_reply_to":"ff0f0b1f_2f0c56a3","updated":"2017-05-24 15:54:14.000000000","message":"Done","commit_id":"4ea2d66aed03360263ebc0000b14bb3080cd0a56"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"51dace95d8fc59455f16b73380d05dbb064e26ba","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        except Exception:"},{"line_number":37,"context_line":"            LOG.error(\"Call to list enabled services failed. This is likely \""},{"line_number":38,"context_line":"                      \"due to a problem communicating with the Neutron \""},{"line_number":39,"context_line":"                      \"endpoint. Trunks panel will not be displayed.\")"},{"line_number":40,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":31,"id":"ff0f0b1f_816115ac","line":39,"range":{"start_line":39,"start_character":33,"end_line":39,"end_character":39},"updated":"2017-05-23 12:50:20.000000000","message":"qos panel I suppose","commit_id":"4ea2d66aed03360263ebc0000b14bb3080cd0a56"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"711415c61397bcaa3a1c48788fd2879536d40e50","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        except Exception:"},{"line_number":37,"context_line":"            LOG.error(\"Call to list enabled services failed. This is likely \""},{"line_number":38,"context_line":"                      \"due to a problem communicating with the Neutron \""},{"line_number":39,"context_line":"                      \"endpoint. Trunks panel will not be displayed.\")"},{"line_number":40,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":31,"id":"ff0f0b1f_dccdb685","line":39,"range":{"start_line":39,"start_character":33,"end_line":39,"end_character":39},"in_reply_to":"ff0f0b1f_816115ac","updated":"2017-05-23 13:06:30.000000000","message":"sorry stupid miss! thanks :) will update on next patchset once have worked out why tests are failing!","commit_id":"4ea2d66aed03360263ebc0000b14bb3080cd0a56"}],"openstack_dashboard/dashboards/project/network_qos/templates/network_qos/index.html":[{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"e1e751567b268458935b007d9e3342258b4318e4","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"{% block main %}"},{"line_number":17,"context_line":"  {{ table.render }}"},{"line_number":18,"context_line":"{% endblock %}"}],"source_content_type":"text/html","patch_set":3,"id":"7a3c09a3_2be7d140","line":18,"updated":"2017-01-17 22:31:13.000000000","message":"don\u0027t need this file","commit_id":"2b560179c03eea24b7f93d0eda6a74457d50233e"}],"openstack_dashboard/dashboards/project/network_qos/urls.py":[{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"f1291642b5f6751257fc26d0afa58447436ea4b3","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from django.conf.urls import url"},{"line_number":16,"context_line":"from django.utils.translation import ugettext_lazy as _"},{"line_number":17,"context_line":"from horizon.browsers.views import AngularIndexView"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"title \u003d _(\"Network QoS Policies\")"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3a1ff146_7d604d36","line":17,"updated":"2017-03-15 13:31:15.000000000","message":"Do module level imports, not class. So, from horizon.browsers import views, and then use it as views.AngularIndexView.","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"8a734e486359b57ccf7d9bc7acc67520360c436d","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from django.conf.urls import url"},{"line_number":16,"context_line":"from django.utils.translation import ugettext_lazy as _"},{"line_number":17,"context_line":"from horizon.browsers.views import AngularIndexView"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"title \u003d _(\"Network QoS Policies\")"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3a1ff146_4f0113ae","line":17,"in_reply_to":"3a1ff146_7d604d36","updated":"2017-03-15 15:25:27.000000000","message":"Done","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6af3a71c50cbf8059623337b7e36387859d3d367","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015, 2016 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":29,"id":"7ffa3b31_87b85ec8","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":22},"updated":"2017-04-18 10:31:39.000000000","message":"2017","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"9ce4cb7e826142484c7c5f2d875453a2b5b5e189","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015, 2016 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":29,"id":"ff0f0b1f_58c7a046","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":22},"in_reply_to":"7ffa3b31_87b85ec8","updated":"2017-05-22 12:01:33.000000000","message":"Red Hat no longer used company copyright at all so this should actually not exist at all! Thanks for the catch!","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6af3a71c50cbf8059623337b7e36387859d3d367","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from django.conf.urls import url"},{"line_number":16,"context_line":"from django.utils.translation import ugettext_lazy as _"},{"line_number":17,"context_line":"from horizon.browsers import views"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"title \u003d _(\"Network QoS Policies\")"}],"source_content_type":"text/x-python","patch_set":29,"id":"7ffa3b31_a7a7daa7","line":16,"updated":"2017-04-18 10:31:39.000000000","message":"Needs a blank line here. third party import and project import.","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"9ce4cb7e826142484c7c5f2d875453a2b5b5e189","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from django.conf.urls import url"},{"line_number":16,"context_line":"from django.utils.translation import ugettext_lazy as _"},{"line_number":17,"context_line":"from horizon.browsers import views"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"title \u003d _(\"Network QoS Policies\")"}],"source_content_type":"text/x-python","patch_set":29,"id":"ff0f0b1f_18c1282f","line":16,"in_reply_to":"7ffa3b31_a7a7daa7","updated":"2017-05-22 12:01:33.000000000","message":"Done","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"}],"openstack_dashboard/enabled/_1480_project_network_qos_panel.py":[{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"f1291642b5f6751257fc26d0afa58447436ea4b3","unresolved":false,"context_lines":[{"line_number":6,"context_line":"PANEL_GROUP \u003d \u0027network\u0027"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"# Python panel class of the PANEL to be added."},{"line_number":9,"context_line":"ADD_PANEL \u003d \u0027openstack_dashboard.dashboards.project.network_qos.panel.NetworkQoS\u0027  # noqa"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a1ff146_dd5f8170","line":9,"updated":"2017-03-15 13:31:15.000000000","message":"Don\u0027t need to noqa this, just wrap it","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"8a734e486359b57ccf7d9bc7acc67520360c436d","unresolved":false,"context_lines":[{"line_number":6,"context_line":"PANEL_GROUP \u003d \u0027network\u0027"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"# Python panel class of the PANEL to be added."},{"line_number":9,"context_line":"ADD_PANEL \u003d \u0027openstack_dashboard.dashboards.project.network_qos.panel.NetworkQoS\u0027  # noqa"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a1ff146_6f95efe2","line":9,"in_reply_to":"3a1ff146_dd5f8170","updated":"2017-03-15 15:25:27.000000000","message":"Done","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6af3a71c50cbf8059623337b7e36387859d3d367","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"7ffa3b31_27a2aa4c","updated":"2017-04-18 10:31:39.000000000","message":"I would like to place this panel after \u0027Security Group\u0027 and \u0027Floating IP\u0027.","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"9ce4cb7e826142484c7c5f2d875453a2b5b5e189","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"ff0f0b1f_2ab6cf3f","in_reply_to":"7ffa3b31_27a2aa4c","updated":"2017-05-22 12:01:33.000000000","message":"Done","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"}],"openstack_dashboard/local/local_settings.py.example":[{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"f1291642b5f6751257fc26d0afa58447436ea4b3","unresolved":false,"context_lines":[{"line_number":287,"context_line":"    \u0027enable_ha_router\u0027: False,"},{"line_number":288,"context_line":"    \u0027enable_lb\u0027: True,"},{"line_number":289,"context_line":"    \u0027enable_firewall\u0027: True,"},{"line_number":290,"context_line":"    \u0027enable_qos\u0027: True,"},{"line_number":291,"context_line":"    \u0027enable_vpn\u0027: True,"},{"line_number":292,"context_line":"    \u0027enable_fip_topology_check\u0027: True,"},{"line_number":293,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":17,"id":"3a1ff146_7dc76d12","line":290,"updated":"2017-03-15 13:31:15.000000000","message":"See comment in settings.rst","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"8a734e486359b57ccf7d9bc7acc67520360c436d","unresolved":false,"context_lines":[{"line_number":287,"context_line":"    \u0027enable_ha_router\u0027: False,"},{"line_number":288,"context_line":"    \u0027enable_lb\u0027: True,"},{"line_number":289,"context_line":"    \u0027enable_firewall\u0027: True,"},{"line_number":290,"context_line":"    \u0027enable_qos\u0027: True,"},{"line_number":291,"context_line":"    \u0027enable_vpn\u0027: True,"},{"line_number":292,"context_line":"    \u0027enable_fip_topology_check\u0027: True,"},{"line_number":293,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":17,"id":"3a1ff146_cf034372","line":290,"in_reply_to":"3a1ff146_7dc76d12","updated":"2017-03-15 15:25:27.000000000","message":"Done","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"}],"openstack_dashboard/static/app/core/core.module.js":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"def0b5e63e4e1387f734ef0369e66590ff9a0c2e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"      \u0027horizon.app.core.flavors\u0027,"},{"line_number":38,"context_line":"      \u0027horizon.app.core.images\u0027,"},{"line_number":39,"context_line":"      \u0027horizon.app.core.metadata\u0027,"},{"line_number":40,"context_line":"      \u0027horizon.app.core.network_qos\u0027,"},{"line_number":41,"context_line":"      \u0027horizon.app.core.openstack-service-api\u0027,"},{"line_number":42,"context_line":"      \u0027horizon.app.core.workflow\u0027,"},{"line_number":43,"context_line":"      \u0027horizon.framework.conf\u0027,"}],"source_content_type":"text/javascript","patch_set":29,"id":"1f013ff3_2b74e034","line":40,"range":{"start_line":40,"start_character":24,"end_line":40,"end_character":35},"updated":"2017-05-15 19:22:22.000000000","message":"Just a question wouldn\u0027t be neutron_qos a better name?","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"9ce4cb7e826142484c7c5f2d875453a2b5b5e189","unresolved":false,"context_lines":[{"line_number":37,"context_line":"      \u0027horizon.app.core.flavors\u0027,"},{"line_number":38,"context_line":"      \u0027horizon.app.core.images\u0027,"},{"line_number":39,"context_line":"      \u0027horizon.app.core.metadata\u0027,"},{"line_number":40,"context_line":"      \u0027horizon.app.core.network_qos\u0027,"},{"line_number":41,"context_line":"      \u0027horizon.app.core.openstack-service-api\u0027,"},{"line_number":42,"context_line":"      \u0027horizon.app.core.workflow\u0027,"},{"line_number":43,"context_line":"      \u0027horizon.framework.conf\u0027,"}],"source_content_type":"text/javascript","patch_set":29,"id":"ff0f0b1f_2abdaf01","line":40,"range":{"start_line":40,"start_character":24,"end_line":40,"end_character":35},"in_reply_to":"1f013ff3_2b74e034","updated":"2017-05-22 12:01:33.000000000","message":"The title of the panel is \u0027Network QoS Policies\u0027 hence it is network_qos here. The other references to neutron_qos have been removed as api files merged into the neutron ones. I think if we start changing the naming here it gets a bit crazy with looking at changing lots of other things ie where should it be Neutron and where Network. What do you think?","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"83a2090230d201f358e64bfbfb4ff9a6d270da84","unresolved":false,"context_lines":[{"line_number":37,"context_line":"      \u0027horizon.app.core.flavors\u0027,"},{"line_number":38,"context_line":"      \u0027horizon.app.core.images\u0027,"},{"line_number":39,"context_line":"      \u0027horizon.app.core.metadata\u0027,"},{"line_number":40,"context_line":"      \u0027horizon.app.core.network_qos\u0027,"},{"line_number":41,"context_line":"      \u0027horizon.app.core.openstack-service-api\u0027,"},{"line_number":42,"context_line":"      \u0027horizon.app.core.workflow\u0027,"},{"line_number":43,"context_line":"      \u0027horizon.framework.conf\u0027,"}],"source_content_type":"text/javascript","patch_set":29,"id":"ff0f0b1f_30a9a023","line":40,"range":{"start_line":40,"start_character":24,"end_line":40,"end_character":35},"in_reply_to":"ff0f0b1f_10a7bca9","updated":"2017-05-22 12:23:19.000000000","message":"Accepted:-)","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"562fac4d4449b817d7c209058a23ee012f013aba","unresolved":false,"context_lines":[{"line_number":37,"context_line":"      \u0027horizon.app.core.flavors\u0027,"},{"line_number":38,"context_line":"      \u0027horizon.app.core.images\u0027,"},{"line_number":39,"context_line":"      \u0027horizon.app.core.metadata\u0027,"},{"line_number":40,"context_line":"      \u0027horizon.app.core.network_qos\u0027,"},{"line_number":41,"context_line":"      \u0027horizon.app.core.openstack-service-api\u0027,"},{"line_number":42,"context_line":"      \u0027horizon.app.core.workflow\u0027,"},{"line_number":43,"context_line":"      \u0027horizon.framework.conf\u0027,"}],"source_content_type":"text/javascript","patch_set":29,"id":"ff0f0b1f_10a7bca9","line":40,"range":{"start_line":40,"start_character":24,"end_line":40,"end_character":35},"in_reply_to":"ff0f0b1f_2abdaf01","updated":"2017-05-22 12:10:19.000000000","message":"network_qos makes sense to me. The other items in here seem to use the service type rather than name i.e. image instead of glance, so network instead of neutron makes sense to me.","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"}],"openstack_dashboard/static/app/core/network_qos/_images.scss":[{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"f1291642b5f6751257fc26d0afa58447436ea4b3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"table[ng-controller\u003d\"horizon.app.core.images.table.ImagesController as table\"] {"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"  .detail-expanded .row {"},{"line_number":4,"context_line":"    background: none;"},{"line_number":5,"context_line":"    padding-left: 2em;"},{"line_number":6,"context_line":"  }"},{"line_number":7,"context_line":"}"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":".textarea-fixed-width {"},{"line_number":10,"context_line":"  resize: vertical;"},{"line_number":11,"context_line":"  min-height: 13em;"},{"line_number":12,"context_line":"  max-height: 30em;"},{"line_number":13,"context_line":"}"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-scss","patch_set":17,"id":"3a1ff146_1dd919f4","line":13,"range":{"start_line":1,"start_character":0,"end_line":13,"end_character":1},"updated":"2017-03-15 13:31:15.000000000","message":"This file should be removed","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"8a734e486359b57ccf7d9bc7acc67520360c436d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"table[ng-controller\u003d\"horizon.app.core.images.table.ImagesController as table\"] {"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"  .detail-expanded .row {"},{"line_number":4,"context_line":"    background: none;"},{"line_number":5,"context_line":"    padding-left: 2em;"},{"line_number":6,"context_line":"  }"},{"line_number":7,"context_line":"}"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":".textarea-fixed-width {"},{"line_number":10,"context_line":"  resize: vertical;"},{"line_number":11,"context_line":"  min-height: 13em;"},{"line_number":12,"context_line":"  max-height: 30em;"},{"line_number":13,"context_line":"}"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-scss","patch_set":17,"id":"3a1ff146_ef89dfcb","line":13,"range":{"start_line":1,"start_character":0,"end_line":13,"end_character":1},"in_reply_to":"3a1ff146_1dd919f4","updated":"2017-03-15 15:25:27.000000000","message":"Done","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"}],"openstack_dashboard/static/app/core/network_qos/admin-panel.html":[{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"f1291642b5f6751257fc26d0afa58447436ea4b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"3a1ff146_7d95ade2","line":6,"updated":"2017-03-15 13:31:15.000000000","message":"Is this actually being used? I can\u0027t see any admin content anywhere","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"8a734e486359b57ccf7d9bc7acc67520360c436d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"3a1ff146_af128760","line":6,"in_reply_to":"3a1ff146_7d95ade2","updated":"2017-03-15 15:25:27.000000000","message":"no i think this is left over after my cleanup. thanks for catching that!","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"}],"openstack_dashboard/static/app/core/network_qos/qos.module.spec.js":[{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"f1291642b5f6751257fc26d0afa58447436ea4b3","unresolved":false,"context_lines":[{"line_number":15,"context_line":"(function () {"},{"line_number":16,"context_line":"  \u0027use strict\u0027;"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  describe(\u0027horizon.dashboard.project.network_qos\u0027, function () {"},{"line_number":19,"context_line":"    it(\u0027should exist\u0027, function () {"},{"line_number":20,"context_line":"      expect(angular.module(\u0027horizon.dashboard.project.network_qos\u0027)).toBeDefined();"},{"line_number":21,"context_line":"    });"},{"line_number":22,"context_line":"  });"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"})();"}],"source_content_type":"text/javascript","patch_set":17,"id":"3a1ff146_fd77ddd1","line":21,"range":{"start_line":18,"start_character":2,"end_line":21,"end_character":7},"updated":"2017-03-15 13:31:15.000000000","message":"This should all be app.core.*","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"8a734e486359b57ccf7d9bc7acc67520360c436d","unresolved":false,"context_lines":[{"line_number":15,"context_line":"(function () {"},{"line_number":16,"context_line":"  \u0027use strict\u0027;"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  describe(\u0027horizon.dashboard.project.network_qos\u0027, function () {"},{"line_number":19,"context_line":"    it(\u0027should exist\u0027, function () {"},{"line_number":20,"context_line":"      expect(angular.module(\u0027horizon.dashboard.project.network_qos\u0027)).toBeDefined();"},{"line_number":21,"context_line":"    });"},{"line_number":22,"context_line":"  });"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"})();"}],"source_content_type":"text/javascript","patch_set":17,"id":"3a1ff146_c125d7ab","line":21,"range":{"start_line":18,"start_character":2,"end_line":21,"end_character":7},"in_reply_to":"3a1ff146_fd77ddd1","updated":"2017-03-15 15:25:27.000000000","message":"Done","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"}],"openstack_dashboard/static/app/core/network_qos/qos.service.js":[{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"f1291642b5f6751257fc26d0afa58447436ea4b3","unresolved":false,"context_lines":[{"line_number":24,"context_line":"     \u0027horizon.app.core.openstack-service-api.userSession\u0027"},{"line_number":25,"context_line":"   ];"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"   /*"},{"line_number":28,"context_line":"    * @ngdoc factory"},{"line_number":29,"context_line":"    * @name horizon.app.core.images.service"},{"line_number":30,"context_line":"    *"},{"line_number":31,"context_line":"    * @description"},{"line_number":32,"context_line":"    * This service provides functions that are used through the QoS"},{"line_number":33,"context_line":"    * features.  These are primarily used in the module registrations"},{"line_number":34,"context_line":"    * but do not need to be restricted to such use.  Each exposed function"},{"line_number":35,"context_line":"    * is documented below."},{"line_number":36,"context_line":"    */"},{"line_number":37,"context_line":"   function qosService($filter, neutron, userSession) {"},{"line_number":38,"context_line":"     var version;"},{"line_number":39,"context_line":""}],"source_content_type":"text/javascript","patch_set":17,"id":"3a1ff146_9d36e901","line":36,"range":{"start_line":27,"start_character":3,"end_line":36,"end_character":6},"updated":"2017-03-15 13:31:15.000000000","message":"images?","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"8a734e486359b57ccf7d9bc7acc67520360c436d","unresolved":false,"context_lines":[{"line_number":24,"context_line":"     \u0027horizon.app.core.openstack-service-api.userSession\u0027"},{"line_number":25,"context_line":"   ];"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"   /*"},{"line_number":28,"context_line":"    * @ngdoc factory"},{"line_number":29,"context_line":"    * @name horizon.app.core.images.service"},{"line_number":30,"context_line":"    *"},{"line_number":31,"context_line":"    * @description"},{"line_number":32,"context_line":"    * This service provides functions that are used through the QoS"},{"line_number":33,"context_line":"    * features.  These are primarily used in the module registrations"},{"line_number":34,"context_line":"    * but do not need to be restricted to such use.  Each exposed function"},{"line_number":35,"context_line":"    * is documented below."},{"line_number":36,"context_line":"    */"},{"line_number":37,"context_line":"   function qosService($filter, neutron, userSession) {"},{"line_number":38,"context_line":"     var version;"},{"line_number":39,"context_line":""}],"source_content_type":"text/javascript","patch_set":17,"id":"3a1ff146_013fefb4","line":36,"range":{"start_line":27,"start_character":3,"end_line":36,"end_character":6},"in_reply_to":"3a1ff146_9d36e901","updated":"2017-03-15 15:25:27.000000000","message":"Done","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"f1291642b5f6751257fc26d0afa58447436ea4b3","unresolved":false,"context_lines":[{"line_number":42,"context_line":"       getPoliciesPromise: getPoliciesPromise,"},{"line_number":43,"context_line":"     };"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"     /*"},{"line_number":46,"context_line":"      * @ngdoc function"},{"line_number":47,"context_line":"      * @name getImagesPromise"},{"line_number":48,"context_line":"      * @description"},{"line_number":49,"context_line":"      * Given filter/query parameters, returns a promise for the matching"},{"line_number":50,"context_line":"      * images.  This is used in displaying lists of Images.  In this case,"},{"line_number":51,"context_line":"      * we need to modify the API\u0027s response by adding a composite value called"},{"line_number":52,"context_line":"      * \u0027trackBy\u0027 to assist the display mechanism when updating rows."},{"line_number":53,"context_line":"      */"},{"line_number":54,"context_line":"     function getPoliciesPromise(params) {"},{"line_number":55,"context_line":"       var projectId;"},{"line_number":56,"context_line":"       return userSession.get().then(getQoSPolicies);"}],"source_content_type":"text/javascript","patch_set":17,"id":"3a1ff146_fd5efd43","line":53,"range":{"start_line":45,"start_character":5,"end_line":53,"end_character":8},"updated":"2017-03-15 13:31:15.000000000","message":"images?","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"8a734e486359b57ccf7d9bc7acc67520360c436d","unresolved":false,"context_lines":[{"line_number":42,"context_line":"       getPoliciesPromise: getPoliciesPromise,"},{"line_number":43,"context_line":"     };"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"     /*"},{"line_number":46,"context_line":"      * @ngdoc function"},{"line_number":47,"context_line":"      * @name getImagesPromise"},{"line_number":48,"context_line":"      * @description"},{"line_number":49,"context_line":"      * Given filter/query parameters, returns a promise for the matching"},{"line_number":50,"context_line":"      * images.  This is used in displaying lists of Images.  In this case,"},{"line_number":51,"context_line":"      * we need to modify the API\u0027s response by adding a composite value called"},{"line_number":52,"context_line":"      * \u0027trackBy\u0027 to assist the display mechanism when updating rows."},{"line_number":53,"context_line":"      */"},{"line_number":54,"context_line":"     function getPoliciesPromise(params) {"},{"line_number":55,"context_line":"       var projectId;"},{"line_number":56,"context_line":"       return userSession.get().then(getQoSPolicies);"}],"source_content_type":"text/javascript","patch_set":17,"id":"3a1ff146_c15cf727","line":53,"range":{"start_line":45,"start_character":5,"end_line":53,"end_character":8},"in_reply_to":"3a1ff146_fd5efd43","updated":"2017-03-15 15:25:27.000000000","message":"Done","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"f1291642b5f6751257fc26d0afa58447436ea4b3","unresolved":false,"context_lines":[{"line_number":71,"context_line":"       }"},{"line_number":72,"context_line":"     }"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"     /*"},{"line_number":75,"context_line":"      * @ngdoc function"},{"line_number":76,"context_line":"      * @name getImagePromise"},{"line_number":77,"context_line":"      * @description"},{"line_number":78,"context_line":"      * Given an id, returns a promise for the image data."},{"line_number":79,"context_line":"      */"},{"line_number":80,"context_line":"     function getPolicyPromise(identifier) {"},{"line_number":81,"context_line":"       neutron.getVersion().then(setVersion);"},{"line_number":82,"context_line":"       return neutron.getQosPolicies(identifier).then(modifyResponse);"}],"source_content_type":"text/javascript","patch_set":17,"id":"3a1ff146_bd448574","line":79,"range":{"start_line":74,"start_character":5,"end_line":79,"end_character":8},"updated":"2017-03-15 13:31:15.000000000","message":"image?","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"8a734e486359b57ccf7d9bc7acc67520360c436d","unresolved":false,"context_lines":[{"line_number":71,"context_line":"       }"},{"line_number":72,"context_line":"     }"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"     /*"},{"line_number":75,"context_line":"      * @ngdoc function"},{"line_number":76,"context_line":"      * @name getImagePromise"},{"line_number":77,"context_line":"      * @description"},{"line_number":78,"context_line":"      * Given an id, returns a promise for the image data."},{"line_number":79,"context_line":"      */"},{"line_number":80,"context_line":"     function getPolicyPromise(identifier) {"},{"line_number":81,"context_line":"       neutron.getVersion().then(setVersion);"},{"line_number":82,"context_line":"       return neutron.getQosPolicies(identifier).then(modifyResponse);"}],"source_content_type":"text/javascript","patch_set":17,"id":"3a1ff146_8152ff11","line":79,"range":{"start_line":74,"start_character":5,"end_line":79,"end_character":8},"in_reply_to":"3a1ff146_bd448574","updated":"2017-03-15 15:25:27.000000000","message":"Done","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"def0b5e63e4e1387f734ef0369e66590ff9a0c2e","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    }"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    /*"},{"line_number":74,"context_line":"    * @ngdoc function"},{"line_number":75,"context_line":"    * @name getPolicyPromise"},{"line_number":76,"context_line":"    * @description"},{"line_number":77,"context_line":"    * Given an id, returns a promise for the policy data."},{"line_number":78,"context_line":"    */"},{"line_number":79,"context_line":"    function getPolicyPromise(identifier) {"},{"line_number":80,"context_line":"      neutron.getVersion().then(setVersion);"},{"line_number":81,"context_line":"      return neutron.getQosPolicy(identifier).then(modifyResponse);"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"      function modifyResponse(response) {"},{"line_number":84,"context_line":"        response.data.apiVersion \u003d version;"},{"line_number":85,"context_line":"        return {data: response.data};"},{"line_number":86,"context_line":"      }"},{"line_number":87,"context_line":"    }"},{"line_number":88,"context_line":"  }"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"})();"}],"source_content_type":"text/javascript","patch_set":29,"id":"1f013ff3_4b484ccb","line":87,"range":{"start_line":74,"start_character":0,"end_line":87,"end_character":5},"updated":"2017-05-15 19:22:22.000000000","message":"As I see you don\u0027t use this function in this patch, I suggest to introduce new functions when you need them.","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"9ce4cb7e826142484c7c5f2d875453a2b5b5e189","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    }"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    /*"},{"line_number":74,"context_line":"    * @ngdoc function"},{"line_number":75,"context_line":"    * @name getPolicyPromise"},{"line_number":76,"context_line":"    * @description"},{"line_number":77,"context_line":"    * Given an id, returns a promise for the policy data."},{"line_number":78,"context_line":"    */"},{"line_number":79,"context_line":"    function getPolicyPromise(identifier) {"},{"line_number":80,"context_line":"      neutron.getVersion().then(setVersion);"},{"line_number":81,"context_line":"      return neutron.getQosPolicy(identifier).then(modifyResponse);"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"      function modifyResponse(response) {"},{"line_number":84,"context_line":"        response.data.apiVersion \u003d version;"},{"line_number":85,"context_line":"        return {data: response.data};"},{"line_number":86,"context_line":"      }"},{"line_number":87,"context_line":"    }"},{"line_number":88,"context_line":"  }"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"})();"}],"source_content_type":"text/javascript","patch_set":29,"id":"ff0f0b1f_4a72237d","line":87,"range":{"start_line":74,"start_character":0,"end_line":87,"end_character":5},"in_reply_to":"1f013ff3_4b484ccb","updated":"2017-05-22 12:01:33.000000000","message":"This function is required - it breaks the patch to remove it.","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"83a2090230d201f358e64bfbfb4ff9a6d270da84","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    }"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    /*"},{"line_number":74,"context_line":"    * @ngdoc function"},{"line_number":75,"context_line":"    * @name getPolicyPromise"},{"line_number":76,"context_line":"    * @description"},{"line_number":77,"context_line":"    * Given an id, returns a promise for the policy data."},{"line_number":78,"context_line":"    */"},{"line_number":79,"context_line":"    function getPolicyPromise(identifier) {"},{"line_number":80,"context_line":"      neutron.getVersion().then(setVersion);"},{"line_number":81,"context_line":"      return neutron.getQosPolicy(identifier).then(modifyResponse);"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"      function modifyResponse(response) {"},{"line_number":84,"context_line":"        response.data.apiVersion \u003d version;"},{"line_number":85,"context_line":"        return {data: response.data};"},{"line_number":86,"context_line":"      }"},{"line_number":87,"context_line":"    }"},{"line_number":88,"context_line":"  }"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"})();"}],"source_content_type":"text/javascript","patch_set":29,"id":"ff0f0b1f_3333eaf8","line":87,"range":{"start_line":74,"start_character":0,"end_line":87,"end_character":5},"in_reply_to":"ff0f0b1f_4a72237d","updated":"2017-05-22 12:23:19.000000000","message":"Hi, I checked and by grep it you use only the getPoliciesPromise, not the getPolicyPromise, so I think if you remove it from here and from the return (line 41.) than it should be ok.","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"562fac4d4449b817d7c209058a23ee012f013aba","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    }"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    /*"},{"line_number":74,"context_line":"    * @ngdoc function"},{"line_number":75,"context_line":"    * @name getPolicyPromise"},{"line_number":76,"context_line":"    * @description"},{"line_number":77,"context_line":"    * Given an id, returns a promise for the policy data."},{"line_number":78,"context_line":"    */"},{"line_number":79,"context_line":"    function getPolicyPromise(identifier) {"},{"line_number":80,"context_line":"      neutron.getVersion().then(setVersion);"},{"line_number":81,"context_line":"      return neutron.getQosPolicy(identifier).then(modifyResponse);"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"      function modifyResponse(response) {"},{"line_number":84,"context_line":"        response.data.apiVersion \u003d version;"},{"line_number":85,"context_line":"        return {data: response.data};"},{"line_number":86,"context_line":"      }"},{"line_number":87,"context_line":"    }"},{"line_number":88,"context_line":"  }"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"})();"}],"source_content_type":"text/javascript","patch_set":29,"id":"ff0f0b1f_f090c845","line":87,"range":{"start_line":74,"start_character":0,"end_line":87,"end_character":5},"in_reply_to":"ff0f0b1f_4a72237d","updated":"2017-05-22 12:10:19.000000000","message":"It might be helpful to indicate why its needed rather than just responding with \"its required\", so other reviewers can understand the code/what they have missed.","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"}],"openstack_dashboard/static/app/core/network_qos/qos.service.spec.js":[{"author":{"_account_id":16352,"name":"Shu Muto","email":"shu.mutow@gmail.com","username":"shu.mutow"},"change_message_id":"206769ff27d9800f04bda7fe83c3d76e261c9f24","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        spyOn(neutron, \u0027getQoSPolicies\u0027).and.returnValue(deferred.promise);"},{"line_number":33,"context_line":"        spyOn(session, \u0027get\u0027).and.returnValue(deferredSession.promise);"},{"line_number":34,"context_line":"        var result \u003d service.getPoliciesPromise({});"},{"line_number":35,"context_line":"      }));"},{"line_number":36,"context_line":"    });"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"  });"}],"source_content_type":"text/javascript","patch_set":28,"id":"bff0334d_78d47a20","line":35,"updated":"2017-04-11 01:49:12.000000000","message":"$timeout.flush() will do the above deferred things.\nSee https://github.com/openstack/magnum-ui/blob/master/magnum_ui/static/dashboard/container-infra/cluster-templates/cluster-templates.service.spec.js#L32-L39\nSee also https://docs.angularjs.org/api/ng/service/$timeout","commit_id":"4e2ec376b59c8528db679282efff12b7ee368a50"}],"openstack_dashboard/static/app/core/openstack-service-api/neutron.service.spec.js":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"def0b5e63e4e1387f734ef0369e66590ff9a0c2e","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    var apiService \u003d {};"},{"line_number":23,"context_line":"    var toastService \u003d {};"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    beforeEach(function() {"},{"line_number":26,"context_line":"      module(\u0027horizon.mock.openstack-service-api\u0027, function($provide, initServices) {"},{"line_number":27,"context_line":"        testCall \u003d initServices($provide, apiService, toastService);"},{"line_number":28,"context_line":"      });"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"      module(\u0027horizon.app.core.openstack-service-api\u0027);"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"      inject([\u0027horizon.app.core.openstack-service-api.neutron\u0027, function(neutronAPI) {"},{"line_number":33,"context_line":"        service \u003d neutronAPI;"},{"line_number":34,"context_line":"      }]);"},{"line_number":35,"context_line":"    });"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    it(\u0027defines the service\u0027, function() {"},{"line_number":38,"context_line":"      expect(service).toBeDefined();"}],"source_content_type":"text/javascript","patch_set":29,"id":"1f013ff3_4babac1c","line":35,"range":{"start_line":25,"start_character":0,"end_line":35,"end_character":7},"updated":"2017-05-15 19:22:22.000000000","message":"You should have a new test for getQoSPolicies, am I wrong?","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"9ce4cb7e826142484c7c5f2d875453a2b5b5e189","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    var apiService \u003d {};"},{"line_number":23,"context_line":"    var toastService \u003d {};"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    beforeEach(function() {"},{"line_number":26,"context_line":"      module(\u0027horizon.mock.openstack-service-api\u0027, function($provide, initServices) {"},{"line_number":27,"context_line":"        testCall \u003d initServices($provide, apiService, toastService);"},{"line_number":28,"context_line":"      });"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"      module(\u0027horizon.app.core.openstack-service-api\u0027);"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"      inject([\u0027horizon.app.core.openstack-service-api.neutron\u0027, function(neutronAPI) {"},{"line_number":33,"context_line":"        service \u003d neutronAPI;"},{"line_number":34,"context_line":"      }]);"},{"line_number":35,"context_line":"    });"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    it(\u0027defines the service\u0027, function() {"},{"line_number":38,"context_line":"      expect(service).toBeDefined();"}],"source_content_type":"text/javascript","patch_set":29,"id":"ff0f0b1f_2a7ecfae","line":35,"range":{"start_line":25,"start_character":0,"end_line":35,"end_character":7},"in_reply_to":"1f013ff3_4babac1c","updated":"2017-05-22 12:01:33.000000000","message":"Done","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"}],"openstack_dashboard/test/api_tests/neutron_qos_tests.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6af3a71c50cbf8059623337b7e36387859d3d367","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from openstack_dashboard import api"},{"line_number":16,"context_line":"from openstack_dashboard.test import helpers as test"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutronclient.v2_0.client import Client as neutronclient  # noqa"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class QoSApiTests(test.APITestCase):"}],"source_content_type":"text/x-python","patch_set":29,"id":"7ffa3b31_671792a5","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":61},"updated":"2017-04-18 10:31:39.000000000","message":"Avoid attribute level import. Please use module-level imports. It is a common convention in OpenStack development.\n\n  from neutronclient.v2_0 import client as neutronclient","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"9ce4cb7e826142484c7c5f2d875453a2b5b5e189","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from openstack_dashboard import api"},{"line_number":16,"context_line":"from openstack_dashboard.test import helpers as test"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutronclient.v2_0.client import Client as neutronclient  # noqa"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class QoSApiTests(test.APITestCase):"}],"source_content_type":"text/x-python","patch_set":29,"id":"ff0f0b1f_3033e0f8","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":61},"in_reply_to":"7ffa3b31_671792a5","updated":"2017-05-22 12:01:33.000000000","message":"Done","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6af3a71c50cbf8059623337b7e36387859d3d367","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        self.mox.ReplayAll()"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        ret_val \u003d api.neutron_qos.policy_list(self.request)"},{"line_number":31,"context_line":"        self.assertEqual(len(ret_val), 2)"},{"line_number":32,"context_line":"        self.assertIsInstance(ret_val[0], api.neutron_qos.QoSPolicy)"},{"line_number":33,"context_line":"        self.assertEqual(ret_val[0].name, exp_policies[0].name)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"7ffa3b31_67caf21a","line":31,"range":{"start_line":31,"start_character":39,"end_line":31,"end_character":40},"updated":"2017-04-18 10:31:39.000000000","message":"len(exp_policies) ?","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"9ce4cb7e826142484c7c5f2d875453a2b5b5e189","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        self.mox.ReplayAll()"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        ret_val \u003d api.neutron_qos.policy_list(self.request)"},{"line_number":31,"context_line":"        self.assertEqual(len(ret_val), 2)"},{"line_number":32,"context_line":"        self.assertIsInstance(ret_val[0], api.neutron_qos.QoSPolicy)"},{"line_number":33,"context_line":"        self.assertEqual(ret_val[0].name, exp_policies[0].name)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"ff0f0b1f_3048805a","line":31,"range":{"start_line":31,"start_character":39,"end_line":31,"end_character":40},"in_reply_to":"7ffa3b31_67caf21a","updated":"2017-05-22 12:01:33.000000000","message":"Done","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6af3a71c50cbf8059623337b7e36387859d3d367","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        ret_val \u003d api.neutron_qos.policy_list(self.request)"},{"line_number":31,"context_line":"        self.assertEqual(len(ret_val), 2)"},{"line_number":32,"context_line":"        self.assertIsInstance(ret_val[0], api.neutron_qos.QoSPolicy)"},{"line_number":33,"context_line":"        self.assertEqual(ret_val[0].name, exp_policies[0].name)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @test.create_stubs({neutronclient: (\u0027create_qos_policy\u0027,)})"},{"line_number":36,"context_line":"    def test_qos_policy_create(self):"}],"source_content_type":"text/x-python","patch_set":29,"id":"7ffa3b31_e7672251","line":33,"range":{"start_line":33,"start_character":8,"end_line":33,"end_character":63},"updated":"2017-04-18 10:31:39.000000000","message":"assertEqual() treats two argument equally in Django, but most OpenStack projects (and testtools) expects the argument order is (expected, actual).\n\n  self.assertEqual(exp_policies[0].name, ret_val[0].name)","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"9ce4cb7e826142484c7c5f2d875453a2b5b5e189","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        ret_val \u003d api.neutron_qos.policy_list(self.request)"},{"line_number":31,"context_line":"        self.assertEqual(len(ret_val), 2)"},{"line_number":32,"context_line":"        self.assertIsInstance(ret_val[0], api.neutron_qos.QoSPolicy)"},{"line_number":33,"context_line":"        self.assertEqual(ret_val[0].name, exp_policies[0].name)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @test.create_stubs({neutronclient: (\u0027create_qos_policy\u0027,)})"},{"line_number":36,"context_line":"    def test_qos_policy_create(self):"}],"source_content_type":"text/x-python","patch_set":29,"id":"ff0f0b1f_70427840","line":33,"range":{"start_line":33,"start_character":8,"end_line":33,"end_character":63},"in_reply_to":"7ffa3b31_e7672251","updated":"2017-05-22 12:01:33.000000000","message":"Done","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"af5c4dfaff3cbbf55b2f8bbe91eefc9601669f20","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"ff0f0b1f_8f76c23d","updated":"2017-05-24 07:04:58.000000000","message":"Could you move the tests to neutron_tests.py? The methods tested here are defined in api.neutron, so I believe neutron_tests.py is the right place.","commit_id":"4ea2d66aed03360263ebc0000b14bb3080cd0a56"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"a443f7f8b5ee160afdb6aaf45fc9ea5728456e50","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"ff0f0b1f_fda60ac1","in_reply_to":"ff0f0b1f_8f76c23d","updated":"2017-05-24 15:54:14.000000000","message":"Done","commit_id":"4ea2d66aed03360263ebc0000b14bb3080cd0a56"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"af5c4dfaff3cbbf55b2f8bbe91eefc9601669f20","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from openstack_dashboard import api"},{"line_number":16,"context_line":"from openstack_dashboard.test import helpers as test"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutronclient.v2_0 import client as neutronclient"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class QoSApiTests(test.APITestCase):"}],"source_content_type":"text/x-python","patch_set":31,"id":"ff0f0b1f_ef853e08","line":18,"updated":"2017-05-24 07:04:58.000000000","message":"This should be placed before openstack_dashboard.\nThe order of import groups are python standard, third-party and project.","commit_id":"4ea2d66aed03360263ebc0000b14bb3080cd0a56"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"a443f7f8b5ee160afdb6aaf45fc9ea5728456e50","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from openstack_dashboard import api"},{"line_number":16,"context_line":"from openstack_dashboard.test import helpers as test"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutronclient.v2_0 import client as neutronclient"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class QoSApiTests(test.APITestCase):"}],"source_content_type":"text/x-python","patch_set":31,"id":"ff0f0b1f_1da41eb9","line":18,"in_reply_to":"ff0f0b1f_ef853e08","updated":"2017-05-24 15:54:14.000000000","message":"Done","commit_id":"4ea2d66aed03360263ebc0000b14bb3080cd0a56"}],"openstack_dashboard/test/helpers.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"af5c4dfaff3cbbf55b2f8bbe91eefc9601669f20","unresolved":false,"context_lines":[{"line_number":232,"context_line":"            \u0027openstack_dashboard.dashboards.project\u0027"},{"line_number":233,"context_line":"            \u0027.network_qos.panel.NetworkQoS.can_access\u0027,"},{"line_number":234,"context_line":"            mock.Mock(return_value\u003dTrue))"},{"line_number":235,"context_line":"        self.patchers[\u0027qos\u0027].start()"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    def tearDown(self):"},{"line_number":238,"context_line":"        HTTPConnection.connect \u003d self._real_conn_request"}],"source_content_type":"text/x-python","patch_set":31,"id":"ff0f0b1f_afa06691","line":235,"updated":"2017-05-24 07:04:58.000000000","message":"add_panel_mocks was recently refactored. Could you add corresponding entries to openstack_dashboard.test.settings.TEST_GLOBAL_MOCKS_ON_PANELS [1] ?\n\nhttps://github.com/openstack/horizon/blob/master/openstack_dashboard/test/settings.py#L270","commit_id":"4ea2d66aed03360263ebc0000b14bb3080cd0a56"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"a443f7f8b5ee160afdb6aaf45fc9ea5728456e50","unresolved":false,"context_lines":[{"line_number":232,"context_line":"            \u0027openstack_dashboard.dashboards.project\u0027"},{"line_number":233,"context_line":"            \u0027.network_qos.panel.NetworkQoS.can_access\u0027,"},{"line_number":234,"context_line":"            mock.Mock(return_value\u003dTrue))"},{"line_number":235,"context_line":"        self.patchers[\u0027qos\u0027].start()"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    def tearDown(self):"},{"line_number":238,"context_line":"        HTTPConnection.connect \u003d self._real_conn_request"}],"source_content_type":"text/x-python","patch_set":31,"id":"ff0f0b1f_3da6c2ac","line":235,"in_reply_to":"ff0f0b1f_afa06691","updated":"2017-05-24 15:54:14.000000000","message":"Done","commit_id":"4ea2d66aed03360263ebc0000b14bb3080cd0a56"}],"openstack_dashboard/test/settings.py":[{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"f1291642b5f6751257fc26d0afa58447436ea4b3","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    # to avoid stubbing neutron extension check calls."},{"line_number":173,"context_line":"    \u0027enable_firewall\u0027: False,"},{"line_number":174,"context_line":"    \u0027enable_vpn\u0027: False,"},{"line_number":175,"context_line":"    \u0027enable_qos\u0027: False,"},{"line_number":176,"context_line":"    \u0027profile_support\u0027: None,"},{"line_number":177,"context_line":"    \u0027enable_distributed_router\u0027: False,"},{"line_number":178,"context_line":"    # \u0027profile_support\u0027: \u0027cisco\u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a1ff146_fd0c3d44","line":175,"updated":"2017-03-15 13:31:15.000000000","message":"ditto with the other settings comments","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"8a734e486359b57ccf7d9bc7acc67520360c436d","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    # to avoid stubbing neutron extension check calls."},{"line_number":173,"context_line":"    \u0027enable_firewall\u0027: False,"},{"line_number":174,"context_line":"    \u0027enable_vpn\u0027: False,"},{"line_number":175,"context_line":"    \u0027enable_qos\u0027: False,"},{"line_number":176,"context_line":"    \u0027profile_support\u0027: None,"},{"line_number":177,"context_line":"    \u0027enable_distributed_router\u0027: False,"},{"line_number":178,"context_line":"    # \u0027profile_support\u0027: \u0027cisco\u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a1ff146_14c80e55","line":175,"in_reply_to":"3a1ff146_fd0c3d44","updated":"2017-03-15 15:25:27.000000000","message":"removed :)","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"}],"releasenotes/notes/bp-network-bandwidth-limiting-qos-df3d667b1a644e30.yaml":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6af3a71c50cbf8059623337b7e36387859d3d367","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Network QoS policies are now available within the Network QoS panel."},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"features:"},{"line_number":6,"context_line":"  - The Network QoS panel allows users to view a list of created network"}],"source_content_type":"text/x-yaml","patch_set":29,"id":"7ffa3b31_4735b645","line":3,"updated":"2017-04-18 10:31:39.000000000","message":"I think no prelude is needed.\n\nLooking at https://docs.openstack.org/releasenotes/horizon/unreleased.html, \u0027New Features\u0027 section is enough.","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"9ce4cb7e826142484c7c5f2d875453a2b5b5e189","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Network QoS policies are now available within the Network QoS panel."},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"features:"},{"line_number":6,"context_line":"  - The Network QoS panel allows users to view a list of created network"}],"source_content_type":"text/x-yaml","patch_set":29,"id":"ff0f0b1f_70b03844","line":3,"in_reply_to":"7ffa3b31_4735b645","updated":"2017-05-22 12:01:33.000000000","message":"Done","commit_id":"aa47aa68b75f2bcb7d2acec2b64421de8cd4b7c3"}],"run_tests.sh":[{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"f1291642b5f6751257fc26d0afa58447436ea4b3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/bash"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"echo \"\""},{"line_number":4,"context_line":"echo \"The run_tests script is deprecated and will be removed in the \""},{"line_number":5,"context_line":"echo \"Queens Release Cycle (13.0), in favor of tox.\""}],"source_content_type":"text/x-sh","patch_set":17,"id":"3a1ff146_e00e5433","line":2,"updated":"2017-03-15 13:31:15.000000000","message":"Why is this here?","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"},{"author":{"_account_id":16628,"name":"Beth Elwell","email":"e.r.elwell@gmail.com","username":"bethelwell"},"change_message_id":"8a734e486359b57ccf7d9bc7acc67520360c436d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/bash"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"echo \"\""},{"line_number":4,"context_line":"echo \"The run_tests script is deprecated and will be removed in the \""},{"line_number":5,"context_line":"echo \"Queens Release Cycle (13.0), in favor of tox.\""}],"source_content_type":"text/x-sh","patch_set":17,"id":"3a1ff146_01660fed","line":2,"in_reply_to":"3a1ff146_e00e5433","updated":"2017-03-15 15:25:27.000000000","message":"Done","commit_id":"08203ad7cfbfe87e84d39d6389c1a72c4666a51a"}]}
