return
backup = self.backup()
self.upgrade(backup)
+ # Note: disable_rollback assumes that upgrade is the last
+ # step, if you add another setp you may have to modify this
+ # to accomodate that.
finally:
if self.use_shm and self.temp_dir and os.path.exists(self.temp_dir):
shutil.rmtree(self.temp_dir)
self.prod.verifyDatabase()
self.prod.verifyTag(options.srv_path)
self.prod.verifyGit(options.srv_path)
- self.prod.verifyConfigured()
+ if not options.skip_verification:
+ self.prod.verifyConfigured()
try:
shell.call("git", "fetch", "--tags") # XXX: hack since some installs have stale tags
except shell.CallError as e:
break
else:
raise VersionRematchFailed
- self.prod.verifyWeb()
+ if not options.skip_verification:
+ self.prod.verifyWeb()
self.preflightAlreadyUpgraded()
self.preflightQuota()
def preflightBlacklist(self):
self.prod.upgrade(version_obj, self.options)
self.prod.verifyWeb()
except app.UpgradeFailure:
- logging.warning("Upgrade failed: rolling back")
- self.upgradeRollback(backup)
+ if self.options.disable_rollback:
+ logging.warning("Upgrade failed, rollback is disabled")
+ logging.warning("You can manually rollback with: wizard restore top")
+ else:
+ logging.warning("Upgrade failed: rolling back")
+ self.upgradeRollback(backup)
raise
except deploy.WebVerificationError as e:
- logging.warning("Web verification failed: rolling back")
- self.upgradeRollback(backup)
+ if self.options.disable_rollback:
+ logging.warning("Web verification failed, rollback is disabled")
+ logging.warning("You can manually rollback with: wizard restore top")
+ else:
+ logging.warning("Web verification failed: rolling back")
+ self.upgradeRollback(backup)
raise app.UpgradeVerificationFailure()
# XXX: frob .htaccess to make site accessible
# to do this, check if .htaccess changed, first. Upgrade
"resolved using the current working directory as the resolved copy.")
parser.add_option("--force", dest="force", action="store_true",
default=False, help="Force running upgrade even if it's already at latest version.")
+ parser.add_option("--skip-verification", dest="skip-verification", action="store_true",
+ default=False, help="Skip running configuration and web verification checks.")
+ parser.add_option("--disable-rollback", dest="disable-rollback", action="store_true",
+ default=False, help="Don't automatically rollback the upgrade if the result fails to verify.")
parser.add_option("--non-interactive", dest="non_interactive", action="store_true",
default=False, help="Don't drop to shell in event of conflict.")
parser.add_option("--rr-cache", dest="rr_cache", metavar="PATH",