)]}'
{"nova/api/openstack/compute/plugins/v3/servers.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"ba5da06053c89fe5c33a3a7624dca267a0d69ccc","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"                policy.enforce(context,"},{"line_number":1035,"context_line":"                               \u0027compute:allow_volume_backed_snapshot\u0027,"},{"line_number":1036,"context_line":"                               {\u0027project_id\u0027: context.project_id,"},{"line_number":1037,"context_line":"                                \u0027user_id\u0027: context.user_id})"},{"line_number":1038,"context_line":"                img \u003d instance.image_ref"},{"line_number":1039,"context_line":"                if not img:"},{"line_number":1040,"context_line":"                    properties \u003d bdms.root_metadata("}],"source_content_type":"text/x-python","patch_set":4,"id":"3acd31a7_e978dd91","line":1037,"updated":"2015-04-29 15:58:49.000000000","message":"authorize \u003d extensions.os_compute_authorizer(ALIAS)\n\nI think we should use this because it\u0027s a wrapper of policy check\nevery other API use this ...","commit_id":"4074da893676396f2cf5f2456b9a5b3fe78ed1f0"},{"author":{"_account_id":1882,"name":"dave-mcnally","email":"dave.mcnally@hpe.com","username":"dave-mcnally"},"change_message_id":"969a902a6783346d94c5331faa57a102655722c3","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"                policy.enforce(context,"},{"line_number":1035,"context_line":"                               \u0027compute:allow_volume_backed_snapshot\u0027,"},{"line_number":1036,"context_line":"                               {\u0027project_id\u0027: context.project_id,"},{"line_number":1037,"context_line":"                                \u0027user_id\u0027: context.user_id})"},{"line_number":1038,"context_line":"                img \u003d instance.image_ref"},{"line_number":1039,"context_line":"                if not img:"},{"line_number":1040,"context_line":"                    properties \u003d bdms.root_metadata("}],"source_content_type":"text/x-python","patch_set":4,"id":"3acd31a7_7f5511f8","line":1037,"in_reply_to":"3acd31a7_e978dd91","updated":"2015-05-05 10:24:18.000000000","message":"Done","commit_id":"4074da893676396f2cf5f2456b9a5b3fe78ed1f0"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3badded727950346a270237f3f533a1fa0c36b22","unresolved":false,"context_lines":[{"line_number":1032,"context_line":"                                                          bdms):"},{"line_number":1033,"context_line":"                authorize(context,"},{"line_number":1034,"context_line":"                          {\u0027project_id\u0027: context.project_id,"},{"line_number":1035,"context_line":"                           \u0027user_id\u0027: context.user_id},"},{"line_number":1036,"context_line":"                          action\u003d\"allow_volume_backed_snapshot\")"},{"line_number":1037,"context_line":"                img \u003d instance.image_ref"},{"line_number":1038,"context_line":"                if not img:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3acd31a7_ea8e0178","line":1035,"updated":"2015-05-05 10:57:54.000000000","message":"we already send context as parm...\nseems no need to add this param","commit_id":"3be350d3b283f7627397e43a7da54daf91b91daa"},{"author":{"_account_id":1882,"name":"dave-mcnally","email":"dave.mcnally@hpe.com","username":"dave-mcnally"},"change_message_id":"2e906d8e17008b087c6d47cb1ba599ed232d706b","unresolved":false,"context_lines":[{"line_number":1032,"context_line":"                                                          bdms):"},{"line_number":1033,"context_line":"                authorize(context,"},{"line_number":1034,"context_line":"                          {\u0027project_id\u0027: context.project_id,"},{"line_number":1035,"context_line":"                           \u0027user_id\u0027: context.user_id},"},{"line_number":1036,"context_line":"                          action\u003d\"allow_volume_backed_snapshot\")"},{"line_number":1037,"context_line":"                img \u003d instance.image_ref"},{"line_number":1038,"context_line":"                if not img:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3acd31a7_eb9de366","line":1035,"in_reply_to":"3acd31a7_ea8e0178","updated":"2015-05-05 12:31:42.000000000","message":"Done","commit_id":"3be350d3b283f7627397e43a7da54daf91b91daa"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"42332c57d66126ce747a2610871f3e576cda3b44","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"        try:"},{"line_number":1031,"context_line":"            if self.compute_api.is_volume_backed_instance(context, instance,"},{"line_number":1032,"context_line":"                                                          bdms):"},{"line_number":1033,"context_line":"                authorize(context, action\u003d\"allow_volume_backed_snapshot\")"},{"line_number":1034,"context_line":"                img \u003d instance.image_ref"},{"line_number":1035,"context_line":"                if not img:"},{"line_number":1036,"context_line":"                    properties \u003d bdms.root_metadata("}],"source_content_type":"text/x-python","patch_set":7,"id":"1aca2d91_7da9e27a","line":1033,"updated":"2015-05-07 14:05:01.000000000","message":"there is rule for this api, called \u0027os_compute_api:create_image\u0027, it enforced at line 1017.\n\nHow about we name this rule as \u0027os_compute_api:create_image:allow_volume_backed\u0027, then the user can now this option is also fur create_image API.","commit_id":"8524bbc66b96373af809f518a3368bb05a77bda2"},{"author":{"_account_id":1882,"name":"dave-mcnally","email":"dave.mcnally@hpe.com","username":"dave-mcnally"},"change_message_id":"02cf0d09821c428cad41c3aff3f3b300a6feaaff","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"        try:"},{"line_number":1031,"context_line":"            if self.compute_api.is_volume_backed_instance(context, instance,"},{"line_number":1032,"context_line":"                                                          bdms):"},{"line_number":1033,"context_line":"                authorize(context, action\u003d\"allow_volume_backed_snapshot\")"},{"line_number":1034,"context_line":"                img \u003d instance.image_ref"},{"line_number":1035,"context_line":"                if not img:"},{"line_number":1036,"context_line":"                    properties \u003d bdms.root_metadata("}],"source_content_type":"text/x-python","patch_set":7,"id":"1aca2d91_0e5cf6eb","line":1033,"in_reply_to":"1aca2d91_7da9e27a","updated":"2015-05-07 15:02:23.000000000","message":"Done","commit_id":"8524bbc66b96373af809f518a3368bb05a77bda2"}],"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"42332c57d66126ce747a2610871f3e576cda3b44","unresolved":false,"context_lines":[{"line_number":1081,"context_line":"            if self.compute_api.is_volume_backed_instance(context, instance,"},{"line_number":1082,"context_line":"                                                          bdms):"},{"line_number":1083,"context_line":"                policy.enforce(context,"},{"line_number":1084,"context_line":"                        \u0027os_compute_api:servers:allow_volume_backed_snapshot\u0027,"},{"line_number":1085,"context_line":"                        {\u0027project_id\u0027: context.project_id,"},{"line_number":1086,"context_line":"                        \u0027user_id\u0027: context.user_id})"},{"line_number":1087,"context_line":"                img \u003d instance.image_ref"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aca2d91_1d7d4e6e","line":1084,"updated":"2015-05-07 14:05:01.000000000","message":"the prefix \u0027os_compute_api\u0027 is for v2.1 API. It isn\u0027t for v2.\n\nWe can use \u0027compute:snapshot_volume_backed\u0027 for v2 API.","commit_id":"8524bbc66b96373af809f518a3368bb05a77bda2"},{"author":{"_account_id":1882,"name":"dave-mcnally","email":"dave.mcnally@hpe.com","username":"dave-mcnally"},"change_message_id":"02cf0d09821c428cad41c3aff3f3b300a6feaaff","unresolved":false,"context_lines":[{"line_number":1081,"context_line":"            if self.compute_api.is_volume_backed_instance(context, instance,"},{"line_number":1082,"context_line":"                                                          bdms):"},{"line_number":1083,"context_line":"                policy.enforce(context,"},{"line_number":1084,"context_line":"                        \u0027os_compute_api:servers:allow_volume_backed_snapshot\u0027,"},{"line_number":1085,"context_line":"                        {\u0027project_id\u0027: context.project_id,"},{"line_number":1086,"context_line":"                        \u0027user_id\u0027: context.user_id})"},{"line_number":1087,"context_line":"                img \u003d instance.image_ref"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aca2d91_2e59f2fe","line":1084,"in_reply_to":"1aca2d91_1d7d4e6e","updated":"2015-05-07 15:02:23.000000000","message":"Done","commit_id":"8524bbc66b96373af809f518a3368bb05a77bda2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b07e52a0c22a774c66db959a2bc5c390772b32fb","unresolved":false,"context_lines":[{"line_number":1083,"context_line":"                policy.enforce(context,"},{"line_number":1084,"context_line":"                        \u0027compute:snapshot_volume_backed\u0027,"},{"line_number":1085,"context_line":"                        {\u0027project_id\u0027: context.project_id,"},{"line_number":1086,"context_line":"                        \u0027user_id\u0027: context.user_id})"},{"line_number":1087,"context_line":"                img \u003d instance.image_ref"},{"line_number":1088,"context_line":"                if not img:"},{"line_number":1089,"context_line":"                    properties \u003d bdms.root_metadata("}],"source_content_type":"text/x-python","patch_set":8,"id":"9af37de9_d88cc137","line":1086,"updated":"2015-05-10 10:20:59.000000000","message":"the indent looks strange, there should be one more blank space","commit_id":"4b132a7a781ba1f5167b5a75296ecdc6c0909bc9"},{"author":{"_account_id":1882,"name":"dave-mcnally","email":"dave.mcnally@hpe.com","username":"dave-mcnally"},"change_message_id":"add9a0e348309cdad2cb5c5dc5c41c1939a3c19d","unresolved":false,"context_lines":[{"line_number":1083,"context_line":"                policy.enforce(context,"},{"line_number":1084,"context_line":"                        \u0027compute:snapshot_volume_backed\u0027,"},{"line_number":1085,"context_line":"                        {\u0027project_id\u0027: context.project_id,"},{"line_number":1086,"context_line":"                        \u0027user_id\u0027: context.user_id})"},{"line_number":1087,"context_line":"                img \u003d instance.image_ref"},{"line_number":1088,"context_line":"                if not img:"},{"line_number":1089,"context_line":"                    properties \u003d bdms.root_metadata("}],"source_content_type":"text/x-python","patch_set":8,"id":"9af37de9_b0c46492","line":1086,"in_reply_to":"9af37de9_d88cc137","updated":"2015-05-11 14:58:16.000000000","message":"Done","commit_id":"4b132a7a781ba1f5167b5a75296ecdc6c0909bc9"}],"nova/tests/unit/api/openstack/compute/plugins/v3/test_servers.py":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"73fd9c14e5fc2fc92bee06e482e247cd89cbaa61","unresolved":false,"context_lines":[{"line_number":3687,"context_line":"        rule_name \u003d \"os_compute_api:servers:create_image:allow_volume_backed\""},{"line_number":3688,"context_line":"        rules \u003d {"},{"line_number":3689,"context_line":"                rule_name: \"project:non_fake\","},{"line_number":3690,"context_line":"                \"os_compute_api:servers:create_image\": \"\","},{"line_number":3691,"context_line":"        }"},{"line_number":3692,"context_line":"        body \u003d {"},{"line_number":3693,"context_line":"            \u0027createImage\u0027: {"}],"source_content_type":"text/x-python","patch_set":9,"id":"5ad58531_47beb200","line":3690,"range":{"start_line":3690,"start_character":40,"end_line":3690,"end_character":51},"updated":"2015-05-11 22:11:22.000000000","message":"This is testing something different than what you want to test, right?  It\u0027s not checking the \u0027allow_volume_backed\u0027 rule.","commit_id":"6146d59f4b568d2f279c4868ec737f5cccadd0fa"},{"author":{"_account_id":1882,"name":"dave-mcnally","email":"dave.mcnally@hpe.com","username":"dave-mcnally"},"change_message_id":"6ca675fff1b493bec4d16ba27edfe029ded39db6","unresolved":false,"context_lines":[{"line_number":3687,"context_line":"        rule_name \u003d \"os_compute_api:servers:create_image:allow_volume_backed\""},{"line_number":3688,"context_line":"        rules \u003d {"},{"line_number":3689,"context_line":"                rule_name: \"project:non_fake\","},{"line_number":3690,"context_line":"                \"os_compute_api:servers:create_image\": \"\","},{"line_number":3691,"context_line":"        }"},{"line_number":3692,"context_line":"        body \u003d {"},{"line_number":3693,"context_line":"            \u0027createImage\u0027: {"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_24260bbb","line":3690,"in_reply_to":"5ad58531_47beb200","updated":"2015-05-12 09:26:14.000000000","message":"No this checks the right rule. \n\nThe line:\nrule_name: \"project:non_fake\",\nsets allow_volume_backed to only allow for the project \u0027non_fake\u0027, as this project doesn\u0027t exist the test will raise a PolicyNotAuthorized. A rule for create_image is included as that policy is checked prior to the check if the image is snapshot backed and must pass so we can get to the part of the function we wish to test.","commit_id":"6146d59f4b568d2f279c4868ec737f5cccadd0fa"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"3bbdc2ca07947fddf9ae896464fa05325ea17135","unresolved":false,"context_lines":[{"line_number":3687,"context_line":"        rule_name \u003d \"os_compute_api:servers:create_image:allow_volume_backed\""},{"line_number":3688,"context_line":"        rules \u003d {"},{"line_number":3689,"context_line":"                rule_name: \"project:non_fake\","},{"line_number":3690,"context_line":"                \"os_compute_api:servers:create_image\": \"\","},{"line_number":3691,"context_line":"        }"},{"line_number":3692,"context_line":"        body \u003d {"},{"line_number":3693,"context_line":"            \u0027createImage\u0027: {"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_2da147aa","line":3690,"in_reply_to":"9a0c5dc1_24260bbb","updated":"2015-05-12 12:22:54.000000000","message":"My reading of _common_policy_check was that rule_name was only used for an error message.  So the only rule you\u0027ve actually set is the create_image one.  I\u0027m assuming the policy is failing because allow_volume_backed is not set and therefore uses a default fail.  I may be missing something with what _common_policy_check is doing.","commit_id":"6146d59f4b568d2f279c4868ec737f5cccadd0fa"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"d54b8856f37cfa41d97b1ca73bb9734f9251d21d","unresolved":false,"context_lines":[{"line_number":3687,"context_line":"        rule_name \u003d \"os_compute_api:servers:create_image:allow_volume_backed\""},{"line_number":3688,"context_line":"        rules \u003d {"},{"line_number":3689,"context_line":"                rule_name: \"project:non_fake\","},{"line_number":3690,"context_line":"                \"os_compute_api:servers:create_image\": \"\","},{"line_number":3691,"context_line":"        }"},{"line_number":3692,"context_line":"        body \u003d {"},{"line_number":3693,"context_line":"            \u0027createImage\u0027: {"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_22b59bed","line":3690,"in_reply_to":"9a0c5dc1_2da147aa","updated":"2015-05-13 14:54:58.000000000","message":"@alaski My reading is that rule_name will get evaluated when the \"rules\" dict is constructed, producing a structure like:\n\n    {\n        \"os_compute_api:servers:create_image:allow_volume_backed\": \"project:non_fake\",\n        \"os_compute_api:servers:create_image\": \"\"\n    }\n\nThat then gets passed into _common_policy_check (along with rule_name), which passes it to self.policy.set_rules.\n\nSo by my reading the \u0027allow_volume_backed\u0027 rule is being tested correctly?","commit_id":"6146d59f4b568d2f279c4868ec737f5cccadd0fa"},{"author":{"_account_id":1882,"name":"dave-mcnally","email":"dave.mcnally@hpe.com","username":"dave-mcnally"},"change_message_id":"e887000fb064ac9cf4d1fc2a8060a9d9580f6156","unresolved":false,"context_lines":[{"line_number":3687,"context_line":"        rule_name \u003d \"os_compute_api:servers:create_image:allow_volume_backed\""},{"line_number":3688,"context_line":"        rules \u003d {"},{"line_number":3689,"context_line":"                rule_name: \"project:non_fake\","},{"line_number":3690,"context_line":"                \"os_compute_api:servers:create_image\": \"\","},{"line_number":3691,"context_line":"        }"},{"line_number":3692,"context_line":"        body \u003d {"},{"line_number":3693,"context_line":"            \u0027createImage\u0027: {"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_a86d2534","line":3690,"in_reply_to":"9a0c5dc1_2da147aa","updated":"2015-05-12 12:46:30.000000000","message":"Common policy takes a rule name and a set of rules, it sets the rules for the scope of the test and verifies that a PolicyNotAuthorized exception is raised and verifies the expected rule is named in the exception.\n\nHere The rule name the test is expecting in the exception is:\nrule_name \u003d \"os_compute_api:servers:create_image:allow_volume_backed\"\n\nThe two rules which are set are:\nrules \u003d {\t\n                rule_name: \"project:non_fake\",\n                \"os_compute_api:servers:create_image\": \"\",\n            }\n\n\nrule_name: \"project:non_fake\" is setting the rule for allow_volume_backed","commit_id":"6146d59f4b568d2f279c4868ec737f5cccadd0fa"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a6f1e07d2fad3f435ef8b61ba1103e88a1d6f847","unresolved":false,"context_lines":[{"line_number":3687,"context_line":"        rule_name \u003d \"os_compute_api:servers:create_image:allow_volume_backed\""},{"line_number":3688,"context_line":"        rules \u003d {"},{"line_number":3689,"context_line":"                rule_name: \"project:non_fake\","},{"line_number":3690,"context_line":"                \"os_compute_api:servers:create_image\": \"\","},{"line_number":3691,"context_line":"        }"},{"line_number":3692,"context_line":"        body \u003d {"},{"line_number":3693,"context_line":"            \u0027createImage\u0027: {"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_4e5f9ee5","line":3690,"in_reply_to":"9a0c5dc1_a86d2534","updated":"2015-05-13 13:37:43.000000000","message":"@Andrew, actually the assert for error message in _common_policy_check is ensure we failed on the expected rule","commit_id":"6146d59f4b568d2f279c4868ec737f5cccadd0fa"}],"nova/tests/unit/api/openstack/compute/test_server_actions.py":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"35e84c5d6d03d02e679e0b9eb3a05c0653d840eb","unresolved":false,"context_lines":[{"line_number":1112,"context_line":"            },"},{"line_number":1113,"context_line":"        }"},{"line_number":1114,"context_line":"        rules \u003d {"},{"line_number":1115,"context_line":"            \"compute:allow_volume_backed_snapshot\": \"project_id:fake\""},{"line_number":1116,"context_line":"        }"},{"line_number":1117,"context_line":"        policy.set_rules(rules)"},{"line_number":1118,"context_line":"        with mock.patch.object(compute_api.API, \u0027is_volume_backed_instance\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aca2d91_aab62e3b","line":1115,"updated":"2015-05-06 21:37:53.000000000","message":"The more likely scenario is that this will be a role based rule, not project_id.  Having a test to ensure that works would be good.","commit_id":"6dae0949d76dbfc2993d3667cd44546f8fe59f39"},{"author":{"_account_id":1882,"name":"dave-mcnally","email":"dave.mcnally@hpe.com","username":"dave-mcnally"},"change_message_id":"a94962867316681e7525d10515d9d2ff1de042d9","unresolved":false,"context_lines":[{"line_number":1112,"context_line":"            },"},{"line_number":1113,"context_line":"        }"},{"line_number":1114,"context_line":"        rules \u003d {"},{"line_number":1115,"context_line":"            \"compute:allow_volume_backed_snapshot\": \"project_id:fake\""},{"line_number":1116,"context_line":"        }"},{"line_number":1117,"context_line":"        policy.set_rules(rules)"},{"line_number":1118,"context_line":"        with mock.patch.object(compute_api.API, \u0027is_volume_backed_instance\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aca2d91_7a19e878","line":1115,"in_reply_to":"1aca2d91_aab62e3b","updated":"2015-05-07 13:36:40.000000000","message":"Done","commit_id":"6dae0949d76dbfc2993d3667cd44546f8fe59f39"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b07e52a0c22a774c66db959a2bc5c390772b32fb","unresolved":false,"context_lines":[{"line_number":1132,"context_line":"            },"},{"line_number":1133,"context_line":"        }"},{"line_number":1134,"context_line":"        rules \u003d {"},{"line_number":1135,"context_line":"                \"compute:snapshot_volume_backed\":"},{"line_number":1136,"context_line":"                common_policy.parse_rule(\"project_id:no_id\"),"},{"line_number":1137,"context_line":"                \"os_compute_api:servers:create_image:allow_volume_backed\":"},{"line_number":1138,"context_line":"                common_policy.parse_rule(\"project_id:no_id\"),"}],"source_content_type":"text/x-python","patch_set":8,"id":"9af37de9_98863912","line":1135,"updated":"2015-05-10 10:20:59.000000000","message":"This mixed v2 and v2.1 policy test in the single test. How about we separated them? For v2.1 policy, there is test class for it https://github.com/openstack/nova/blob/master/nova/tests/unit/api/openstack/compute/plugins/v3/test_servers.py#L3558  How about move the v2.1 unittest to in. The v2 unittest can keep in this file, under the class ServerActionsControllerTestV2.","commit_id":"4b132a7a781ba1f5167b5a75296ecdc6c0909bc9"},{"author":{"_account_id":1882,"name":"dave-mcnally","email":"dave.mcnally@hpe.com","username":"dave-mcnally"},"change_message_id":"add9a0e348309cdad2cb5c5dc5c41c1939a3c19d","unresolved":false,"context_lines":[{"line_number":1132,"context_line":"            },"},{"line_number":1133,"context_line":"        }"},{"line_number":1134,"context_line":"        rules \u003d {"},{"line_number":1135,"context_line":"                \"compute:snapshot_volume_backed\":"},{"line_number":1136,"context_line":"                common_policy.parse_rule(\"project_id:no_id\"),"},{"line_number":1137,"context_line":"                \"os_compute_api:servers:create_image:allow_volume_backed\":"},{"line_number":1138,"context_line":"                common_policy.parse_rule(\"project_id:no_id\"),"}],"source_content_type":"text/x-python","patch_set":8,"id":"9af37de9_542be3eb","line":1135,"in_reply_to":"9af37de9_98863912","updated":"2015-05-11 14:58:16.000000000","message":"Done","commit_id":"4b132a7a781ba1f5167b5a75296ecdc6c0909bc9"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"d54b8856f37cfa41d97b1ca73bb9734f9251d21d","unresolved":false,"context_lines":[{"line_number":1323,"context_line":"        }"},{"line_number":1324,"context_line":"        rule_name \u003d \"compute:snapshot_volume_backed\""},{"line_number":1325,"context_line":"        rules \u003d {"},{"line_number":1326,"context_line":"                rule_name:"},{"line_number":1327,"context_line":"                common_policy.parse_rule(\"project_id:no_id\"),"},{"line_number":1328,"context_line":"                \"os_compute_api:servers:create_image\":"},{"line_number":1329,"context_line":"                common_policy.parse_rule(\"\"),"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_e27d431d","line":1326,"updated":"2015-05-13 14:54:58.000000000","message":"@alaski this is where \"compute:snapshot_volume_backed\" is set.","commit_id":"6146d59f4b568d2f279c4868ec737f5cccadd0fa"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"99bc7d7b9ce7d936aa0c7305845944882bc6348a","unresolved":false,"context_lines":[{"line_number":1323,"context_line":"        }"},{"line_number":1324,"context_line":"        rule_name \u003d \"compute:snapshot_volume_backed\""},{"line_number":1325,"context_line":"        rules \u003d {"},{"line_number":1326,"context_line":"                rule_name:"},{"line_number":1327,"context_line":"                common_policy.parse_rule(\"project_id:no_id\"),"},{"line_number":1328,"context_line":"                \"os_compute_api:servers:create_image\":"},{"line_number":1329,"context_line":"                common_policy.parse_rule(\"\"),"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a016987_69f16bcd","line":1326,"in_reply_to":"9a0c5dc1_e27d431d","updated":"2015-05-14 13:50:32.000000000","message":"I\u0027m blind apparently.  I was completely skipping over this.  Thanks for being patient.","commit_id":"6146d59f4b568d2f279c4868ec737f5cccadd0fa"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a6f1e07d2fad3f435ef8b61ba1103e88a1d6f847","unresolved":false,"context_lines":[{"line_number":1325,"context_line":"        rules \u003d {"},{"line_number":1326,"context_line":"                rule_name:"},{"line_number":1327,"context_line":"                common_policy.parse_rule(\"project_id:no_id\"),"},{"line_number":1328,"context_line":"                \"os_compute_api:servers:create_image\":"},{"line_number":1329,"context_line":"                common_policy.parse_rule(\"\"),"},{"line_number":1330,"context_line":"                \"compute:get\":"},{"line_number":1331,"context_line":"                common_policy.parse_rule(\"\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_4e067ecf","line":1328,"updated":"2015-05-13 13:37:43.000000000","message":"v2 API haven\u0027t this rule.","commit_id":"6146d59f4b568d2f279c4868ec737f5cccadd0fa"},{"author":{"_account_id":1882,"name":"dave-mcnally","email":"dave.mcnally@hpe.com","username":"dave-mcnally"},"change_message_id":"bef46d2c74b9873ecdfa0b87996227d8ba8cf5de","unresolved":false,"context_lines":[{"line_number":1325,"context_line":"        rules \u003d {"},{"line_number":1326,"context_line":"                rule_name:"},{"line_number":1327,"context_line":"                common_policy.parse_rule(\"project_id:no_id\"),"},{"line_number":1328,"context_line":"                \"os_compute_api:servers:create_image\":"},{"line_number":1329,"context_line":"                common_policy.parse_rule(\"\"),"},{"line_number":1330,"context_line":"                \"compute:get\":"},{"line_number":1331,"context_line":"                common_policy.parse_rule(\"\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_81b1e491","line":1328,"in_reply_to":"9a0c5dc1_4e067ecf","updated":"2015-05-13 15:35:38.000000000","message":"Done","commit_id":"6146d59f4b568d2f279c4868ec737f5cccadd0fa"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"73fd9c14e5fc2fc92bee06e482e247cd89cbaa61","unresolved":false,"context_lines":[{"line_number":1328,"context_line":"                \"os_compute_api:servers:create_image\":"},{"line_number":1329,"context_line":"                common_policy.parse_rule(\"\"),"},{"line_number":1330,"context_line":"                \"compute:get\":"},{"line_number":1331,"context_line":"                common_policy.parse_rule(\"\")"},{"line_number":1332,"context_line":"        }"},{"line_number":1333,"context_line":"        policy.set_rules(rules)"},{"line_number":1334,"context_line":"        with mock.patch.object(compute_api.API, \u0027is_volume_backed_instance\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5ad58531_475592c4","line":1331,"updated":"2015-05-11 22:11:22.000000000","message":"Same here, you\u0027re not actually setting the snapshot_volume_backed rule to anything.","commit_id":"6146d59f4b568d2f279c4868ec737f5cccadd0fa"},{"author":{"_account_id":1882,"name":"dave-mcnally","email":"dave.mcnally@hpe.com","username":"dave-mcnally"},"change_message_id":"6ca675fff1b493bec4d16ba27edfe029ded39db6","unresolved":false,"context_lines":[{"line_number":1328,"context_line":"                \"os_compute_api:servers:create_image\":"},{"line_number":1329,"context_line":"                common_policy.parse_rule(\"\"),"},{"line_number":1330,"context_line":"                \"compute:get\":"},{"line_number":1331,"context_line":"                common_policy.parse_rule(\"\")"},{"line_number":1332,"context_line":"        }"},{"line_number":1333,"context_line":"        policy.set_rules(rules)"},{"line_number":1334,"context_line":"        with mock.patch.object(compute_api.API, \u0027is_volume_backed_instance\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_44b69f3e","line":1331,"in_reply_to":"5ad58531_475592c4","updated":"2015-05-12 09:26:14.000000000","message":"See previous comment.","commit_id":"6146d59f4b568d2f279c4868ec737f5cccadd0fa"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a6f1e07d2fad3f435ef8b61ba1103e88a1d6f847","unresolved":false,"context_lines":[{"line_number":1353,"context_line":"        rules \u003d {"},{"line_number":1354,"context_line":"                rule_name:"},{"line_number":1355,"context_line":"                common_policy.parse_rule(\"role:no_role\"),"},{"line_number":1356,"context_line":"                \"os_compute_api:servers:create_image\":"},{"line_number":1357,"context_line":"                common_policy.parse_rule(\"\"),"},{"line_number":1358,"context_line":"                \"compute:get\":"},{"line_number":1359,"context_line":"                common_policy.parse_rule(\"\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_2e090ade","line":1356,"updated":"2015-05-13 13:37:43.000000000","message":"ditto","commit_id":"6146d59f4b568d2f279c4868ec737f5cccadd0fa"},{"author":{"_account_id":1882,"name":"dave-mcnally","email":"dave.mcnally@hpe.com","username":"dave-mcnally"},"change_message_id":"bef46d2c74b9873ecdfa0b87996227d8ba8cf5de","unresolved":false,"context_lines":[{"line_number":1353,"context_line":"        rules \u003d {"},{"line_number":1354,"context_line":"                rule_name:"},{"line_number":1355,"context_line":"                common_policy.parse_rule(\"role:no_role\"),"},{"line_number":1356,"context_line":"                \"os_compute_api:servers:create_image\":"},{"line_number":1357,"context_line":"                common_policy.parse_rule(\"\"),"},{"line_number":1358,"context_line":"                \"compute:get\":"},{"line_number":1359,"context_line":"                common_policy.parse_rule(\"\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_41abec1d","line":1356,"in_reply_to":"9a0c5dc1_2e090ade","updated":"2015-05-13 15:35:38.000000000","message":"Done","commit_id":"6146d59f4b568d2f279c4868ec737f5cccadd0fa"}]}
