)]}'
{"neutron/conf/policies/qos.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"aa77906ecf5807f2baee0825f0ba0b5d42e54924","unresolved":false,"context_lines":[{"line_number":272,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":273,"context_line":"        \u0027get_alias_dscp_marking_rule\u0027,"},{"line_number":274,"context_line":"        base.RULE_ANY,"},{"line_number":275,"context_line":"        \u0027Get a QoS dscp marking rule through alias\u0027,"},{"line_number":276,"context_line":"        ["},{"line_number":277,"context_line":"            {"},{"line_number":278,"context_line":"                \u0027method\u0027: \u0027GET\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_39448a74","line":275,"range":{"start_line":275,"start_character":19,"end_line":275,"end_character":23},"updated":"2019-03-19 11:49:36.000000000","message":"nit: should be uppercase","commit_id":"2b441593441a6092dfd27852287b28c35d0e8ef9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"a0be2534d709f8dec30063a2ea37ef771cd21ba4","unresolved":false,"context_lines":[{"line_number":272,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":273,"context_line":"        \u0027get_alias_dscp_marking_rule\u0027,"},{"line_number":274,"context_line":"        base.RULE_ANY,"},{"line_number":275,"context_line":"        \u0027Get a QoS dscp marking rule through alias\u0027,"},{"line_number":276,"context_line":"        ["},{"line_number":277,"context_line":"            {"},{"line_number":278,"context_line":"                \u0027method\u0027: \u0027GET\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_5af5b682","line":275,"range":{"start_line":275,"start_character":19,"end_line":275,"end_character":23},"in_reply_to":"5fc1f717_39448a74","updated":"2019-03-19 23:33:32.000000000","message":"Done","commit_id":"2b441593441a6092dfd27852287b28c35d0e8ef9"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"aa77906ecf5807f2baee0825f0ba0b5d42e54924","unresolved":false,"context_lines":[{"line_number":283,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":284,"context_line":"        \u0027update_alias_dscp_marking_rule\u0027,"},{"line_number":285,"context_line":"        base.RULE_ADMIN_ONLY,"},{"line_number":286,"context_line":"        \u0027Update a QoS dscp marking rule through alias\u0027,"},{"line_number":287,"context_line":"        ["},{"line_number":288,"context_line":"            {"},{"line_number":289,"context_line":"                \u0027method\u0027: \u0027PUT\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_f95da248","line":286,"range":{"start_line":286,"start_character":22,"end_line":286,"end_character":26},"updated":"2019-03-19 11:49:36.000000000","message":"nit: uppercase","commit_id":"2b441593441a6092dfd27852287b28c35d0e8ef9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"a0be2534d709f8dec30063a2ea37ef771cd21ba4","unresolved":false,"context_lines":[{"line_number":283,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":284,"context_line":"        \u0027update_alias_dscp_marking_rule\u0027,"},{"line_number":285,"context_line":"        base.RULE_ADMIN_ONLY,"},{"line_number":286,"context_line":"        \u0027Update a QoS dscp marking rule through alias\u0027,"},{"line_number":287,"context_line":"        ["},{"line_number":288,"context_line":"            {"},{"line_number":289,"context_line":"                \u0027method\u0027: \u0027PUT\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_faf10297","line":286,"range":{"start_line":286,"start_character":22,"end_line":286,"end_character":26},"in_reply_to":"5fc1f717_f95da248","updated":"2019-03-19 23:33:32.000000000","message":"Done","commit_id":"2b441593441a6092dfd27852287b28c35d0e8ef9"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"aa77906ecf5807f2baee0825f0ba0b5d42e54924","unresolved":false,"context_lines":[{"line_number":294,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":295,"context_line":"        \u0027delete_alias_dscp_marking_rule\u0027,"},{"line_number":296,"context_line":"        base.RULE_ADMIN_ONLY,"},{"line_number":297,"context_line":"        \u0027Delete a QoS dscp marking rule through alias\u0027,"},{"line_number":298,"context_line":"        ["},{"line_number":299,"context_line":"            {"},{"line_number":300,"context_line":"                \u0027method\u0027: \u0027DELETE\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_b9571a27","line":297,"range":{"start_line":297,"start_character":22,"end_line":297,"end_character":26},"updated":"2019-03-19 11:49:36.000000000","message":"nit: uppercase","commit_id":"2b441593441a6092dfd27852287b28c35d0e8ef9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"a0be2534d709f8dec30063a2ea37ef771cd21ba4","unresolved":false,"context_lines":[{"line_number":294,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":295,"context_line":"        \u0027delete_alias_dscp_marking_rule\u0027,"},{"line_number":296,"context_line":"        base.RULE_ADMIN_ONLY,"},{"line_number":297,"context_line":"        \u0027Delete a QoS dscp marking rule through alias\u0027,"},{"line_number":298,"context_line":"        ["},{"line_number":299,"context_line":"            {"},{"line_number":300,"context_line":"                \u0027method\u0027: \u0027DELETE\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_da2e86f9","line":297,"range":{"start_line":297,"start_character":22,"end_line":297,"end_character":26},"in_reply_to":"5fc1f717_b9571a27","updated":"2019-03-19 23:33:32.000000000","message":"Done","commit_id":"2b441593441a6092dfd27852287b28c35d0e8ef9"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"aa77906ecf5807f2baee0825f0ba0b5d42e54924","unresolved":false,"context_lines":[{"line_number":334,"context_line":"                \u0027path\u0027: \u0027/qos/alias_minimum_bandwidth_rules/{rule_id}/\u0027,"},{"line_number":335,"context_line":"            },"},{"line_number":336,"context_line":"        ]"},{"line_number":337,"context_line":"    ),"},{"line_number":338,"context_line":"]"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_0c3ceabd","line":337,"updated":"2019-03-19 11:49:36.000000000","message":"all that is IMO a bit user failure prone as there are 2 endpoints for single operation, like e.g. create qos rules. That may cause that user will change it for one API call but not for the other so different type of users will possibly be able to do in fact the same operations with different API call.\n\nIs there maybe any way to define rules for those aliases as \"the same as for rule xxxx\"?","commit_id":"2b441593441a6092dfd27852287b28c35d0e8ef9"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3eeebd6f560514ff6d0b03f85bd7ea9b3202f1c5","unresolved":false,"context_lines":[{"line_number":334,"context_line":"                \u0027path\u0027: \u0027/qos/alias_minimum_bandwidth_rules/{rule_id}/\u0027,"},{"line_number":335,"context_line":"            },"},{"line_number":336,"context_line":"        ]"},{"line_number":337,"context_line":"    ),"},{"line_number":338,"context_line":"]"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_dbb3f64c","line":337,"in_reply_to":"5fc1f717_0c3ceabd","updated":"2019-03-19 14:37:18.000000000","message":"FWIW - it is possible to alias policy rules.\n\nI discussed with mlavalle in IRC [0].\n\n[0] http://eavesdrop.openstack.org/irclogs/%23openstack-dev/%23openstack-dev.2019-03-19.log.html#t2019-03-19T14:22:35","commit_id":"2b441593441a6092dfd27852287b28c35d0e8ef9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"a0be2534d709f8dec30063a2ea37ef771cd21ba4","unresolved":false,"context_lines":[{"line_number":334,"context_line":"                \u0027path\u0027: \u0027/qos/alias_minimum_bandwidth_rules/{rule_id}/\u0027,"},{"line_number":335,"context_line":"            },"},{"line_number":336,"context_line":"        ]"},{"line_number":337,"context_line":"    ),"},{"line_number":338,"context_line":"]"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_da7c46ed","line":337,"in_reply_to":"5fc1f717_0c3ceabd","updated":"2019-03-19 23:33:32.000000000","message":"Really good point! Thanks. Done. Each alias policy now point to its pre-existing counterpart in the old API. This is per: http://eavesdrop.openstack.org/irclogs/%23openstack-dev/%23openstack-dev.2019-03-19.log.html#t2019-03-19T14:22:35","commit_id":"2b441593441a6092dfd27852287b28c35d0e8ef9"}],"neutron/extensions/_qos_rules_alias_lib.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2deaff2563c1f73a187fa2cfa45d9b91caae31ad","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_1a4f84bf","line":1,"updated":"2018-11-26 10:09:32.000000000","message":"why we need this file still? I think it\u0027s already in neutron-lib 1.20, isn\u0027t it?","commit_id":"9db4c0e7d1ba3035a52df90d7af97a8e096ca99e"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"41837c62e901fbbcff57271ea7437f6ac0dd092b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_8fca716c","line":1,"in_reply_to":"3f79a3b5_1a4f84bf","updated":"2018-11-26 14:41:46.000000000","message":"It does seem to be in 1.20.0: https://github.com/openstack/neutron-lib/blob/1.20.0/neutron_lib/api/definitions/qos_rules_alias.py","commit_id":"9db4c0e7d1ba3035a52df90d7af97a8e096ca99e"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"398b38046106882d24498f611c272f5feadc3eae","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_102f91a6","line":1,"in_reply_to":"3f79a3b5_8fca716c","updated":"2018-12-05 21:14:19.000000000","message":"Done","commit_id":"9db4c0e7d1ba3035a52df90d7af97a8e096ca99e"}],"neutron/extensions/qos.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2deaff2563c1f73a187fa2cfa45d9b91caae31ad","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                    # from \"delete_policy_dscp_marking_rule\" we\u0027ll get"},{"line_number":129,"context_line":"                    # \"delete_policy_rule\"."},{"line_number":130,"context_line":"                    proxy_method \u003d attrib.replace(rule_type + \u0027_\u0027, \u0027\u0027)"},{"line_number":131,"context_line":"                    proxy_method \u003d proxy_method.replace(\u0027alias_\u0027, \u0027\u0027)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"                    rule_cls \u003d self.rule_objects[rule_type]"},{"line_number":134,"context_line":"                    return self._call_proxy_method(proxy_method, rule_cls)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_5ac65c16","line":131,"range":{"start_line":131,"start_character":62,"end_line":131,"end_character":63},"updated":"2018-11-26 10:09:32.000000000","message":"I think that this underscore will be already replaced with \"\" in line above so You will not find this pattern here","commit_id":"9db4c0e7d1ba3035a52df90d7af97a8e096ca99e"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"398b38046106882d24498f611c272f5feadc3eae","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                    # from \"delete_policy_dscp_marking_rule\" we\u0027ll get"},{"line_number":129,"context_line":"                    # \"delete_policy_rule\"."},{"line_number":130,"context_line":"                    proxy_method \u003d attrib.replace(rule_type + \u0027_\u0027, \u0027\u0027)"},{"line_number":131,"context_line":"                    proxy_method \u003d proxy_method.replace(\u0027alias_\u0027, \u0027\u0027)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"                    rule_cls \u003d self.rule_objects[rule_type]"},{"line_number":134,"context_line":"                    return self._call_proxy_method(proxy_method, rule_cls)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_b6a49606","line":131,"range":{"start_line":131,"start_character":62,"end_line":131,"end_character":63},"in_reply_to":"3f79a3b5_5ac65c16","updated":"2018-12-05 21:14:19.000000000","message":"No. Let\u0027s say that before executing L130:\n\n(Pdb) attrib\n\u0027get_alias_dscp_marking_rule\u0027\n\nThe after executing L130:\n\n(Pdb) proxy_method\n\u0027get_alias_rule\u0027\n\nand after executing L131:\n\n(Pdb) proxy_method\n\u0027get_rule\u0027\n\nIn other words, L130 doesn\u0027t remove all the \u0027_\u0027. it removes only rule_type + \u0027_\u0027","commit_id":"9db4c0e7d1ba3035a52df90d7af97a8e096ca99e"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"59a80289a5d4eb3d31528f205a6470e5aa04c19e","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                r\"^(get_policy_(?P\u003crule_type\u003e.*)_(rules|rule))$\"),"},{"line_number":100,"context_line":"            # The following entry handles rule alias calls"},{"line_number":101,"context_line":"            re.compile("},{"line_number":102,"context_line":"                r\"^((update|delete|get)_alias_(?P\u003crule_type\u003e.*)_rule)$\"),"},{"line_number":103,"context_line":"                               ]"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def __getattr__(self, attrib):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_5f867562","line":102,"range":{"start_line":102,"start_character":39,"end_line":102,"end_character":46},"updated":"2018-12-06 00:28:19.000000000","message":"I got this error on the server log: http://paste.openstack.org/show/736736/ . This is fixed after I added the following to the policy.json file so I think the sample policy.json file should be update.\n\n    \"get_alias_bandwidth_limit_rule\": \"rule:regular_user\",\n    \"update_alias_bandwidth_limit_rule\": \"rule:regular_user\",\n    \"delete_alias_bandwidth_limit_rule\": \"rule:regular_user\",\n    ...","commit_id":"e0db13b8471c5f25b7702f610227576d3a76f8e4"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"0f97372c2ac21fb588618744e0d49116ad09c608","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                r\"^(get_policy_(?P\u003crule_type\u003e.*)_(rules|rule))$\"),"},{"line_number":100,"context_line":"            # The following entry handles rule alias calls"},{"line_number":101,"context_line":"            re.compile("},{"line_number":102,"context_line":"                r\"^((update|delete|get)_alias_(?P\u003crule_type\u003e.*)_rule)$\"),"},{"line_number":103,"context_line":"                               ]"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def __getattr__(self, attrib):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_f38f2427","line":102,"range":{"start_line":102,"start_character":39,"end_line":102,"end_character":46},"in_reply_to":"3f79a3b5_5bcba246","updated":"2019-03-18 00:59:45.000000000","message":"Added policy definitions for the aliases in the next revision","commit_id":"e0db13b8471c5f25b7702f610227576d3a76f8e4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"f30dc752dc930d08d3b1ac0ef0000f685b659945","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                r\"^(get_policy_(?P\u003crule_type\u003e.*)_(rules|rule))$\"),"},{"line_number":100,"context_line":"            # The following entry handles rule alias calls"},{"line_number":101,"context_line":"            re.compile("},{"line_number":102,"context_line":"                r\"^((update|delete|get)_alias_(?P\u003crule_type\u003e.*)_rule)$\"),"},{"line_number":103,"context_line":"                               ]"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def __getattr__(self, attrib):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_5bcba246","line":102,"range":{"start_line":102,"start_character":39,"end_line":102,"end_character":46},"in_reply_to":"3f79a3b5_5f867562","updated":"2018-12-10 12:24:58.000000000","message":"Yeah, and keep in mind that the policy in code patch is as well on its way (see: https://review.openstack.org/585037), so perhaps good to add a note for Amotoki about the new policy rules.","commit_id":"e0db13b8471c5f25b7702f610227576d3a76f8e4"}],"neutron/extensions/qos_rules_alias.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2deaff2563c1f73a187fa2cfa45d9b91caae31ad","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from neutron_lib.plugins import constants"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron.api.v2 import resource_helper"},{"line_number":19,"context_line":"from neutron.extensions import _qos_rules_alias_lib as apidef"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class Qos_rules_alias(api_extensions.APIExtensionDescriptor):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_3ad120cb","line":19,"updated":"2018-11-26 10:09:32.000000000","message":"We can probably use apidef from neutron-lib directly as it\u0027s released already","commit_id":"9db4c0e7d1ba3035a52df90d7af97a8e096ca99e"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"398b38046106882d24498f611c272f5feadc3eae","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from neutron_lib.plugins import constants"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron.api.v2 import resource_helper"},{"line_number":19,"context_line":"from neutron.extensions import _qos_rules_alias_lib as apidef"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class Qos_rules_alias(api_extensions.APIExtensionDescriptor):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_04d19b2e","line":19,"in_reply_to":"3f79a3b5_3ad120cb","updated":"2018-12-05 21:14:19.000000000","message":"Done","commit_id":"9db4c0e7d1ba3035a52df90d7af97a8e096ca99e"}],"neutron/services/qos/qos_plugin.py":[{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"23fd855626ba3db65495535d0cac71115818a4a2","unresolved":false,"context_lines":[{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    def _get_policy_id(self, context, rule_cls, rule_id):"},{"line_number":362,"context_line":"        with db_api.autonested_transaction(context.session):"},{"line_number":363,"context_line":"            policy_id \u003d rule_cls.get_object(context, id\u003drule_id).qos_policy_id"},{"line_number":364,"context_line":"        return policy_id"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"    def update_rule(self, context, rule_cls, rule_id, rule_data):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_3fd05952","line":363,"range":{"start_line":363,"start_character":24,"end_line":363,"end_character":64},"updated":"2018-12-06 00:36:15.000000000","message":"If the \u0027rule_id\u0027 (which provided by API users) is not found, this will be None which won\u0027t have the \u0027qos_policy_id\u0027 attribute.","commit_id":"e0db13b8471c5f25b7702f610227576d3a76f8e4"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"0f97372c2ac21fb588618744e0d49116ad09c608","unresolved":false,"context_lines":[{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    def _get_policy_id(self, context, rule_cls, rule_id):"},{"line_number":362,"context_line":"        with db_api.autonested_transaction(context.session):"},{"line_number":363,"context_line":"            policy_id \u003d rule_cls.get_object(context, id\u003drule_id).qos_policy_id"},{"line_number":364,"context_line":"        return policy_id"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"    def update_rule(self, context, rule_cls, rule_id, rule_data):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_938260ff","line":363,"range":{"start_line":363,"start_character":24,"end_line":363,"end_character":64},"in_reply_to":"3f79a3b5_3fd05952","updated":"2019-03-18 00:59:45.000000000","message":"Fixed in next revision","commit_id":"e0db13b8471c5f25b7702f610227576d3a76f8e4"}],"releasenotes/notes/qos-rules-alias-extension-ebf23b87460ee36e.yaml":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"90a05d30ddd972ca931fe8d6afe1812c9a61dbb0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Support alias end points for rules in QoS API."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - |"},{"line_number":6,"context_line":"    The ``qos-rules-alias`` API extension was implemented to enable users to"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"5fc1f717_cef46dd2","line":3,"updated":"2019-03-20 21:04:06.000000000","message":"Don\u0027t really need the prelude since the note is so short.","commit_id":"4e5fc4935e41f4296e88dc8042f9fa77c622706f"}]}
