)]}'
{"smaug/services/protection/checkpoint.py":[{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"79054a47ddb11fb70a0a2ecea0c33b9cc498866d","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from oslo_log import log as logging"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from smaug.services.protection.bank_plugin import BankSection"},{"line_number":18,"context_line":"from smaug.services.protection.graph import pack_graph"},{"line_number":19,"context_line":"from smaug.services.protection.graph import unpack_graph"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"CONF \u003d cfg.CONF"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_78ae1582","line":19,"range":{"start_line":18,"start_character":0,"end_line":19,"end_character":56},"updated":"2016-04-19 13:24:39.000000000","message":"from ... import (pack_graph, unpack_graph)","commit_id":"4baf8a172fc87f1f92db395bebdb7a517caade20"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"90c5e541b4bca99833e90fc8e24b1794511edd3c","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    def resource_graph(self):"},{"line_number":63,"context_line":"        packed_graph \u003d self._md_cache.get(\"resource_graph\", None)"},{"line_number":64,"context_line":"        if packed_graph is not None:"},{"line_number":65,"context_line":"            nodes \u003d packed_graph[0]"},{"line_number":66,"context_line":"            for sid, value in nodes.items():"},{"line_number":67,"context_line":"                nodes[sid] \u003d resource.Resource(type\u003dvalue[0],"},{"line_number":68,"context_line":"                                               id\u003dvalue[1],"},{"line_number":69,"context_line":"                                               name\u003dvalue[2])"},{"line_number":70,"context_line":"            return graph.unpack_graph(packed_graph)"},{"line_number":71,"context_line":"        else:"},{"line_number":72,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_6778a6f3","line":69,"range":{"start_line":65,"start_character":0,"end_line":69,"end_character":61},"updated":"2016-05-18 18:05:25.000000000","message":"is the `nodes` variable used after that?\nI think this part is redundant","commit_id":"e0cfcfe7558461750a20157458a1fc8b8bd01b6b"},{"author":{"_account_id":19345,"name":"smile-luobin","email":"luobin_smile@163.com","username":"smile-luobin"},"change_message_id":"1bedc00e860fe34830cccaa46b7ac8cf418ff388","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    def resource_graph(self):"},{"line_number":63,"context_line":"        packed_graph \u003d self._md_cache.get(\"resource_graph\", None)"},{"line_number":64,"context_line":"        if packed_graph is not None:"},{"line_number":65,"context_line":"            nodes \u003d packed_graph[0]"},{"line_number":66,"context_line":"            for sid, value in nodes.items():"},{"line_number":67,"context_line":"                nodes[sid] \u003d resource.Resource(type\u003dvalue[0],"},{"line_number":68,"context_line":"                                               id\u003dvalue[1],"},{"line_number":69,"context_line":"                                               name\u003dvalue[2])"},{"line_number":70,"context_line":"            return graph.unpack_graph(packed_graph)"},{"line_number":71,"context_line":"        else:"},{"line_number":72,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_bc773139","line":69,"range":{"start_line":65,"start_character":0,"end_line":69,"end_character":61},"in_reply_to":"bab6814e_6778a6f3","updated":"2016-05-19 04:06:48.000000000","message":"I only rename packed_graph[0] here. Each resource node who inside bank will been save to a list. In here, this codes will change the list to a Resource object.","commit_id":"e0cfcfe7558461750a20157458a1fc8b8bd01b6b"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"5b7da98c7766efb2647fa0bd665ad5784c5646bc","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    def resource_graph(self):"},{"line_number":63,"context_line":"        packed_graph \u003d self._md_cache.get(\"resource_graph\", None)"},{"line_number":64,"context_line":"        if packed_graph is not None:"},{"line_number":65,"context_line":"            nodes \u003d packed_graph[0]"},{"line_number":66,"context_line":"            for sid, value in nodes.items():"},{"line_number":67,"context_line":"                nodes[sid] \u003d resource.Resource(type\u003dvalue[0],"},{"line_number":68,"context_line":"                                               id\u003dvalue[1],"},{"line_number":69,"context_line":"                                               name\u003dvalue[2])"},{"line_number":70,"context_line":"            return graph.unpack_graph(packed_graph)"},{"line_number":71,"context_line":"        else:"},{"line_number":72,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_ebb9d87a","line":69,"range":{"start_line":65,"start_character":0,"end_line":69,"end_character":61},"in_reply_to":"bab6814e_bc773139","updated":"2016-05-19 12:44:39.000000000","message":"I didn\u0027t understand what your wrote. What is this suppose to do? Why not unpack the graph immediately?","commit_id":"e0cfcfe7558461750a20157458a1fc8b8bd01b6b"},{"author":{"_account_id":19345,"name":"smile-luobin","email":"luobin_smile@163.com","username":"smile-luobin"},"change_message_id":"e05e31a2e15493165b36b6988b7fcdbb5adcde21","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    def resource_graph(self):"},{"line_number":63,"context_line":"        packed_graph \u003d self._md_cache.get(\"resource_graph\", None)"},{"line_number":64,"context_line":"        if packed_graph is not None:"},{"line_number":65,"context_line":"            nodes \u003d packed_graph[0]"},{"line_number":66,"context_line":"            for sid, value in nodes.items():"},{"line_number":67,"context_line":"                nodes[sid] \u003d resource.Resource(type\u003dvalue[0],"},{"line_number":68,"context_line":"                                               id\u003dvalue[1],"},{"line_number":69,"context_line":"                                               name\u003dvalue[2])"},{"line_number":70,"context_line":"            return graph.unpack_graph(packed_graph)"},{"line_number":71,"context_line":"        else:"},{"line_number":72,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_9a1e6d5d","line":69,"range":{"start_line":65,"start_character":0,"end_line":69,"end_character":61},"in_reply_to":"bab6814e_ebb9d87a","updated":"2016-05-20 01:54:40.000000000","message":"Each resource node is a namedtuple object. When we save it in bank, it will be serialized as a list object by json.dumps. If unpack the graph directly, we will get some list objects, not Resource objects. So we use this code to deserialize the list object to Resource Object at first. Then unpack the resource_graph.","commit_id":"e0cfcfe7558461750a20157458a1fc8b8bd01b6b"}],"smaug/tests/unit/protection/test_checkpoint.py":[{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"79054a47ddb11fb70a0a2ecea0c33b9cc498866d","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                                                  bank_lease\u003dbank_lease,"},{"line_number":51,"context_line":"                                                  owner_id\u003downer_id,"},{"line_number":52,"context_line":"                                                  plan\u003dplan)"},{"line_number":53,"context_line":"        self.assertEqual(checkpoint.plan, plan)"},{"line_number":54,"context_line":"        self.assertEqual(checkpoint.owner_id, owner_id)"},{"line_number":55,"context_line":"        self.assertEqual(checkpoint.status, \"protecting\")"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_resource_graph(self):"},{"line_number":58,"context_line":"        bank \u003d Bank(_InMemoryBankPlugin())"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_374cb09d","line":55,"range":{"start_line":53,"start_character":0,"end_line":55,"end_character":57},"updated":"2016-04-19 13:24:39.000000000","message":"verify that data was actually written to bank after a commit","commit_id":"4baf8a172fc87f1f92db395bebdb7a517caade20"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"79054a47ddb11fb70a0a2ecea0c33b9cc498866d","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self.assertEqual(pack_graph(checkpoint.resource_graph),"},{"line_number":70,"context_line":"                         pack_graph(resource_graph))"},{"line_number":71,"context_line":"        checkpoint.commit()"},{"line_number":72,"context_line":"        self.assertEqual(pack_graph(checkpoint.resource_graph),"},{"line_number":73,"context_line":"                         pack_graph(resource_graph))"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_5747ac76","line":73,"range":{"start_line":72,"start_character":0,"end_line":73,"end_character":52},"updated":"2016-04-19 13:24:39.000000000","message":"verify that data was actually written to bank","commit_id":"4baf8a172fc87f1f92db395bebdb7a517caade20"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"9be448d327461a5bb53a909fafaff99e3ed1342e","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            ),"},{"line_number":62,"context_line":"            checkpoint_data"},{"line_number":63,"context_line":"        )"},{"line_number":64,"context_line":"        self.assertEqual(checkpoint.plan, plan)"},{"line_number":65,"context_line":"        self.assertEqual(checkpoint.owner_id, owner_id)"},{"line_number":66,"context_line":"        self.assertEqual(checkpoint.status, \"protecting\")"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def test_resource_graph(self):"},{"line_number":69,"context_line":"        bank \u003d bank_plugin.Bank(_InMemoryBankPlugin())"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_55edbbb5","line":66,"range":{"start_line":64,"start_character":0,"end_line":66,"end_character":57},"updated":"2016-04-20 06:40:36.000000000","message":"Argument order should be (expected, actual).","commit_id":"019a355fc6e390fc6289c2481e560abfd35ca24f"}]}
