)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"d0b90fae080a46c439522ce79eb410109f0070d2","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Adds code to BaseInstance._delete_resources"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Reasons:"},{"line_number":10,"context_line":"- When a compute node has been deleted from nova with heat"},{"line_number":11,"context_line":"  provisioning on, then on deletion of trove instance, it calls"},{"line_number":12,"context_line":"  BaseInstance.delete_async with FreshInstance context which in-turn"},{"line_number":13,"context_line":"  calls BaseInstance._delete_resources, which does nothing,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAXX%2F%2Fv9A%3D","line":10,"updated":"2014-04-28 09:05:47.000000000","message":"If you are using heat, you using deletion through Heat, but not the Nova. Given use case is not reachable in term of the single deployment.\nAnd, also, Trove doesn\u0027t support backward/forward compatibility within orchestration path.","commit_id":"fd5333adcb00f24fffca107c3e36b3171007de67"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"d0b90fae080a46c439522ce79eb410109f0070d2","unresolved":false,"context_lines":[{"line_number":14,"context_line":"  for this reason, it results in  ghosted heat stacks."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Changes:"},{"line_number":17,"context_line":"- Adds conditional stack deletion to BaseInstance._delete_resources,"},{"line_number":18,"context_line":"  which deletes heat stack, if we have one which has got its compute"},{"line_number":19,"context_line":"  node deleted."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAXX%2F%2Fv8w%3D","line":17,"updated":"2014-04-28 09:05:47.000000000","message":"this method gets overriden by the BaseInstanceTask from Taskmanager, no need to do this again, since deletion task is being deletaget to Taskmanager through its API.","commit_id":"fd5333adcb00f24fffca107c3e36b3171007de67"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"5e35d73ee28e77b39021e7d5e57322174d765b07","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Adds code to BaseInstance._delete_resources"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Reasons:"},{"line_number":10,"context_line":"- When a compute node has been deleted from nova with heat"},{"line_number":11,"context_line":"  provisioning on, then on deletion of trove instance, it calls"},{"line_number":12,"context_line":"  BaseInstance.delete_async with FreshInstance context which in-turn"},{"line_number":13,"context_line":"  calls BaseInstance._delete_resources, which does nothing,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAXX%2F%2FvEs%3D","line":10,"updated":"2014-04-28 11:24:47.000000000","message":"If you are using heat, you using deletion through Heat, but not the Nova. Given use case is not reachable in term of the single deployment. And, also, Trove doesn\u0027t support backward/forward compatibility within orchestration path","commit_id":"b047d60fff46f444351e0a88f29c1b53e6a55fee"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"d062ecf5c5f9223dfd441a1cdd9d663ff0df2acb","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Adds code to BaseInstance._delete_resources"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Reasons:"},{"line_number":10,"context_line":"- When a compute node has been deleted from nova with heat"},{"line_number":11,"context_line":"  provisioning on, then on deletion of trove instance, it calls"},{"line_number":12,"context_line":"  BaseInstance.delete_async with FreshInstance context which in-turn"},{"line_number":13,"context_line":"  calls BaseInstance._delete_resources, which does nothing,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAXX%2F%2Fu5w%3D","line":10,"in_reply_to":"AAAAXX%2F%2FvDE%3D","updated":"2014-04-28 11:51:51.000000000","message":"Heat resource management path is nothing than experimental. If you\u0027re switching from heat to natives, it\u0027s your choise. Heat path should not be used anywhere, because it\u0027s not ready at all.\n\nAlso, you cannot delete only compute VM if use_heat \u003d True \u003c\u003d Taskmanager would not let you to do this.\n\nAgain, BaseInstance._delete_resources is being overriden by the BuildInstanceTask class, and your change really does nothing.\n\nLet me explain why:\n\nWhen instance is being loaded by the taskamanger [1], you\u0027ll receive\nthe entity of \u0027cls\u0027 object, where \u0027cls\u0027 equals to BuildInstanceTask. After that Taskmanager will call method [2]. Method [3] will be called from [2]. At runtime, method [3] will be overriden by method [4], that already does what it must.\n\n\n[1] https://github.com/openstack/trove/blob/master/trove/taskmanager/manager.py#L66\n\n[2] https://github.com/openstack/trove/blob/master/trove/taskmanager/manager.py#L68\n\n[3] https://github.com/openstack/trove/blob/master/trove/instance/models.py#L521\n\n[4] https://github.com/openstack/trove/blob/master/trove/taskmanager/models.py#L697\n\n\nFrom given perspecive, your patch actually does copy-pasting and small (unneeded) refactoring. It doesn\u0027t fixes the bug, it adds no value-add to orchestration resource management.\n\n\nTake a look at, this is how it should be:\nhttps://blueprints.launchpad.net/trove/+spec/resource-manager-interface (and all its dependencies)","commit_id":"b047d60fff46f444351e0a88f29c1b53e6a55fee"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"30c96c12f56731af8dfb110925fdde40da693e59","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Adds code to BaseInstance._delete_resources"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Reasons:"},{"line_number":10,"context_line":"- When a compute node has been deleted from nova with heat"},{"line_number":11,"context_line":"  provisioning on, then on deletion of trove instance, it calls"},{"line_number":12,"context_line":"  BaseInstance.delete_async with FreshInstance context which in-turn"},{"line_number":13,"context_line":"  calls BaseInstance._delete_resources, which does nothing,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAXX%2F%2FvDE%3D","line":10,"in_reply_to":"AAAAXX%2F%2FvEs%3D","updated":"2014-04-28 11:30:26.000000000","message":"why is not it reachable.","commit_id":"b047d60fff46f444351e0a88f29c1b53e6a55fee"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"5e35d73ee28e77b39021e7d5e57322174d765b07","unresolved":false,"context_lines":[{"line_number":21,"context_line":"  which deletes heat stack, if we have one which has got its compute"},{"line_number":22,"context_line":"  node deleted."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Closes-Bug: #1269013"},{"line_number":25,"context_line":"Change-Id: I300a77b16fc574844b301f05b951014e226e1ee9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAXX%2F%2FvE8%3D","line":24,"updated":"2014-04-28 11:24:47.000000000","message":"Bug was marked as invalid, this is not a bug.","commit_id":"b047d60fff46f444351e0a88f29c1b53e6a55fee"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"396c15b3d41498578f84c1299df27c7a62ac61d0","unresolved":false,"context_lines":[{"line_number":14,"context_line":"  for this reason, it results in  ghosted heat stacks."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Changes:"},{"line_number":17,"context_line":"- Create a method _delete_heat_stack to remove heat stack, and called"},{"line_number":18,"context_line":"  this method at both places in BaseInstance._delete_resources and"},{"line_number":19,"context_line":"  BuiltInstanceTasks._delete_resources."},{"line_number":20,"context_line":"- Adds conditional stack deletion to BaseInstance._delete_resources,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1ae5cdf2_1af41e5a","line":17,"updated":"2014-05-31 12:23:06.000000000","message":"Method is being called from one place, from \u0027self\u0027. Why stack-delete happens:\n\u0027self\u0027 \u003d\u003d BaseInstanceTask\n\u0027self\u0027 !\u003d BaseInstance\n\ni don\u0027t see any issues with code base code at all, and given patch raises a lot of confusion.","commit_id":"1940235acbf16163cb91c56879e99306b231caee"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"3b76d080e1cba7e26667c4d2f339649b86222a38","unresolved":false,"context_lines":[{"line_number":21,"context_line":"  which deletes heat stack, if we have one which has got its compute"},{"line_number":22,"context_line":"  node deleted."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Closes-Bug: #1269013"},{"line_number":25,"context_line":"Change-Id: I300a77b16fc574844b301f05b951014e226e1ee9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1ae5cdf2_9a866eb8","line":24,"updated":"2014-05-31 12:24:57.000000000","message":"Filed bug-report has nothing common with proposed patch. Even more, if compute instance was deleted through nova api - heat should report with error, not Trove.","commit_id":"1940235acbf16163cb91c56879e99306b231caee"}],"trove/instance/models.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"1e151a8ccbbea29bf91a4692f31ca99208811a2a","unresolved":false,"context_lines":[{"line_number":393,"context_line":"            # If stack is not found, its not a problem, it only means"},{"line_number":394,"context_line":"            # Stack has been deleted out of trove code, so just log the"},{"line_number":395,"context_line":"            # error message"},{"line_number":396,"context_line":"            LOG.debug(e)"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"    def delete_async(self):"},{"line_number":399,"context_line":"        deleted_at \u003d datetime.utcnow()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2BLxs%3D","line":396,"updated":"2014-01-29 10:28:35.000000000","message":"this method is overriden by BuildInstanceTask, no need to explicitly implement it here","commit_id":"b389e1f63c548653e775b202818da5825c6bd0d8"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"46a559d66a7268d32e267ea824424d07d4bb30fe","unresolved":false,"context_lines":[{"line_number":393,"context_line":"            # If stack is not found, its not a problem, it only means"},{"line_number":394,"context_line":"            # Stack has been deleted out of trove code, so just log the"},{"line_number":395,"context_line":"            # error message"},{"line_number":396,"context_line":"            LOG.debug(e)"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"    def delete_async(self):"},{"line_number":399,"context_line":"        deleted_at \u003d datetime.utcnow()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F9rd8%3D","line":396,"updated":"2014-02-05 02:19:46.000000000","message":"Can we please refactor out the cleanup code between this and the BuiltIntanceTask, and call the refactored code from both places? Thanks!","commit_id":"fd5333adcb00f24fffca107c3e36b3171007de67"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"cb4dfbbeb894a59289770384d135c7c06d31cbc8","unresolved":false,"context_lines":[{"line_number":393,"context_line":"            # If stack is not found, its not a problem, it only means"},{"line_number":394,"context_line":"            # Stack has been deleted out of trove code, so just log the"},{"line_number":395,"context_line":"            # error message"},{"line_number":396,"context_line":"            LOG.debug(e)"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"    def delete_async(self):"},{"line_number":399,"context_line":"        deleted_at \u003d datetime.utcnow()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXX%2F%2Fv%2Bk%3D","line":396,"updated":"2014-04-28 09:02:17.000000000","message":"Code duplication. This method is being overriden by the taskmanager models.\nhttps://github.com/openstack/trove/blob/master/trove/taskmanager/models.py#L697-L711","commit_id":"fd5333adcb00f24fffca107c3e36b3171007de67"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"f50b764b914b8cbb179c9337ad0acff67966a0ff","unresolved":false,"context_lines":[{"line_number":393,"context_line":"            # If stack is not found, its not a problem, it only means"},{"line_number":394,"context_line":"            # Stack has been deleted out of trove code, so just log the"},{"line_number":395,"context_line":"            # error message"},{"line_number":396,"context_line":"            LOG.debug(e)"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"    def delete_async(self):"},{"line_number":399,"context_line":"        deleted_at \u003d datetime.utcnow()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F9kXI%3D","line":396,"in_reply_to":"AAAAUH%2F9rd8%3D","updated":"2014-02-06 00:08:26.000000000","message":"Sorry if I was unclear with the previous comment. I specifically meant the heat-related cleanup code. Thanks!","commit_id":"fd5333adcb00f24fffca107c3e36b3171007de67"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"0dd8c526d50a5a79341cff960b76d550fce92cde","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from datetime import datetime"},{"line_number":21,"context_line":"from novaclient import exceptions as nova_exceptions"},{"line_number":22,"context_line":"from oslo.config.cfg import NoSuchOptError"},{"line_number":23,"context_line":"from heatclient import exc as heat_exceptions"},{"line_number":24,"context_line":"from trove.common import cfg"},{"line_number":25,"context_line":"from trove.common import exception"},{"line_number":26,"context_line":"from trove.common import template"}],"source_content_type":"text/x-python","patch_set":5,"id":"9ad9bd40_d1d4debe","line":23,"updated":"2014-05-07 06:50:22.000000000","message":"adding this import will require any deployment that does no have heatclient require it now.","commit_id":"b047d60fff46f444351e0a88f29c1b53e6a55fee"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"944c47bf8b363d70917f935c38c6946bea556387","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from datetime import datetime"},{"line_number":21,"context_line":"from novaclient import exceptions as nova_exceptions"},{"line_number":22,"context_line":"from oslo.config.cfg import NoSuchOptError"},{"line_number":23,"context_line":"from heatclient import exc as heat_exceptions"},{"line_number":24,"context_line":"from trove.common import cfg"},{"line_number":25,"context_line":"from trove.common import exception"},{"line_number":26,"context_line":"from trove.common import template"}],"source_content_type":"text/x-python","patch_set":5,"id":"9ad9bd40_979c0611","line":23,"in_reply_to":"9ad9bd40_d1d4debe","updated":"2014-05-07 09:21:10.000000000","message":"heatclient is already available in the taskmanager \n\nhttps://github.com/openstack/trove/blob/master/trove/taskmanager/models.py#L19","commit_id":"b047d60fff46f444351e0a88f29c1b53e6a55fee"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"5e35d73ee28e77b39021e7d5e57322174d765b07","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"CONF \u003d cfg.CONF"},{"line_number":50,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":51,"context_line":"use_heat \u003d CONF.use_heat"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"def filter_ips(ips, regex):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAXX%2F%2FvGI%3D","line":51,"updated":"2014-04-28 11:24:47.000000000","message":"Why does this code migrating from taskmanager? API service works with Taskmanager through RPC API, it\u0027s totally fine that taskamanager handles stack deletion in its own models. I don\u0027t see any strong reasons for doing this type of change.\n\n\nIMHO. This type of change belongs to nothing else than whishlist.","commit_id":"b047d60fff46f444351e0a88f29c1b53e6a55fee"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"30c96c12f56731af8dfb110925fdde40da693e59","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"CONF \u003d cfg.CONF"},{"line_number":50,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":51,"context_line":"use_heat \u003d CONF.use_heat"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"def filter_ips(ips, regex):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAXX%2F%2FvBs%3D","line":51,"in_reply_to":"AAAAXX%2F%2FvGI%3D","updated":"2014-04-28 11:30:26.000000000","message":"as explained in commit message, code is called only through taskmanager, but since taskmanager classes are inherited from classes available in instance/models.py it becomes necessary to include the code here.","commit_id":"b047d60fff46f444351e0a88f29c1b53e6a55fee"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"0dd8c526d50a5a79341cff960b76d550fce92cde","unresolved":false,"context_lines":[{"line_number":521,"context_line":"            LOG.debug(_(\"Deleting Stack for instance %s\") % self.id)"},{"line_number":522,"context_line":"            create_heat_client(self.context"},{"line_number":523,"context_line":"                               ).stacks.delete(\u0027trove-%s\u0027 % self.id)"},{"line_number":524,"context_line":"        except heat_exceptions.HTTPNotFound as e:"},{"line_number":525,"context_line":"            # If stack is not found, its not a problem, it only means"},{"line_number":526,"context_line":"            # Stack has been deleted out of trove code, so just log the"},{"line_number":527,"context_line":"            # error message"}],"source_content_type":"text/x-python","patch_set":5,"id":"9ad9bd40_71f07267","line":524,"updated":"2014-05-07 06:50:22.000000000","message":"Can we make this a generic exception so that its not dependent on heatclient to be installed?","commit_id":"b047d60fff46f444351e0a88f29c1b53e6a55fee"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"995fd70d5faffc8fb110100e2733c639f26e5aeb","unresolved":false,"context_lines":[{"line_number":516,"context_line":"                               deltas,"},{"line_number":517,"context_line":"                               _delete_resources)"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"    def _delete_heat_stack(self):"},{"line_number":520,"context_line":"        try:"},{"line_number":521,"context_line":"            LOG.debug(_(\"Deleting Stack for instance %s\") % self.id)"},{"line_number":522,"context_line":"            create_heat_client(self.context"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_1acdfe31","line":519,"updated":"2014-05-31 12:19:36.000000000","message":"i totally disagree with implementing stack deletion in instance models!\nTrove now deletes compute instance from taskmanager models, why should stack deletion be so uniq to be deleted inside instance models?\nSo, please move it to taskmanager/models.py","commit_id":"1940235acbf16163cb91c56879e99306b231caee"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"995fd70d5faffc8fb110100e2733c639f26e5aeb","unresolved":false,"context_lines":[{"line_number":528,"context_line":"            LOG.debug(e)"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"    def _delete_resources(self, deleted_at):"},{"line_number":531,"context_line":"            if use_heat:"},{"line_number":532,"context_line":"                self._delete_heat_stack()"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"    def delete_async(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_5ad786c1","line":531,"updated":"2014-05-31 12:19:36.000000000","message":"OOP gives you an ability to override any method of parent classes. So, why do you do it here? Why can\u0027y you just implement this method inside BaseInstanceTask?","commit_id":"1940235acbf16163cb91c56879e99306b231caee"}]}
