)]}'
{"etc/heat/heat.conf.sample":[{"author":{"_account_id":6456,"name":"Sahdev Zala","email":"spzala@us.ibm.com","username":"spzala"},"change_message_id":"dbcc33aee35c6912ea216b8d5fbe946e9d08bb17","unresolved":false,"context_lines":[{"line_number":27,"context_line":"# Maximum resources allowed per top-level stack. (integer"},{"line_number":28,"context_line":"# value)"},{"line_number":29,"context_line":"#max_resources_per_stack\u003d1000"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"# Name of the engine node. This can be an opaque identifier.It"},{"line_number":32,"context_line":"# is not necessarily a hostname, FQDN, or IP address. (string"},{"line_number":33,"context_line":"# value)"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAASn%2F%2FxvI%3D","line":30,"updated":"2013-08-29 18:18:26.000000000","message":"Hi Clint, I read in the bug that you are suggesting 10,000  (\"I think 10000 would be a reasonable number and allow extremely complicated stacks to be deployed.\"? ) vs 1000 you have here...Per your commit message, it seems that the limit includes nested stacks as well, so I wonder if this is 10,000 instead of 1000.\nGiving -1 just to bring your attention and make this clear. Thanks!","commit_id":"bc94ecbb1e9e9bb6293ec605ef23180637e4235e"},{"author":{"_account_id":6456,"name":"Sahdev Zala","email":"spzala@us.ibm.com","username":"spzala"},"change_message_id":"c2d70fdb3ee638477a42193e94c17173536466e4","unresolved":false,"context_lines":[{"line_number":27,"context_line":"# Maximum resources allowed per top-level stack. (integer"},{"line_number":28,"context_line":"# value)"},{"line_number":29,"context_line":"#max_resources_per_stack\u003d1000"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"# Name of the engine node. This can be an opaque identifier.It"},{"line_number":32,"context_line":"# is not necessarily a hostname, FQDN, or IP address. (string"},{"line_number":33,"context_line":"# value)"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAASn%2F%2FxkE%3D","line":30,"in_reply_to":"AAAASn%2F%2Fxqk%3D","updated":"2013-08-29 18:53:41.000000000","message":":-) Yup, sounds great!! Thanks!","commit_id":"bc94ecbb1e9e9bb6293ec605ef23180637e4235e"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"ac6f62d3daea119f1712e425f5b9f7d161b81855","unresolved":false,"context_lines":[{"line_number":27,"context_line":"# Maximum resources allowed per top-level stack. (integer"},{"line_number":28,"context_line":"# value)"},{"line_number":29,"context_line":"#max_resources_per_stack\u003d1000"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"# Name of the engine node. This can be an opaque identifier.It"},{"line_number":32,"context_line":"# is not necessarily a hostname, FQDN, or IP address. (string"},{"line_number":33,"context_line":"# value)"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAASn%2F%2Fxqk%3D","line":30,"in_reply_to":"AAAASn%2F%2FxvI%3D","updated":"2013-08-29 18:26:48.000000000","message":"Thanks. At this point I think 10,000 may be too big as a default. I plan to test that theory, but for now a conservative default of 1000 would allow all known templates to deploy with quite a bit of head room. :)","commit_id":"bc94ecbb1e9e9bb6293ec605ef23180637e4235e"}],"heat/engine/parser.py":[{"author":{"_account_id":7135,"name":"Liang Chen","email":"liangchen.linux@gmail.com","username":"Liang"},"change_message_id":"aa541775eba50f1103ade693554410e71de24806","unresolved":false,"context_lines":[{"line_number":285,"context_line":"                                        dup_names)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        if (("},{"line_number":288,"context_line":"            self.root_stack.total_resources()"},{"line_number":289,"context_line":"                \u003e cfg.CONF.max_resources_per_stack)):"},{"line_number":290,"context_line":"            raise exception.StackResourceLimitExceeded()"},{"line_number":291,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FyTc%3D","line":288,"updated":"2013-08-29 16:15:25.000000000","message":"So we are only interested in the number of resources in the stacks all the way up to the root one here(as well as resources in the sibling stacks hierarchy)? Seems resources from nested stacks of the current stack will not be counted in, as they have not been created yet at this time.","commit_id":"6c3a2a5f08edd84207db4d97f8fc904c4977f538"},{"author":{"_account_id":7135,"name":"Liang Chen","email":"liangchen.linux@gmail.com","username":"Liang"},"change_message_id":"3b4bf6147c2f95714456c04e32eb11b6d95f1036","unresolved":false,"context_lines":[{"line_number":285,"context_line":"                                        dup_names)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        if (("},{"line_number":288,"context_line":"            self.root_stack.total_resources()"},{"line_number":289,"context_line":"                \u003e cfg.CONF.max_resources_per_stack)):"},{"line_number":290,"context_line":"            raise exception.StackResourceLimitExceeded()"},{"line_number":291,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FwNk%3D","line":288,"in_reply_to":"AAAASn%2F%2Fxz8%3D","updated":"2013-08-30 01:09:50.000000000","message":"Ok. That\u0027s clear enough. The total_resource is not calculated in one recursive call - every time a nested stack is create (during the creation of the root stack), it is calculated again.  Thanks for the explanation.","commit_id":"6c3a2a5f08edd84207db4d97f8fc904c4977f538"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"06eaa6e8e6a11a6cb670f592ce63651d0a65edf3","unresolved":false,"context_lines":[{"line_number":285,"context_line":"                                        dup_names)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        if (("},{"line_number":288,"context_line":"            self.root_stack.total_resources()"},{"line_number":289,"context_line":"                \u003e cfg.CONF.max_resources_per_stack)):"},{"line_number":290,"context_line":"            raise exception.StackResourceLimitExceeded()"},{"line_number":291,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2Fxz8%3D","line":288,"in_reply_to":"AAAASn%2F%2FyTc%3D","updated":"2013-08-29 17:50:18.000000000","message":"We will call validate() on the nested stack resource during creation of the root stack. It will check against its own root_stack.\n\nThere is a test that shows this, but poorly, in the patch which introduces total_resources. I will update the test to more readily demonstrate how nested stacks do in fact count against the total.","commit_id":"6c3a2a5f08edd84207db4d97f8fc904c4977f538"}],"heat/tests/test_engine_service.py":[{"author":{"_account_id":7135,"name":"Liang Chen","email":"liangchen.linux@gmail.com","username":"Liang"},"change_message_id":"35bc811d7bdc72d3e2d864935a02fe46fd585895","unresolved":false,"context_lines":[{"line_number":444,"context_line":""},{"line_number":445,"context_line":"        template \u003d parser.Template(tpl)"},{"line_number":446,"context_line":"        stack \u003d parser.Stack(self.ctx, stack_name, template,"},{"line_number":447,"context_line":"                             environment.Environment({}))"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"        cfg.CONF.set_override(\u0027max_resources_per_stack\u0027, 2)"},{"line_number":450,"context_line":"        self.addCleanup(cfg.CONF.clear_override, \u0027max_resources_per_stack\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FVSg%3D","line":447,"updated":"2013-09-06 06:36:41.000000000","message":"This seems not necessary.","commit_id":"a199e8b24573378240feb7881f7e701904bdd1ad"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"3497dae25a36c8008d3e2f2bfd308914e3a76ecb","unresolved":false,"context_lines":[{"line_number":424,"context_line":"        self.m.ReplayAll()"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"        cfg.CONF.set_override(\u0027max_resources_per_stack\u0027, 3)"},{"line_number":427,"context_line":"        self.addCleanup(cfg.CONF.clear_override, \u0027max_resources_per_stack\u0027)"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"        result \u003d self.man.create_stack(self.ctx, stack_name, template, params,"},{"line_number":430,"context_line":"                                       None, {})"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2FSc8%3D","line":427,"updated":"2013-09-07 03:03:20.000000000","message":"clear_override is no longer required","commit_id":"e466a0c01d749da40e22435107cd2d591f9393d9"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"3497dae25a36c8008d3e2f2bfd308914e3a76ecb","unresolved":false,"context_lines":[{"line_number":443,"context_line":"               \u0027C\u0027: {\u0027Type\u0027: \u0027GenericResourceType\u0027}}}"},{"line_number":444,"context_line":"        template \u003d parser.Template(tpl)"},{"line_number":445,"context_line":"        cfg.CONF.set_override(\u0027max_resources_per_stack\u0027, 2)"},{"line_number":446,"context_line":"        self.addCleanup(cfg.CONF.clear_override, \u0027max_resources_per_stack\u0027)"},{"line_number":447,"context_line":"        self.assertRaises(exception.StackResourceLimitExceeded,"},{"line_number":448,"context_line":"                          self.man.create_stack, self.ctx, stack_name,"},{"line_number":449,"context_line":"                          template, params, None, {})"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2FSc0%3D","line":446,"updated":"2013-09-07 03:03:20.000000000","message":"as above","commit_id":"e466a0c01d749da40e22435107cd2d591f9393d9"}]}
