)]}'
{"smaug/services/protection/protection_plugins/volume/cinder_protection_plugin.py":[{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"2da5ce3ad81a44b504db34d7611e83d4773a6023","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        volume_type \u003d kwargs.get(\"volume_type\")"},{"line_number":123,"context_line":"        name \u003d kwargs.get(\"name\")"},{"line_number":124,"context_line":"        availability_zone \u003d kwargs.get(\"availability_zone\")"},{"line_number":125,"context_line":"        description \u003d kwargs.get(\"description\")"},{"line_number":126,"context_line":"        metadata \u003d kwargs.get(\"metadata\")"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a1b2928_138303ce","line":124,"updated":"2016-04-11 07:19:35.000000000","message":"check which params are from restore schema which are from bank checkpoint.","commit_id":"5db6b9c6f2870bc603cb000e282752df0ce63852"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"2da5ce3ad81a44b504db34d7611e83d4773a6023","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        name \u003d kwargs.get(\"name\")"},{"line_number":124,"context_line":"        availability_zone \u003d kwargs.get(\"availability_zone\")"},{"line_number":125,"context_line":"        description \u003d kwargs.get(\"description\")"},{"line_number":126,"context_line":"        metadata \u003d kwargs.get(\"metadata\")"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        heat_resource \u003d HeatResource(resource_id,"},{"line_number":129,"context_line":"                                     constants.VOLUME_RESOURCE_TYPE)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a1b2928_130ca393","line":126,"updated":"2016-04-11 07:19:35.000000000","message":"shouldn\u0027t metadata to be read from bank?","commit_id":"5db6b9c6f2870bc603cb000e282752df0ce63852"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"be59dfc8d545ba2b38641c94c09fba226eb1d53d","unresolved":false,"context_lines":[{"line_number":152,"context_line":"            for key, value in properties.items():"},{"line_number":153,"context_line":"                heat_resource.set_property(key, value)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"            heat_template.put_resource(heat_resource)"},{"line_number":156,"context_line":"        except Exception as e:"},{"line_number":157,"context_line":"            LOG.error(_LE(\"restore volume backup failed, volume_id: %s.\"),"},{"line_number":158,"context_line":"                      resource_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a1b2928_33655fe1","line":155,"updated":"2016-04-11 07:04:59.000000000","message":"put_resource interface should take two parameters?","commit_id":"5db6b9c6f2870bc603cb000e282752df0ce63852"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"cfe7e1908066d219569eee1694ffa44cc3e62926","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        name \u003d kwargs.get(\"name\")"},{"line_number":124,"context_line":"        description \u003d kwargs.get(\"description\")"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        heat_resource_id \u003d str(uuid4())"},{"line_number":127,"context_line":"        heat_resource \u003d HeatResource(heat_resource_id,"},{"line_number":128,"context_line":"                                     constants.VOLUME_RESOURCE_TYPE)"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_931b9c80","line":126,"range":{"start_line":126,"start_character":0,"end_line":126,"end_character":39},"updated":"2016-05-10 11:09:24.000000000","message":"if \u0027volume_id\u0027 is marked as \u0027required\u0027 in the schema, why do we generate a uuid here?","commit_id":"c8155386203827e7f1c9683c4676ae2eae47067f"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"aa5b4e3185657351f71fd9337bf6b9629ffcb9d2","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            backup_id \u003d resource_definition[\"backup_id\"]"},{"line_number":133,"context_line":"            properties \u003d {\"backup_id\": backup_id}"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"            if name is not None:"},{"line_number":136,"context_line":"                properties[\"name\"] \u003d name"},{"line_number":137,"context_line":"            if description is not None:"},{"line_number":138,"context_line":"                properties[\"description\"] \u003d description"}],"source_content_type":"text/x-python","patch_set":7,"id":"dab17558_9023f257","line":135,"updated":"2016-05-16 03:26:14.000000000","message":"what if name is none?","commit_id":"aca848d25a4b78e2a710be02b01da4583a4e115c"},{"author":{"_account_id":19345,"name":"smile-luobin","email":"luobin_smile@163.com","username":"smile-luobin"},"change_message_id":"7b79a6a673fbcd140fbdc85b5e67468e5285f301","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            backup_id \u003d resource_definition[\"backup_id\"]"},{"line_number":133,"context_line":"            properties \u003d {\"backup_id\": backup_id}"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"            if name is not None:"},{"line_number":136,"context_line":"                properties[\"name\"] \u003d name"},{"line_number":137,"context_line":"            if description is not None:"},{"line_number":138,"context_line":"                properties[\"description\"] \u003d description"}],"source_content_type":"text/x-python","patch_set":7,"id":"dab17558_8300c567","line":135,"in_reply_to":"dab17558_9023f257","updated":"2016-05-17 03:00:06.000000000","message":"After a test, I will update this patch follow your idea.","commit_id":"aca848d25a4b78e2a710be02b01da4583a4e115c"}],"smaug/services/protection/restoration_heat.py":[{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"be59dfc8d545ba2b38641c94c09fba226eb1d53d","unresolved":false,"context_lines":[{"line_number":24,"context_line":"        self._properties[key] \u003d value"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def toDict(self):"},{"line_number":27,"context_line":"        resource_dict \u003d {"},{"line_number":28,"context_line":"            \"type\": self._type,"},{"line_number":29,"context_line":"            \"properties\": self._properties"},{"line_number":30,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a1b2928_73b6b73e","line":27,"updated":"2016-04-11 07:04:59.000000000","message":"the first level of key should be resource_id?","commit_id":"5db6b9c6f2870bc603cb000e282752df0ce63852"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"be59dfc8d545ba2b38641c94c09fba226eb1d53d","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    def __init__(self):"},{"line_number":39,"context_line":"        self._resources \u003d {}"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def put_resource(self, heat_resource):"},{"line_number":42,"context_line":"        self._resources[heat_resource.resource_id] \u003d heat_resource.toDict()"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def toDict(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a1b2928_f3f767f3","line":41,"updated":"2016-04-11 07:04:59.000000000","message":"the interface should still keep two parameters.","commit_id":"5db6b9c6f2870bc603cb000e282752df0ce63852"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"be59dfc8d545ba2b38641c94c09fba226eb1d53d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self._resources \u003d {}"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def put_resource(self, heat_resource):"},{"line_number":42,"context_line":"        self._resources[heat_resource.resource_id] \u003d heat_resource.toDict()"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def toDict(self):"},{"line_number":45,"context_line":"        template_dict \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a1b2928_9390b397","line":42,"updated":"2016-04-11 07:04:59.000000000","message":"the resource_id in HeatResource is not the original resource\u0027s openstack id. it\u0027s the resource name which is unique in the whole template, which usually is readable.  We should verify it anyway.","commit_id":"5db6b9c6f2870bc603cb000e282752df0ce63852"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"be59dfc8d545ba2b38641c94c09fba226eb1d53d","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            \"resources\": self._resources"},{"line_number":49,"context_line":"        }"},{"line_number":50,"context_line":"        return template_dict"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def dumpToYamlFile(self, file):"},{"line_number":53,"context_line":"        with open(file, \"w\") as f:"},{"line_number":54,"context_line":"            yaml.dump(self.toDict(), f)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a1b2928_53c45b91","line":51,"updated":"2016-04-11 07:04:59.000000000","message":"where is the get_resource_reference util?","commit_id":"5db6b9c6f2870bc603cb000e282752df0ce63852"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"cfe7e1908066d219569eee1694ffa44cc3e62926","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    def set_property(self, key, value):"},{"line_number":24,"context_line":"        self._properties[key] \u003d value"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def toDict(self):"},{"line_number":27,"context_line":"        resource_dict \u003d {"},{"line_number":28,"context_line":"            self.resource_id: {"},{"line_number":29,"context_line":"                \"type\": self._type,"}],"source_content_type":"text/x-python","patch_set":5,"id":"dab17558_e3a26898","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":21},"updated":"2016-05-10 11:09:24.000000000","message":"to lower_case?","commit_id":"c8155386203827e7f1c9683c4676ae2eae47067f"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"cfe7e1908066d219569eee1694ffa44cc3e62926","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    def get_resource_reference(self, original_id):"},{"line_number":49,"context_line":"        return self._original_id_resource_map[original_id]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def toDict(self):"},{"line_number":52,"context_line":"        resources_dict \u003d {}"},{"line_number":53,"context_line":"        for resource in self._resources:"},{"line_number":54,"context_line":"            resource_dict \u003d resource.toDict()"}],"source_content_type":"text/x-python","patch_set":5,"id":"dab17558_83b8bcc9","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":21},"updated":"2016-05-10 11:09:24.000000000","message":"ditto","commit_id":"c8155386203827e7f1c9683c4676ae2eae47067f"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"cfe7e1908066d219569eee1694ffa44cc3e62926","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        }"},{"line_number":62,"context_line":"        return template_dict"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def dumpToYamlFile(self, file_name):"},{"line_number":65,"context_line":"        with open(file_name, \"w\") as f:"},{"line_number":66,"context_line":"            yaml.dump(self.toDict(), f)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dab17558_e3d0a8f8","line":64,"range":{"start_line":64,"start_character":0,"end_line":64,"end_character":40},"updated":"2016-05-10 11:09:24.000000000","message":"ditto","commit_id":"c8155386203827e7f1c9683c4676ae2eae47067f"}]}
