)]}'
{"nova/tests/virt/disk/test_nbd.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"10f115b48f1bbf89fed09ffd6db9a07d6b69d4d6","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def test_nbd_initialize(self):"},{"line_number":40,"context_line":"        self._setup_class()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        try:"},{"line_number":43,"context_line":"            tempdir \u003d tempfile.mkdtemp()"},{"line_number":44,"context_line":"            n \u003d nbd.NbdMount(None, tempdir)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMX%2F%2F5s0%3D","line":41,"updated":"2012-12-09 06:25:20.000000000","message":"spurious VWS","commit_id":"8c1c63b06478b7532a128672910964528fa74b51"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"10f115b48f1bbf89fed09ffd6db9a07d6b69d4d6","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        try:"},{"line_number":43,"context_line":"            tempdir \u003d tempfile.mkdtemp()"},{"line_number":44,"context_line":"            n \u003d nbd.NbdMount(None, tempdir)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"            self.assertTrue(n._DEVICES_INITIALIZED)"},{"line_number":47,"context_line":"            self.assertEquals(n._DEVICES, [\u0027/dev/nbd0\u0027, \u0027/dev/nbd1\u0027])"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMX%2F%2F5s4%3D","line":45,"updated":"2012-12-09 06:25:20.000000000","message":"and here","commit_id":"8c1c63b06478b7532a128672910964528fa74b51"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"10f115b48f1bbf89fed09ffd6db9a07d6b69d4d6","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"            self.assertTrue(n._DEVICES_INITIALIZED)"},{"line_number":47,"context_line":"            self.assertEquals(n._DEVICES, [\u0027/dev/nbd0\u0027, \u0027/dev/nbd1\u0027])"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        finally:"},{"line_number":50,"context_line":"            if os.path.exists(tempdir):"},{"line_number":51,"context_line":"                shutil.rmtree(tempdir)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMX%2F%2F5sw%3D","line":48,"updated":"2012-12-09 06:25:20.000000000","message":"And here","commit_id":"8c1c63b06478b7532a128672910964528fa74b51"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"10f115b48f1bbf89fed09ffd6db9a07d6b69d4d6","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    def test_nbd_not_loaded(self):"},{"line_number":54,"context_line":"        self._setup_class()"},{"line_number":55,"context_line":"        orig_exists \u003d os.path.exists"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        # TODO(mikal): work out how to force english as the gettext language"},{"line_number":58,"context_line":"        # so that the error check always passes"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMX%2F%2F5so%3D","line":56,"updated":"2012-12-09 06:25:20.000000000","message":"And here.","commit_id":"8c1c63b06478b7532a128672910964528fa74b51"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"10f115b48f1bbf89fed09ffd6db9a07d6b69d4d6","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        # TODO(mikal): work out how to force english as the gettext language"},{"line_number":58,"context_line":"        # so that the error check always passes"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        try:"},{"line_number":61,"context_line":"            tempdir \u003d tempfile.mkdtemp()"},{"line_number":62,"context_line":"            n \u003d nbd.NbdMount(None, tempdir)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMX%2F%2F5sg%3D","line":59,"updated":"2012-12-09 06:25:20.000000000","message":"And here","commit_id":"8c1c63b06478b7532a128672910964528fa74b51"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"10f115b48f1bbf89fed09ffd6db9a07d6b69d4d6","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        try:"},{"line_number":61,"context_line":"            tempdir \u003d tempfile.mkdtemp()"},{"line_number":62,"context_line":"            n \u003d nbd.NbdMount(None, tempdir)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"            # Fake out os.path.exists"},{"line_number":65,"context_line":"            def fake_exists(path):"},{"line_number":66,"context_line":"                if path.startswith(\u0027/sys/block/nbd\u0027):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMX%2F%2F5sc%3D","line":63,"updated":"2012-12-09 06:25:20.000000000","message":"And here","commit_id":"8c1c63b06478b7532a128672910964528fa74b51"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"10f115b48f1bbf89fed09ffd6db9a07d6b69d4d6","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                return orig_exists(path)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"            os.path.exists \u003d fake_exists"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"            # This should fail, as we don\u0027t have the module \"loaded\""},{"line_number":73,"context_line":"            self.assertEquals(n._allocate_nbd(), None)"},{"line_number":74,"context_line":"            self.assertEquals(n.error, \u0027nbd unavailable: module not loaded\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMX%2F%2F5sY%3D","line":71,"updated":"2012-12-09 06:25:20.000000000","message":"And here","commit_id":"8c1c63b06478b7532a128672910964528fa74b51"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"10f115b48f1bbf89fed09ffd6db9a07d6b69d4d6","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            # This should fail, as we don\u0027t have the module \"loaded\""},{"line_number":73,"context_line":"            self.assertEquals(n._allocate_nbd(), None)"},{"line_number":74,"context_line":"            self.assertEquals(n.error, \u0027nbd unavailable: module not loaded\u0027)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"            # And no device should be consumed"},{"line_number":77,"context_line":"            self.assertEquals(n._DEVICES, [\u0027/dev/nbd0\u0027, \u0027/dev/nbd1\u0027])"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMX%2F%2F5sU%3D","line":75,"updated":"2012-12-09 06:25:20.000000000","message":"And here","commit_id":"8c1c63b06478b7532a128672910964528fa74b51"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"10f115b48f1bbf89fed09ffd6db9a07d6b69d4d6","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"            # And no device should be consumed"},{"line_number":77,"context_line":"            self.assertEquals(n._DEVICES, [\u0027/dev/nbd0\u0027, \u0027/dev/nbd1\u0027])"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        finally:"},{"line_number":80,"context_line":"            os.path.exists \u003d orig_exists"},{"line_number":81,"context_line":"            if os.path.exists(tempdir):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMX%2F%2F5sQ%3D","line":78,"updated":"2012-12-09 06:25:20.000000000","message":"And here","commit_id":"8c1c63b06478b7532a128672910964528fa74b51"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"10f115b48f1bbf89fed09ffd6db9a07d6b69d4d6","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    def test_nbd_allocation(self):"},{"line_number":85,"context_line":"        self._setup_class()"},{"line_number":86,"context_line":"        orig_exists \u003d os.path.exists"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            tempdir \u003d tempfile.mkdtemp()"},{"line_number":90,"context_line":"            n \u003d nbd.NbdMount(None, tempdir)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMX%2F%2F5sM%3D","line":87,"updated":"2012-12-09 06:25:20.000000000","message":"And here","commit_id":"8c1c63b06478b7532a128672910964528fa74b51"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"10f115b48f1bbf89fed09ffd6db9a07d6b69d4d6","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            tempdir \u003d tempfile.mkdtemp()"},{"line_number":90,"context_line":"            n \u003d nbd.NbdMount(None, tempdir)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"            # Fake out os.path.exists"},{"line_number":93,"context_line":"            def fake_exists(path):"},{"line_number":94,"context_line":"                if path.startswith(\u0027/sys/block/nbd\u0027):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMX%2F%2F5sI%3D","line":91,"updated":"2012-12-09 06:25:20.000000000","message":"And here","commit_id":"8c1c63b06478b7532a128672910964528fa74b51"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"10f115b48f1bbf89fed09ffd6db9a07d6b69d4d6","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                return orig_exists(path)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"            os.path.exists \u003d fake_exists"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"            # Allocate a nbd device"},{"line_number":103,"context_line":"            d \u003d n._allocate_nbd()"},{"line_number":104,"context_line":"            self.assertEquals(d, \u0027/dev/nbd1\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMX%2F%2F5sE%3D","line":101,"updated":"2012-12-09 06:25:20.000000000","message":"And here","commit_id":"8c1c63b06478b7532a128672910964528fa74b51"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"10f115b48f1bbf89fed09ffd6db9a07d6b69d4d6","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            d \u003d n._allocate_nbd()"},{"line_number":104,"context_line":"            self.assertEquals(d, \u0027/dev/nbd1\u0027)"},{"line_number":105,"context_line":"            self.assertEquals(len(n._DEVICES), 1)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"            # Allocate another"},{"line_number":108,"context_line":"            d \u003d n._allocate_nbd()"},{"line_number":109,"context_line":"            self.assertEquals(d, \u0027/dev/nbd0\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMX%2F%2F5sA%3D","line":106,"updated":"2012-12-09 06:25:20.000000000","message":"And here","commit_id":"8c1c63b06478b7532a128672910964528fa74b51"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"10f115b48f1bbf89fed09ffd6db9a07d6b69d4d6","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            d \u003d n._allocate_nbd()"},{"line_number":109,"context_line":"            self.assertEquals(d, \u0027/dev/nbd0\u0027)"},{"line_number":110,"context_line":"            self.assertEquals(n._DEVICES, [])"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        finally:"},{"line_number":113,"context_line":"            os.path.exists \u003d orig_exists"},{"line_number":114,"context_line":"            if os.path.exists(tempdir):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMX%2F%2F5r8%3D","line":111,"updated":"2012-12-09 06:25:20.000000000","message":"And here","commit_id":"8c1c63b06478b7532a128672910964528fa74b51"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"bf4c9467d328851171d5fb96a926aeac22611629","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class NbdTestCase(test.TestCase):"},{"line_number":33,"context_line":"    def _setup_class(self):"},{"line_number":34,"context_line":"        # Return the class variables to an inital state"},{"line_number":35,"context_line":"        self.flags(max_nbd_devices\u003d2)"},{"line_number":36,"context_line":"        nbd.NbdMount._DEVICES_INITIALIZED \u003d False"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMX%2F%2F5po%3D","line":33,"updated":"2012-12-09 07:35:41.000000000","message":"what is this? Looks like a setUp to me.\n    def setUp(self):\n        self.flags(max_nbd_devices\u003d2)\n        self.useFixture(MonkeyPatch(\n            \u0027nbd.NbdMount._DEVICES_INITIALIZED\u0027, False))\n        self.useFixture(MonkeyPatch(\u0027nbd.NbdMount._DEVICES\u0027, []))\n\nThis will correctly restore the state of nbdmount when your tests end. I\u0027m not sure how to do that for the self.flags call, but I guess it probably knows already as its a TestCase base class method.","commit_id":"2f95f7e56bc32c4caa4d723cd819a1ab102a9a6d"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"5516ba97673cdb342dc6fbdc3f7706f191f3d1c5","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class NbdTestCase(test.TestCase):"},{"line_number":33,"context_line":"    def _setup_class(self):"},{"line_number":34,"context_line":"        # Return the class variables to an inital state"},{"line_number":35,"context_line":"        self.flags(max_nbd_devices\u003d2)"},{"line_number":36,"context_line":"        nbd.NbdMount._DEVICES_INITIALIZED \u003d False"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMX%2F%2F5ok%3D","line":33,"in_reply_to":"AAAAMX%2F%2F5po%3D","updated":"2012-12-09 08:06:02.000000000","message":"Done","commit_id":"2f95f7e56bc32c4caa4d723cd819a1ab102a9a6d"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"bf4c9467d328851171d5fb96a926aeac22611629","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        finally:"},{"line_number":48,"context_line":"            if os.path.exists(tempdir):"},{"line_number":49,"context_line":"                shutil.rmtree(tempdir)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def test_nbd_not_loaded(self):"},{"line_number":52,"context_line":"        self._setup_class()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMX%2F%2F5pU%3D","line":49,"updated":"2012-12-09 07:35:41.000000000","message":"tempdir \u003d self.useFixture(TempDir()).path\nn \u003d nbd.NbdMount(None, tempdir)\nself.assertTrue(nbd.NbdMount._DEVICES_INITIALIZED)\nself.assertEqual([\u0027/dev/nbd0\u0027, \u0027/dev/nbd1\u0027], nbd.NbdMount._DEVICES)\n\n- use a fixture, expected value on the left, check the place the values are stored, not the instance.","commit_id":"2f95f7e56bc32c4caa4d723cd819a1ab102a9a6d"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"5516ba97673cdb342dc6fbdc3f7706f191f3d1c5","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        finally:"},{"line_number":48,"context_line":"            if os.path.exists(tempdir):"},{"line_number":49,"context_line":"                shutil.rmtree(tempdir)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def test_nbd_not_loaded(self):"},{"line_number":52,"context_line":"        self._setup_class()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMX%2F%2F5nw%3D","line":49,"in_reply_to":"AAAAMX%2F%2F5pU%3D","updated":"2012-12-09 08:06:02.000000000","message":"Done","commit_id":"2f95f7e56bc32c4caa4d723cd819a1ab102a9a6d"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"bf4c9467d328851171d5fb96a926aeac22611629","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        finally:"},{"line_number":106,"context_line":"            os.path.exists \u003d orig_exists"},{"line_number":107,"context_line":"            if os.path.exists(tempdir):"},{"line_number":108,"context_line":"                shutil.rmtree(tempdir)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMX%2F%2F5p0%3D","line":108,"updated":"2012-12-09 07:35:41.000000000","message":"This would be a lot cleaner if you use TempDir and MonkeyPatch (from fixtures)\n    def test_nbd_allocation(self):\n        tempdir \u003d self.useFixture(TempDir()).path\n        exists \u003d os.path.exists\n        def notpid(path):\n            if path.startswith(\u0027/sys/block/nbd\u0027):\n                return not path.endswith(\u0027pid\u0027)\n            return exists(path)\n        self.useFixture(MonkeyPatch(\u0027os.path.exists\u0027, notpid))\n        n \u003d nbd.NbdMount(None, tempdir)\n\n        # Allocate a nbd device\n        self.assertEquals(\u0027/dev/nbd1\u0027, n._allocate_nbd())\n        self.assertEquals([\u0027/dev/nbd0\u0027], n._DEVICES)\n\n        # Allocate another\n        self.assertEquals(\u0027/dev/nbd0\u0027, n._allocate_nbd())\n        self.assertEquals([], n._DEVICES)","commit_id":"2f95f7e56bc32c4caa4d723cd819a1ab102a9a6d"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"5516ba97673cdb342dc6fbdc3f7706f191f3d1c5","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        finally:"},{"line_number":106,"context_line":"            os.path.exists \u003d orig_exists"},{"line_number":107,"context_line":"            if os.path.exists(tempdir):"},{"line_number":108,"context_line":"                shutil.rmtree(tempdir)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMX%2F%2F5n4%3D","line":108,"in_reply_to":"AAAAMX%2F%2F5p0%3D","updated":"2012-12-09 08:06:02.000000000","message":"Done","commit_id":"2f95f7e56bc32c4caa4d723cd819a1ab102a9a6d"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"429282f48edcbe1e565e4d1e13d0c72e0ea2c416","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        # Allocate a nbd device"},{"line_number":80,"context_line":"        d \u003d n._allocate_nbd()"},{"line_number":81,"context_line":"        self.assertEquals(\u0027/dev/nbd1\u0027, d)"},{"line_number":82,"context_line":"        self.assertEquals(1, len(nbd.NbdMount._DEVICES))"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        # Allocate another"},{"line_number":85,"context_line":"        d \u003d n._allocate_nbd()"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAMX%2F%2F5eM%3D","line":82,"updated":"2012-12-09 19:27:33.000000000","message":"I realise its been merged, but I thought I should explain why I sketched a list comparison here. If this fails, you\u0027ll know the lrngth of _DEVICES, but not the content. It might be len 0, so - shrug. Or it might be length 2, and you won\u0027t know whats in it. Comparing the entire value solves that.","commit_id":"260dd4f1c714486634422254c6c1163696d43bfb"}],"nova/virt/disk/mount/nbd.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"10f115b48f1bbf89fed09ffd6db9a07d6b69d4d6","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            device \u003d self._allocate_nbd()"},{"line_number":101,"context_line":"            if device:"},{"line_number":102,"context_line":"                break"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"            # Yield for a bit in the hope someone else will release one"},{"line_number":105,"context_line":"            LOG.info(_(\u0027No free nbd devices, waiting 10 seconds\u0027))"},{"line_number":106,"context_line":"            time.sleep(10)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMX%2F%2F5r4%3D","line":103,"updated":"2012-12-09 06:25:20.000000000","message":"Spurious VWS here (makes things that are the same indent look separate when they are not)","commit_id":"8c1c63b06478b7532a128672910964528fa74b51"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"7eecf900ff598300794cb50ee1245e6edbd5bf36","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            device \u003d self._allocate_nbd()"},{"line_number":101,"context_line":"            if device:"},{"line_number":102,"context_line":"                break"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"            # Yield for a bit in the hope someone else will release one"},{"line_number":105,"context_line":"            LOG.info(_(\u0027No free nbd devices, waiting 10 seconds\u0027))"},{"line_number":106,"context_line":"            time.sleep(10)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMX%2F%2F5qc%3D","line":103,"in_reply_to":"AAAAMX%2F%2F5r4%3D","updated":"2012-12-09 07:11:20.000000000","message":"Done","commit_id":"8c1c63b06478b7532a128672910964528fa74b51"}]}
