)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"6fdcee7d81e7422d3fbfabfdcc080e66762eabf8","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix model query for non-admin flavor lookups"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This makes flavor lookups respect the \"read_deleted\" argument even"},{"line_number":10,"context_line":"in non-admin contexts.  Mainly by removing it as a constraint on"},{"line_number":11,"context_line":"the relationship between the tables."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This should allow non-admin project members to view details on"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba15a1d1_4cb0f18b","line":10,"range":{"start_line":10,"start_character":24,"end_line":10,"end_character":30},"updated":"2015-09-21 16:03:35.000000000","message":"nit: Entirely, in fact. Better to delete this word.","commit_id":"8a40ce849285a14db7711060a5e43c8de16b8a20"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"d768042529045499a679690fe474087fb0b8df88","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix model query for non-admin flavor lookups"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This makes flavor lookups respect the \"read_deleted\" argument even"},{"line_number":10,"context_line":"in non-admin contexts.  Mainly by removing it as a constraint on"},{"line_number":11,"context_line":"the relationship between the tables."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This should allow non-admin project members to view details on"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba15a1d1_b520da4a","line":10,"in_reply_to":"ba15a1d1_4cb0f18b","updated":"2015-09-21 23:28:46.000000000","message":"Done","commit_id":"8a40ce849285a14db7711060a5e43c8de16b8a20"}],"nova/api/openstack/compute/legacy_v2/servers.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"c5ec11b7d00f30bceae1f5b86cf2e9dc1f1f171d","unresolved":false,"context_lines":[{"line_number":612,"context_line":"            inst_type \u003d flavors.get_flavor_by_flavor_id(flavor_id,"},{"line_number":613,"context_line":"                                                        ctxt\u003dcontext,"},{"line_number":614,"context_line":"                                                        read_deleted\u003d\"no\")"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"            (instances, resv_id) \u003d self.compute_api.create(context,"},{"line_number":617,"context_line":"                        inst_type,"},{"line_number":618,"context_line":"                        image_uuid,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a29b11f_f4410264","line":615,"updated":"2015-10-21 20:49:08.000000000","message":"not related change","commit_id":"aab415dc2f92fa92a77a10e5acdae70cdb33a548"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"5b72c310169eb6f6ef07759a9dcf351aaaa631e6","unresolved":false,"context_lines":[{"line_number":612,"context_line":"            inst_type \u003d flavors.get_flavor_by_flavor_id(flavor_id,"},{"line_number":613,"context_line":"                                                        ctxt\u003dcontext,"},{"line_number":614,"context_line":"                                                        read_deleted\u003d\"no\")"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"            (instances, resv_id) \u003d self.compute_api.create(context,"},{"line_number":617,"context_line":"                        inst_type,"},{"line_number":618,"context_line":"                        image_uuid,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a29b11f_cfcd5386","line":615,"in_reply_to":"3a29b11f_f4410264","updated":"2015-10-21 20:59:26.000000000","message":"True, but this is just plain awful and should be fixed.  A separate bug for that is excessive.","commit_id":"aab415dc2f92fa92a77a10e5acdae70cdb33a548"}],"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"6fdcee7d81e7422d3fbfabfdcc080e66762eabf8","unresolved":false,"context_lines":[{"line_number":589,"context_line":"            # proper access don\u0027t get found"},{"line_number":590,"context_line":"            if (not inst_type.is_public"},{"line_number":591,"context_line":"                and not context.is_admin"},{"line_number":592,"context_line":"                and context.project_id not in inst_type.projects):"},{"line_number":593,"context_line":"                raise exception.FlavorNotFound"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"            (instances, resv_id) \u003d self.compute_api.create(context,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_0c5519c5","line":592,"updated":"2015-09-21 16:03:35.000000000","message":"nit: easier to read after De Morgan\u0027s","commit_id":"8a40ce849285a14db7711060a5e43c8de16b8a20"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"d768042529045499a679690fe474087fb0b8df88","unresolved":false,"context_lines":[{"line_number":589,"context_line":"            # proper access don\u0027t get found"},{"line_number":590,"context_line":"            if (not inst_type.is_public"},{"line_number":591,"context_line":"                and not context.is_admin"},{"line_number":592,"context_line":"                and context.project_id not in inst_type.projects):"},{"line_number":593,"context_line":"                raise exception.FlavorNotFound"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"            (instances, resv_id) \u003d self.compute_api.create(context,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_751a4219","line":592,"in_reply_to":"ba15a1d1_0c5519c5","updated":"2015-09-21 23:28:46.000000000","message":"Yes, yes it does.  Done.","commit_id":"8a40ce849285a14db7711060a5e43c8de16b8a20"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"6fdcee7d81e7422d3fbfabfdcc080e66762eabf8","unresolved":false,"context_lines":[{"line_number":590,"context_line":"            if (not inst_type.is_public"},{"line_number":591,"context_line":"                and not context.is_admin"},{"line_number":592,"context_line":"                and context.project_id not in inst_type.projects):"},{"line_number":593,"context_line":"                raise exception.FlavorNotFound"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"            (instances, resv_id) \u003d self.compute_api.create(context,"},{"line_number":596,"context_line":"                            inst_type,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_ec1c6579","line":593,"updated":"2015-09-21 16:03:35.000000000","message":"I feel like a heel for asking you to unit test such a huge method for such a small change, but unit tests are generally a requirement for all patches.","commit_id":"8a40ce849285a14db7711060a5e43c8de16b8a20"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"81ea12f0d38d51f482614309d99b9bfccc6a2c7f","unresolved":false,"context_lines":[{"line_number":590,"context_line":"            if (not inst_type.is_public"},{"line_number":591,"context_line":"                and not context.is_admin"},{"line_number":592,"context_line":"                and context.project_id not in inst_type.projects):"},{"line_number":593,"context_line":"                raise exception.FlavorNotFound"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"            (instances, resv_id) \u003d self.compute_api.create(context,"},{"line_number":596,"context_line":"                            inst_type,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_27ad7288","line":593,"in_reply_to":"ba15a1d1_95ecb6f4","updated":"2015-09-22 10:02:18.000000000","message":"There seem to be some create tests in nova/tests/unit/api/openstack/compute/{test_serversV21.py,legacy_v2/test_servers.py}","commit_id":"8a40ce849285a14db7711060a5e43c8de16b8a20"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"d768042529045499a679690fe474087fb0b8df88","unresolved":false,"context_lines":[{"line_number":590,"context_line":"            if (not inst_type.is_public"},{"line_number":591,"context_line":"                and not context.is_admin"},{"line_number":592,"context_line":"                and context.project_id not in inst_type.projects):"},{"line_number":593,"context_line":"                raise exception.FlavorNotFound"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"            (instances, resv_id) \u003d self.compute_api.create(context,"},{"line_number":596,"context_line":"                            inst_type,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_95ecb6f4","line":593,"in_reply_to":"ba15a1d1_ec1c6579","updated":"2015-09-21 23:28:46.000000000","message":"If you have any pointers on where I would put them, that would be handy; I left that as an open question on this review.","commit_id":"8a40ce849285a14db7711060a5e43c8de16b8a20"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"316dc75971cbc2a0829785248a4ce9e8eb5c968f","unresolved":false,"context_lines":[{"line_number":585,"context_line":"            inst_type \u003d flavors.get_flavor_by_flavor_id("},{"line_number":586,"context_line":"                    flavor_id, ctxt\u003dcontext, read_deleted\u003d\"no\")"},{"line_number":587,"context_line":""},{"line_number":588,"context_line":"            # Ensure that non-admin lookups of non-public flavors without"},{"line_number":589,"context_line":"            # proper access don\u0027t get found"},{"line_number":590,"context_line":"            if not (inst_type.is_public or"},{"line_number":591,"context_line":"                        context.is_admin or"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_960359b8","line":588,"updated":"2015-09-22 03:53:11.000000000","message":"You\u0027ve blocked the flavor usage for create operation. But what about resize one?\n\nCould we have the same behavior of the flavor as of deleted ones? I.e. \u0027nova flavor-show\u0027 fails with the same error, \u0027nova flavor-list\u0027 doesn\u0027t expose it. I guess if you fix this in db (or maybe object) layer, you\u0027ll not need to fix custom operations like create.","commit_id":"a82ea2eef7ceb18f1f3e76ad58a1733689ac61de"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0234241663a9386b735cd418248b684f9f33a003","unresolved":false,"context_lines":[{"line_number":584,"context_line":"        try:"},{"line_number":585,"context_line":"            inst_type \u003d flavors.get_flavor_by_flavor_id(flavor_id,"},{"line_number":586,"context_line":"                                                        ctxt\u003dcontext,"},{"line_number":587,"context_line":"                                                        read_deleted\u003d\"no\")"},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"            (instances, resv_id) \u003d self.compute_api.create(context,"},{"line_number":590,"context_line":"                            inst_type,"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba15a1d1_25966ef0","line":587,"updated":"2015-09-24 06:08:48.000000000","message":"this is unrelated change","commit_id":"9eae220c3619d1e4f6133ab5d47a0b17b0cd6711"}],"nova/compute/flavors.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0234241663a9386b735cd418248b684f9f33a003","unresolved":false,"context_lines":[{"line_number":268,"context_line":"            not (result.is_public or"},{"line_number":269,"context_line":"                     ctxt.is_admin or"},{"line_number":270,"context_line":"                         ctxt.project_id in result.projects)):"},{"line_number":271,"context_line":"        raise exception.FlavorNotFound(flavor_id\u003dflavorid)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    return result"},{"line_number":274,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba15a1d1_73ebc9dc","line":271,"updated":"2015-09-24 06:08:48.000000000","message":"DB layer already did this, why we need at here? https://github.com/openstack/nova/blob/master/nova/db/sqlalchemy/api.py#L4676","commit_id":"9eae220c3619d1e4f6133ab5d47a0b17b0cd6711"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"c5ec11b7d00f30bceae1f5b86cf2e9dc1f1f171d","unresolved":false,"context_lines":[{"line_number":267,"context_line":"            not (result.is_public or"},{"line_number":268,"context_line":"                     ctxt.is_admin or"},{"line_number":269,"context_line":"                         ctxt.project_id in result.projects)):"},{"line_number":270,"context_line":"        raise exception.FlavorNotFound(flavor_id\u003dflavorid)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    return result"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a29b11f_b40e2a39","line":270,"updated":"2015-10-21 20:49:08.000000000","message":"I think we are trying to make a previously success case failed this time ..\ndo we need a microversion to fix this bug?\n\nguess this commit can be a reference? \n\ncommit 56feb2b649cc25edd8d747806e2b9d6e0b3b8c5d\nAuthor: Jens Rosenboom \u003cj.rosenboom@x-ion.de\u003e\nDate:   Sat May 30 17:17:38 2015 +0200","commit_id":"aab415dc2f92fa92a77a10e5acdae70cdb33a548"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a9db359db5ea45834b587bea15364f596576b066","unresolved":false,"context_lines":[{"line_number":267,"context_line":"            not (result.is_public or"},{"line_number":268,"context_line":"                     ctxt.is_admin or"},{"line_number":269,"context_line":"                         ctxt.project_id in result.projects)):"},{"line_number":270,"context_line":"        raise exception.FlavorNotFound(flavor_id\u003dflavorid)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    return result"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3afc51ec_0e4d8d72","line":270,"in_reply_to":"3a29b11f_6f9d1f65","updated":"2016-03-11 15:30:23.000000000","message":"Based on [1] no microversion is needed. The new exception is a code 404, which could be returned before. Nothing has changed in the payload of the response, nor in the request parameters. If I understand correctly, the only change is what flavors are returned in certain cases, and that doesn\u0027t seem to require a microversion.\n\n[1] http://docs.openstack.org/developer/nova/api_microversion_dev.html","commit_id":"aab415dc2f92fa92a77a10e5acdae70cdb33a548"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"5b72c310169eb6f6ef07759a9dcf351aaaa631e6","unresolved":false,"context_lines":[{"line_number":267,"context_line":"            not (result.is_public or"},{"line_number":268,"context_line":"                     ctxt.is_admin or"},{"line_number":269,"context_line":"                         ctxt.project_id in result.projects)):"},{"line_number":270,"context_line":"        raise exception.FlavorNotFound(flavor_id\u003dflavorid)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    return result"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a29b11f_6f9d1f65","line":270,"in_reply_to":"3a29b11f_b40e2a39","updated":"2015-10-21 20:59:26.000000000","message":"I\u0027m pretty sure we don\u0027t ever want to preserve the behavior described in the bug.","commit_id":"aab415dc2f92fa92a77a10e5acdae70cdb33a548"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"bf68c8887d8000a3d8de0f31d7faa0938c990cbd","unresolved":false,"context_lines":[{"line_number":235,"context_line":"    if (current_access_only and"},{"line_number":236,"context_line":"            not (result.is_public or"},{"line_number":237,"context_line":"                     ctxt.is_admin or"},{"line_number":238,"context_line":"                         ctxt.project_id in result.projects)):"},{"line_number":239,"context_line":"        raise exception.FlavorNotFound(flavor_id\u003dflavorid)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    return result"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_bd03e9b7","line":238,"updated":"2016-03-11 17:09:09.000000000","message":"This indent is a bit strange. Is there a more legible way to write this?","commit_id":"bba0e20292f6c22d86509f513c4fda9d3b488582"}],"nova/db/sqlalchemy/models.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d14c51f7b5f4e2e802a2b1bc5f2035d2e5697cbf","unresolved":false,"context_lines":[{"line_number":1033,"context_line":"    instance_type \u003d orm.relationship(InstanceTypes, backref\u003d\"extra_specs\","},{"line_number":1034,"context_line":"                 foreign_keys\u003dinstance_type_id,"},{"line_number":1035,"context_line":"                 primaryjoin\u003d\u0027and_(\u0027"},{"line_number":1036,"context_line":"                 \u0027InstanceTypeExtraSpecs.instance_type_id \u003d\u003d InstanceTypes.id,\u0027"},{"line_number":1037,"context_line":"                 \u0027InstanceTypeExtraSpecs.deleted \u003d\u003d 0)\u0027)"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_956698eb","line":1036,"updated":"2015-08-12 03:00:05.000000000","message":"What about this?","commit_id":"fe52e92739c596beb7cadfff62ffb13b7ecff79e"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"677db1724210cb6c09c1034dd61338b0600d1816","unresolved":false,"context_lines":[{"line_number":1033,"context_line":"    instance_type \u003d orm.relationship(InstanceTypes, backref\u003d\"extra_specs\","},{"line_number":1034,"context_line":"                 foreign_keys\u003dinstance_type_id,"},{"line_number":1035,"context_line":"                 primaryjoin\u003d\u0027and_(\u0027"},{"line_number":1036,"context_line":"                 \u0027InstanceTypeExtraSpecs.instance_type_id \u003d\u003d InstanceTypes.id,\u0027"},{"line_number":1037,"context_line":"                 \u0027InstanceTypeExtraSpecs.deleted \u003d\u003d 0)\u0027)"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_14758f96","line":1036,"in_reply_to":"1a4dcd0f_956698eb","updated":"2015-08-12 14:10:13.000000000","message":"I think the previous is an overzealous copy+paste of this relationship. Extra-specs are pretty loosely-coupled to flavors, and can be individually deleted, etc. so this makes a certain amount of sense.","commit_id":"fe52e92739c596beb7cadfff62ffb13b7ecff79e"}],"nova/tests/functional/wsgi/test_flavor_manage.py":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"6fdcee7d81e7422d3fbfabfdcc080e66762eabf8","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        # deleted private flavor"},{"line_number":208,"context_line":"        resp \u003d self.user_api.api_get(\u0027flavors/%s\u0027 % new_flav[\u0027flavor\u0027][\u0027id\u0027])"},{"line_number":209,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":210,"context_line":"        self.assertFlavorAPIEqual(new_flav[\u0027flavor\u0027], resp.body[\u0027flavor\u0027])"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        # deleted flavor should not show up in a list"},{"line_number":213,"context_line":"        resp \u003d self.user_api.api_get(\u0027flavors\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_6f37e7e3","line":210,"updated":"2015-09-21 16:03:35.000000000","message":"Please can we also verify that a non-project member cannot fetch these details? I\u0027m not asking for full branch coverage as this is a functional test but this case seems worthwhile.","commit_id":"8a40ce849285a14db7711060a5e43c8de16b8a20"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"d768042529045499a679690fe474087fb0b8df88","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        # deleted private flavor"},{"line_number":208,"context_line":"        resp \u003d self.user_api.api_get(\u0027flavors/%s\u0027 % new_flav[\u0027flavor\u0027][\u0027id\u0027])"},{"line_number":209,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":210,"context_line":"        self.assertFlavorAPIEqual(new_flav[\u0027flavor\u0027], resp.body[\u0027flavor\u0027])"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        # deleted flavor should not show up in a list"},{"line_number":213,"context_line":"        resp \u003d self.user_api.api_get(\u0027flavors\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_f525f25b","line":210,"in_reply_to":"ba15a1d1_6f37e7e3","updated":"2015-09-21 23:28:46.000000000","message":"Non-member access to private flavors is tested elsewhere already; and it\u0027s not allowed regardless of whether the flavor is deleted or not.\n\nI can add a separate functional test for non-member access to private flavors, but that seems out-of-scope to this change.","commit_id":"8a40ce849285a14db7711060a5e43c8de16b8a20"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"81ea12f0d38d51f482614309d99b9bfccc6a2c7f","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        # deleted private flavor"},{"line_number":208,"context_line":"        resp \u003d self.user_api.api_get(\u0027flavors/%s\u0027 % new_flav[\u0027flavor\u0027][\u0027id\u0027])"},{"line_number":209,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":210,"context_line":"        self.assertFlavorAPIEqual(new_flav[\u0027flavor\u0027], resp.body[\u0027flavor\u0027])"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        # deleted flavor should not show up in a list"},{"line_number":213,"context_line":"        resp \u003d self.user_api.api_get(\u0027flavors\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_e7e8da18","line":210,"in_reply_to":"ba15a1d1_f525f25b","updated":"2015-09-22 10:02:18.000000000","message":"No, that\u0027s fine.","commit_id":"8a40ce849285a14db7711060a5e43c8de16b8a20"}]}
