)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11151,"name":"Fausto Marzi","email":"fausto.marzi@ericsson.com","username":"fausto.marzi"},"change_message_id":"dd69893d09deeadf26a49c5f67fe02b4ab3299a4","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-07-09 18:08:13 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Plugable storages architecture and Local storage implementation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Id968933f636f01ca20e82cba40291c9202e281b5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":26,"id":"ba3cc151_7c50240b","line":8,"updated":"2015-07-10 15:59:09.000000000","message":"Please link this commit to a bp","commit_id":"b12be82032f551af3ea424b5707772556986f04f"}],"freezer/arguments.py":[{"author":{"_account_id":11151,"name":"Fausto Marzi","email":"fausto.marzi@ericsson.com","username":"fausto.marzi"},"change_message_id":"e48c5adb0e0687665847ef8d58d746b31a9c7d18","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        dest\u003d\u0027command\u0027, default\u003dNone)"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"    arg_parser.add_argument("},{"line_number":407,"context_line":"        \u0027--storage_name\u0027, action\u003d\u0027store\u0027,"},{"line_number":408,"context_line":"        choices\u003d[\u0027local\u0027, \u0027swift\u0027],"},{"line_number":409,"context_line":"        help\u003d\"swift or local storage\","},{"line_number":410,"context_line":"        dest\u003d\u0027storage_name\u0027, default\u003d\u0027swift\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba3cc151_d9ae10e7","line":407,"updated":"2015-07-06 14:12:15.000000000","message":"--storage-name?","commit_id":"6c5007928bb3e684e3b598c39b7d8971d124ee31"},{"author":{"_account_id":11151,"name":"Fausto Marzi","email":"fausto.marzi@ericsson.com","username":"fausto.marzi"},"change_message_id":"e48c5adb0e0687665847ef8d58d746b31a9c7d18","unresolved":false,"context_lines":[{"line_number":406,"context_line":"    arg_parser.add_argument("},{"line_number":407,"context_line":"        \u0027--storage_name\u0027, action\u003d\u0027store\u0027,"},{"line_number":408,"context_line":"        choices\u003d[\u0027local\u0027, \u0027swift\u0027],"},{"line_number":409,"context_line":"        help\u003d\"swift or local storage\","},{"line_number":410,"context_line":"        dest\u003d\u0027storage_name\u0027, default\u003d\u0027swift\u0027)"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"    arg_parser.set_defaults(**defaults)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba3cc151_f947541b","line":409,"updated":"2015-07-06 14:12:15.000000000","message":"Would be good to add some more details in the help like:\n\n\"Data can be backed up and/or restored from Swift or from a directory in the local file system. NFS or CIFS mounted directory are supported as well.\"","commit_id":"6c5007928bb3e684e3b598c39b7d8971d124ee31"},{"author":{"_account_id":11151,"name":"Fausto Marzi","email":"fausto.marzi@ericsson.com","username":"fausto.marzi"},"change_message_id":"dd69893d09deeadf26a49c5f67fe02b4ab3299a4","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        help\u003d\"Set the technology to back from. Options are, fs (filesystem),\\"},{"line_number":151,"context_line":"        mongo (MongoDB), mysql (MySQL), sqlserver (SQL Server)\\"},{"line_number":152,"context_line":"        Default set to fs\", dest\u003d\u0027mode\u0027,"},{"line_number":153,"context_line":"        default\u003d\u0027fs\u0027)"},{"line_number":154,"context_line":"    arg_parser.add_argument("},{"line_number":155,"context_line":"        \u0027-C\u0027, \u0027--container\u0027, action\u003d\u0027store\u0027,"},{"line_number":156,"context_line":"        help\u003d\"The Swift container used to upload files to\","}],"source_content_type":"text/x-python","patch_set":26,"id":"ba3cc151_3c7ffc67","line":153,"updated":"2015-07-10 15:59:09.000000000","message":"Please add to the --container help the information regarding the local storage","commit_id":"b12be82032f551af3ea424b5707772556986f04f"},{"author":{"_account_id":11151,"name":"Fausto Marzi","email":"fausto.marzi@ericsson.com","username":"fausto.marzi"},"change_message_id":"d9e24a5fe5e8eda57c0cb7d03290482068b6a120","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    \u0027upload\u0027: True, \u0027mode\u0027: \u0027fs\u0027, \u0027action\u0027: \u0027backup\u0027,"},{"line_number":66,"context_line":"    \u0027vssadmin\u0027: True, \u0027shadow\u0027: \u0027\u0027, \u0027shadow_path\u0027: \u0027\u0027,"},{"line_number":67,"context_line":"    \u0027windows_volume\u0027: \u0027\u0027, \u0027command\u0027: None, \u0027metadata_out\u0027: False,"},{"line_number":68,"context_line":"    \u0027storage_name\u0027: \u0027swift\u0027"},{"line_number":69,"context_line":"}"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"3a50d1a3_c113af63","line":68,"updated":"2015-07-23 17:09:18.000000000","message":"this has to be consistent, if command line is --storage, this would be \"storage\"","commit_id":"08a24be5de449083cc8168f8c96192633a8bfc2b"},{"author":{"_account_id":11151,"name":"Fausto Marzi","email":"fausto.marzi@ericsson.com","username":"fausto.marzi"},"change_message_id":"d9e24a5fe5e8eda57c0cb7d03290482068b6a120","unresolved":false,"context_lines":[{"line_number":417,"context_line":"        help\u003d\"Storage for backups. Can be Swift or Local now. Swift is default\""},{"line_number":418,"context_line":"             \"storage now. Local stores backups on the same defined path and\""},{"line_number":419,"context_line":"             \"swift will store files in container.\","},{"line_number":420,"context_line":"        dest\u003d\u0027storage_name\u0027, default\u003d\u0027swift\u0027)"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    arg_parser.set_defaults(**defaults)"},{"line_number":423,"context_line":"    backup_args \u003d arg_parser.parse_args()"}],"source_content_type":"text/x-python","patch_set":42,"id":"3a50d1a3_013757ff","line":420,"updated":"2015-07-23 17:09:18.000000000","message":"This has to be consistent too","commit_id":"08a24be5de449083cc8168f8c96192633a8bfc2b"}],"freezer/backup.py":[{"author":{"_account_id":11151,"name":"Fausto Marzi","email":"fausto.marzi@ericsson.com","username":"fausto.marzi"},"change_message_id":"e48c5adb0e0687665847ef8d58d746b31a9c7d18","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        instance \u003d nova.servers.get(instance_id)"},{"line_number":163,"context_line":"        glance \u003d client_manager.get_glance()"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        if instance.__dict__[\u0027OS-EXT-STS:task_state\u0027]:"},{"line_number":166,"context_line":"            time.sleep(5)"},{"line_number":167,"context_line":"            instance \u003d nova.servers.get(instance)"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba3cc151_19dc7845","line":165,"updated":"2015-07-06 14:12:15.000000000","message":"Not part of this commit, but OS-EXT-STS:task_state is an extension that can be enabled or not. If the extension is not enabled that is going to trow an exception. Probably would be better something like:\n\nif instance.__dict__.get(\u0027OS-EXT-STS:task_state\u0027):\n....","commit_id":"6c5007928bb3e684e3b598c39b7d8971d124ee31"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"bc9d6dfc7193ede24257a04c989f2defd6214404","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        cinder.backups.create(volume_id, self.container, name, description)"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"def lvm_create(backup_opt_dict):"},{"line_number":230,"context_line":"    if is_windows():"},{"line_number":231,"context_line":"        if backup_opt_dict.vssadmin:"},{"line_number":232,"context_line":"            # Create a shadow copy."}],"source_content_type":"text/x-python","patch_set":16,"id":"ba3cc151_97701ade","line":229,"updated":"2015-07-07 13:18:42.000000000","message":"shouldn\u0027t be better if we rename lvm_create to snapshot_create? makes more sense in the windows-linux portability","commit_id":"115b62435eea2680d99918d1b15c0c8b85e01a65"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"bc9d6dfc7193ede24257a04c989f2defd6214404","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                backup_opt_dict.windows_volume)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"def lvm_remove(backup_opt_dict, shadow, windows_volume):"},{"line_number":257,"context_line":"    if is_windows():"},{"line_number":258,"context_line":"        # Delete the shadow copy after the backup"},{"line_number":259,"context_line":"        vss_delete_shadow_copy(shadow, windows_volume)"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba3cc151_575a9251","line":256,"updated":"2015-07-07 13:18:42.000000000","message":"shouldn\u0027t be better if we rename lvm_remove to snapshot_remove?","commit_id":"115b62435eea2680d99918d1b15c0c8b85e01a65"}],"freezer/local.py":[{"author":{"_account_id":11151,"name":"Fausto Marzi","email":"fausto.marzi@ericsson.com","username":"fausto.marzi"},"change_message_id":"e48c5adb0e0687665847ef8d58d746b31a9c7d18","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    @staticmethod"},{"line_number":120,"context_line":"    def parse(value):"},{"line_number":121,"context_line":"        pass"},{"line_number":122,"context_line":"        # match \u003d re.search(self.PATTERN, value, re.I)"},{"line_number":123,"context_line":"        # return SwiftBackup(match.group(1), match.group(2),"},{"line_number":124,"context_line":"        #                    int(match.group(3)), int(match.group(4)))"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba3cc151_f978b42d","line":121,"updated":"2015-07-06 14:12:15.000000000","message":"Is this code commented needed?","commit_id":"6c5007928bb3e684e3b598c39b7d8971d124ee31"}],"freezer/lvm.py":[{"author":{"_account_id":11151,"name":"Fausto Marzi","email":"fausto.marzi@ericsson.com","username":"fausto.marzi"},"change_message_id":"e48c5adb0e0687665847ef8d58d746b31a9c7d18","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    \"\"\""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    if not backup_opt_dict.lvm_volgroup:"},{"line_number":44,"context_line":"        logging.warning(\u0027[*] Required lvm_volgroup not set. The backup will \\"},{"line_number":45,"context_line":"            execute without lvm snapshot.\u0027)"},{"line_number":46,"context_line":"        return False"},{"line_number":47,"context_line":"    if not backup_opt_dict.lvm_srcvol:"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba3cc151_792fc4f6","line":44,"updated":"2015-07-06 14:12:15.000000000","message":"At this point probably would make sense to use brackets for multilines strings as:\n\nlogging.warning((\n    \u0027[*] Required lvm_volgroup not set. The backup will \u0027\n    \u0027execute without lvm snapshot.\u0027))\n\nSo the this line will be displayed properly in the log file. Same apply for the other strings on this same function","commit_id":"6c5007928bb3e684e3b598c39b7d8971d124ee31"}],"freezer/restore.py":[{"author":{"_account_id":11151,"name":"Fausto Marzi","email":"fausto.marzi@ericsson.com","username":"fausto.marzi"},"change_message_id":"e48c5adb0e0687665847ef8d58d746b31a9c7d18","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    latest_update \u003d restore_backup.latest_update"},{"line_number":72,"context_line":"    level \u003d latest_update.level"},{"line_number":73,"context_line":"    if latest_update.timestamp \u003e restore_timestamp:"},{"line_number":74,"context_line":"        for x in range(1, latest_update.level):"},{"line_number":75,"context_line":"            if latest_update.increments[x].timestamp \u003c restore_timestamp:"},{"line_number":76,"context_line":"                level \u003d x"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba3cc151_b9a6ac51","line":73,"updated":"2015-07-06 14:12:15.000000000","message":"Why this is 1 and not 0 as first param in range?\n\nfor x in range(1, latest_update.level):\n\nJust asking, I\u0027m not saying it should be 0.","commit_id":"6c5007928bb3e684e3b598c39b7d8971d124ee31"}],"tests/test_backup.py":[{"author":{"_account_id":11151,"name":"Fausto Marzi","email":"fausto.marzi@ericsson.com","username":"fausto.marzi"},"change_message_id":"e48c5adb0e0687665847ef8d58d746b31a9c7d18","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"ba3cc151_bc51bada","updated":"2015-07-06 14:12:15.000000000","message":"Can we remove this file?","commit_id":"6c5007928bb3e684e3b598c39b7d8971d124ee31"}],"tests/test_restore.py":[{"author":{"_account_id":11151,"name":"Fausto Marzi","email":"fausto.marzi@ericsson.com","username":"fausto.marzi"},"change_message_id":"e48c5adb0e0687665847ef8d58d746b31a9c7d18","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class TestRestore:"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    # def test_restore_fs(self, monkeypatch):"},{"line_number":34,"context_line":"    #"},{"line_number":35,"context_line":"    #     backup_opt \u003d BackupOpt1()"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba3cc151_5c366eb5","line":32,"updated":"2015-07-06 14:12:15.000000000","message":"Can we remove this if it\u0027s no needed anymore","commit_id":"6c5007928bb3e684e3b598c39b7d8971d124ee31"}]}
