Improve the upgrade command, to allow better automation

the goal being, to add/enable a new upgrade via UI, then let overnight script
run the "enabled" upgrade if it exists
This commit is contained in:
Lance Edgar 2017-10-25 23:06:58 -07:00
parent 6279d3d21c
commit ea2dccd237

View file

@ -1021,7 +1021,7 @@ class Upgrade(Subcommand):
description = __doc__.strip() description = __doc__.strip()
def add_parser_args(self, parser): def add_parser_args(self, parser):
parser.add_argument('description', parser.add_argument('--description',
help="Description for the new/matched upgrade.") help="Description for the new/matched upgrade.")
parser.add_argument('--enabled', action='store_true', default=True, parser.add_argument('--enabled', action='store_true', default=True,
help="Indicate the enabled flag should be ON for the new/matched upgrade. " help="Indicate the enabled flag should be ON for the new/matched upgrade. "
@ -1051,16 +1051,7 @@ class Upgrade(Subcommand):
model = self.model model = self.model
user = self.get_runas_user(session) user = self.get_runas_user(session)
upgrades = session.query(model.Upgrade)\
.filter(model.Upgrade.description == args.description)
if args.create: if args.create:
count = upgrades.count()
if count:
self.stderr.write("{} upgrades already exists with description: {}\n".format(count, args.description))
session.rollback()
session.close()
sys.exit(1)
upgrade = model.Upgrade() upgrade = model.Upgrade()
upgrade.description = args.description upgrade.description = args.description
upgrade.created = make_utc() upgrade.created = make_utc()
@ -1071,16 +1062,19 @@ class Upgrade(Subcommand):
log.info("user '{}' created new upgrade: {}".format(user.username, upgrade)) log.info("user '{}' created new upgrade: {}".format(user.username, upgrade))
else: else:
query = upgrades.filter(model.Upgrade.enabled == args.enabled) upgrades = session.query(model.Upgrade)\
.filter(model.Upgrade.enabled == args.enabled)
if args.description:
upgrades = upgrades.filter(model.Upgrade.description == args.description)
try: try:
upgrade = query.one() upgrade = upgrades.one()
except NoResultFound: except NoResultFound:
self.stderr.write("no upgrade found matching description: {}\n".format(args.description)) self.stderr.write("no matching upgrade found\n")
session.rollback() session.rollback()
session.close() session.close()
sys.exit(1) sys.exit(1)
except MultipleResultsFound: except MultipleResultsFound:
self.stderr.write("found {} matching upgrades for description: {}\n".format(query.count(), args.description)) self.stderr.write("found {} matching upgrades\n".format(upgrades.count()))
session.rollback() session.rollback()
session.close() session.close()
sys.exit(1) sys.exit(1)