)]}'
{"etc/heat/policy.json":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"99bd8e293e512f0b811875d313128285ff809c45","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    \"software_configs:create\": \"rule:deny_stack_user\","},{"line_number":53,"context_line":"    \"software_configs:show\": \"rule:deny_stack_user\","},{"line_number":54,"context_line":"    \"software_configs:delete\": \"rule:deny_stack_user\","},{"line_number":55,"context_line":"    \"software_deployments:index\": \"rule:deny_stack_user\","},{"line_number":56,"context_line":"    \"software_deployments:create\": \"rule:deny_stack_user\","},{"line_number":57,"context_line":"    \"software_deployments:show\": \"rule:deny_stack_user\","},{"line_number":58,"context_line":"    \"software_deployments:update\": \"rule:deny_stack_user\","}],"source_content_type":"application/json","patch_set":9,"id":"AAAAUH%2F%2BAUI%3D","line":55,"updated":"2014-02-03 01:58:20.000000000","message":"Could you replace this rule with:\n\n\"software_deployments:index\": \"\"\n\na heat_stack_user ends up calling this indirectly when the server resource metadata is polled, and actually this call may eventually be made directly from servers, like resource:metadata is currently.","commit_id":"a667b5966a149071fc990c02cbe4eee27d3bc214"},{"author":{"_account_id":7761,"name":"Jun Jie Nan","email":"nanjunjie@gmail.com","username":"nanjj"},"change_message_id":"96c2f121eef01e6cc892ffd1d5850ef112caec5d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    \"software_configs:create\": \"rule:deny_stack_user\","},{"line_number":53,"context_line":"    \"software_configs:show\": \"rule:deny_stack_user\","},{"line_number":54,"context_line":"    \"software_configs:delete\": \"rule:deny_stack_user\","},{"line_number":55,"context_line":"    \"software_deployments:index\": \"rule:deny_stack_user\","},{"line_number":56,"context_line":"    \"software_deployments:create\": \"rule:deny_stack_user\","},{"line_number":57,"context_line":"    \"software_deployments:show\": \"rule:deny_stack_user\","},{"line_number":58,"context_line":"    \"software_deployments:update\": \"rule:deny_stack_user\","}],"source_content_type":"application/json","patch_set":9,"id":"AAAAUH%2F9rc4%3D","line":55,"in_reply_to":"AAAAUH%2F%2BAUI%3D","updated":"2014-02-05 02:33:39.000000000","message":"Done","commit_id":"a667b5966a149071fc990c02cbe4eee27d3bc214"}],"heat/api/openstack/v1/software_configs.py":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"134f5040dba75a336cd8b58f30769db23285368d","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    def default(self, req, **args):"},{"line_number":36,"context_line":"        raise exc.HTTPNotFound()"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @util.policy_enforce"},{"line_number":39,"context_line":"    def index(self, req):"},{"line_number":40,"context_line":"        \"\"\""},{"line_number":41,"context_line":"        List software configs."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FDFo%3D","line":38,"updated":"2014-01-17 22:59:28.000000000","message":"Any util.policy_enforce annotated method will need a policy in etc/policy.json","commit_id":"95939f00dd17de21fb282a9b2296b053184c82b6"},{"author":{"_account_id":7761,"name":"Jun Jie Nan","email":"nanjunjie@gmail.com","username":"nanjj"},"change_message_id":"253303c60eb1919c49007e302c68e4e307be4ede","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    def default(self, req, **args):"},{"line_number":36,"context_line":"        raise exc.HTTPNotFound()"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @util.policy_enforce"},{"line_number":39,"context_line":"    def index(self, req):"},{"line_number":40,"context_line":"        \"\"\""},{"line_number":41,"context_line":"        List software configs."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FCWM%3D","line":38,"in_reply_to":"AAAAUH%2F%2FDFo%3D","updated":"2014-01-18 05:03:58.000000000","message":"Done","commit_id":"95939f00dd17de21fb282a9b2296b053184c82b6"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"accf55144c6e81d49e0f3835609d5995d4f4cd4b","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        \"\"\""},{"line_number":41,"context_line":"        List software configs."},{"line_number":42,"context_line":"        \"\"\""},{"line_number":43,"context_line":"        return {\u0027software_configs\u0027: []}"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    @util.policy_enforce"},{"line_number":46,"context_line":"    def show(self, req, config_id):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUX%2F%2F1fc%3D","line":43,"updated":"2014-02-10 14:14:31.000000000","message":"That doesn\u0027t sound like the real implementation? Should you remove it for now?","commit_id":"bc81157720b25c168d3b56e2e0316321e0e8b312"},{"author":{"_account_id":7761,"name":"Jun Jie Nan","email":"nanjunjie@gmail.com","username":"nanjj"},"change_message_id":"14b06997ac8910a47aa8245600ac6de7820761e3","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        \"\"\""},{"line_number":41,"context_line":"        List software configs."},{"line_number":42,"context_line":"        \"\"\""},{"line_number":43,"context_line":"        return {\u0027software_configs\u0027: []}"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    @util.policy_enforce"},{"line_number":46,"context_line":"    def show(self, req, config_id):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUX%2F%2FuIY%3D","line":43,"in_reply_to":"AAAAUX%2F%2F1fc%3D","updated":"2014-02-11 08:39:43.000000000","message":"Done","commit_id":"bc81157720b25c168d3b56e2e0316321e0e8b312"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"accf55144c6e81d49e0f3835609d5995d4f4cd4b","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    \"\"\""},{"line_number":86,"context_line":"    Software configs resource factory method."},{"line_number":87,"context_line":"    \"\"\""},{"line_number":88,"context_line":"    # TODO(zaneb) handle XML based on Content-type/Accepts"},{"line_number":89,"context_line":"    deserializer \u003d wsgi.JSONRequestDeserializer()"},{"line_number":90,"context_line":"    serializer \u003d wsgi.JSONResponseSerializer()"},{"line_number":91,"context_line":"    return wsgi.Resource("}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUX%2F%2F1e0%3D","line":88,"updated":"2014-02-10 14:14:31.000000000","message":"We should remove that TODO now I think.","commit_id":"bc81157720b25c168d3b56e2e0316321e0e8b312"},{"author":{"_account_id":7761,"name":"Jun Jie Nan","email":"nanjunjie@gmail.com","username":"nanjj"},"change_message_id":"14b06997ac8910a47aa8245600ac6de7820761e3","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    \"\"\""},{"line_number":86,"context_line":"    Software configs resource factory method."},{"line_number":87,"context_line":"    \"\"\""},{"line_number":88,"context_line":"    # TODO(zaneb) handle XML based on Content-type/Accepts"},{"line_number":89,"context_line":"    deserializer \u003d wsgi.JSONRequestDeserializer()"},{"line_number":90,"context_line":"    serializer \u003d wsgi.JSONResponseSerializer()"},{"line_number":91,"context_line":"    return wsgi.Resource("}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUX%2F%2FuIQ%3D","line":88,"in_reply_to":"AAAAUX%2F%2F1e0%3D","updated":"2014-02-11 08:39:43.000000000","message":"Done","commit_id":"bc81157720b25c168d3b56e2e0316321e0e8b312"}],"heat/api/openstack/v1/software_deployments.py":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"4b006df31fce60827fcd8bc22012dd18ca53cd1e","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        return {\u0027software_deployment\u0027: sd}"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    @util.policy_enforce"},{"line_number":78,"context_line":"    def update(self, req, deployment_id, body):"},{"line_number":79,"context_line":"        \"\"\""},{"line_number":80,"context_line":"        Update an existing software deployment"},{"line_number":81,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FQCc%3D","line":78,"updated":"2014-01-15 22:00:15.000000000","message":"There is no coverage on this method","commit_id":"efcb9ed3ddb503d53a646d5614f34aaa07cfdcb8"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"accf55144c6e81d49e0f3835609d5995d4f4cd4b","unresolved":false,"context_lines":[{"line_number":109,"context_line":"    \"\"\""},{"line_number":110,"context_line":"    Software deployments resource factory method."},{"line_number":111,"context_line":"    \"\"\""},{"line_number":112,"context_line":"    # TODO(zaneb) handle XML based on Content-type/Accepts"},{"line_number":113,"context_line":"    deserializer \u003d wsgi.JSONRequestDeserializer()"},{"line_number":114,"context_line":"    serializer \u003d wsgi.JSONResponseSerializer()"},{"line_number":115,"context_line":"    return wsgi.Resource("}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUX%2F%2F1eg%3D","line":112,"updated":"2014-02-10 14:14:31.000000000","message":"Please remove it here as well.","commit_id":"bc81157720b25c168d3b56e2e0316321e0e8b312"},{"author":{"_account_id":7761,"name":"Jun Jie Nan","email":"nanjunjie@gmail.com","username":"nanjj"},"change_message_id":"14b06997ac8910a47aa8245600ac6de7820761e3","unresolved":false,"context_lines":[{"line_number":109,"context_line":"    \"\"\""},{"line_number":110,"context_line":"    Software deployments resource factory method."},{"line_number":111,"context_line":"    \"\"\""},{"line_number":112,"context_line":"    # TODO(zaneb) handle XML based on Content-type/Accepts"},{"line_number":113,"context_line":"    deserializer \u003d wsgi.JSONRequestDeserializer()"},{"line_number":114,"context_line":"    serializer \u003d wsgi.JSONResponseSerializer()"},{"line_number":115,"context_line":"    return wsgi.Resource("}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUX%2F%2FuIc%3D","line":112,"in_reply_to":"AAAAUX%2F%2F1eg%3D","updated":"2014-02-11 08:39:43.000000000","message":"Done","commit_id":"bc81157720b25c168d3b56e2e0316321e0e8b312"}],"heat/tests/test_api_openstack_v1.py":[{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"accf55144c6e81d49e0f3835609d5995d4f4cd4b","unresolved":false,"context_lines":[{"line_number":3254,"context_line":"            self.assertRaises("},{"line_number":3255,"context_line":"                webob.exc.HTTPBadRequest, self.controller.delete,"},{"line_number":3256,"context_line":"                req, config_id\u003dconfig_id, tenant_id\u003dself.tenant)"},{"line_number":3257,"context_line":""},{"line_number":3258,"context_line":""},{"line_number":3259,"context_line":"class SoftwareDeploymentControllerTest(ControllerTest, HeatTestCase):"},{"line_number":3260,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUX%2F%2F1dw%3D","line":3257,"updated":"2014-02-10 14:14:31.000000000","message":"You should split the test in 2 when it tests 2 different code path.","commit_id":"bc81157720b25c168d3b56e2e0316321e0e8b312"},{"author":{"_account_id":7761,"name":"Jun Jie Nan","email":"nanjunjie@gmail.com","username":"nanjj"},"change_message_id":"14b06997ac8910a47aa8245600ac6de7820761e3","unresolved":false,"context_lines":[{"line_number":3254,"context_line":"            self.assertRaises("},{"line_number":3255,"context_line":"                webob.exc.HTTPBadRequest, self.controller.delete,"},{"line_number":3256,"context_line":"                req, config_id\u003dconfig_id, tenant_id\u003dself.tenant)"},{"line_number":3257,"context_line":""},{"line_number":3258,"context_line":""},{"line_number":3259,"context_line":"class SoftwareDeploymentControllerTest(ControllerTest, HeatTestCase):"},{"line_number":3260,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUX%2F%2FuIs%3D","line":3257,"in_reply_to":"AAAAUX%2F%2F1dw%3D","updated":"2014-02-11 08:39:43.000000000","message":"Done","commit_id":"bc81157720b25c168d3b56e2e0316321e0e8b312"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"accf55144c6e81d49e0f3835609d5995d4f4cd4b","unresolved":false,"context_lines":[{"line_number":3402,"context_line":"                return_value\u003dreturn_value):"},{"line_number":3403,"context_line":"            self.assertRaises("},{"line_number":3404,"context_line":"                webob.exc.HTTPBadRequest, self.controller.delete,"},{"line_number":3405,"context_line":"                req, deployment_id\u003ddeployment_id, tenant_id\u003dself.tenant)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUX%2F%2F1ds%3D","line":3405,"updated":"2014-02-10 14:14:31.000000000","message":"Same as above.","commit_id":"bc81157720b25c168d3b56e2e0316321e0e8b312"},{"author":{"_account_id":7761,"name":"Jun Jie Nan","email":"nanjunjie@gmail.com","username":"nanjj"},"change_message_id":"14b06997ac8910a47aa8245600ac6de7820761e3","unresolved":false,"context_lines":[{"line_number":3402,"context_line":"                return_value\u003dreturn_value):"},{"line_number":3403,"context_line":"            self.assertRaises("},{"line_number":3404,"context_line":"                webob.exc.HTTPBadRequest, self.controller.delete,"},{"line_number":3405,"context_line":"                req, deployment_id\u003ddeployment_id, tenant_id\u003dself.tenant)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUX%2F%2FuIo%3D","line":3405,"in_reply_to":"AAAAUX%2F%2F1ds%3D","updated":"2014-02-11 08:39:43.000000000","message":"Done","commit_id":"bc81157720b25c168d3b56e2e0316321e0e8b312"}]}
