)]}'
{"heat/common/exception.py":[{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"f0421f86182a9cf40f593a0b6a3171c2d1647033","unresolved":false,"context_lines":[{"line_number":234,"context_line":"        return self.path"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    def error_message(self):"},{"line_number":237,"context_line":"        return self.error_message"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"class StackValidationFailed(HeatExceptionWithPath):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff0f0b1f_8e88cb22","line":237,"updated":"2017-05-25 17:22:22.000000000","message":"Unrelatedly, we should delete these 3 transparently nonsensical functions that return themselves.","commit_id":"4cb086d3b77c4431dd837e52816d8c3f2c9dcdad"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"29f2dff5366bd4ece3f8fd25adc9ab19c012251b","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        )"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def error_message(self):"},{"line_number":231,"context_line":"        return self.error_message"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"class StackValidationFailed(HeatExceptionWithPath):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_198099f4","line":231,"updated":"2017-06-28 16:38:31.000000000","message":"Should delete this one too. It just gets overwritten in __init__ anyway.","commit_id":"ea240efc817037d1d8f703a976bf493264c0d66f"},{"author":{"_account_id":8833,"name":"Rabi Mishra","email":"ramishra@redhat.com","username":"rabi"},"change_message_id":"f1def5d10d262e0bff2b3d6e7f8156b0cda4ce9b","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        )"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def error_message(self):"},{"line_number":231,"context_line":"        return self.error_message"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"class StackValidationFailed(HeatExceptionWithPath):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_a4296c9c","line":231,"in_reply_to":"5f201791_198099f4","updated":"2017-06-29 03:58:50.000000000","message":"Done","commit_id":"ea240efc817037d1d8f703a976bf493264c0d66f"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"ac17bd120956988234fb5b7ce199506e215c5745","unresolved":false,"context_lines":[{"line_number":231,"context_line":"class StackValidationFailed(HeatExceptionWithPath):"},{"line_number":232,"context_line":"    def __init__(self, error\u003dNone, path\u003dNone, message\u003dNone,"},{"line_number":233,"context_line":"                 resource\u003dNone):"},{"line_number":234,"context_line":"        if path is None:"},{"line_number":235,"context_line":"            path \u003d []"},{"line_number":236,"context_line":"        elif isinstance(path, six.string_types):"},{"line_number":237,"context_line":"            path \u003d [path]"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        if resource is not None and not path:"},{"line_number":240,"context_line":"            path \u003d [resource.stack.t.get_section_name("}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_67575c5a","line":237,"range":{"start_line":234,"start_character":8,"end_line":237,"end_character":25},"updated":"2017-07-04 10:39:11.000000000","message":"Or maybe we don\u0027t have to do the same thing as we do in super class?","commit_id":"fe74658ff06b76d83b5b1595fa4529d373d78cce"},{"author":{"_account_id":8833,"name":"Rabi Mishra","email":"ramishra@redhat.com","username":"rabi"},"change_message_id":"5be96655101ada2463762f9ecb33840f6d00cf54","unresolved":false,"context_lines":[{"line_number":231,"context_line":"class StackValidationFailed(HeatExceptionWithPath):"},{"line_number":232,"context_line":"    def __init__(self, error\u003dNone, path\u003dNone, message\u003dNone,"},{"line_number":233,"context_line":"                 resource\u003dNone):"},{"line_number":234,"context_line":"        if path is None:"},{"line_number":235,"context_line":"            path \u003d []"},{"line_number":236,"context_line":"        elif isinstance(path, six.string_types):"},{"line_number":237,"context_line":"            path \u003d [path]"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        if resource is not None and not path:"},{"line_number":240,"context_line":"            path \u003d [resource.stack.t.get_section_name("}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_f0e78eab","line":237,"range":{"start_line":234,"start_character":8,"end_line":237,"end_character":25},"in_reply_to":"3f1d235d_67575c5a","updated":"2017-07-05 03:38:18.000000000","message":"We call super init() at the end, so having that in the super class is not useful.","commit_id":"fe74658ff06b76d83b5b1595fa4529d373d78cce"}],"heat/engine/resources/openstack/heat/resource_chain.py":[{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"29f2dff5366bd4ece3f8fd25adc9ab19c012251b","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        except Exception as ex:"},{"line_number":112,"context_line":"            path \u003d \"[%s\u003c%s\u003e]\" % (self.name, self.template_url)"},{"line_number":113,"context_line":"            raise exception.StackValidationFailed("},{"line_number":114,"context_line":"                ex, path\u003d[path])"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def handle_create(self):"},{"line_number":117,"context_line":"        return self.create_with_template(self.child_template())"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_b4fbecbb","line":114,"updated":"2017-06-28 16:38:31.000000000","message":"We should just replace lines 101-114 with a call to super().validate_nested_stack(). They\u0027re now the same afaict.","commit_id":"ea240efc817037d1d8f703a976bf493264c0d66f"},{"author":{"_account_id":8833,"name":"Rabi Mishra","email":"ramishra@redhat.com","username":"rabi"},"change_message_id":"f1def5d10d262e0bff2b3d6e7f8156b0cda4ce9b","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        except Exception as ex:"},{"line_number":112,"context_line":"            path \u003d \"[%s\u003c%s\u003e]\" % (self.name, self.template_url)"},{"line_number":113,"context_line":"            raise exception.StackValidationFailed("},{"line_number":114,"context_line":"                ex, path\u003d[path])"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def handle_create(self):"},{"line_number":117,"context_line":"        return self.create_with_template(self.child_template())"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_641d9472","line":114,"in_reply_to":"5f201791_b4fbecbb","updated":"2017-06-29 03:58:50.000000000","message":"sure, I did not realize that.","commit_id":"ea240efc817037d1d8f703a976bf493264c0d66f"}],"heat/engine/resources/stack_resource.py":[{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"29f2dff5366bd4ece3f8fd25adc9ab19c012251b","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        except Exception as ex:"},{"line_number":79,"context_line":"            path \u003d \"[%s\u003c%s\u003e]\" % (self.name, self.template_url)"},{"line_number":80,"context_line":"            raise exception.StackValidationFailed("},{"line_number":81,"context_line":"                ex, path\u003d[path])"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @property"},{"line_number":84,"context_line":"    def template_url(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_d9058115","line":81,"updated":"2017-06-28 16:38:31.000000000","message":"Shouldn\u0027t we still have \u0027resources\u0027 as the first path component?\n\nAlso, a thought: what if we lose the square brackets? So instead of:\n\n  [random_group\u003cnested_stack\u003e].[0\u003cprovider.yaml\u003e].resources.random\n\nwe\u0027d end up with something like:\n\n  resources.random_group\u003cnested_stack\u003e.resources.0\u003cprovider.yaml\u003e.resources.random","commit_id":"ea240efc817037d1d8f703a976bf493264c0d66f"},{"author":{"_account_id":8833,"name":"Rabi Mishra","email":"ramishra@redhat.com","username":"rabi"},"change_message_id":"f1def5d10d262e0bff2b3d6e7f8156b0cda4ce9b","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        except Exception as ex:"},{"line_number":79,"context_line":"            path \u003d \"[%s\u003c%s\u003e]\" % (self.name, self.template_url)"},{"line_number":80,"context_line":"            raise exception.StackValidationFailed("},{"line_number":81,"context_line":"                ex, path\u003d[path])"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @property"},{"line_number":84,"context_line":"    def template_url(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_a4028c0a","line":81,"in_reply_to":"5f201791_d9058115","updated":"2017-06-29 03:58:50.000000000","message":"Done","commit_id":"ea240efc817037d1d8f703a976bf493264c0d66f"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"29f2dff5366bd4ece3f8fd25adc9ab19c012251b","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                ex, path\u003d[path])"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @property"},{"line_number":84,"context_line":"    def template_url(self):"},{"line_number":85,"context_line":"        return \"nested_stack\""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def _outputs_to_attribs(self, json_snippet):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_d461c8d4","line":84,"updated":"2017-06-28 16:38:31.000000000","message":"I don\u0027t know if this is a great name for a property that usually won\u0027t return a URL.","commit_id":"ea240efc817037d1d8f703a976bf493264c0d66f"},{"author":{"_account_id":8833,"name":"Rabi Mishra","email":"ramishra@redhat.com","username":"rabi"},"change_message_id":"f1def5d10d262e0bff2b3d6e7f8156b0cda4ce9b","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                ex, path\u003d[path])"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @property"},{"line_number":84,"context_line":"    def template_url(self):"},{"line_number":85,"context_line":"        return \"nested_stack\""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def _outputs_to_attribs(self, json_snippet):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_2f2535ac","line":84,"in_reply_to":"5f201791_d461c8d4","updated":"2017-06-29 03:58:50.000000000","message":"I could not find a better name. It\u0027s actually the template location for TemplateResource and a placeholder for group resources (resources that inherit from StackResource and don\u0027t have this property).\n\nI\u0027ve put some comment to make it clear.","commit_id":"ea240efc817037d1d8f703a976bf493264c0d66f"}],"heat/engine/stack.py":[{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"29f2dff5366bd4ece3f8fd25adc9ab19c012251b","unresolved":false,"context_lines":[{"line_number":834,"context_line":""},{"line_number":835,"context_line":"        unique_defns \u003d set(res.t for res in six.itervalues(resources))"},{"line_number":836,"context_line":"        unique_defn_names \u003d set(defn.name for defn in unique_defns)"},{"line_number":837,"context_line":""},{"line_number":838,"context_line":"        for res in iter_rsc:"},{"line_number":839,"context_line":"            # Don\u0027t validate identical definitions multiple times"},{"line_number":840,"context_line":"            if res.name not in unique_defn_names:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_f4aba4d2","side":"PARENT","line":837,"updated":"2017-06-28 16:38:31.000000000","message":"This seems gratuitous ;)","commit_id":"30c87bae3d115afdb812aad97b4b61587b4804ac"},{"author":{"_account_id":8833,"name":"Rabi Mishra","email":"ramishra@redhat.com","username":"rabi"},"change_message_id":"f1def5d10d262e0bff2b3d6e7f8156b0cda4ce9b","unresolved":false,"context_lines":[{"line_number":834,"context_line":""},{"line_number":835,"context_line":"        unique_defns \u003d set(res.t for res in six.itervalues(resources))"},{"line_number":836,"context_line":"        unique_defn_names \u003d set(defn.name for defn in unique_defns)"},{"line_number":837,"context_line":""},{"line_number":838,"context_line":"        for res in iter_rsc:"},{"line_number":839,"context_line":"            # Don\u0027t validate identical definitions multiple times"},{"line_number":840,"context_line":"            if res.name not in unique_defn_names:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_ef361de8","side":"PARENT","line":837,"in_reply_to":"5f201791_f4aba4d2","updated":"2017-06-29 03:58:50.000000000","message":"Done","commit_id":"30c87bae3d115afdb812aad97b4b61587b4804ac"}]}
