import itertools
import wizard
-from wizard import deploy, util, shell, sset, command
+from wizard import deploy, util, scripts, shell, sset, command
def main(argv, baton):
options, args = parse_args(argv, baton)
errors = {}
i = 0
merge_fails = [0] # otherwise I get a UnboundLocalError later on when I increment
- deploys = deploy.parse_install_lines(app, options.versions_path)
+ deploys = deploy.parse_install_lines(app, options.versions_path, user=options.user)
requested_deploys = itertools.islice(deploys, options.limit)
for i, d in enumerate(requested_deploys, 1):
# check if we want to punt due to --limit
name = e.name
if name not in errors: errors[name] = []
errors[name].append(d)
- logging.error("%s in [%04d] %s" % (name, i, d.location))
+ if name == "WebVerificationError":
+ try:
+ host, path = scripts.get_web_host_and_path(d.location)
+ url = "http://%s%s" % (host, path)
+ except ValueError:
+ url = d.location
+ # This should actually be a warning, but
+ # it's a really common error
+ logging.info("Could not verify application at %s" % url)
+ else:
+ logging.error("%s in [%04d] %s" % (name, i, d.location))
errors_log.write("%s\n" % d.location)
return (on_success, on_error)
on_success, on_error = make_on_pair(d, i)
sh.join()
for name, deploys in errors.items():
logging.warning("%s from %d installs" % (name, len(deploys)))
- if merge_fails:
+ if merge_fails[0]:
logging.warning("%d out of %d installs (%.1f%%) had merge failure" % (merge_fails[0], i, float(merge_fails[0])/i*100))
def parse_args(argv, baton):
baton.push(parser ,"limit")
baton.push(parser, "versions_path")
baton.push(parser, "srv_path")
+ baton.push(parser, "user")
+ parser.add_option("--force", dest="force", action="store_true",
+ default=False, help="Force running upgrade even if it's already at latest version.")
options, args, = parser.parse_all(argv)
if len(args) > 1:
parser.error("too many arguments")
return options, args
def calculate_base_args(options):
- return command.makeBaseArgs(options, dry_run="--dry-run", srv_path="--srv-path")
+ return command.makeBaseArgs(options, dry_run="--dry-run", srv_path="--srv-path", force="--force")