)]}'
{"nova/api/openstack/compute/extension_info.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"1e637a03075f9333f2c34f94add79ea1df4d83a7","unresolved":false,"context_lines":[{"line_number":253,"context_line":"    def index(self, req):"},{"line_number":254,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":255,"context_line":"        context.can(ext_policies.BASE_POLICY_NAME)"},{"line_number":256,"context_line":"        discoverable_extensions \u003d self._get_extensions(context)"},{"line_number":257,"context_line":"        # NOTE(gmann): This is for v2.1 compatible mode where"},{"line_number":258,"context_line":"        # extension list should show all extensions as shown by v2."},{"line_number":259,"context_line":"        # Here we add VIF extension which has been removed from v2.1 list."}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_fc8689db","line":256,"range":{"start_line":256,"start_character":8,"end_line":256,"end_character":31},"updated":"2017-04-26 05:32:58.000000000","message":"this should be renamed as well...","commit_id":"4b5dcc1cc44247370ee1b43e0bc6e48a2bd8af2d"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"1e637a03075f9333f2c34f94add79ea1df4d83a7","unresolved":false,"context_lines":[{"line_number":260,"context_line":"        if req.is_legacy_v2():"},{"line_number":261,"context_line":"            self._add_vif_extension(discoverable_extensions)"},{"line_number":262,"context_line":"        sorted_ext_list \u003d sorted("},{"line_number":263,"context_line":"            discoverable_extensions.items())"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        extensions \u003d []"},{"line_number":266,"context_line":"        for _alias, ext in sorted_ext_list:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_dc6d0d33","line":263,"range":{"start_line":263,"start_character":12,"end_line":263,"end_character":35},"updated":"2017-04-26 05:32:58.000000000","message":"ditto","commit_id":"4b5dcc1cc44247370ee1b43e0bc6e48a2bd8af2d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4332c9b8b0b039e3d7c1387bacef4476861b6a7c","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    def _create_fake_ext(self, name, alias, description\u003d\"\"):"},{"line_number":270,"context_line":"        return FakeExtension(name, alias, description)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    def _add_vif_extension(self, all_extensions):"},{"line_number":273,"context_line":"        vif_extension \u003d {}"},{"line_number":274,"context_line":"        vif_extension_info \u003d {\u0027name\u0027: \u0027ExtendedVIFNet\u0027,"},{"line_number":275,"context_line":"                              \u0027alias\u0027: \u0027OS-EXT-VIF-NET\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_42deaf11","line":272,"range":{"start_line":272,"start_character":33,"end_line":272,"end_character":47},"updated":"2017-04-26 10:11:56.000000000","message":"femtonit: Just \u0027extensions\u0027 would make more sense to me","commit_id":"29b73913a13af7699fcfd306496de4dbe127898d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"182dfbc70f7ff01d68c9ebc6abd4bc82fe6e4fdd","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    def _create_fake_ext(self, name, alias, description\u003d\"\"):"},{"line_number":270,"context_line":"        return FakeExtension(name, alias, description)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    def _add_vif_extension(self, all_extensions):"},{"line_number":273,"context_line":"        vif_extension \u003d {}"},{"line_number":274,"context_line":"        vif_extension_info \u003d {\u0027name\u0027: \u0027ExtendedVIFNet\u0027,"},{"line_number":275,"context_line":"                              \u0027alias\u0027: \u0027OS-EXT-VIF-NET\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_ec736ab0","line":272,"range":{"start_line":272,"start_character":33,"end_line":272,"end_character":47},"in_reply_to":"5ff73747_42deaf11","updated":"2017-04-26 12:55:04.000000000","message":"I choose all so its not unused, hardcoded or regular extensions. But I could go either way.","commit_id":"29b73913a13af7699fcfd306496de4dbe127898d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0ebee7433a644935ff2abc89e9a8f012d77633c5","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                vif_extension_info[\"description\"])"},{"line_number":281,"context_line":"        all_extensions.update(vif_extension)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def _get_extensions(self, context):"},{"line_number":284,"context_line":"        \"\"\"Filter extensions list based on policy.\"\"\""},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        all_extensions \u003d dict()"}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_2e5b8ff7","line":283,"updated":"2017-04-26 09:27:29.000000000","message":"I\u0027m thinking....maybe we should just copy this sample file https://github.com/openstack/nova/blob/master/doc/api_samples/extension-info/extensions-list-resp.json into here.\n\nThen everything becomes simple, and this is just a hard-code and totally freezed API. I can do that after your patch merge.","commit_id":"29b73913a13af7699fcfd306496de4dbe127898d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4332c9b8b0b039e3d7c1387bacef4476861b6a7c","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                vif_extension_info[\"description\"])"},{"line_number":281,"context_line":"        all_extensions.update(vif_extension)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def _get_extensions(self, context):"},{"line_number":284,"context_line":"        \"\"\"Filter extensions list based on policy.\"\"\""},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        all_extensions \u003d dict()"}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_e2ea5baa","line":283,"in_reply_to":"5ff73747_2e5b8ff7","updated":"2017-04-26 10:11:56.000000000","message":"+1 sounds like a good follow-up","commit_id":"29b73913a13af7699fcfd306496de4dbe127898d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"33031dd4d650046804b0fe07fa53c3ee7c2b19b9","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                vif_extension_info[\"description\"])"},{"line_number":281,"context_line":"        all_extensions.update(vif_extension)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def _get_extensions(self, context):"},{"line_number":284,"context_line":"        \"\"\"Filter extensions list based on policy.\"\"\""},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        all_extensions \u003d dict()"}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_ae49dfd0","line":283,"in_reply_to":"5ff73747_2e5b8ff7","updated":"2017-04-26 09:34:01.000000000","message":"Yeah, we can look at that as a follow up patch.","commit_id":"29b73913a13af7699fcfd306496de4dbe127898d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4332c9b8b0b039e3d7c1387bacef4476861b6a7c","unresolved":false,"context_lines":[{"line_number":283,"context_line":"    def _get_extensions(self, context):"},{"line_number":284,"context_line":"        \"\"\"Filter extensions list based on policy.\"\"\""},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        all_extensions \u003d dict()"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        for item in hardcoded_extensions:"},{"line_number":289,"context_line":"            all_extensions[item[\u0027alias\u0027]] \u003d self._create_fake_ext("}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_4207cf83","line":286,"range":{"start_line":286,"start_character":8,"end_line":286,"end_character":22},"updated":"2017-04-26 10:11:56.000000000","message":"ditto","commit_id":"29b73913a13af7699fcfd306496de4dbe127898d"}],"nova/policies/admin_actions.py":[{"author":{"_account_id":17814,"name":"fengzhr","email":"fengzhr@awcloud.com","username":"space"},"change_message_id":"5bab10708c9a603e9a45d8fa8d64d92b6e80aa64","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_policy import policy"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from nova.policies import base"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_42bed965","line":16,"range":{"start_line":16,"start_character":24,"end_line":16,"end_character":30},"updated":"2017-04-25 10:23:49.000000000","message":"Unused import.","commit_id":"ec4a5d4ada76846e15418d6864f5a6298c5ca73d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"bee68b38077f6988ab481c617b028bf039f279f2","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_policy import policy"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from nova.policies import base"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_9d94448d","line":16,"range":{"start_line":16,"start_character":24,"end_line":16,"end_character":30},"in_reply_to":"5ff73747_42bed965","updated":"2017-04-25 10:31:34.000000000","message":"yeah, been faffing with my editor to kill them.","commit_id":"ec4a5d4ada76846e15418d6864f5a6298c5ca73d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d559d7963e87de15e665203f56fd3d5c997e43b3","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from nova.policies import base"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"BASE_POLICY_NAME \u003d \u0027os_compute_api:os-admin-actions\u0027"},{"line_number":22,"context_line":"POLICY_ROOT \u003d \u0027os_compute_api:os-admin-actions:%s\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5ff73747_6a08592b","side":"PARENT","line":21,"updated":"2017-04-26 14:21:33.000000000","message":"Hmm, maybe some of these are unrelated changes, didn\u0027t have the context when I was fixing this up.","commit_id":"671eb66f3defb66b774b5e34020add43841d33a3"}],"nova/policies/admin_password.py":[{"author":{"_account_id":17814,"name":"fengzhr","email":"fengzhr@awcloud.com","username":"space"},"change_message_id":"5bab10708c9a603e9a45d8fa8d64d92b6e80aa64","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_policy import policy"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from nova.policies import base"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_c27669d9","line":16,"range":{"start_line":16,"start_character":24,"end_line":16,"end_character":30},"updated":"2017-04-25 10:23:49.000000000","message":"ditto","commit_id":"ec4a5d4ada76846e15418d6864f5a6298c5ca73d"}],"nova/policies/block_device_mapping.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4332c9b8b0b039e3d7c1387bacef4476861b6a7c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"5ff73747_42158f9b","updated":"2017-04-26 10:11:56.000000000","message":"Dumb, unrelated question, but does this mean there are a no policies around block_device_mapping APIs? Were there ever?","commit_id":"29b73913a13af7699fcfd306496de4dbe127898d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ba1b3d9c3b9620a9aef0cca270a0e54bc5e01927","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"5ff73747_0718b0d0","in_reply_to":"5ff73747_42158f9b","updated":"2017-04-26 13:49:13.000000000","message":"I think thats a yes.\n\nIts mostly just extra info in existing APIs that are protected by other policy rules.","commit_id":"29b73913a13af7699fcfd306496de4dbe127898d"}],"nova/policies/extended_status.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4332c9b8b0b039e3d7c1387bacef4476861b6a7c","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"BASE_POLICY_NAME \u003d \u0027os_compute_api:os-extended-status\u0027"},{"line_number":22,"context_line":"POLICY_ROOT \u003d \u0027os_compute_api:os-extended-status:%s\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"extended_status_policies \u003d ["}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_a2233305","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":52},"updated":"2017-04-26 10:11:56.000000000","message":"Kill it","commit_id":"29b73913a13af7699fcfd306496de4dbe127898d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"c5efcf77b1ec452c246a1fb97499f593fba00f5a","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"BASE_POLICY_NAME \u003d \u0027os_compute_api:os-extended-status\u0027"},{"line_number":22,"context_line":"POLICY_ROOT \u003d \u0027os_compute_api:os-extended-status:%s\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"extended_status_policies \u003d ["}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_1866d852","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":52},"in_reply_to":"5ff73747_a2233305","updated":"2017-04-26 11:09:44.000000000","message":"oh yeah, doh! Its annoying pep8 didn\u0027t catch that unused variable, I guess thats no its bag because its module level.","commit_id":"29b73913a13af7699fcfd306496de4dbe127898d"}],"nova/policies/extended_volumes.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4332c9b8b0b039e3d7c1387bacef4476861b6a7c","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"BASE_POLICY_NAME \u003d \u0027os_compute_api:os-extended-volumes\u0027"},{"line_number":22,"context_line":"POLICY_ROOT \u003d \u0027os_compute_api:os-extended-volumes:%s\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"extended_volumes_policies \u003d ["}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_e2113bae","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":53},"updated":"2017-04-26 10:11:56.000000000","message":"This can go now","commit_id":"29b73913a13af7699fcfd306496de4dbe127898d"}],"nova/policies/extensions.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4332c9b8b0b039e3d7c1387bacef4476861b6a7c","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"BASE_POLICY_NAME \u003d \u0027os_compute_api:extensions\u0027"},{"line_number":22,"context_line":"POLICY_ROOT \u003d \u0027os_compute_api:extensions:%s\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"extensions_policies \u003d ["}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_822277ff","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":44},"updated":"2017-04-26 10:11:56.000000000","message":"bye bye","commit_id":"29b73913a13af7699fcfd306496de4dbe127898d"}],"nova/policies/fixed_ips.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4332c9b8b0b039e3d7c1387bacef4476861b6a7c","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"BASE_POLICY_NAME \u003d \u0027os_compute_api:os-fixed-ips\u0027"},{"line_number":22,"context_line":"POLICY_ROOT \u003d \u0027os_compute_api:os-fixed-ips:%s\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"fixed_ips_policies \u003d ["}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_427a2ff1","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":46},"updated":"2017-04-26 10:11:56.000000000","message":"adios","commit_id":"29b73913a13af7699fcfd306496de4dbe127898d"}],"nova/policies/flavor_manage.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4332c9b8b0b039e3d7c1387bacef4476861b6a7c","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"BASE_POLICY_NAME \u003d \u0027os_compute_api:os-flavor-manage\u0027"},{"line_number":22,"context_line":"POLICY_ROOT \u003d \u0027os_compute_api:os-flavor-manage:%s\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"flavor_manage_policies \u003d ["}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_e286dbdb","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":50},"updated":"2017-04-26 10:11:56.000000000","message":"I think we get the point :)","commit_id":"29b73913a13af7699fcfd306496de4dbe127898d"}],"nova/tests/unit/api/openstack/compute/test_extension_info.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"1e637a03075f9333f2c34f94add79ea1df4d83a7","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        self.assertEqual(res_dict[\u0027extension\u0027][\u0027links\u0027], [])"},{"line_number":104,"context_line":"        self.assertEqual(6, len(res_dict[\u0027extension\u0027]))"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def test_extension_info_list_all(self):"},{"line_number":107,"context_line":"        req \u003d fakes.HTTPRequestV21.blank(\u0027/extensions\u0027)"},{"line_number":108,"context_line":"        res_dict \u003d self.controller.index(req)"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_7cf9594b","line":106,"range":{"start_line":106,"start_character":8,"end_line":106,"end_character":36},"updated":"2017-04-26 05:32:58.000000000","message":"what\u0027s the difference between this and test_extension_info_list above?","commit_id":"4b5dcc1cc44247370ee1b43e0bc6e48a2bd8af2d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"9f5eb6ce2e30cb41fd9602847b59c0722ece708f","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        self.assertEqual(res_dict[\u0027extension\u0027][\u0027links\u0027], [])"},{"line_number":104,"context_line":"        self.assertEqual(6, len(res_dict[\u0027extension\u0027]))"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def test_extension_info_list_all(self):"},{"line_number":107,"context_line":"        req \u003d fakes.HTTPRequestV21.blank(\u0027/extensions\u0027)"},{"line_number":108,"context_line":"        res_dict \u003d self.controller.index(req)"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_688bcf1e","line":106,"range":{"start_line":106,"start_character":8,"end_line":106,"end_character":36},"in_reply_to":"5ff73747_7cf9594b","updated":"2017-04-26 08:26:48.000000000","message":"heh, none now. I should delete this.\n\nYou know I looked for that test and couldn\u0027t find it, doh!","commit_id":"4b5dcc1cc44247370ee1b43e0bc6e48a2bd8af2d"}],"releasenotes/notes/remove-discoverable-policy-rules-4a2c87e1c88a3228.yaml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4332c9b8b0b039e3d7c1387bacef4476861b6a7c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Please note that all policy rules design to modify if an API extension"},{"line_number":5,"context_line":"    is discoverable or not have been removed. All all policy rules with the"},{"line_number":6,"context_line":"    following naming scheme have been removed"},{"line_number":7,"context_line":"    ``os_compute_api:name_of_extension:discoverable``"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"5ff73747_a2ffb332","line":7,"range":{"start_line":4,"start_character":0,"end_line":7,"end_character":53},"updated":"2017-04-26 10:11:56.000000000","message":"This reads very oddly - the sentences should probably be switched. Maybe:\n\n    All policy rules with the following naming scheme have been\n    removed::\n\n      os_compute_api:{extensionName}:discoverable\n\n    These defined whether API extensions were enabled or not,\n    but with the advent of the v2.1 API and microversions, nova\n    no longer uses or allows API extensions.\n\n    For more information, refer to \u003clink to docs on this stuff?\u003e","commit_id":"29b73913a13af7699fcfd306496de4dbe127898d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0d24982d8d168190b311734d83f182170ea4fa93","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    All policy rules with the following naming scheme have been"},{"line_number":5,"context_line":"    removed: ``os_compute_api:{extension_alias}:discoverable``"},{"line_number":6,"context_line":"    These policy rules were used to hide an enabled extension from the"},{"line_number":7,"context_line":"    list active API extensions API. Given it is no longer possible to"},{"line_number":8,"context_line":"    disable any API extensions, it makes no sense to have the option"},{"line_number":9,"context_line":"    to hide the fact an API extension is active. As such, all these policy"},{"line_number":10,"context_line":"    rules have been removed."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"5ff73747_8e96deef","line":7,"range":{"start_line":6,"start_character":62,"end_line":7,"end_character":34},"updated":"2017-04-27 22:20:59.000000000","message":"This reads a bit odd to me. I would have maybe just said the ``GET /extensions`` API.","commit_id":"d3b647a0009643e53d0178af909d0b7b5320d896"}]}
