)]}'
{"smaug/services/protection/plugins/cinder-backup.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5729b7319548bd8cb564af617cee564969af1d14","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from cinderclient import exceptions as c_exc"},{"line_number":14,"context_line":"from oslo_log import log as logging"},{"line_number":15,"context_line":"from smaug.common import constants"},{"line_number":16,"context_line":"from smaug import exception as exc"},{"line_number":17,"context_line":"from smaug.i18n import _"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_a32df2a9","line":14,"updated":"2016-05-10 15:09:29.000000000","message":"Should have a blank line after the oslo_log import to separate the third party imports from the local imports.","commit_id":"69b0dd517ee95f4848e0f4b0a72471999559329e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5729b7319548bd8cb564af617cee564969af1d14","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from smaug.common import constants"},{"line_number":16,"context_line":"from smaug import exception as exc"},{"line_number":17,"context_line":"from smaug.i18n import _"},{"line_number":18,"context_line":"from smaug.services.protection.client_factory import ClientFactory"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_8301ce08","line":18,"updated":"2016-05-10 15:09:29.000000000","message":"Only modules should be imported, not classes.","commit_id":"69b0dd517ee95f4848e0f4b0a72471999559329e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5729b7319548bd8cb564af617cee564969af1d14","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                                   force\u003dparameters.get(\u0027force\u0027))"},{"line_number":71,"context_line":"        backup_id \u003d backup.id"},{"line_number":72,"context_line":"        resource_section.meta_data[\u0027backup_id\u0027] \u003d backup.id"},{"line_number":73,"context_line":"        LOG.info(_(\"Cinder Infra Protect: starting backup id %s\"),"},{"line_number":74,"context_line":"                 backup_id)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        while True:"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_8618bc76","line":73,"updated":"2016-05-10 15:09:29.000000000","message":"Should use _LI() translation marker for INFO level logs.","commit_id":"69b0dd517ee95f4848e0f4b0a72471999559329e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5729b7319548bd8cb564af617cee564969af1d14","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                raise exc.ResourceProtectFailed("},{"line_number":81,"context_line":"                    resource_id\u003dresource.id,"},{"line_number":82,"context_line":"                    resource_type\u003dresource.type,"},{"line_number":83,"context_line":"                    reason\u003d\u0027Error quering backup status\u0027)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"            LOG.info(_(\"Cinder Infra Protect: backup id: %(id)s \""},{"line_number":86,"context_line":"                       \"status: %(status)s\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_265590f9","line":83,"updated":"2016-05-10 15:09:29.000000000","message":"Should have _() translation marker.","commit_id":"69b0dd517ee95f4848e0f4b0a72471999559329e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5729b7319548bd8cb564af617cee564969af1d14","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                    resource_type\u003dresource.type,"},{"line_number":83,"context_line":"                    reason\u003d\u0027Error quering backup status\u0027)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"            LOG.info(_(\"Cinder Infra Protect: backup id: %(id)s \""},{"line_number":86,"context_line":"                       \"status: %(status)s\"),"},{"line_number":87,"context_line":"                     {\u0027id\u0027: backup_id, \u0027status\u0027: backup.status})"},{"line_number":88,"context_line":"            if backup.status \u003d\u003d \u0027available\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_66431843","line":85,"updated":"2016-05-10 15:09:29.000000000","message":"_LI()","commit_id":"69b0dd517ee95f4848e0f4b0a72471999559329e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5729b7319548bd8cb564af617cee564969af1d14","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                resource_section.status \u003d constants.CHECKPOINT_STATUS_AVAILABLE"},{"line_number":90,"context_line":"                return"},{"line_number":91,"context_line":"            elif backup.status \u003d\u003d \u0027creating\u0027:"},{"line_number":92,"context_line":"                yield"},{"line_number":93,"context_line":"            else:"},{"line_number":94,"context_line":"                if backup.status \u003d\u003d \u0027error\u0027:"},{"line_number":95,"context_line":"                    reason \u003d backup.fail_reason"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_06cdecb6","line":92,"updated":"2016-05-10 15:09:29.000000000","message":"Is this actually supposed to be a \"break\"?","commit_id":"69b0dd517ee95f4848e0f4b0a72471999559329e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5729b7319548bd8cb564af617cee564969af1d14","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                if backup.status \u003d\u003d \u0027error\u0027:"},{"line_number":95,"context_line":"                    reason \u003d backup.fail_reason"},{"line_number":96,"context_line":"                else:"},{"line_number":97,"context_line":"                    reason \u003d (\u0027Volume should be creating or available. \u0027"},{"line_number":98,"context_line":"                              \u0027The volume status is: {}\u0027).format(backup.status)"},{"line_number":99,"context_line":"                resource_section.status \u003d constants.CHECKPOINT_STATUS_ERROR"},{"line_number":100,"context_line":"                raise exc.ResourceProtectFailed("}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_c67ac487","line":97,"updated":"2016-05-10 15:09:29.000000000","message":"_()","commit_id":"69b0dd517ee95f4848e0f4b0a72471999559329e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5729b7319548bd8cb564af617cee564969af1d14","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        backup_id \u003d resource_section.meta_data.get(\u0027backup_id\u0027)"},{"line_number":111,"context_line":"        backup \u003d cc.backups.get(backup_id)"},{"line_number":112,"context_line":"        cc.backups.delete(backup)"},{"line_number":113,"context_line":"        LOG.info(_(\"Cinder Infra Delete: deleting backup id %s\"),"},{"line_number":114,"context_line":"                 backup_id)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        while True:"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_c6a124fa","line":113,"updated":"2016-05-10 15:09:29.000000000","message":"_LI()","commit_id":"69b0dd517ee95f4848e0f4b0a72471999559329e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5729b7319548bd8cb564af617cee564969af1d14","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                raise exc.ResourceDeleteFailed("},{"line_number":124,"context_line":"                    resource_id\u003dresource.id,"},{"line_number":125,"context_line":"                    resource_type\u003dresource.type,"},{"line_number":126,"context_line":"                    reason\u003d\u0027Error quering backup delete status\u0027)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"            LOG.info(_(\"Cinder Infra Delete: backup id: %(id)s \""},{"line_number":129,"context_line":"                       \"status: %(status)s\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_e6838854","line":126,"updated":"2016-05-10 15:09:29.000000000","message":"_()","commit_id":"69b0dd517ee95f4848e0f4b0a72471999559329e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5729b7319548bd8cb564af617cee564969af1d14","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                    resource_type\u003dresource.type,"},{"line_number":126,"context_line":"                    reason\u003d\u0027Error quering backup delete status\u0027)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"            LOG.info(_(\"Cinder Infra Delete: backup id: %(id)s \""},{"line_number":129,"context_line":"                       \"status: %(status)s\"),"},{"line_number":130,"context_line":"                     {\u0027id\u0027: backup_id, \u0027status\u0027: backup.status})"},{"line_number":131,"context_line":"            if backup.status \u003d\u003d \u0027deleting\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_a68ea076","line":128,"updated":"2016-05-10 15:09:29.000000000","message":"_LI()","commit_id":"69b0dd517ee95f4848e0f4b0a72471999559329e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5729b7319548bd8cb564af617cee564969af1d14","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                       \"status: %(status)s\"),"},{"line_number":130,"context_line":"                     {\u0027id\u0027: backup_id, \u0027status\u0027: backup.status})"},{"line_number":131,"context_line":"            if backup.status \u003d\u003d \u0027deleting\u0027:"},{"line_number":132,"context_line":"                yield"},{"line_number":133,"context_line":"            else:"},{"line_number":134,"context_line":"                if backup.status \u003d\u003d \u0027error_deleting\u0027:"},{"line_number":135,"context_line":"                    reason \u003d backup.fail_reason"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_66c6789b","line":132,"updated":"2016-05-10 15:09:29.000000000","message":"break?","commit_id":"69b0dd517ee95f4848e0f4b0a72471999559329e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5729b7319548bd8cb564af617cee564969af1d14","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                if backup.status \u003d\u003d \u0027error_deleting\u0027:"},{"line_number":135,"context_line":"                    reason \u003d backup.fail_reason"},{"line_number":136,"context_line":"                else:"},{"line_number":137,"context_line":"                    reason \u003d (\u0027Volume should be deleting or not existent. \u0027"},{"line_number":138,"context_line":"                              \u0027The volume status is: {}\u0027).format(backup.status)"},{"line_number":139,"context_line":"                raise exc.ResourceDeleteFailed("},{"line_number":140,"context_line":"                    resource_id\u003dresource.id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_46c37489","line":137,"updated":"2016-05-10 15:09:29.000000000","message":"_()","commit_id":"69b0dd517ee95f4848e0f4b0a72471999559329e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5729b7319548bd8cb564af617cee564969af1d14","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                raise exc.ResourceRestoreFailed("},{"line_number":158,"context_line":"                    resource_id\u003dresource.id,"},{"line_number":159,"context_line":"                    resource_type\u003dresource.type,"},{"line_number":160,"context_line":"                    reason\u003d\u0027Error quering restore status\u0027)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"            LOG.info(_(\"Cinder Infra Restore: restore id: %(id)s \""},{"line_number":163,"context_line":"                       \"status: %(status)s\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_e638a8a2","line":160,"updated":"2016-05-10 15:09:29.000000000","message":"_()","commit_id":"69b0dd517ee95f4848e0f4b0a72471999559329e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5729b7319548bd8cb564af617cee564969af1d14","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                    resource_type\u003dresource.type,"},{"line_number":160,"context_line":"                    reason\u003d\u0027Error quering restore status\u0027)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"            LOG.info(_(\"Cinder Infra Restore: restore id: %(id)s \""},{"line_number":163,"context_line":"                       \"status: %(status)s\"),"},{"line_number":164,"context_line":"                     {\u0027id\u0027: restore_id, \u0027status\u0027: restore.status})"},{"line_number":165,"context_line":"            if restore.status \u003d\u003d \u0027available\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_0644cc18","line":162,"updated":"2016-05-10 15:09:29.000000000","message":"_LI()","commit_id":"69b0dd517ee95f4848e0f4b0a72471999559329e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5729b7319548bd8cb564af617cee564969af1d14","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                resource_section.status \u003d constants.CHECKPOINT_STATUS_AVAILABLE"},{"line_number":167,"context_line":"                return"},{"line_number":168,"context_line":"            elif restore.status \u003d\u003d \u0027restoring-backup\u0027:"},{"line_number":169,"context_line":"                yield"},{"line_number":170,"context_line":"            else:"},{"line_number":171,"context_line":"                if restore.status \u003d\u003d \u0027error_restoring\u0027:"},{"line_number":172,"context_line":"                    reason \u003d restore.fail_reason"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_664dd83d","line":169,"updated":"2016-05-10 15:09:29.000000000","message":"break?","commit_id":"69b0dd517ee95f4848e0f4b0a72471999559329e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5729b7319548bd8cb564af617cee564969af1d14","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                if restore.status \u003d\u003d \u0027error_restoring\u0027:"},{"line_number":172,"context_line":"                    reason \u003d restore.fail_reason"},{"line_number":173,"context_line":"                else:"},{"line_number":174,"context_line":"                    reason \u003d ("},{"line_number":175,"context_line":"                        \u0027Volume should be restoring-backup or available. The \u0027"},{"line_number":176,"context_line":"                        \u0027volume status is: {}\u0027"},{"line_number":177,"context_line":"                    ).format(restore.status)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_a65340e1","line":174,"updated":"2016-05-10 15:09:29.000000000","message":"_()","commit_id":"69b0dd517ee95f4848e0f4b0a72471999559329e"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"5381bcb3b72cc1012491c258f0cebd4cb2834173","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def _cinder_client(context):"},{"line_number":51,"context_line":"        return client_factory.ClientFactory.create(\u0027cinder\u0027, context)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def activity_protect_worker(self, checkpoint, resource, context,"},{"line_number":54,"context_line":"                                parameters):"},{"line_number":55,"context_line":"        resource_section \u003d checkpoint.get_resource_section(resource.id)"},{"line_number":56,"context_line":"        resource_section.status \u003d constants.CHECKPOINT_STATUS_PROTECTING"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_f05e3575","line":53,"updated":"2016-05-18 08:20:53.000000000","message":"activity_protect_parallel?","commit_id":"e2236773fe40e5ac2232341346a7e0af1585f00a"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"95e60cbe99f02fff03c4383217aa36cef7141103","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def _cinder_client(context):"},{"line_number":51,"context_line":"        return client_factory.ClientFactory.create(\u0027cinder\u0027, context)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def activity_protect_worker(self, checkpoint, resource, context,"},{"line_number":54,"context_line":"                                parameters):"},{"line_number":55,"context_line":"        resource_section \u003d checkpoint.get_resource_section(resource.id)"},{"line_number":56,"context_line":"        resource_section.status \u003d constants.CHECKPOINT_STATUS_PROTECTING"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_82f83c7e","line":53,"in_reply_to":"bab6814e_f05e3575","updated":"2016-05-18 09:34:35.000000000","message":"Still didn\u0027t rebase over the newest Resource Flow patch.","commit_id":"e2236773fe40e5ac2232341346a7e0af1585f00a"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"e35cc5aaa7a56466acb9427a06a6fb4cc1a1d18e","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                resource_section.status \u003d constants.CHECKPOINT_STATUS_AVAILABLE"},{"line_number":91,"context_line":"                return"},{"line_number":92,"context_line":"            elif backup.status \u003d\u003d \u0027creating\u0027:"},{"line_number":93,"context_line":"                yield"},{"line_number":94,"context_line":"            else:"},{"line_number":95,"context_line":"                if backup.status \u003d\u003d \u0027error\u0027:"},{"line_number":96,"context_line":"                    reason \u003d backup.fail_reason"}],"source_content_type":"text/x-python","patch_set":5,"id":"dab17558_e097078e","line":93,"updated":"2016-05-16 07:08:45.000000000","message":"no sleep?","commit_id":"e2236773fe40e5ac2232341346a7e0af1585f00a"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"95e60cbe99f02fff03c4383217aa36cef7141103","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                resource_section.status \u003d constants.CHECKPOINT_STATUS_AVAILABLE"},{"line_number":91,"context_line":"                return"},{"line_number":92,"context_line":"            elif backup.status \u003d\u003d \u0027creating\u0027:"},{"line_number":93,"context_line":"                yield"},{"line_number":94,"context_line":"            else:"},{"line_number":95,"context_line":"                if backup.status \u003d\u003d \u0027error\u0027:"},{"line_number":96,"context_line":"                    reason \u003d backup.fail_reason"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_c249a4d2","line":93,"in_reply_to":"bab6814e_4be4b60c","updated":"2016-05-18 09:34:35.000000000","message":"Correct, but it has nothing do to with this patch.","commit_id":"e2236773fe40e5ac2232341346a7e0af1585f00a"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"293976db58d95032021bc9f48d26e59b36c27e4e","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                resource_section.status \u003d constants.CHECKPOINT_STATUS_AVAILABLE"},{"line_number":91,"context_line":"                return"},{"line_number":92,"context_line":"            elif backup.status \u003d\u003d \u0027creating\u0027:"},{"line_number":93,"context_line":"                yield"},{"line_number":94,"context_line":"            else:"},{"line_number":95,"context_line":"                if backup.status \u003d\u003d \u0027error\u0027:"},{"line_number":96,"context_line":"                    reason \u003d backup.fail_reason"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_4be4b60c","line":93,"in_reply_to":"dab17558_600677cf","updated":"2016-05-18 08:30:47.000000000","message":"Found the code in resource_flow.py. \nHmm, it looks to me that here we define some convention that all iterators in activities will be re-scheduled after some interval if yield in the half.  \nIf this is the case, we\u0027d better claim it in the design doc.","commit_id":"e2236773fe40e5ac2232341346a7e0af1585f00a"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"fafed6c486c34a85af3d8e526d02c8fab2806ffb","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                resource_section.status \u003d constants.CHECKPOINT_STATUS_AVAILABLE"},{"line_number":91,"context_line":"                return"},{"line_number":92,"context_line":"            elif backup.status \u003d\u003d \u0027creating\u0027:"},{"line_number":93,"context_line":"                yield"},{"line_number":94,"context_line":"            else:"},{"line_number":95,"context_line":"                if backup.status \u003d\u003d \u0027error\u0027:"},{"line_number":96,"context_line":"                    reason \u003d backup.fail_reason"}],"source_content_type":"text/x-python","patch_set":5,"id":"dab17558_600677cf","line":93,"in_reply_to":"dab17558_e097078e","updated":"2016-05-16 07:12:23.000000000","message":"No. The ProtectionPlugin just yields, the I/S is responsible for calling `next()` on the generator in intervals.\nYou can view that here: https://review.openstack.org/310386","commit_id":"e2236773fe40e5ac2232341346a7e0af1585f00a"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"479f1655788440f5781a4f4e67d844b3ef17f670","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                    reason \u003d _(\u0027Volume should be creating or available. The \u0027"},{"line_number":99,"context_line":"                               \u0027volume status is: %(status)s\u0027"},{"line_number":100,"context_line":"                               ) % {\u0027status\u0027: backup.status}"},{"line_number":101,"context_line":"                resource_section.status \u003d constants.CHECKPOINT_STATUS_ERROR"},{"line_number":102,"context_line":"                raise exc.ResourceProtectFailed("},{"line_number":103,"context_line":"                    resource_id\u003dresource.id,"},{"line_number":104,"context_line":"                    resource_type\u003dresource.type,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_4bd836f0","line":101,"updated":"2016-05-18 08:38:01.000000000","message":"when to commit update of resource_section to bank?","commit_id":"e2236773fe40e5ac2232341346a7e0af1585f00a"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"95e60cbe99f02fff03c4383217aa36cef7141103","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                    reason \u003d _(\u0027Volume should be creating or available. The \u0027"},{"line_number":99,"context_line":"                               \u0027volume status is: %(status)s\u0027"},{"line_number":100,"context_line":"                               ) % {\u0027status\u0027: backup.status}"},{"line_number":101,"context_line":"                resource_section.status \u003d constants.CHECKPOINT_STATUS_ERROR"},{"line_number":102,"context_line":"                raise exc.ResourceProtectFailed("},{"line_number":103,"context_line":"                    resource_id\u003dresource.id,"},{"line_number":104,"context_line":"                    resource_type\u003dresource.type,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_420c9494","line":101,"in_reply_to":"bab6814e_4bd836f0","updated":"2016-05-18 09:34:35.000000000","message":"Yes, that is missing, I\u0027ll add that.","commit_id":"e2236773fe40e5ac2232341346a7e0af1585f00a"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"479f1655788440f5781a4f4e67d844b3ef17f670","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            try:"},{"line_number":120,"context_line":"                backup \u003d cc.backups.get(backup_id)"},{"line_number":121,"context_line":"            except c_exc.NotFound:"},{"line_number":122,"context_line":"                resource_section.status \u003d constants.CHECKPOINT_STATUS_DELETED"},{"line_number":123,"context_line":"                return"},{"line_number":124,"context_line":"            except Exception:"},{"line_number":125,"context_line":"                raise exc.ResourceDeleteFailed("}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_6b26da17","line":122,"updated":"2016-05-18 08:38:01.000000000","message":"why set resource status as checkpoints status?","commit_id":"e2236773fe40e5ac2232341346a7e0af1585f00a"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"c8ba1775631d036a510fd420313e9bfd2ded914f","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            try:"},{"line_number":120,"context_line":"                backup \u003d cc.backups.get(backup_id)"},{"line_number":121,"context_line":"            except c_exc.NotFound:"},{"line_number":122,"context_line":"                resource_section.status \u003d constants.CHECKPOINT_STATUS_DELETED"},{"line_number":123,"context_line":"                return"},{"line_number":124,"context_line":"            except Exception:"},{"line_number":125,"context_line":"                raise exc.ResourceDeleteFailed("}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_e68e7f26","line":122,"in_reply_to":"bab6814e_6b26da17","updated":"2016-05-18 09:07:47.000000000","message":"when shall we delete all of those resource_section k/v pairs?","commit_id":"e2236773fe40e5ac2232341346a7e0af1585f00a"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"e35cc5aaa7a56466acb9427a06a6fb4cc1a1d18e","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                         \u0027status: %(status)s\u0027),"},{"line_number":132,"context_line":"                     {\u0027id\u0027: backup_id, \u0027status\u0027: backup.status})"},{"line_number":133,"context_line":"            if backup.status \u003d\u003d \u0027deleting\u0027:"},{"line_number":134,"context_line":"                yield"},{"line_number":135,"context_line":"            else:"},{"line_number":136,"context_line":"                if backup.status \u003d\u003d \u0027error_deleting\u0027:"},{"line_number":137,"context_line":"                    reason \u003d backup.fail_reason"}],"source_content_type":"text/x-python","patch_set":5,"id":"dab17558_a0f05ffe","line":134,"updated":"2016-05-16 07:08:45.000000000","message":"same here, should sleep before looping","commit_id":"e2236773fe40e5ac2232341346a7e0af1585f00a"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"fafed6c486c34a85af3d8e526d02c8fab2806ffb","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                         \u0027status: %(status)s\u0027),"},{"line_number":132,"context_line":"                     {\u0027id\u0027: backup_id, \u0027status\u0027: backup.status})"},{"line_number":133,"context_line":"            if backup.status \u003d\u003d \u0027deleting\u0027:"},{"line_number":134,"context_line":"                yield"},{"line_number":135,"context_line":"            else:"},{"line_number":136,"context_line":"                if backup.status \u003d\u003d \u0027error_deleting\u0027:"},{"line_number":137,"context_line":"                    reason \u003d backup.fail_reason"}],"source_content_type":"text/x-python","patch_set":5,"id":"dab17558_602dd745","line":134,"in_reply_to":"dab17558_a0f05ffe","updated":"2016-05-16 07:12:23.000000000","message":"See above.","commit_id":"e2236773fe40e5ac2232341346a7e0af1585f00a"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"e35cc5aaa7a56466acb9427a06a6fb4cc1a1d18e","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                    resource_type\u003dresource.type,"},{"line_number":145,"context_line":"                    reason\u003dreason)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def activity_restore_worker(self, checkpoint, resource, context,"},{"line_number":148,"context_line":"                                parameters):"},{"line_number":149,"context_line":"        resource_section \u003d checkpoint.get_resource_section(resource.id)"},{"line_number":150,"context_line":"        cc \u003d self._cinder_client(context)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dab17558_c0492333","line":147,"updated":"2016-05-16 07:08:45.000000000","message":"restore should not be a worker. For restore procedure, resources should work in the order defined by dependency graph. Say, volume restore should happen before sevr restore. No matter for heat restoration or call server create API directly.","commit_id":"e2236773fe40e5ac2232341346a7e0af1585f00a"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"95e60cbe99f02fff03c4383217aa36cef7141103","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                    resource_type\u003dresource.type,"},{"line_number":145,"context_line":"                    reason\u003dreason)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def activity_restore_worker(self, checkpoint, resource, context,"},{"line_number":148,"context_line":"                                parameters):"},{"line_number":149,"context_line":"        resource_section \u003d checkpoint.get_resource_section(resource.id)"},{"line_number":150,"context_line":"        cc \u003d self._cinder_client(context)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_82779cd3","line":147,"in_reply_to":"bab6814e_0140cd55","updated":"2016-05-18 09:34:35.000000000","message":"zengcheng:\n1. Yes\n2. We can use heat. It has some cons and some pros, this require us to understand them, and if we decide to use heat, that means we depend on heat for every smaug operation. That is a major decision.\n3. If they are not implemented, they will be a \"no-op\" method by I/S.\n\nyinwei: as said above in 3 for zengcheng.","commit_id":"e2236773fe40e5ac2232341346a7e0af1585f00a"},{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"4928bbdb54ddb5462d35ce7763f68fd2ef04d815","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                    resource_type\u003dresource.type,"},{"line_number":145,"context_line":"                    reason\u003dreason)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def activity_restore_worker(self, checkpoint, resource, context,"},{"line_number":148,"context_line":"                                parameters):"},{"line_number":149,"context_line":"        resource_section \u003d checkpoint.get_resource_section(resource.id)"},{"line_number":150,"context_line":"        cc \u003d self._cinder_client(context)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_573a9bce","line":147,"in_reply_to":"dab17558_2018ef1d","updated":"2016-05-18 07:09:22.000000000","message":"3 questions:\n1.Is the order of execution between resources same for restoration and protection?\n2.Don\u0027t we use Heat to restore the resources?\n3.Are the \u0027pre\u0027 and \u0027post\u0027 methods missed?","commit_id":"e2236773fe40e5ac2232341346a7e0af1585f00a"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"c8ba1775631d036a510fd420313e9bfd2ded914f","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                    resource_type\u003dresource.type,"},{"line_number":145,"context_line":"                    reason\u003dreason)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def activity_restore_worker(self, checkpoint, resource, context,"},{"line_number":148,"context_line":"                                parameters):"},{"line_number":149,"context_line":"        resource_section \u003d checkpoint.get_resource_section(resource.id)"},{"line_number":150,"context_line":"        cc \u003d self._cinder_client(context)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_0140cd55","line":147,"in_reply_to":"dab17558_2018ef1d","updated":"2016-05-18 09:07:47.000000000","message":"hmm, it looks to me that heat won\u0027t be used for restore anymore?\nAnd server protection plugin will take care of the concurrency of its own work,like this?\nfirst server_parallel_activity is to recover server from snapshot/image;\nthen server_post_activity will attach all of its volumes to server. same as server vs. network.\nIt looks that for standard openstack API restore, we do the repeat work as heat?","commit_id":"e2236773fe40e5ac2232341346a7e0af1585f00a"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"fafed6c486c34a85af3d8e526d02c8fab2806ffb","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                    resource_type\u003dresource.type,"},{"line_number":145,"context_line":"                    reason\u003dreason)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def activity_restore_worker(self, checkpoint, resource, context,"},{"line_number":148,"context_line":"                                parameters):"},{"line_number":149,"context_line":"        resource_section \u003d checkpoint.get_resource_section(resource.id)"},{"line_number":150,"context_line":"        cc \u003d self._cinder_client(context)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dab17558_2018ef1d","line":147,"in_reply_to":"dab17558_c0492333","updated":"2016-05-16 07:12:23.000000000","message":"If Server ProtectionPlugin has work to do, that requires the volume work to be complete first, it should use the \u0027post\u0027 activity for that.","commit_id":"e2236773fe40e5ac2232341346a7e0af1585f00a"}],"smaug/services/protection/protection_plugins/volume/cinder_backup.py":[{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"3c4123394d5e28798951142e67805bec5624d582","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                    resource_type\u003dresource.type,"},{"line_number":209,"context_line":"                    reason\u003dreason)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"schema[\u0027protect\u0027] \u003d {"},{"line_number":212,"context_line":"    \"title\": \"Cinder Protection Options\","},{"line_number":213,"context_line":"    \"type\": \"object\","},{"line_number":214,"context_line":"    \"properties\": {"},{"line_number":215,"context_line":"        \"backup_name\": {"},{"line_number":216,"context_line":"            \"type\": \"string\","},{"line_number":217,"context_line":"            \"title\": \"Backup Name\","},{"line_number":218,"context_line":"            \"description\": \"The name of the backup.\""},{"line_number":219,"context_line":"        },"},{"line_number":220,"context_line":"        \"backup_mode\": {"},{"line_number":221,"context_line":"            \"type\": \"string\","},{"line_number":222,"context_line":"            \"title\": \"Backup Mode\","},{"line_number":223,"context_line":"            \"description\": \"The backup mode.\","},{"line_number":224,"context_line":"            \"enum\": [\"full\", \"incremental\", \"auto\"],"},{"line_number":225,"context_line":"            \"default\": \"auto\""}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_7dd9c056","line":222,"range":{"start_line":211,"start_character":0,"end_line":222,"end_character":33},"updated":"2016-06-08 13:29:53.000000000","message":"Please consider putting the schema\u0027s in another file it will be easier to read and update in my opinion","commit_id":"e4bba97e7ea6712cb7756ffaafd0283259a7fcf9"}]}
