Skip to content

Commit

Permalink
Add host achievements list to cli
Browse files Browse the repository at this point in the history
  • Loading branch information
Digant C Kasundra committed May 15, 2015
1 parent 5f25365 commit fab367e
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 4 deletions.
33 changes: 31 additions & 2 deletions bin/hermes
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,29 @@ def list_host_events(args):
events = host.get_latest_events(args.limit)

for event in events:
print "{} {} {} {}".format(event.timestamp, event.event_type.category, event.event_type.state, event.note)
print "{} {} {} {}".format(
event.timestamp, event.event_type.category,
event.event_type.state, event.note
)


def list_host_achievements(args):
logging.debug("list_host_achievements(%s)", args.hostname)
session = make_session()
host = Host.get_host(session, args.hostname)
if host is None:
logging.error("Could not find hostname %s", args.hostname)
return

achievements = host.get_open_achievements(args.limit)

for achievement in achievements:
print "{} created by {} {} {}".format(
achievement.creation_time,
achievement.creation_event.event_type.category,
achievement.creation_event.event_type.state,
achievement.creation_event.note
)


def create_event(args):
Expand Down Expand Up @@ -160,9 +182,16 @@ def parse_cli_args():
host_events_parser.add_argument("hostname")
host_events_parser.add_argument(
"-l", "--limit", default=20, type=int,
help="Limit the number of events displayed"
help="Limit the number of Events displayed"
)
host_events_parser.set_defaults(func=list_host_events)
host_achievements_parser = host_subparser.add_parser("achievements")
host_achievements_parser.add_argument("hostname")
host_achievements_parser.add_argument(
"-l", "--limit", default=20, type=int,
help="Limit the number of Achievements displayed"
)
host_achievements_parser.set_defaults(func=list_host_achievements)

# events command line parser
event_parser = subparsers.add_parser(
Expand Down
23 changes: 21 additions & 2 deletions hermes/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -321,10 +321,10 @@ def get_host(cls, session, hostname):
return session.query(Host).filter(Host.hostname == hostname).first()

def get_latest_events(self, limit=20):
"""Get the latest events for this Host
"""Get the latest Events for this Host
Args:
limit: the number of events to return
limit: the number of Events to return
Returns:
list of Events
Expand All @@ -335,6 +335,25 @@ def get_latest_events(self, limit=20):
.from_self().order_by(Event.timestamp)
)

def get_open_achievements(self, limit=20):
"""Get the open Achievements for this Host
Args:
limit: the number of Achievements to return
Returns:
list of Achievements
"""
return (
self.session.query(Achievement).filter(
and_(
Achievement.host == self,
Achievement.completion_time == None
))
.order_by(desc(Achievement.creation_time)).limit(limit)
.from_self().order_by(Achievement.creation_time)
)


class Fate(Model):
"""A Fate is a mapping of EventTypes to inform the system what kind of Events
Expand Down

0 comments on commit fab367e

Please sign in to comment.