)]}'
{"trove/cluster/models.py":[{"author":{"_account_id":20559,"name":"Dmitriy Uvarenkov","email":"vitarcheg@gmail.com","username":"duvarenkov"},"change_message_id":"60f81eec394db72364241185f8d60991c4d15ff5","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from trove.common import cfg"},{"line_number":22,"context_line":"from trove.common import exception"},{"line_number":23,"context_line":"from trove.common.i18n import _"},{"line_number":24,"context_line":"from trove.common.notification import DBaaSClusterGrow, DBaaSClusterShrink, \\"},{"line_number":25,"context_line":"    DBaaSClusterResetStatus"},{"line_number":26,"context_line":"from trove.common.notification import StartNotification"},{"line_number":27,"context_line":"from trove.common import remote"},{"line_number":28,"context_line":"from trove.common.strategies.cluster import strategy"}],"source_content_type":"text/x-python","patch_set":5,"id":"dada55a8_1c115c5e","line":25,"range":{"start_line":24,"start_character":38,"end_line":25,"end_character":27},"updated":"2016-07-22 11:53:54.000000000","message":"It\u0027s better to avoid using \"\\\". You can use \nfrom trove.common.notification import (DBaaSClusterGrow, DBaaSClusterShrink, DBaaSClusterResetStatus)","commit_id":"64dece0060a94cf30f1ed8af21607663b964d744"},{"author":{"_account_id":21668,"name":"Ali Asgar Adil","email":"aadil@tesora.com","username":"aliaadil"},"change_message_id":"cc0406206e504fba9f7f1f9f1f7494d56de41af2","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from trove.common import cfg"},{"line_number":22,"context_line":"from trove.common import exception"},{"line_number":23,"context_line":"from trove.common.i18n import _"},{"line_number":24,"context_line":"from trove.common.notification import DBaaSClusterGrow, DBaaSClusterShrink, \\"},{"line_number":25,"context_line":"    DBaaSClusterResetStatus"},{"line_number":26,"context_line":"from trove.common.notification import StartNotification"},{"line_number":27,"context_line":"from trove.common import remote"},{"line_number":28,"context_line":"from trove.common.strategies.cluster import strategy"}],"source_content_type":"text/x-python","patch_set":5,"id":"dada55a8_af73a214","line":25,"range":{"start_line":24,"start_character":38,"end_line":25,"end_character":27},"in_reply_to":"dada55a8_1c115c5e","updated":"2016-07-22 15:55:24.000000000","message":"Sure, done!","commit_id":"64dece0060a94cf30f1ed8af21607663b964d744"}],"trove/instance/models.py":[{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"323129dd0a27f7acd60890ebacec453e13138a1f","unresolved":false,"context_lines":[{"line_number":690,"context_line":"            self._server_group_loaded \u003d True"},{"line_number":691,"context_line":"        return self._server_group"},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"    def reset_status(self):"},{"line_number":694,"context_line":"        if self.is_building or self.is_error:"},{"line_number":695,"context_line":"            LOG.info(_LI(\"Resetting the status to NONE on instance %s.\"),"},{"line_number":696,"context_line":"                     self.id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_4241ec38","line":693,"updated":"2016-08-03 16:39:09.000000000","message":"I am still not certain whether it is safe to reset task and state on an instance in ERROR.\n\nAn instance may be in ERROR because the task failed. Such instance is in an undetermined state but may still have heartbeat.\nIt may flip active but we/operator (Trove) have no idea what state it is in and therefore cannot guarantee its functions.\n\nResetting an instance stuck in BUILD should be safe, because it won\u0027t be sending HB and hence flips to ERROR.\n\nResetting from ERROR may be more tricky certainly in the case when there is still a task in process. It should be relatively safe if we know the instance flipped from BUILD to ERROR though (i.e. it never had HB).\n\nSimilarly with clusters. For instance, I would not feel very safe flipping a cluster that failed in the middle of rebalancing...\n\nI also don\u0027t know how operators would look at this. Maybe it would more acceptable if we could somehow mark the instance/cluster as tainted...? :/","commit_id":"e1ff5b412c73627eed00e5c7e38b76db75738476"}],"trove/instance/service.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"acb598cd65a0ce83326f8eb10be0b3296d610497","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        with StartNotification(context, instance_id\u003dinstance.id):"},{"line_number":171,"context_line":"            instance.reset_status()"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"            LOG.debug(\"Failing backups for instance %s.\" % instance.id)"},{"line_number":174,"context_line":"            backup_model.fail_for_instance(instance.id)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        return wsgi.Result(None, 202)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_7158bf56","line":173,"updated":"2016-08-01 15:09:15.000000000","message":"Why is this being done?","commit_id":"e1ff5b412c73627eed00e5c7e38b76db75738476"},{"author":{"_account_id":21668,"name":"Ali Asgar Adil","email":"aadil@tesora.com","username":"aliaadil"},"change_message_id":"3455a025222bb844caf28cbfd7ed60915456d6a4","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        with StartNotification(context, instance_id\u003dinstance.id):"},{"line_number":171,"context_line":"            instance.reset_status()"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"            LOG.debug(\"Failing backups for instance %s.\" % instance.id)"},{"line_number":174,"context_line":"            backup_model.fail_for_instance(instance.id)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        return wsgi.Result(None, 202)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_8f3356f6","line":173,"in_reply_to":"bacf61ea_7158bf56","updated":"2016-08-02 13:54:41.000000000","message":"Since we are resetting the status of the instance to ERROR we want to ensure that any backups that are not completed be failed.","commit_id":"e1ff5b412c73627eed00e5c7e38b76db75738476"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"8529344133f8c87169bfdb0ee2247b03aaa920e9","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        with StartNotification(context, instance_id\u003dinstance.id):"},{"line_number":171,"context_line":"            instance.reset_status()"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"            LOG.debug(\"Failing backups for instance %s.\" % instance.id)"},{"line_number":174,"context_line":"            backup_model.fail_for_instance(instance.id)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        return wsgi.Result(None, 202)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_12e789ad","line":173,"in_reply_to":"bacf61ea_8f3356f6","updated":"2016-08-02 14:19:29.000000000","message":"Thanks, I didn\u0027t realize that fail_for_instance() would filter running states.\n\nhttps://github.com/openstack/trove/blob/master/trove/backup/models.py#L235\n\nThe name suggested that it would fail all backups. Thanks for the clarification.","commit_id":"e1ff5b412c73627eed00e5c7e38b76db75738476"}],"trove/tests/scenario/groups/instance_create_group.py":[{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"9c50ff09f69e4e0dd51117adfc3d18b93f13dd25","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        self.test_runner.run_initial_configuration_delete()"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"@test(depends_on_groups\u003d[groups.INST_INIT_DELETE_WAIT],"},{"line_number":122,"context_line":"      groups\u003d[GROUP, groups.INST_INIT_FORCE_DELETE])"},{"line_number":123,"context_line":"class InstanceInitForceDeleteGroup(TestGroup):"},{"line_number":124,"context_line":"    \"\"\"Test Initialized Instance Force Delete functionality.\"\"\""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def __init__(self):"},{"line_number":127,"context_line":"        super(InstanceInitForceDeleteGroup, self).__init__("},{"line_number":128,"context_line":"            InstanceCreateRunnerFactory.instance())"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    @test"},{"line_number":131,"context_line":"    def create_build_instance(self):"},{"line_number":132,"context_line":"        \"\"\"Create an instance in BUILD state.\"\"\""},{"line_number":133,"context_line":"        self.test_runner.run_create_build_instance()"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"@test(depends_on_groups\u003d[groups.INST_INIT_FORCE_DELETE],"},{"line_number":137,"context_line":"      groups\u003d[GROUP, groups.INST_INIT_FORCE_DELETE_WAIT])"},{"line_number":138,"context_line":"class InstanceInitForceDeleteWaitGroup(TestGroup):"},{"line_number":139,"context_line":"    \"\"\"Test that BUILD Instance Force Delete Completes.\"\"\""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def __init__(self):"},{"line_number":142,"context_line":"        super(InstanceInitForceDeleteWaitGroup, self).__init__("},{"line_number":143,"context_line":"            InstanceCreateRunnerFactory.instance())"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    @test"},{"line_number":146,"context_line":"    def delete_build_instance(self):"},{"line_number":147,"context_line":"        \"\"\"Delete the instance in BUILD state\"\"\""},{"line_number":148,"context_line":"        self.test_runner.run_delete_build_instance()"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a89bdaa_f29a766d","line":148,"range":{"start_line":121,"start_character":0,"end_line":148,"end_character":52},"updated":"2016-09-06 22:06:25.000000000","message":"I think these should eventually be moved out into another file (or at least a class) so that the \u0027instance create\u0027 is kept clean, but the init stuff should be moved too so we can do it all at the same time.","commit_id":"d7a45976611206a2de9027598cdaaf9ed6a8fc03"}],"trove/tests/scenario/runners/instance_create_runners.py":[{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"323129dd0a27f7acd60890ebacec453e13138a1f","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        self.assert_client_code(expected_http_code)"},{"line_number":296,"context_line":"        self.build_inst_id \u003d inst.id"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def run_wait_for_build_instance(self, expected_states\u003d[\u0027BUILD\u0027]):"},{"line_number":299,"context_line":"        if self.build_inst_id:"},{"line_number":300,"context_line":"            self.assert_all_instance_states([self.build_inst_id],"},{"line_number":301,"context_line":"                                            expected_states)"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def run_delete_build_instance(self, expected_http_code\u003d202):"},{"line_number":304,"context_line":"        if self.build_inst_id:"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_1c2bdaec","line":301,"range":{"start_line":298,"start_character":4,"end_line":301,"end_character":60},"updated":"2016-08-03 16:39:09.000000000","message":"I don\u0027t think this is needed. We already know the instance is in the BUILD state from \u0027run_create_build_error_instance\u0027. This would just poll the status once more...","commit_id":"e1ff5b412c73627eed00e5c7e38b76db75738476"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"9c50ff09f69e4e0dd51117adfc3d18b93f13dd25","unresolved":false,"context_lines":[{"line_number":352,"context_line":"        self.assert_client_code(expected_http_code)"},{"line_number":353,"context_line":"        self.build_inst_id \u003d inst.id"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"    def run_delete_build_instance(self, expected_http_code\u003d202):"},{"line_number":356,"context_line":"        if self.build_inst_id:"},{"line_number":357,"context_line":"            self.auth_client.instances.force_delete(self.build_inst_id)"},{"line_number":358,"context_line":"            self.assert_client_code(expected_http_code)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a89bdaa_d2f01294","line":358,"range":{"start_line":355,"start_character":0,"end_line":358,"end_character":55},"updated":"2016-09-06 22:06:25.000000000","message":"We should probably have a job that waits for it to be gone as well, but I\u0027m ok having that as a \u0027bug\u0027 or future enhancement.","commit_id":"d7a45976611206a2de9027598cdaaf9ed6a8fc03"}]}
