)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17001,"name":"Tim Buckley","email":"timothy.jas.buckley@hpe.com","username":"timothy.jas.buckley"},"change_message_id":"75141485f3ea271860a3376470a3c78dc4a15920","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix Backup removal is not working"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Deprecated argument --remove-older-then removed"},{"line_number":10,"context_line":"Argument --remove-before-date added"},{"line_number":11,"context_line":"Argument --remove-from-date deprecated in favor of --remove-before-date"},{"line_number":12,"context_line":"Argument --remove-before-date now accepts ISO datetime and timestamp"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1aa78d24_e315cd4c","line":9,"range":{"start_line":9,"start_character":22,"end_line":9,"end_character":39},"updated":"2016-07-13 22:40:21.000000000","message":"Is it safe to remove support for --remove-older-than (a.k.a. remove_older_than)? AFAIK removing or renaming remove_older_than will break all of our HOS jobs since that\u0027s the parameter name they use.\n\nAlso, it looks like like the metadata part 2 patch (I9a6febb0ce427630c3e6602047613d6804b360dd) is un-deprecating remove_older_than. We should probably decide what we really want?","commit_id":"0fa61293e7c730d31f39eb3477e0878827d32457"},{"author":{"_account_id":17001,"name":"Tim Buckley","email":"timothy.jas.buckley@hpe.com","username":"timothy.jas.buckley"},"change_message_id":"2b1e1b09e289f5752246c680e974a8732f6ce937","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix Backup removal is not working"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Deprecated argument --remove-older-then removed"},{"line_number":10,"context_line":"Argument --remove-before-date added"},{"line_number":11,"context_line":"Argument --remove-from-date deprecated in favor of --remove-before-date"},{"line_number":12,"context_line":"Argument --remove-before-date now accepts ISO datetime and timestamp"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1aa78d24_87e030ce","line":9,"range":{"start_line":9,"start_character":22,"end_line":9,"end_character":39},"in_reply_to":"1aa78d24_58bab572","updated":"2016-07-28 14:37:44.000000000","message":"Sorry, I was a bit unclear. The internal variable name is remove_older_than (which we get either through config files from HOS jobs or from --remove-older-than via the config parser). The dashes vs underscores aren\u0027t a problem :)","commit_id":"0fa61293e7c730d31f39eb3477e0878827d32457"},{"author":{"_account_id":15041,"name":"Domhnall Walsh","email":"domhnall.eam.walsh@hpe.com","username":"domhnall"},"change_message_id":"3e572a57a9d315180b4ba9e705e710214bfde8fc","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix Backup removal is not working"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Deprecated argument --remove-older-then removed"},{"line_number":10,"context_line":"Argument --remove-before-date added"},{"line_number":11,"context_line":"Argument --remove-from-date deprecated in favor of --remove-before-date"},{"line_number":12,"context_line":"Argument --remove-before-date now accepts ISO datetime and timestamp"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1aa78d24_58bab572","line":9,"range":{"start_line":9,"start_character":22,"end_line":9,"end_character":39},"in_reply_to":"1aa78d24_e315cd4c","updated":"2016-07-14 09:55:26.000000000","message":"What was originally deprecated was the \"remove-older-then\" switch (which should have read \"remove-older-th*a*n\"), rather than the switch itself, which has been a little confusing. The functionality is not being removed, only the version of the switch that invokes it that contains the typo.\n\nIf HOS expects --remove_older_than, then something needs to change; currently, freezer understands --remove-older-than (with dashes), or simply -R, but not --remove_older_than (with the underscores).","commit_id":"0fa61293e7c730d31f39eb3477e0878827d32457"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"2006ede0395b0e10e788beb75ff0637cb7f6f270","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix Backup removal is not working"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Deprecated argument --remove-older-then removed"},{"line_number":10,"context_line":"Argument --remove-before-date added"},{"line_number":11,"context_line":"Argument --remove-from-date deprecated in favor of --remove-before-date"},{"line_number":12,"context_line":"Argument --remove-before-date now accepts ISO datetime and timestamp"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1aa78d24_e394968d","line":9,"range":{"start_line":9,"start_character":22,"end_line":9,"end_character":39},"in_reply_to":"1aa78d24_e315cd4c","updated":"2016-07-14 09:54:21.000000000","message":"sorry this parameter wont be deleted, it was a mistake, I need to fix this commit message.","commit_id":"0fa61293e7c730d31f39eb3477e0878827d32457"},{"author":{"_account_id":17001,"name":"Tim Buckley","email":"timothy.jas.buckley@hpe.com","username":"timothy.jas.buckley"},"change_message_id":"75141485f3ea271860a3376470a3c78dc4a15920","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix Backup removal is not working"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Deprecated argument --remove-older-then removed"},{"line_number":10,"context_line":"Argument --remove-before-date added"},{"line_number":11,"context_line":"Argument --remove-from-date deprecated in favor of --remove-before-date"},{"line_number":12,"context_line":"Argument --remove-before-date now accepts ISO datetime and timestamp"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Please do not merge until we test that the backups are not removed if they belong to"},{"line_number":15,"context_line":"an incremental session"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1aa78d24_de7184ad","line":12,"range":{"start_line":10,"start_character":0,"end_line":12,"end_character":68},"updated":"2016-07-13 22:40:21.000000000","message":"How are these changes related to the bug report? I\u0027m all in favor of adding more semantic ways to remove backups, but they should really be in a separate patch if they aren\u0027t directly related to solving the bug.","commit_id":"0fa61293e7c730d31f39eb3477e0878827d32457"},{"author":{"_account_id":17001,"name":"Tim Buckley","email":"timothy.jas.buckley@hpe.com","username":"timothy.jas.buckley"},"change_message_id":"2b1e1b09e289f5752246c680e974a8732f6ce937","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix Backup removal is not working"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Deprecated argument --remove-older-then removed"},{"line_number":10,"context_line":"Argument --remove-before-date added"},{"line_number":11,"context_line":"Argument --remove-from-date deprecated in favor of --remove-before-date"},{"line_number":12,"context_line":"Argument --remove-before-date now accepts ISO datetime and timestamp"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Please do not merge until we test that the backups are not removed if they belong to"},{"line_number":15,"context_line":"an incremental session"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1aa78d24_87667027","line":12,"range":{"start_line":10,"start_character":0,"end_line":12,"end_character":68},"in_reply_to":"1aa78d24_236b3e87","updated":"2016-07-28 14:37:44.000000000","message":"Sure, I agree that --remove-before-date is a bit more clear. That said, it should still be in a separate patch, since renaming that argument isn\u0027t actually related to this bugfix.","commit_id":"0fa61293e7c730d31f39eb3477e0878827d32457"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"2006ede0395b0e10e788beb75ff0637cb7f6f270","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix Backup removal is not working"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Deprecated argument --remove-older-then removed"},{"line_number":10,"context_line":"Argument --remove-before-date added"},{"line_number":11,"context_line":"Argument --remove-from-date deprecated in favor of --remove-before-date"},{"line_number":12,"context_line":"Argument --remove-before-date now accepts ISO datetime and timestamp"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Please do not merge until we test that the backups are not removed if they belong to"},{"line_number":15,"context_line":"an incremental session"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1aa78d24_236b3e87","line":12,"range":{"start_line":10,"start_character":0,"end_line":12,"end_character":68},"in_reply_to":"1aa78d24_de7184ad","updated":"2016-07-14 09:54:21.000000000","message":"in reality there always has been 2 ways to delete backups, --remove-older-than and --remove-from-date, talking with the development team, we agree that make more sense for the parameter to be called --remove-before-date, so we add that parameter and deprecate --remove-from-date which does not make sense when you read it. That\u0027s why we add a new parameter.","commit_id":"0fa61293e7c730d31f39eb3477e0878827d32457"},{"author":{"_account_id":14101,"name":"yapeng Yang","email":"a394954369@gmail.com","username":"yapeng"},"change_message_id":"2265a8fafc8312a6dd3052a3a28fd47f6e746a06","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Please do not merge until we test that the backups are not removed if they belong to"},{"line_number":15,"context_line":"an incremental session"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-bug: 1599592"},{"line_number":18,"context_line":"Change-Id: I5a2c535ca4bf837cd2dc63e9e664ffc979e516bd"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"dada55a8_e09f76b2","line":17,"updated":"2016-07-18 09:52:11.000000000","message":"Closes-Bug: #1599592","commit_id":"0fa61293e7c730d31f39eb3477e0878827d32457"}],"README.rst":[{"author":{"_account_id":15041,"name":"Domhnall Walsh","email":"domhnall.eam.walsh@hpe.com","username":"domhnall"},"change_message_id":"58ba0badd7a8370cfcff8fabf8a10e2e23e53c65","unresolved":false,"context_lines":[{"line_number":1104,"context_line":"  --restart-always-level RESTART_ALWAYS_LEVEL"},{"line_number":1105,"context_line":"                        Restart the backup from level 0 after n days. Valid"},{"line_number":1106,"context_line":"                        only if --always-level option if set. If --always-"},{"line_number":1107,"context_line":"                        level is used together with --remove-older-then, there"},{"line_number":1108,"context_line":"                        might be the chance where the initial level 0 will be"},{"line_number":1109,"context_line":"                        removed. Default False (Disabled)"},{"line_number":1110,"context_line":"  --restore-abs-path RESTORE_ABS_PATH"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1aa78d24_3ff1416b","line":1107,"range":{"start_line":1107,"start_character":52,"end_line":1107,"end_character":71},"updated":"2016-07-11 14:09:04.000000000","message":"This needs to go too.","commit_id":"1edbec42602aa5823b22832cfa7918b7b86f965a"},{"author":{"_account_id":15041,"name":"Domhnall Walsh","email":"domhnall.eam.walsh@hpe.com","username":"domhnall"},"change_message_id":"1accaedeaff7d25215f0383852d9a6c55a779769","unresolved":false,"context_lines":[{"line_number":1101,"context_line":"                        older than the provided datetime in the form \u0027YYYY-MM-"},{"line_number":1102,"context_line":"                        DDThh:mm:ss\u0027 i.e. \u00271974-03-25T23:23:23\u0027. Make sure the"},{"line_number":1103,"context_line":"                        \u0027T\u0027 is between date and time"},{"line_number":1104,"context_line":"  --remove-older-than REMOVE_OLDER_THAN, -R REMOVE_OLDER_THAN"},{"line_number":1105,"context_line":"                        Checks in the specified container for object older"},{"line_number":1106,"context_line":"                        than the specified days. If i.e. 30 is specified, it"},{"line_number":1107,"context_line":"                        will remove the remote object older than 30 days."},{"line_number":1108,"context_line":"                        Default False (Disabled) The option --remove-older-"},{"line_number":1109,"context_line":"                        then is deprecated and will be removed soon"},{"line_number":1110,"context_line":"  --restart-always-level RESTART_ALWAYS_LEVEL"},{"line_number":1111,"context_line":"                        Restart the backup from level 0 after n days. Valid"},{"line_number":1112,"context_line":"                        only if --always-level option if set. If --always-"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1aa78d24_eb27c860","side":"PARENT","line":1109,"range":{"start_line":1104,"start_character":1,"end_line":1109,"end_character":67},"updated":"2016-07-12 10:57:36.000000000","message":"This is back as a usable option in freezer/common/config.py (it was only the version with the typo (--remove-older_then) that was deprecated, right?), might need to add it back in here?","commit_id":"45b1430663015da5dd89a17cada6b53997fb7004"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"045bb29827af81e3872db9d861705094197ecaee","unresolved":false,"context_lines":[{"line_number":1101,"context_line":"                        older than the provided datetime in the form \u0027YYYY-MM-"},{"line_number":1102,"context_line":"                        DDThh:mm:ss\u0027 i.e. \u00271974-03-25T23:23:23\u0027. Make sure the"},{"line_number":1103,"context_line":"                        \u0027T\u0027 is between date and time"},{"line_number":1104,"context_line":"  --remove-older-than REMOVE_OLDER_THAN, -R REMOVE_OLDER_THAN"},{"line_number":1105,"context_line":"                        Checks in the specified container for object older"},{"line_number":1106,"context_line":"                        than the specified days. If i.e. 30 is specified, it"},{"line_number":1107,"context_line":"                        will remove the remote object older than 30 days."},{"line_number":1108,"context_line":"                        Default False (Disabled) The option --remove-older-"},{"line_number":1109,"context_line":"                        then is deprecated and will be removed soon"},{"line_number":1110,"context_line":"  --restart-always-level RESTART_ALWAYS_LEVEL"},{"line_number":1111,"context_line":"                        Restart the backup from level 0 after n days. Valid"},{"line_number":1112,"context_line":"                        only if --always-level option if set. If --always-"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1aa78d24_4b26dcce","side":"PARENT","line":1109,"range":{"start_line":1104,"start_character":1,"end_line":1109,"end_character":67},"in_reply_to":"1aa78d24_eb27c860","updated":"2016-07-12 13:14:13.000000000","message":"I completely forgot about this, thanks","commit_id":"45b1430663015da5dd89a17cada6b53997fb7004"},{"author":{"_account_id":15041,"name":"Domhnall Walsh","email":"domhnall.eam.walsh@hpe.com","username":"domhnall"},"change_message_id":"d301def7e08105c333bdeed6e73d2ea45975407b","unresolved":false,"context_lines":[{"line_number":492,"context_line":"    $ sudo freezer-agent --action info --container freezer_testcontainer -l"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"Remove backups older then 1 day::"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    $ freezer-agent --action admin --container freezer_dev-test --remove-older-then 1 --backup-name dev-test-01"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"Cinder restore currently creates a volume with the contents of the saved one, but"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aa78d24_ef995020","side":"PARENT","line":497,"range":{"start_line":495,"start_character":1,"end_line":497,"end_character":111},"updated":"2016-07-13 13:05:24.000000000","message":"This could probably go back in as a fourth option, with the \u0027then\u0027-\u003e\u0027than\u0027 typo fixed?","commit_id":"45b1430663015da5dd89a17cada6b53997fb7004"},{"author":{"_account_id":15041,"name":"Domhnall Walsh","email":"domhnall.eam.walsh@hpe.com","username":"domhnall"},"change_message_id":"d301def7e08105c333bdeed6e73d2ea45975407b","unresolved":false,"context_lines":[{"line_number":1109,"context_line":"                        then is deprecated and will be removed soon"},{"line_number":1110,"context_line":"  --restart-always-level RESTART_ALWAYS_LEVEL"},{"line_number":1111,"context_line":"                        Restart the backup from level 0 after n days. Valid"},{"line_number":1112,"context_line":"                        only if --always-level option if set. If --always-"},{"line_number":1113,"context_line":"                        level is used together with --remove-older-then, there"},{"line_number":1114,"context_line":"                        might be the chance where the initial level 0 will be"},{"line_number":1115,"context_line":"                        removed. Default False (Disabled)"},{"line_number":1116,"context_line":"  --restore-abs-path RESTORE_ABS_PATH"},{"line_number":1117,"context_line":"                        Set the absolute path where you want your data"},{"line_number":1118,"context_line":"                        restored. Default False."}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aa78d24_cfe3b4a2","side":"PARENT","line":1115,"range":{"start_line":1112,"start_character":62,"end_line":1115,"end_character":32},"updated":"2016-07-13 13:05:24.000000000","message":"Need to fix the \u0027then\u0027-\u003e\u0027than\u0027 typo but this is still applicable, I think?","commit_id":"45b1430663015da5dd89a17cada6b53997fb7004"},{"author":{"_account_id":17001,"name":"Tim Buckley","email":"timothy.jas.buckley@hpe.com","username":"timothy.jas.buckley"},"change_message_id":"75141485f3ea271860a3376470a3c78dc4a15920","unresolved":false,"context_lines":[{"line_number":438,"context_line":"  --storage ssh --ssh-username ubuntu --ssh-key ~/.ssh/id_rsa"},{"line_number":439,"context_line":"  --ssh-host 8.8.8.8"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"**Note** ssh keys with passphrase are not supported at the moment."},{"line_number":442,"context_line":"Restore"},{"line_number":443,"context_line":"-------"},{"line_number":444,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aa78d24_3e2088b0","line":441,"range":{"start_line":441,"start_character":0,"end_line":441,"end_character":66},"updated":"2016-07-13 22:40:21.000000000","message":"This doesn\u0027t seem related to other changes, this should probably be put in a separate patch?","commit_id":"0fa61293e7c730d31f39eb3477e0878827d32457"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"2006ede0395b0e10e788beb75ff0637cb7f6f270","unresolved":false,"context_lines":[{"line_number":438,"context_line":"  --storage ssh --ssh-username ubuntu --ssh-key ~/.ssh/id_rsa"},{"line_number":439,"context_line":"  --ssh-host 8.8.8.8"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"**Note** ssh keys with passphrase are not supported at the moment."},{"line_number":442,"context_line":"Restore"},{"line_number":443,"context_line":"-------"},{"line_number":444,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aa78d24_03ff22ab","line":441,"range":{"start_line":441,"start_character":0,"end_line":441,"end_character":66},"in_reply_to":"1aa78d24_3e2088b0","updated":"2016-07-14 09:54:21.000000000","message":"True. We found this issue while testing the removal of ssh backups, so it seemed a good idea to notify the users that this error might happen to them, do you still need that this should be submitted as a new patch?","commit_id":"0fa61293e7c730d31f39eb3477e0878827d32457"}],"freezer/common/config.py":[{"author":{"_account_id":15041,"name":"Domhnall Walsh","email":"domhnall.eam.walsh@hpe.com","username":"domhnall"},"change_message_id":"58ba0badd7a8370cfcff8fabf8a10e2e23e53c65","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    \u0027encrypt_pass_file\u0027: False, \u0027volume\u0027: False, \u0027proxy\u0027: False,"},{"line_number":69,"context_line":"    \u0027cinder_vol_id\u0027: \u0027\u0027, \u0027cindernative_vol_id\u0027: \u0027\u0027,"},{"line_number":70,"context_line":"    \u0027nova_inst_id\u0027: \u0027\u0027, \u0027__version__\u0027: FREEZER_VERSION,"},{"line_number":71,"context_line":"    \u0027remove_older_than\u0027: None, \u0027restore_from_date\u0027: False,"},{"line_number":72,"context_line":"    \u0027upload_limit\u0027: -1, \u0027always_level\u0027: False, \u0027version\u0027: False,"},{"line_number":73,"context_line":"    \u0027dry_run\u0027: False, \u0027lvm_snapsize\u0027: DEFAULT_LVM_SNAPSIZE,"},{"line_number":74,"context_line":"    \u0027restore_abs_path\u0027: False, \u0027log_file\u0027: None, \u0027log_level\u0027: \"info\","}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_2dd3db60","line":71,"range":{"start_line":71,"start_character":4,"end_line":71,"end_character":30},"updated":"2016-07-11 14:09:04.000000000","message":"Needs to go too.","commit_id":"1edbec42602aa5823b22832cfa7918b7b86f965a"},{"author":{"_account_id":15041,"name":"Domhnall Walsh","email":"domhnall.eam.walsh@hpe.com","username":"domhnall"},"change_message_id":"4831522aecde80cb1c23455a88707b9069424c08","unresolved":false,"context_lines":[{"line_number":266,"context_line":"                    \"i.e. \u00271979-10-03T23:23:23\u0027. Make sure the \u0027T\u0027 is between \""},{"line_number":267,"context_line":"                    \"date and time Default None.\""},{"line_number":268,"context_line":"               ),"},{"line_number":269,"context_line":"    cfg.FloatOpt(\u0027remove-older-than\u0027,"},{"line_number":270,"context_line":"                 short\u003d\u0027R\u0027,"},{"line_number":271,"context_line":"                 dest\u003d\u0027remove_older_than\u0027,"},{"line_number":272,"context_line":"                 help\u003d\"Checks in the specified container for objects older \""},{"line_number":273,"context_line":"                      \"than the specified number of days. \""},{"line_number":274,"context_line":"                      \"If i.e. 30 is specified, it \""},{"line_number":275,"context_line":"                      \"will remove the remote object older than 30 days. \""},{"line_number":276,"context_line":"                      \"Default False (Disabled)\"),"},{"line_number":277,"context_line":"    cfg.StrOpt(\u0027max-priority\u0027,"},{"line_number":278,"context_line":"               dest\u003d\u0027max_priority\u0027,"},{"line_number":279,"context_line":"               help\u003d\"Set the cpu process to the highest priority (i.e. -20 on \""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_76448b73","line":276,"range":{"start_line":269,"start_character":0,"end_line":276,"end_character":50},"updated":"2016-07-11 15:58:57.000000000","message":"I think that you can add a deprecated_name\u003d\u0027remove-older_then\u0027 to this to make the typo still work but be marked as deprecated? http://docs.openstack.org/developer/oslo.config/opts.html","commit_id":"1a8e74eb2d3808431df0f2d7b44dd063a1aed2b3"},{"author":{"_account_id":12512,"name":"Deklan Dieterly","email":"deklan.dieterly@hpe.com","username":"deklan"},"change_message_id":"752e5a40cc0d4c09f3fa5c79b768426cb5e75a84","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                    \"than the provided datetime in the form \""},{"line_number":192,"context_line":"                    \"\u0027YYYY-MM-DDThh:mm:ss\u0027 i.e. \u00271974-03-25T23:23:23\u0027. \""},{"line_number":193,"context_line":"                    \"Make sure the \u0027T\u0027 is between date and time , it also \""},{"line_number":194,"context_line":"                    \"support timestamp values\"),"},{"line_number":195,"context_line":"    cfg.StrOpt(\u0027no-incremental\u0027,"},{"line_number":196,"context_line":"               dest\u003d\u0027no_incremental\u0027,"},{"line_number":197,"context_line":"               help\u003d\"Disable incremental feature. By default freezer build the\""}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_87c9037c","line":194,"updated":"2016-07-11 16:54:33.000000000","message":"add an \u0027s\u0027 to support. \u0027support\u0027 -\u003e \u0027supports\u0027.","commit_id":"0ca349212d1500356b5e8458ea7626d022736cc0"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"d0eb50a88145adfb8b9fdb5d33d3e3db3c51a82a","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                    \"than the provided datetime in the form \""},{"line_number":192,"context_line":"                    \"\u0027YYYY-MM-DDThh:mm:ss\u0027 i.e. \u00271974-03-25T23:23:23\u0027. \""},{"line_number":193,"context_line":"                    \"Make sure the \u0027T\u0027 is between date and time , it also \""},{"line_number":194,"context_line":"                    \"support timestamp values\"),"},{"line_number":195,"context_line":"    cfg.StrOpt(\u0027no-incremental\u0027,"},{"line_number":196,"context_line":"               dest\u003d\u0027no_incremental\u0027,"},{"line_number":197,"context_line":"               help\u003d\"Disable incremental feature. By default freezer build the\""}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_ef453943","line":194,"in_reply_to":"1aa78d24_87c9037c","updated":"2016-07-11 18:24:43.000000000","message":"thanks","commit_id":"0ca349212d1500356b5e8458ea7626d022736cc0"},{"author":{"_account_id":12512,"name":"Deklan Dieterly","email":"deklan.dieterly@hpe.com","username":"deklan"},"change_message_id":"752e5a40cc0d4c09f3fa5c79b768426cb5e75a84","unresolved":false,"context_lines":[{"line_number":266,"context_line":"                    \"i.e. \u00271979-10-03T23:23:23\u0027. Make sure the \u0027T\u0027 is between \""},{"line_number":267,"context_line":"                    \"date and time Default None.\""},{"line_number":268,"context_line":"               ),"},{"line_number":269,"context_line":"    cfg.FloatOpt(\u0027remove-older-than\u0027,"},{"line_number":270,"context_line":"                 short\u003d\u0027R\u0027,"},{"line_number":271,"context_line":"                 dest\u003d\u0027remove_older_than\u0027,"},{"line_number":272,"context_line":"                 help\u003d\"Checks in the specified container for objects older \""}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_c7714b46","line":269,"updated":"2016-07-11 16:54:33.000000000","message":"Would it make sense to call this \u0027remove-older-than-days\u0027 to make it clear that the unit is days?","commit_id":"0ca349212d1500356b5e8458ea7626d022736cc0"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"d0eb50a88145adfb8b9fdb5d33d3e3db3c51a82a","unresolved":false,"context_lines":[{"line_number":266,"context_line":"                    \"i.e. \u00271979-10-03T23:23:23\u0027. Make sure the \u0027T\u0027 is between \""},{"line_number":267,"context_line":"                    \"date and time Default None.\""},{"line_number":268,"context_line":"               ),"},{"line_number":269,"context_line":"    cfg.FloatOpt(\u0027remove-older-than\u0027,"},{"line_number":270,"context_line":"                 short\u003d\u0027R\u0027,"},{"line_number":271,"context_line":"                 dest\u003d\u0027remove_older_than\u0027,"},{"line_number":272,"context_line":"                 help\u003d\"Checks in the specified container for objects older \""}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_8fa2b5fa","line":269,"in_reply_to":"1aa78d24_c7714b46","updated":"2016-07-11 18:24:43.000000000","message":"yes but it requires to maintain --remove-older-than but another release in deprecated mode, but is perfectly possible, we should discuss this.","commit_id":"0ca349212d1500356b5e8458ea7626d022736cc0"},{"author":{"_account_id":15041,"name":"Domhnall Walsh","email":"domhnall.eam.walsh@hpe.com","username":"domhnall"},"change_message_id":"1accaedeaff7d25215f0383852d9a6c55a779769","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                 help\u003d\"Restart the backup from level 0 after n days. Valid \""},{"line_number":179,"context_line":"                      \"only if --always-level option if set. \""},{"line_number":180,"context_line":"                      \"Default False (Disabled)\"),"},{"line_number":181,"context_line":"    cfg.StrOpt(\u0027remove-from-date\u0027,"},{"line_number":182,"context_line":"               dest\u003d\u0027remove_from_date\u0027,"},{"line_number":183,"context_line":"               help\u003d\"Checks the specified container and removes objects older \""},{"line_number":184,"context_line":"                    \"than the provided datetime in the form \""},{"line_number":185,"context_line":"                    \"\u0027YYYY-MM-DDThh:mm:ss\u0027 i.e. \u00271974-03-25T23:23:23\u0027. \""},{"line_number":186,"context_line":"                    \"Make sure the \u0027T\u0027 is between date and time \","},{"line_number":187,"context_line":"               deprecated_for_removal\u003dTrue),"},{"line_number":188,"context_line":"    cfg.StrOpt(\u0027remove-before-date\u0027,"},{"line_number":189,"context_line":"               dest\u003d\u0027remove_before_date\u0027,"},{"line_number":190,"context_line":"               help\u003d\"Checks the specified container and removes objects older \""},{"line_number":191,"context_line":"                    \"than the provided datetime in the form \""},{"line_number":192,"context_line":"                    \"\u0027YYYY-MM-DDThh:mm:ss\u0027 i.e. \u00271974-03-25T23:23:23\u0027. \""},{"line_number":193,"context_line":"                    \"Make sure the \u0027T\u0027 is between date and time , it also \""},{"line_number":194,"context_line":"                    \"supports timestamp values\"),"},{"line_number":195,"context_line":"    cfg.StrOpt(\u0027no-incremental\u0027,"},{"line_number":196,"context_line":"               dest\u003d\u0027no_incremental\u0027,"},{"line_number":197,"context_line":"               help\u003d\"Disable incremental feature. By default freezer build the\""}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_8baa846f","line":194,"range":{"start_line":181,"start_character":0,"end_line":194,"end_character":49},"updated":"2016-07-12 10:57:36.000000000","message":"Is this the \"correct\" way to do this or is adding deprecated_name\u003d\u0027remove_from_date\u0027 to the \u0027remove-before-date\u0027 option and removing remove-from-date altogether better/cleaner, since they share identical behaviour and it\u0027s just a name change?","commit_id":"fbc44b1fe2366dcb75a3f30d8fe8db564dda538e"},{"author":{"_account_id":15041,"name":"Domhnall Walsh","email":"domhnall.eam.walsh@hpe.com","username":"domhnall"},"change_message_id":"d301def7e08105c333bdeed6e73d2ea45975407b","unresolved":false,"context_lines":[{"line_number":176,"context_line":"    cfg.FloatOpt(\u0027restart-always-level\u0027,"},{"line_number":177,"context_line":"                 dest\u003d\u0027restart_always_level\u0027,"},{"line_number":178,"context_line":"                 help\u003d\"Restart the backup from level 0 after n days. Valid \""},{"line_number":179,"context_line":"                      \"only if --always-level option if set. If \""},{"line_number":180,"context_line":"                      \"--always-level is used together with \""},{"line_number":181,"context_line":"                      \"--remove-older-then, there might be \""},{"line_number":182,"context_line":"                      \"the chance where the initial level 0 will be removed. \""},{"line_number":183,"context_line":"                      \"Default False (Disabled)\"),"},{"line_number":184,"context_line":"    cfg.FloatOpt(\u0027remove-older-than\u0027,"},{"line_number":185,"context_line":"                 short\u003d\u0027R\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_2f6eb8ff","side":"PARENT","line":182,"range":{"start_line":179,"start_character":60,"end_line":182,"end_character":78},"updated":"2016-07-13 13:05:24.000000000","message":"More stuff that\u0027s relevant again now that we know we\u0027re not ditching remove-older-than (though it does have the \u0027then\u0027 typo)","commit_id":"45b1430663015da5dd89a17cada6b53997fb7004"},{"author":{"_account_id":15041,"name":"Domhnall Walsh","email":"domhnall.eam.walsh@hpe.com","username":"domhnall"},"change_message_id":"d301def7e08105c333bdeed6e73d2ea45975407b","unresolved":false,"context_lines":[{"line_number":268,"context_line":"                    \"i.e. \u00271979-10-03T23:23:23\u0027. Make sure the \u0027T\u0027 is between \""},{"line_number":269,"context_line":"                    \"date and time Default None.\","},{"line_number":270,"context_line":"               ),"},{"line_number":271,"context_line":"    cfg.FloatOpt(\u0027remove-older-than\u0027,"},{"line_number":272,"context_line":"                 short\u003d\u0027R\u0027,"},{"line_number":273,"context_line":"                 dest\u003d\u0027remove_older_than\u0027,"},{"line_number":274,"context_line":"                 help\u003d\"Checks in the specified container for objects older \""},{"line_number":275,"context_line":"                      \"than the specified number of days. \""},{"line_number":276,"context_line":"                      \"If i.e. 30 is specified, it \""},{"line_number":277,"context_line":"                      \"will remove the remote object older than 30 days. \""},{"line_number":278,"context_line":"                      \"Default False (Disabled)\"),"},{"line_number":279,"context_line":"    cfg.StrOpt(\u0027max-priority\u0027,"},{"line_number":280,"context_line":"               dest\u003d\u0027max_priority\u0027,"},{"line_number":281,"context_line":"               help\u003d\"Set the cpu process to the highest priority (i.e. -20 on \""}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_aa2d7690","line":278,"range":{"start_line":271,"start_character":2,"end_line":278,"end_character":50},"updated":"2016-07-13 13:05:24.000000000","message":"could probably add deprecated_name\u003d\u0027remove-older-then\u0027,default\u003d\u0027False\u0027 to this?","commit_id":"0fa61293e7c730d31f39eb3477e0878827d32457"},{"author":{"_account_id":15041,"name":"Domhnall Walsh","email":"domhnall.eam.walsh@hpe.com","username":"domhnall"},"change_message_id":"c545a01605ed522a7d29384a94b0f1f5b9cb9046","unresolved":false,"context_lines":[{"line_number":268,"context_line":"                    \"i.e. \u00271979-10-03T23:23:23\u0027. Make sure the \u0027T\u0027 is between \""},{"line_number":269,"context_line":"                    \"date and time Default None.\","},{"line_number":270,"context_line":"               ),"},{"line_number":271,"context_line":"    cfg.FloatOpt(\u0027remove-older-than\u0027,"},{"line_number":272,"context_line":"                 short\u003d\u0027R\u0027,"},{"line_number":273,"context_line":"                 dest\u003d\u0027remove_older_than\u0027,"},{"line_number":274,"context_line":"                 help\u003d\"Checks in the specified container for objects older \""},{"line_number":275,"context_line":"                      \"than the specified number of days. \""},{"line_number":276,"context_line":"                      \"If i.e. 30 is specified, it \""},{"line_number":277,"context_line":"                      \"will remove the remote object older than 30 days. \""},{"line_number":278,"context_line":"                      \"Default False (Disabled)\"),"},{"line_number":279,"context_line":"    cfg.StrOpt(\u0027max-priority\u0027,"},{"line_number":280,"context_line":"               dest\u003d\u0027max_priority\u0027,"},{"line_number":281,"context_line":"               help\u003d\"Set the cpu process to the highest priority (i.e. -20 on \""}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_03a60253","line":278,"range":{"start_line":271,"start_character":2,"end_line":278,"end_character":50},"in_reply_to":"1aa78d24_a3dbae4e","updated":"2016-07-14 10:05:42.000000000","message":"I meant that the older name with the \"then\" typo be added as a deprecated_name so that for now it would still work? They\u0027re so similar it\u0027s hard to spot the difference sometimes...","commit_id":"0fa61293e7c730d31f39eb3477e0878827d32457"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"2006ede0395b0e10e788beb75ff0637cb7f6f270","unresolved":false,"context_lines":[{"line_number":268,"context_line":"                    \"i.e. \u00271979-10-03T23:23:23\u0027. Make sure the \u0027T\u0027 is between \""},{"line_number":269,"context_line":"                    \"date and time Default None.\","},{"line_number":270,"context_line":"               ),"},{"line_number":271,"context_line":"    cfg.FloatOpt(\u0027remove-older-than\u0027,"},{"line_number":272,"context_line":"                 short\u003d\u0027R\u0027,"},{"line_number":273,"context_line":"                 dest\u003d\u0027remove_older_than\u0027,"},{"line_number":274,"context_line":"                 help\u003d\"Checks in the specified container for objects older \""},{"line_number":275,"context_line":"                      \"than the specified number of days. \""},{"line_number":276,"context_line":"                      \"If i.e. 30 is specified, it \""},{"line_number":277,"context_line":"                      \"will remove the remote object older than 30 days. \""},{"line_number":278,"context_line":"                      \"Default False (Disabled)\"),"},{"line_number":279,"context_line":"    cfg.StrOpt(\u0027max-priority\u0027,"},{"line_number":280,"context_line":"               dest\u003d\u0027max_priority\u0027,"},{"line_number":281,"context_line":"               help\u003d\"Set the cpu process to the highest priority (i.e. -20 on \""}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_a3dbae4e","line":278,"range":{"start_line":271,"start_character":2,"end_line":278,"end_character":50},"in_reply_to":"1aa78d24_aa2d7690","updated":"2016-07-14 09:54:21.000000000","message":"it was a mistake from my part, we are no longer deprecating this functionality.","commit_id":"0fa61293e7c730d31f39eb3477e0878827d32457"}],"freezer/job.py":[{"author":{"_account_id":15041,"name":"Domhnall Walsh","email":"domhnall.eam.walsh@hpe.com","username":"domhnall"},"change_message_id":"58ba0badd7a8370cfcff8fabf8a10e2e23e53c65","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        timestamp \u003d utils.date_to_timestamp(self.conf.remove_from_date)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        self.storage.remove_older_than(timestamp,"},{"line_number":255,"context_line":"                                       self.conf.hostname_backup_name)"},{"line_number":256,"context_line":"        return {}"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_cd20574c","line":255,"range":{"start_line":254,"start_character":8,"end_line":255,"end_character":70},"updated":"2016-07-11 14:09:04.000000000","message":"Should this still be here?","commit_id":"1edbec42602aa5823b22832cfa7918b7b86f965a"},{"author":{"_account_id":12512,"name":"Deklan Dieterly","email":"deklan.dieterly@hpe.com","username":"deklan"},"change_message_id":"752e5a40cc0d4c09f3fa5c79b768426cb5e75a84","unresolved":false,"context_lines":[{"line_number":244,"context_line":"class AdminJob(Job):"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def execute_method(self):"},{"line_number":247,"context_line":"        if not self.conf.remove_before_date:"},{"line_number":248,"context_line":"            raise Exception(\"--remove-before-date expected\")"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_27b64fdc","line":247,"updated":"2016-07-11 16:54:33.000000000","message":"Do we need to log before the exception is raised?","commit_id":"0ca349212d1500356b5e8458ea7626d022736cc0"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"d0eb50a88145adfb8b9fdb5d33d3e3db3c51a82a","unresolved":false,"context_lines":[{"line_number":244,"context_line":"class AdminJob(Job):"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def execute_method(self):"},{"line_number":247,"context_line":"        if not self.conf.remove_before_date:"},{"line_number":248,"context_line":"            raise Exception(\"--remove-before-date expected\")"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_8f1d9564","line":247,"in_reply_to":"1aa78d24_27b64fdc","updated":"2016-07-11 18:24:43.000000000","message":"yes","commit_id":"0ca349212d1500356b5e8458ea7626d022736cc0"},{"author":{"_account_id":12512,"name":"Deklan Dieterly","email":"deklan.dieterly@hpe.com","username":"deklan"},"change_message_id":"752e5a40cc0d4c09f3fa5c79b768426cb5e75a84","unresolved":false,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        try:"},{"line_number":251,"context_line":"            timestamp \u003d utils.date_to_timestamp(self.conf.remove_before_date)"},{"line_number":252,"context_line":"        except TypeError:"},{"line_number":253,"context_line":"            timestamp \u003d self.conf.remove_before_date"},{"line_number":254,"context_line":"        except ValueError:"},{"line_number":255,"context_line":"            raise Exception(\u0027Expected ISO datetime or Timestamp\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_c744abb8","line":252,"updated":"2016-07-11 16:54:33.000000000","message":"Usually using exceptions to handle cases that aren\u0027t exceptional is not a good practice. Could you explain in a comment what is being done here?","commit_id":"0ca349212d1500356b5e8458ea7626d022736cc0"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"d0eb50a88145adfb8b9fdb5d33d3e3db3c51a82a","unresolved":false,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        try:"},{"line_number":251,"context_line":"            timestamp \u003d utils.date_to_timestamp(self.conf.remove_before_date)"},{"line_number":252,"context_line":"        except TypeError:"},{"line_number":253,"context_line":"            timestamp \u003d self.conf.remove_before_date"},{"line_number":254,"context_line":"        except ValueError:"},{"line_number":255,"context_line":"            raise Exception(\u0027Expected ISO datetime or Timestamp\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_cf42fd3d","line":252,"in_reply_to":"1aa78d24_c744abb8","updated":"2016-07-11 18:24:43.000000000","message":"if the input is already a timestamp I want to take the value, but first it will try to parse it, so in a TypeError, we should get the same value as the input, no parse, but should be a better way","commit_id":"0ca349212d1500356b5e8458ea7626d022736cc0"},{"author":{"_account_id":12512,"name":"Deklan Dieterly","email":"deklan.dieterly@hpe.com","username":"deklan"},"change_message_id":"752e5a40cc0d4c09f3fa5c79b768426cb5e75a84","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            timestamp \u003d utils.date_to_timestamp(self.conf.remove_before_date)"},{"line_number":252,"context_line":"        except TypeError:"},{"line_number":253,"context_line":"            timestamp \u003d self.conf.remove_before_date"},{"line_number":254,"context_line":"        except ValueError:"},{"line_number":255,"context_line":"            raise Exception(\u0027Expected ISO datetime or Timestamp\u0027)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        self.storage.remove_from_date(timestamp,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_072eb3f9","line":254,"updated":"2016-07-11 16:54:33.000000000","message":"Do we need to log before the exception is raised?","commit_id":"0ca349212d1500356b5e8458ea7626d022736cc0"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"d0eb50a88145adfb8b9fdb5d33d3e3db3c51a82a","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            timestamp \u003d utils.date_to_timestamp(self.conf.remove_before_date)"},{"line_number":252,"context_line":"        except TypeError:"},{"line_number":253,"context_line":"            timestamp \u003d self.conf.remove_before_date"},{"line_number":254,"context_line":"        except ValueError:"},{"line_number":255,"context_line":"            raise Exception(\u0027Expected ISO datetime or Timestamp\u0027)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        self.storage.remove_from_date(timestamp,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_af3fb1b2","line":254,"in_reply_to":"1aa78d24_072eb3f9","updated":"2016-07-11 18:24:43.000000000","message":"yes","commit_id":"0ca349212d1500356b5e8458ea7626d022736cc0"},{"author":{"_account_id":14101,"name":"yapeng Yang","email":"a394954369@gmail.com","username":"yapeng"},"change_message_id":"2265a8fafc8312a6dd3052a3a28fd47f6e746a06","unresolved":false,"context_lines":[{"line_number":244,"context_line":"class AdminJob(Job):"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def execute_method(self):"},{"line_number":247,"context_line":"        if not self.conf.remove_before_date:"},{"line_number":248,"context_line":"            raise Exception(\"--remove-before-date expected\")"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_e04e5695","line":247,"updated":"2016-07-18 09:52:11.000000000","message":"if not (self.conf.remove_before_date or self.conf.remove_older_than): \n\nif self.conf.remove_old_than, freezer has remove old backup aslo","commit_id":"0fa61293e7c730d31f39eb3477e0878827d32457"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"54c0e6d765daf3ab19906c70812541fde492a94a","unresolved":false,"context_lines":[{"line_number":244,"context_line":"class AdminJob(Job):"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def execute_method(self):"},{"line_number":247,"context_line":"        if not self.conf.remove_before_date:"},{"line_number":248,"context_line":"            raise Exception(\"--remove-before-date expected\")"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_b3265166","line":247,"in_reply_to":"dada55a8_e04e5695","updated":"2016-08-03 13:28:35.000000000","message":"Done","commit_id":"0fa61293e7c730d31f39eb3477e0878827d32457"}],"freezer/main.py":[{"author":{"_account_id":12512,"name":"Deklan Dieterly","email":"deklan.dieterly@hpe.com","username":"deklan"},"change_message_id":"752e5a40cc0d4c09f3fa5c79b768426cb5e75a84","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    response \u003d freezer_job.execute()"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    # inject remove-from-date functionality for a backup and restore jobs"},{"line_number":133,"context_line":"    if conf.remove_before_date or conf.remove_from_date \\"},{"line_number":134,"context_line":"            and conf.action !\u003d \u0027admin\u0027:"},{"line_number":135,"context_line":"        # return something here"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_e74e07c0","line":132,"updated":"2016-07-11 16:54:33.000000000","message":"Could we consistently start comments with caps?","commit_id":"0ca349212d1500356b5e8458ea7626d022736cc0"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"d0eb50a88145adfb8b9fdb5d33d3e3db3c51a82a","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    response \u003d freezer_job.execute()"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    # inject remove-from-date functionality for a backup and restore jobs"},{"line_number":133,"context_line":"    if conf.remove_before_date or conf.remove_from_date \\"},{"line_number":134,"context_line":"            and conf.action !\u003d \u0027admin\u0027:"},{"line_number":135,"context_line":"        # return something here"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_0f1b6574","line":132,"in_reply_to":"1aa78d24_e74e07c0","updated":"2016-07-11 18:24:43.000000000","message":"my mistake, I\u0027ll do that","commit_id":"0ca349212d1500356b5e8458ea7626d022736cc0"},{"author":{"_account_id":12512,"name":"Deklan Dieterly","email":"deklan.dieterly@hpe.com","username":"deklan"},"change_message_id":"752e5a40cc0d4c09f3fa5c79b768426cb5e75a84","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    response \u003d freezer_job.execute()"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    # inject remove-from-date functionality for a backup and restore jobs"},{"line_number":133,"context_line":"    if conf.remove_before_date or conf.remove_from_date \\"},{"line_number":134,"context_line":"            and conf.action !\u003d \u0027admin\u0027:"},{"line_number":135,"context_line":"        # return something here"},{"line_number":136,"context_line":"        job.AdminJob(conf, storage).execute()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_878463b1","line":133,"updated":"2016-07-11 16:54:33.000000000","message":"Need to use parens for continuation instead of \\. Parens are preferred.","commit_id":"0ca349212d1500356b5e8458ea7626d022736cc0"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"d0eb50a88145adfb8b9fdb5d33d3e3db3c51a82a","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    response \u003d freezer_job.execute()"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    # inject remove-from-date functionality for a backup and restore jobs"},{"line_number":133,"context_line":"    if conf.remove_before_date or conf.remove_from_date \\"},{"line_number":134,"context_line":"            and conf.action !\u003d \u0027admin\u0027:"},{"line_number":135,"context_line":"        # return something here"},{"line_number":136,"context_line":"        job.AdminJob(conf, storage).execute()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_2f2c6198","line":133,"in_reply_to":"1aa78d24_878463b1","updated":"2016-07-11 18:24:43.000000000","message":"I\u0027ll do that, thanks","commit_id":"0ca349212d1500356b5e8458ea7626d022736cc0"}],"freezer/storage/base.py":[{"author":{"_account_id":12512,"name":"Deklan Dieterly","email":"deklan.dieterly@hpe.com","username":"deklan"},"change_message_id":"752e5a40cc0d4c09f3fa5c79b768426cb5e75a84","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        now \u003d time.time()"},{"line_number":179,"context_line":"        seconds_old \u003d utils.days_to_seconds(remove_older_than_days)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def should_remove(self, backup):"},{"line_number":182,"context_line":"        \"\"\""},{"line_number":183,"context_line":"        whether or not a backup should be deleted, a backup might belong to an"},{"line_number":184,"context_line":"        incremental series, so it should not be deleted."}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_7ba2affd","line":181,"updated":"2016-07-11 16:54:33.000000000","message":"Is this supposed to be an abstract method? If so, it needs the @abstractmethod annotation. If not, what is is supposed to do? It would need an implementation.","commit_id":"0ca349212d1500356b5e8458ea7626d022736cc0"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"d0eb50a88145adfb8b9fdb5d33d3e3db3c51a82a","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        now \u003d time.time()"},{"line_number":179,"context_line":"        seconds_old \u003d utils.days_to_seconds(remove_older_than_days)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def should_remove(self, backup):"},{"line_number":182,"context_line":"        \"\"\""},{"line_number":183,"context_line":"        whether or not a backup should be deleted, a backup might belong to an"},{"line_number":184,"context_line":"        incremental series, so it should not be deleted."}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_cf14bd45","line":181,"in_reply_to":"1aa78d24_7ba2affd","updated":"2016-07-11 18:24:43.000000000","message":"the commit is not ready yet, but is not supposed to be abstract, it will be shared by all the classes that inherit from this, the meaning of this function is to check if a backup belongs to an incremental series, if the backups to be removed are within a series that is still on going, it should not delete the older backups, we need all the levels to restore","commit_id":"0ca349212d1500356b5e8458ea7626d022736cc0"},{"author":{"_account_id":14101,"name":"yapeng Yang","email":"a394954369@gmail.com","username":"yapeng"},"change_message_id":"2265a8fafc8312a6dd3052a3a28fd47f6e746a06","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                   if b.latest_update.timestamp \u003c remove_older_timestamp]"},{"line_number":169,"context_line":"        for b in backups:"},{"line_number":170,"context_line":"            b.storage.remove_backup(b)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def remove_older_than(self, days, hostname_backup_name):"},{"line_number":173,"context_line":"        \"\"\"Removes backups older than n amount of days."},{"line_number":174,"context_line":"        :param days: int"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_20e22e04","line":171,"updated":"2016-07-18 09:52:11.000000000","message":"This method is not used？","commit_id":"0fa61293e7c730d31f39eb3477e0878827d32457"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"54c0e6d765daf3ab19906c70812541fde492a94a","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                   if b.latest_update.timestamp \u003c remove_older_timestamp]"},{"line_number":169,"context_line":"        for b in backups:"},{"line_number":170,"context_line":"            b.storage.remove_backup(b)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def remove_older_than(self, days, hostname_backup_name):"},{"line_number":173,"context_line":"        \"\"\"Removes backups older than n amount of days."},{"line_number":174,"context_line":"        :param days: int"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_4a35a1d8","line":171,"in_reply_to":"dada55a8_20e22e04","updated":"2016-08-03 13:28:35.000000000","message":"it is, you can pass the parameter --remove-older-than 30, which 30 is the number of days.","commit_id":"0fa61293e7c730d31f39eb3477e0878827d32457"}],"freezer/storage/swift.py":[{"author":{"_account_id":17001,"name":"Tim Buckley","email":"timothy.jas.buckley@hpe.com","username":"timothy.jas.buckley"},"change_message_id":"a326ff0d911c94323caeb154b850561374cb8501","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            :type backup: freezer.storage.base.Backup"},{"line_number":168,"context_line":"            :return:"},{"line_number":169,"context_line":"        \"\"\""},{"line_number":170,"context_line":"        print(backup.increments[0].__repr__())"},{"line_number":171,"context_line":"        for i in range(backup.latest_update.level, -1, -1):"},{"line_number":172,"context_line":"            if i in backup.increments:"},{"line_number":173,"context_line":"                # remove segment"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_879e2352","line":170,"range":{"start_line":170,"start_character":8,"end_line":170,"end_character":46},"updated":"2016-07-11 16:43:53.000000000","message":"Looks like a leftover debugging printline. Should this be removed?","commit_id":"0ca349212d1500356b5e8458ea7626d022736cc0"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"d0eb50a88145adfb8b9fdb5d33d3e3db3c51a82a","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            :type backup: freezer.storage.base.Backup"},{"line_number":168,"context_line":"            :return:"},{"line_number":169,"context_line":"        \"\"\""},{"line_number":170,"context_line":"        print(backup.increments[0].__repr__())"},{"line_number":171,"context_line":"        for i in range(backup.latest_update.level, -1, -1):"},{"line_number":172,"context_line":"            if i in backup.increments:"},{"line_number":173,"context_line":"                # remove segment"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_c40dc43f","line":170,"range":{"start_line":170,"start_character":8,"end_line":170,"end_character":46},"in_reply_to":"1aa78d24_879e2352","updated":"2016-07-11 18:24:43.000000000","message":"thanks, it should be removed, my mistake","commit_id":"0ca349212d1500356b5e8458ea7626d022736cc0"},{"author":{"_account_id":17001,"name":"Tim Buckley","email":"timothy.jas.buckley@hpe.com","username":"timothy.jas.buckley"},"change_message_id":"75141485f3ea271860a3376470a3c78dc4a15920","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        for i in range(backup.latest_update.level, -1, -1):"},{"line_number":171,"context_line":"            if i in backup.increments:"},{"line_number":172,"context_line":"                # remove segment"},{"line_number":173,"context_line":"                self.remove(self.segments, backup.increments[i].__repr__())"},{"line_number":174,"context_line":"                # remove tar"},{"line_number":175,"context_line":"                self.remove(self.container, backup.increments[i].tar())"},{"line_number":176,"context_line":"                # remove manifest"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_9e01bcb2","line":173,"range":{"start_line":173,"start_character":64,"end_line":173,"end_character":74},"updated":"2016-07-13 22:40:21.000000000","message":"Why use thing.__repr__() instead of just str(thing) or repr(thing)?","commit_id":"0fa61293e7c730d31f39eb3477e0878827d32457"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"2006ede0395b0e10e788beb75ff0637cb7f6f270","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        for i in range(backup.latest_update.level, -1, -1):"},{"line_number":171,"context_line":"            if i in backup.increments:"},{"line_number":172,"context_line":"                # remove segment"},{"line_number":173,"context_line":"                self.remove(self.segments, backup.increments[i].__repr__())"},{"line_number":174,"context_line":"                # remove tar"},{"line_number":175,"context_line":"                self.remove(self.container, backup.increments[i].tar())"},{"line_number":176,"context_line":"                # remove manifest"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_03ed62ef","line":173,"range":{"start_line":173,"start_character":64,"end_line":173,"end_character":74},"in_reply_to":"1aa78d24_9e01bcb2","updated":"2016-07-14 09:54:21.000000000","message":"thanks, it make more sense to describe this like str(thing), I\u0027ll change this.","commit_id":"0fa61293e7c730d31f39eb3477e0878827d32457"}],"freezer/utils/utils.py":[{"author":{"_account_id":17001,"name":"Tim Buckley","email":"timothy.jas.buckley@hpe.com","username":"timothy.jas.buckley"},"change_message_id":"a326ff0d911c94323caeb154b850561374cb8501","unresolved":false,"context_lines":[{"line_number":516,"context_line":"    :param n: number of days"},{"line_number":517,"context_line":"    :return: int"},{"line_number":518,"context_line":"    \"\"\""},{"line_number":519,"context_line":"    return n * 86400"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_87cc6362","line":519,"range":{"start_line":519,"start_character":4,"end_line":519,"end_character":20},"updated":"2016-07-11 16:43:53.000000000","message":"Could datetime.timedelta be used instead? E.g.\n\n    timedelta(days\u003dn).total_seconds()","commit_id":"0ca349212d1500356b5e8458ea7626d022736cc0"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"d0eb50a88145adfb8b9fdb5d33d3e3db3c51a82a","unresolved":false,"context_lines":[{"line_number":516,"context_line":"    :param n: number of days"},{"line_number":517,"context_line":"    :return: int"},{"line_number":518,"context_line":"    \"\"\""},{"line_number":519,"context_line":"    return n * 86400"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_840f3c38","line":519,"range":{"start_line":519,"start_character":4,"end_line":519,"end_character":20},"in_reply_to":"1aa78d24_87cc6362","updated":"2016-07-11 18:24:43.000000000","message":"could be, I\u0027m going to check if is possible to add the delta to a timestamp, thanks","commit_id":"0ca349212d1500356b5e8458ea7626d022736cc0"},{"author":{"_account_id":15041,"name":"Domhnall Walsh","email":"domhnall.eam.walsh@hpe.com","username":"domhnall"},"change_message_id":"1accaedeaff7d25215f0383852d9a6c55a779769","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        ])"},{"line_number":509,"context_line":"    except Exception as priority_error:"},{"line_number":510,"context_line":"        LOG.warning(\u0027Priority: {0}\u0027.format(priority_error))"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"def days_to_seconds(n):"},{"line_number":514,"context_line":"    \"\"\""},{"line_number":515,"context_line":"    86400 seconds in a day"},{"line_number":516,"context_line":"    :param n: number of days"},{"line_number":517,"context_line":"    :return: int"},{"line_number":518,"context_line":"    \"\"\""},{"line_number":519,"context_line":"    return n * 86400"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_cb792cfe","line":519,"range":{"start_line":511,"start_character":0,"end_line":519,"end_character":20},"updated":"2016-07-12 10:57:36.000000000","message":"Do you need this any more?","commit_id":"fbc44b1fe2366dcb75a3f30d8fe8db564dda538e"},{"author":{"_account_id":14340,"name":"Memo Garcia","email":"guillermo.ramirez-garcia@hp.com","username":"memogarcia"},"change_message_id":"045bb29827af81e3872db9d861705094197ecaee","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        ])"},{"line_number":509,"context_line":"    except Exception as priority_error:"},{"line_number":510,"context_line":"        LOG.warning(\u0027Priority: {0}\u0027.format(priority_error))"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"def days_to_seconds(n):"},{"line_number":514,"context_line":"    \"\"\""},{"line_number":515,"context_line":"    86400 seconds in a day"},{"line_number":516,"context_line":"    :param n: number of days"},{"line_number":517,"context_line":"    :return: int"},{"line_number":518,"context_line":"    \"\"\""},{"line_number":519,"context_line":"    return n * 86400"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_d171d60d","line":519,"range":{"start_line":511,"start_character":0,"end_line":519,"end_character":20},"in_reply_to":"1aa78d24_cb792cfe","updated":"2016-07-12 13:14:13.000000000","message":"yes, still need it, remove_older_than accepts a number of days, but the actual removal happens with time-stamps, so we need to convert the input to seconds and subtract them to time.now()","commit_id":"fbc44b1fe2366dcb75a3f30d8fe8db564dda538e"}],"tests/unit/storages/test_base.py":[{"author":{"_account_id":15041,"name":"Domhnall Walsh","email":"domhnall.eam.walsh@hpe.com","username":"domhnall"},"change_message_id":"1accaedeaff7d25215f0383852d9a6c55a779769","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            base.Backup(t, \"host_backup\", 5000),"},{"line_number":182,"context_line":"        ]"},{"line_number":183,"context_line":"        t.remove_backup \u003d mock.Mock()"},{"line_number":184,"context_line":"        t.remove_from_date(3000, \"host_backup\")"},{"line_number":185,"context_line":"        t.remove_backup.assert_any_call(r1)"},{"line_number":186,"context_line":"        t.remove_backup.assert_any_call(r2)"},{"line_number":187,"context_line":"        assert t.remove_backup.call_count \u003d\u003d 2"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_6bdf58d6","line":184,"range":{"start_line":184,"start_character":17,"end_line":184,"end_character":26},"updated":"2016-07-12 10:57:36.000000000","message":"This is now deprecated as a command-line option, right? Does the method name match the new command-line option\u0027s name (i.e. something like \u0027remove_before_date\u0027) or is this valid? If so, should we consider changing it for consistency?","commit_id":"fbc44b1fe2366dcb75a3f30d8fe8db564dda538e"}]}
