)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":28695,"name":"Bartosz Zurkowski","email":"b.zurkowski@samsung.com","username":"b.zurkowski"},"change_message_id":"a04f6691af240d4b041bdc5f0b033ef51678dd86","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    when slave_id is given"},{"line_number":11,"context_line":"  * catch ConnectionError exception in verify_swift_auth_token"},{"line_number":12,"context_line":"  * add Swift token verification to guestagent before snapshot"},{"line_number":13,"context_line":"  * add new exception representing Swift connection error"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1395523"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5f7c97a3_4a51a8d4","line":13,"updated":"2018-07-31 07:21:54.000000000","message":"Please, add some note about setting missing fault for instance when replication snapshot fails.","commit_id":"0d13aa7cf58f5e603f871536fa801e73792e39ff"},{"author":{"_account_id":28646,"name":"Dariusz Krol","email":"d.krol@samsung.com","username":"dkrol"},"change_message_id":"5254bddecbe29d90105f39ea6b8b7787239df16d","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    when slave_id is given"},{"line_number":11,"context_line":"  * catch ConnectionError exception in verify_swift_auth_token"},{"line_number":12,"context_line":"  * add Swift token verification to guestagent before snapshot"},{"line_number":13,"context_line":"  * add new exception representing Swift connection error"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1395523"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5f7c97a3_4ce9ba16","line":13,"in_reply_to":"5f7c97a3_4a51a8d4","updated":"2018-08-02 09:25:51.000000000","message":"Done","commit_id":"0d13aa7cf58f5e603f871536fa801e73792e39ff"}],"trove/backup/models.py":[{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"69e869c105be54b2bf85149e635fbb513b961087","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from trove.backup.state import BackupState"},{"line_number":23,"context_line":"from trove.common import cfg"},{"line_number":24,"context_line":"from trove.common import exception"},{"line_number":25,"context_line":"from trove.common import utils"},{"line_number":26,"context_line":"from trove.common.i18n import _"},{"line_number":27,"context_line":"from trove.common.remote import create_swift_client"},{"line_number":28,"context_line":"from trove.datastore import models as datastore_models"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_6cb37fed","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":30},"updated":"2018-07-30 02:49:55.000000000","message":"unrelevant change, also cause PEP8 issues:\n\n2018-07-27 12:41:59.226638 | ubuntu-xenial | ./trove/backup/models.py:26:1: H306  imports not in alphabetical order (trove.common.utils, trove.common.i18n._)\n2018-07-27 12:41:59.226818 | ubuntu-xenial | from trove.common.i18n import _\n2018-07-27 12:41:59.226855 | ubuntu-xenial | ^","commit_id":"9750bc9ce3d2f8c951b0fdda18a0a82389133069"},{"author":{"_account_id":28646,"name":"Dariusz Krol","email":"d.krol@samsung.com","username":"dkrol"},"change_message_id":"f4018e09c579362d72b9c63f5e115282a69261a1","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from trove.backup.state import BackupState"},{"line_number":23,"context_line":"from trove.common import cfg"},{"line_number":24,"context_line":"from trove.common import exception"},{"line_number":25,"context_line":"from trove.common import utils"},{"line_number":26,"context_line":"from trove.common.i18n import _"},{"line_number":27,"context_line":"from trove.common.remote import create_swift_client"},{"line_number":28,"context_line":"from trove.datastore import models as datastore_models"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_abd894ec","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":30},"in_reply_to":"5f7c97a3_6cb37fed","updated":"2018-07-30 13:52:38.000000000","message":"Done","commit_id":"9750bc9ce3d2f8c951b0fdda18a0a82389133069"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"69e869c105be54b2bf85149e635fbb513b961087","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                                          state\u003dBackupState.NEW,"},{"line_number":105,"context_line":"                                          instance_id\u003dinstance_id,"},{"line_number":106,"context_line":"                                          parent_id\u003dparent_id or"},{"line_number":107,"context_line":"                                                    last_backup_id,"},{"line_number":108,"context_line":"                                          datastore_version_id\u003dds_version.id,"},{"line_number":109,"context_line":"                                          deleted\u003dFalse)"},{"line_number":110,"context_line":"            except exception.InvalidModelError as ex:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_ecc6af4a","line":107,"updated":"2018-07-30 02:49:55.000000000","message":"ditto:\n\n2018-07-27 12:41:59.227036 | ubuntu-xenial | ./trove/backup/models.py:107:53: E127 continuation line over-indented for visual indent\n2018-07-27 12:41:59.227185 | ubuntu-xenial |                                                     last_backup_id,\n2018-07-27 12:41:59.227308 | ubuntu-xenial |                                                     ^","commit_id":"9750bc9ce3d2f8c951b0fdda18a0a82389133069"},{"author":{"_account_id":28646,"name":"Dariusz Krol","email":"d.krol@samsung.com","username":"dkrol"},"change_message_id":"f4018e09c579362d72b9c63f5e115282a69261a1","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                                          state\u003dBackupState.NEW,"},{"line_number":105,"context_line":"                                          instance_id\u003dinstance_id,"},{"line_number":106,"context_line":"                                          parent_id\u003dparent_id or"},{"line_number":107,"context_line":"                                                    last_backup_id,"},{"line_number":108,"context_line":"                                          datastore_version_id\u003dds_version.id,"},{"line_number":109,"context_line":"                                          deleted\u003dFalse)"},{"line_number":110,"context_line":"            except exception.InvalidModelError as ex:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_4beb007a","line":107,"in_reply_to":"5f7c97a3_ecc6af4a","updated":"2018-07-30 13:52:38.000000000","message":"Done","commit_id":"9750bc9ce3d2f8c951b0fdda18a0a82389133069"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"69e869c105be54b2bf85149e635fbb513b961087","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                           }"},{"line_number":125,"context_line":"            api.API(context).create_backup(backup_info, instance_id)"},{"line_number":126,"context_line":"            return db_info"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        return run_with_quotas(context.tenant,"},{"line_number":129,"context_line":"                               {\u0027backups\u0027: 1},"},{"line_number":130,"context_line":"                               _create_resources)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_0cc44b40","line":127,"updated":"2018-07-30 02:49:55.000000000","message":"Also unrelevent.","commit_id":"9750bc9ce3d2f8c951b0fdda18a0a82389133069"},{"author":{"_account_id":28646,"name":"Dariusz Krol","email":"d.krol@samsung.com","username":"dkrol"},"change_message_id":"f4018e09c579362d72b9c63f5e115282a69261a1","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                           }"},{"line_number":125,"context_line":"            api.API(context).create_backup(backup_info, instance_id)"},{"line_number":126,"context_line":"            return db_info"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        return run_with_quotas(context.tenant,"},{"line_number":129,"context_line":"                               {\u0027backups\u0027: 1},"},{"line_number":130,"context_line":"                               _create_resources)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_6bf03c67","line":127,"in_reply_to":"5f7c97a3_0cc44b40","updated":"2018-07-30 13:52:38.000000000","message":"Done","commit_id":"9750bc9ce3d2f8c951b0fdda18a0a82389133069"},{"author":{"_account_id":28695,"name":"Bartosz Zurkowski","email":"b.zurkowski@samsung.com","username":"b.zurkowski"},"change_message_id":"99864ea7a077efd0faf0aa8d0d84a39316ffa625","unresolved":false,"context_lines":[{"line_number":293,"context_line":"        except exception.NoServiceEndpoint:"},{"line_number":294,"context_line":"            raise exception.SwiftNotFound(tenant_id\u003dcontext.tenant)"},{"line_number":295,"context_line":"        except ConnectionError:"},{"line_number":296,"context_line":"            raise exception.SwiftNotFound(\u0027Cannot connect to Swift serivce\u0027)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"def persisted_models():"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_f17f8366","line":296,"updated":"2018-07-27 15:11:44.000000000","message":"Consider adding new exception class e.g. SwiftConnectionError and include exception message there. You could also map this new exception to HTTP code 500 in wsgi module.","commit_id":"9750bc9ce3d2f8c951b0fdda18a0a82389133069"},{"author":{"_account_id":28646,"name":"Dariusz Krol","email":"d.krol@samsung.com","username":"dkrol"},"change_message_id":"f4018e09c579362d72b9c63f5e115282a69261a1","unresolved":false,"context_lines":[{"line_number":293,"context_line":"        except exception.NoServiceEndpoint:"},{"line_number":294,"context_line":"            raise exception.SwiftNotFound(tenant_id\u003dcontext.tenant)"},{"line_number":295,"context_line":"        except ConnectionError:"},{"line_number":296,"context_line":"            raise exception.SwiftNotFound(\u0027Cannot connect to Swift serivce\u0027)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"def persisted_models():"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_0be18897","line":296,"in_reply_to":"5f7c97a3_f17f8366","updated":"2018-07-30 13:52:38.000000000","message":"Done","commit_id":"9750bc9ce3d2f8c951b0fdda18a0a82389133069"},{"author":{"_account_id":22608,"name":"zhanggang","email":"zhanggang@cmss.chinamobile.com","username":"zhanggang"},"change_message_id":"c6ec325bf1c06282a70de0883d7d70eb0c0957a2","unresolved":false,"context_lines":[{"line_number":291,"context_line":"            raise exception.SwiftAuthError(tenant_id\u003dcontext.tenant)"},{"line_number":292,"context_line":"        except exception.NoServiceEndpoint:"},{"line_number":293,"context_line":"            raise exception.SwiftNotFound(tenant_id\u003dcontext.tenant)"},{"line_number":294,"context_line":"        except ConnectionError:"},{"line_number":295,"context_line":"            raise exception.SwiftConnectionError()"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_4b698523","line":294,"range":{"start_line":294,"start_character":30,"end_line":294,"end_character":31},"updated":"2018-08-01 14:57:31.000000000","message":"Is there any other exception that will meet in the future?\nor we can add \"except Exception: raise xxx\" in the last.","commit_id":"e977135110640e1fb96cf84dc2edd531f8335119"},{"author":{"_account_id":22608,"name":"zhanggang","email":"zhanggang@cmss.chinamobile.com","username":"zhanggang"},"change_message_id":"8244ceb43712e812e619c5d362b638612a74d51e","unresolved":false,"context_lines":[{"line_number":291,"context_line":"            raise exception.SwiftAuthError(tenant_id\u003dcontext.tenant)"},{"line_number":292,"context_line":"        except exception.NoServiceEndpoint:"},{"line_number":293,"context_line":"            raise exception.SwiftNotFound(tenant_id\u003dcontext.tenant)"},{"line_number":294,"context_line":"        except ConnectionError:"},{"line_number":295,"context_line":"            raise exception.SwiftConnectionError()"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_9e6fca5f","line":294,"range":{"start_line":294,"start_character":30,"end_line":294,"end_character":31},"in_reply_to":"5f7c97a3_0bfb7a47","updated":"2018-08-02 09:47:30.000000000","message":"OK, that makes sense.","commit_id":"e977135110640e1fb96cf84dc2edd531f8335119"},{"author":{"_account_id":28646,"name":"Dariusz Krol","email":"d.krol@samsung.com","username":"dkrol"},"change_message_id":"5254bddecbe29d90105f39ea6b8b7787239df16d","unresolved":false,"context_lines":[{"line_number":291,"context_line":"            raise exception.SwiftAuthError(tenant_id\u003dcontext.tenant)"},{"line_number":292,"context_line":"        except exception.NoServiceEndpoint:"},{"line_number":293,"context_line":"            raise exception.SwiftNotFound(tenant_id\u003dcontext.tenant)"},{"line_number":294,"context_line":"        except ConnectionError:"},{"line_number":295,"context_line":"            raise exception.SwiftConnectionError()"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_0bfb7a47","line":294,"range":{"start_line":294,"start_character":30,"end_line":294,"end_character":31},"in_reply_to":"5f7c97a3_4b698523","updated":"2018-08-02 09:25:51.000000000","message":"This change was introduced to make this particular error more readable. I didn\u0027t get any other exceptions during tests. \nIf another exception is raised then it will be propagated without any change. I would not hide the real exception as it makes debugging harder.","commit_id":"e977135110640e1fb96cf84dc2edd531f8335119"}],"trove/instance/models.py":[{"author":{"_account_id":22608,"name":"zhanggang","email":"zhanggang@cmss.chinamobile.com","username":"zhanggang"},"change_message_id":"c6ec325bf1c06282a70de0883d7d70eb0c0957a2","unresolved":false,"context_lines":[{"line_number":923,"context_line":"                target_size \u003d flavor.ephemeral  # ephemeral_Storage"},{"line_number":924,"context_line":""},{"line_number":925,"context_line":"        if backup_id:"},{"line_number":926,"context_line":"            call_args[\u0027backup_id\u0027] \u003d backup_id"},{"line_number":927,"context_line":"            backup_info \u003d Backup.get_by_id(context, backup_id)"},{"line_number":928,"context_line":"            if not backup_info.is_done_successfuly:"},{"line_number":929,"context_line":"                raise exception.BackupNotCompleteError("}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_2bb9a9c3","line":926,"range":{"start_line":926,"start_character":12,"end_line":926,"end_character":21},"updated":"2018-08-01 14:57:31.000000000","message":"A backup restore also need connect with  swift. Maybe need add Backup.verify_swift_auth_token(context) too.","commit_id":"e977135110640e1fb96cf84dc2edd531f8335119"},{"author":{"_account_id":28646,"name":"Dariusz Krol","email":"d.krol@samsung.com","username":"dkrol"},"change_message_id":"5254bddecbe29d90105f39ea6b8b7787239df16d","unresolved":false,"context_lines":[{"line_number":923,"context_line":"                target_size \u003d flavor.ephemeral  # ephemeral_Storage"},{"line_number":924,"context_line":""},{"line_number":925,"context_line":"        if backup_id:"},{"line_number":926,"context_line":"            call_args[\u0027backup_id\u0027] \u003d backup_id"},{"line_number":927,"context_line":"            backup_info \u003d Backup.get_by_id(context, backup_id)"},{"line_number":928,"context_line":"            if not backup_info.is_done_successfuly:"},{"line_number":929,"context_line":"                raise exception.BackupNotCompleteError("}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_2bb0b68c","line":926,"range":{"start_line":926,"start_character":12,"end_line":926,"end_character":21},"in_reply_to":"5f7c97a3_2bb9a9c3","updated":"2018-08-02 09:25:51.000000000","message":"Done","commit_id":"e977135110640e1fb96cf84dc2edd531f8335119"}],"trove/instance/service.py":[{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"69e869c105be54b2bf85149e635fbb513b961087","unresolved":false,"context_lines":[{"line_number":36,"context_line":"from trove.module import models as module_models"},{"line_number":37,"context_line":"from trove.module import views as module_views"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"CONF \u003d cfg.CONF"},{"line_number":41,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_6cd85f23","side":"PARENT","line":39,"updated":"2018-07-30 02:49:55.000000000","message":"unrelevent.","commit_id":"56050fce957072cedf1b0ad2f0d04ad8e2ac75a0"},{"author":{"_account_id":28646,"name":"Dariusz Krol","email":"d.krol@samsung.com","username":"dkrol"},"change_message_id":"f4018e09c579362d72b9c63f5e115282a69261a1","unresolved":false,"context_lines":[{"line_number":36,"context_line":"from trove.module import models as module_models"},{"line_number":37,"context_line":"from trove.module import views as module_views"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"CONF \u003d cfg.CONF"},{"line_number":41,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_6bc7dc12","side":"PARENT","line":39,"in_reply_to":"5f7c97a3_6cd85f23","updated":"2018-07-30 13:52:38.000000000","message":"Done","commit_id":"56050fce957072cedf1b0ad2f0d04ad8e2ac75a0"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"69e869c105be54b2bf85149e635fbb513b961087","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class InstanceController(wsgi.Controller):"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    \"\"\"Controller for instance functionality.\"\"\""},{"line_number":47,"context_line":"    schemas \u003d apischema.instance.copy()"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_8cddbb14","side":"PARENT","line":45,"updated":"2018-07-30 02:49:55.000000000","message":"ditto.","commit_id":"56050fce957072cedf1b0ad2f0d04ad8e2ac75a0"},{"author":{"_account_id":28646,"name":"Dariusz Krol","email":"d.krol@samsung.com","username":"dkrol"},"change_message_id":"f4018e09c579362d72b9c63f5e115282a69261a1","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class InstanceController(wsgi.Controller):"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    \"\"\"Controller for instance functionality.\"\"\""},{"line_number":47,"context_line":"    schemas \u003d apischema.instance.copy()"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_2bcd642e","side":"PARENT","line":45,"in_reply_to":"5f7c97a3_8cddbb14","updated":"2018-07-30 13:52:38.000000000","message":"Done","commit_id":"56050fce957072cedf1b0ad2f0d04ad8e2ac75a0"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"69e869c105be54b2bf85149e635fbb513b961087","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from oslo_log import log as logging"},{"line_number":17,"context_line":"from oslo_utils import strutils"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import trove.common.apischema as apischema"},{"line_number":20,"context_line":"from trove.backup import views as backup_views"},{"line_number":21,"context_line":"from trove.backup.models import Backup as backup_model"},{"line_number":22,"context_line":"from trove.common import cfg"},{"line_number":23,"context_line":"from trove.common import exception"},{"line_number":24,"context_line":"from trove.common import notification"},{"line_number":25,"context_line":"from trove.common import pagination"},{"line_number":26,"context_line":"from trove.common import policy"},{"line_number":27,"context_line":"from trove.common import utils"},{"line_number":28,"context_line":"from trove.common import wsgi"},{"line_number":29,"context_line":"from trove.common.i18n import _"},{"line_number":30,"context_line":"from trove.common.notification import StartNotification"},{"line_number":31,"context_line":"from trove.common.remote import create_guest_client"},{"line_number":32,"context_line":"from trove.datastore import models as datastore_models"},{"line_number":33,"context_line":"from trove.extensions.mysql.common import populate_users"},{"line_number":34,"context_line":"from trove.extensions.mysql.common import populate_validated_databases"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_ccb973c5","line":31,"range":{"start_line":19,"start_character":0,"end_line":31,"end_character":51},"updated":"2018-07-30 02:49:55.000000000","message":"2018-07-27 12:42:21.932592 | ubuntu-xenial | ./trove/instance/service.py:20:1: H306  imports not in alphabetical order (trove.common.apischema, trove.backup.views)\n2018-07-27 12:42:21.932825 | ubuntu-xenial | from trove.backup import views as backup_views\n2018-07-27 12:42:21.932875 | ubuntu-xenial | ^\n2018-07-27 12:42:21.933155 | ubuntu-xenial | ./trove/instance/service.py:21:1: H306  imports not in alphabetical order (trove.backup.views, trove.backup.models.backup)\n2018-07-27 12:42:21.933310 | ubuntu-xenial | from trove.backup.models import Backup as backup_model\n2018-07-27 12:42:21.933357 | ubuntu-xenial | ^\n2018-07-27 12:42:21.933621 | ubuntu-xenial | ./trove/instance/service.py:29:1: H306  imports not in alphabetical order (trove.common.wsgi, trove.common.i18n._)\n2018-07-27 12:42:21.933729 | ubuntu-xenial | from trove.common.i18n import _\n2018-07-27 12:42:21.933776 | ubuntu-xenial | ^","commit_id":"9750bc9ce3d2f8c951b0fdda18a0a82389133069"},{"author":{"_account_id":28646,"name":"Dariusz Krol","email":"d.krol@samsung.com","username":"dkrol"},"change_message_id":"f4018e09c579362d72b9c63f5e115282a69261a1","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from oslo_log import log as logging"},{"line_number":17,"context_line":"from oslo_utils import strutils"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import trove.common.apischema as apischema"},{"line_number":20,"context_line":"from trove.backup import views as backup_views"},{"line_number":21,"context_line":"from trove.backup.models import Backup as backup_model"},{"line_number":22,"context_line":"from trove.common import cfg"},{"line_number":23,"context_line":"from trove.common import exception"},{"line_number":24,"context_line":"from trove.common import notification"},{"line_number":25,"context_line":"from trove.common import pagination"},{"line_number":26,"context_line":"from trove.common import policy"},{"line_number":27,"context_line":"from trove.common import utils"},{"line_number":28,"context_line":"from trove.common import wsgi"},{"line_number":29,"context_line":"from trove.common.i18n import _"},{"line_number":30,"context_line":"from trove.common.notification import StartNotification"},{"line_number":31,"context_line":"from trove.common.remote import create_guest_client"},{"line_number":32,"context_line":"from trove.datastore import models as datastore_models"},{"line_number":33,"context_line":"from trove.extensions.mysql.common import populate_users"},{"line_number":34,"context_line":"from trove.extensions.mysql.common import populate_validated_databases"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_8b46f8a7","line":31,"range":{"start_line":19,"start_character":0,"end_line":31,"end_character":51},"in_reply_to":"5f7c97a3_ccb973c5","updated":"2018-07-30 13:52:38.000000000","message":"Done","commit_id":"9750bc9ce3d2f8c951b0fdda18a0a82389133069"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"69e869c105be54b2bf85149e635fbb513b961087","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            \u0027restart\u0027: self._action_restart,"},{"line_number":85,"context_line":"            \u0027resize\u0027: self._action_resize,"},{"line_number":86,"context_line":"            \u0027promote_to_replica_source\u0027:"},{"line_number":87,"context_line":"                self._action_promote_to_replica_source,"},{"line_number":88,"context_line":"            \u0027eject_replica_source\u0027: self._action_eject_replica_source,"},{"line_number":89,"context_line":"            \u0027reset_status\u0027: self._action_reset_status,"},{"line_number":90,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_0cc9ab4f","line":87,"updated":"2018-07-30 02:49:55.000000000","message":"Though this seems a good one, but still it\u0027s unrelevent.","commit_id":"9750bc9ce3d2f8c951b0fdda18a0a82389133069"},{"author":{"_account_id":28646,"name":"Dariusz Krol","email":"d.krol@samsung.com","username":"dkrol"},"change_message_id":"f4018e09c579362d72b9c63f5e115282a69261a1","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            \u0027restart\u0027: self._action_restart,"},{"line_number":85,"context_line":"            \u0027resize\u0027: self._action_resize,"},{"line_number":86,"context_line":"            \u0027promote_to_replica_source\u0027:"},{"line_number":87,"context_line":"                self._action_promote_to_replica_source,"},{"line_number":88,"context_line":"            \u0027eject_replica_source\u0027: self._action_eject_replica_source,"},{"line_number":89,"context_line":"            \u0027reset_status\u0027: self._action_reset_status,"},{"line_number":90,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_cbd5d0b9","line":87,"in_reply_to":"5f7c97a3_0cc9ab4f","updated":"2018-07-30 13:52:38.000000000","message":"Done","commit_id":"9750bc9ce3d2f8c951b0fdda18a0a82389133069"},{"author":{"_account_id":28695,"name":"Bartosz Zurkowski","email":"b.zurkowski@samsung.com","username":"b.zurkowski"},"change_message_id":"99864ea7a077efd0faf0aa8d0d84a39316ffa625","unresolved":false,"context_lines":[{"line_number":329,"context_line":"                                           body[\u0027instance\u0027].get(\u0027slave_of\u0027))"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        if slave_of_id:"},{"line_number":332,"context_line":"            models.Backup.verify_swift_auth_token(context)"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"        replica_count \u003d body[\u0027instance\u0027].get(\u0027replica_count\u0027)"},{"line_number":335,"context_line":"        locality \u003d body[\u0027instance\u0027].get(\u0027locality\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_51f757d2","line":332,"updated":"2018-07-27 15:11:44.000000000","message":"I would recommend moving this check into model scope since controller performs only initial input validation. Domain-related operations should be handled in model layer.","commit_id":"9750bc9ce3d2f8c951b0fdda18a0a82389133069"},{"author":{"_account_id":28646,"name":"Dariusz Krol","email":"d.krol@samsung.com","username":"dkrol"},"change_message_id":"f4018e09c579362d72b9c63f5e115282a69261a1","unresolved":false,"context_lines":[{"line_number":329,"context_line":"                                           body[\u0027instance\u0027].get(\u0027slave_of\u0027))"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        if slave_of_id:"},{"line_number":332,"context_line":"            models.Backup.verify_swift_auth_token(context)"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"        replica_count \u003d body[\u0027instance\u0027].get(\u0027replica_count\u0027)"},{"line_number":335,"context_line":"        locality \u003d body[\u0027instance\u0027].get(\u0027locality\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_ebd20ccf","line":332,"in_reply_to":"5f7c97a3_51f757d2","updated":"2018-07-30 13:52:38.000000000","message":"Done","commit_id":"9750bc9ce3d2f8c951b0fdda18a0a82389133069"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"69e869c105be54b2bf85149e635fbb513b961087","unresolved":false,"context_lines":[{"line_number":462,"context_line":"        LOG.debug(\"Default config for instance %(instance_id)s is %(config)s\","},{"line_number":463,"context_line":"                  {\u0027instance_id\u0027: id, \u0027config\u0027: config})"},{"line_number":464,"context_line":"        return wsgi.Result(views.DefaultConfigurationView("},{"line_number":465,"context_line":"            config).data(), 200)"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    def guest_log_list(self, req, tenant_id, id):"},{"line_number":468,"context_line":"        \"\"\"Return all information about all logs for an instance.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_4cfc8370","line":465,"updated":"2018-07-30 02:49:55.000000000","message":"ditto.","commit_id":"9750bc9ce3d2f8c951b0fdda18a0a82389133069"},{"author":{"_account_id":28646,"name":"Dariusz Krol","email":"d.krol@samsung.com","username":"dkrol"},"change_message_id":"f4018e09c579362d72b9c63f5e115282a69261a1","unresolved":false,"context_lines":[{"line_number":462,"context_line":"        LOG.debug(\"Default config for instance %(instance_id)s is %(config)s\","},{"line_number":463,"context_line":"                  {\u0027instance_id\u0027: id, \u0027config\u0027: config})"},{"line_number":464,"context_line":"        return wsgi.Result(views.DefaultConfigurationView("},{"line_number":465,"context_line":"            config).data(), 200)"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    def guest_log_list(self, req, tenant_id, id):"},{"line_number":468,"context_line":"        \"\"\"Return all information about all logs for an instance.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_8bdb58e9","line":465,"in_reply_to":"5f7c97a3_4cfc8370","updated":"2018-07-30 13:52:38.000000000","message":"Done","commit_id":"9750bc9ce3d2f8c951b0fdda18a0a82389133069"}],"trove/taskmanager/models.py":[{"author":{"_account_id":28695,"name":"Bartosz Zurkowski","email":"b.zurkowski@samsung.com","username":"b.zurkowski"},"change_message_id":"a04f6691af240d4b041bdc5f0b033ef51678dd86","unresolved":false,"context_lines":[{"line_number":629,"context_line":"            e_create_stack \u003d traceback.format_exc()"},{"line_number":630,"context_line":"            # we persist fault details to source instance"},{"line_number":631,"context_line":"            inst_models.save_instance_fault(slave_of_id, e_create_fault,"},{"line_number":632,"context_line":"                                            e_create_stack)"},{"line_number":633,"context_line":""},{"line_number":634,"context_line":"            # if the delete of the \u0027bad\u0027 backup fails, it\u0027ll mask the"},{"line_number":635,"context_line":"            # create exception, so we trap it here"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_2ad54c47","line":632,"updated":"2018-07-31 07:21:54.000000000","message":"It looks good to me.\n\nEventually I would consider setting fault in \"get_replication_snapshot\" method since it is operating directly on instance and is handling exceptions.","commit_id":"0d13aa7cf58f5e603f871536fa801e73792e39ff"}]}
