def upgradeRollback(self, backup):
# You don't want d.restore() because it doesn't perform
# the file level backup
- shell.call("wizard", "restore", backup)
- try:
- self.prod.verifyWeb()
- except deploy.WebVerificationError:
- logging.critical("Web verification failed after rollback")
+ if not self.options.disable_rollback:
+ shell.call("wizard", "restore", backup)
+ try:
+ self.prod.verifyWeb()
+ except deploy.WebVerificationError:
+ logging.critical("Web verification failed after rollback")
+ else:
+ logging.warning("Rollback was disabled; you can rollback with `wizard restore %s`", backup)
# utility functions
parser.add_option("--rr-cache", dest="rr_cache", metavar="PATH",
default=None, help="Use this folder to reuse recorded merge resolutions. Defaults to"
"your production copy's rr-cache, if it exists.")
+ parser.add_option("--disable-rollback", dest="disable_rollback", action="store_true",
+ default=command.boolish(os.getenv("WIZARD_DISABLE_ROLLBACK")),
+ help="Skips rollback in the event of a failed upgrade. Envvar is WIZARD_DISABLE_ROLLBACK.")
baton.push(parser, "srv_path")
options, args = parser.parse_all(argv)
if len(args) > 1: