spacecmd/src/lib/schedule.py | 110 +++++++++++++++++++++++++++++++++++--------
1 file changed, 92 insertions(+), 18 deletions(-)
New commits:
commit 60c60692a0d610781bac9280fcefcefb1854c7db
Author: Aron Parsons <aparsons(a)redhat.com>
Date: Tue Jul 27 11:34:11 2010 -0400
don't include archived actions in the default call of schedule_list
diff --git a/spacecmd/src/lib/schedule.py b/spacecmd/src/lib/schedule.py
index f922c9e..2aa72d4 100644
--- a/spacecmd/src/lib/schedule.py
+++ b/spacecmd/src/lib/schedule.py
@@ -50,7 +50,17 @@ def print_schedule_summary(self, type, args):
elif type == 'archived':
actions = self.client.schedule.listArchivedActions(self.session)
elif type == 'all':
- actions = self.client.schedule.listAllActions(self.session)
+ # get actions in all states except archived
+ in_progress = self.client.schedule.listInProgressActions(self.session)
+ completed = self.client.schedule.listCompletedActions(self.session)
+ failed = self.client.schedule.listFailedActions(self.session)
+
+ actions = []
+ added = []
+ for action in in_progress + completed + failed:
+ if action.get('id') not in added:
+ actions.append(action)
+ added.append(action.get('id'))
else:
return
commit 0fe21b8b29e70a0642009f3c363d56808a71afaf
Author: Aron Parsons <aparsons(a)redhat.com>
Date: Tue Jul 27 11:26:07 2010 -0400
significant improvement to the performance of schedule_list* functions
diff --git a/spacecmd/src/lib/schedule.py b/spacecmd/src/lib/schedule.py
index f077a19..f922c9e 100644
--- a/spacecmd/src/lib/schedule.py
+++ b/spacecmd/src/lib/schedule.py
@@ -66,22 +66,35 @@ def print_schedule_summary(self, type, args):
if end_date:
if action.get('earliest') > end_date: continue
- pending = self.client.schedule.listInProgressSystems(self.session,
- action.get('id'))
-
- completed = self.client.schedule.listCompletedSystems(self.session,
- action.get('id'))
-
- failed = self.client.schedule.listFailedSystems(self.session,
- action.get('id'))
-
- print '%s %s %s %s %s %s' % \
- (str(action.get('id')).ljust(6),
- action.get('earliest'),
- str(len(completed)).rjust(3),
- str(len(failed)).rjust(3),
- str(len(pending)).rjust(3),
- action.get('name'))
+ if self.check_api_version('10.11'):
+ print '%s %s %s %s %s %s' % \
+ (str(action.get('id')).ljust(6),
+ action.get('earliest'),
+ str(action.get('completedSystems')).rjust(3),
+ str(action.get('failedSystems')).rjust(3),
+ str(action.get('inProgressSystems')).rjust(3),
+ action.get('name'))
+ else:
+ # Satellite 5.3 compatibility
+ in_progress = \
+ self.client.schedule.listInProgressSystems(self.session,
+ action.get('id'))
+
+ completed = \
+ self.client.schedule.listCompletedSystems(self.session,
+ action.get('id'))
+
+ failed = \
+ self.client.schedule.listFailedSystems(self.session,
+ action.get('id'))
+
+ print '%s %s %s %s %s %s' % \
+ (str(action.get('id')).ljust(6),
+ action.get('earliest'),
+ str(len(completed)).rjust(3),
+ str(len(failed)).rjust(3),
+ str(len(in_progress)).rjust(3),
+ action.get('name'))
####################
commit c239630777a9969ac260d28c7eeb962b321c6456
Author: Aron Parsons <aparsons(a)redhat.com>
Date: Tue Jul 27 10:45:23 2010 -0400
changed where an empty list is checked for in schedule_reschedule
diff --git a/spacecmd/src/lib/schedule.py b/spacecmd/src/lib/schedule.py
index bbdf889..f077a19 100644
--- a/spacecmd/src/lib/schedule.py
+++ b/spacecmd/src/lib/schedule.py
@@ -151,10 +151,6 @@ def do_schedule_reschedule(self, args):
failed_actions = self.client.schedule.listFailedActions(self.session)
failed_actions = [ a.get('id') for a in failed_actions ]
- if not len(failed_actions):
- logging.warning('No failed actions to reschedule')
- return
-
to_reschedule = []
# reschedule all failed actions
@@ -175,6 +171,10 @@ def do_schedule_reschedule(self, args):
logging.warning('%s is not a valid ID' % str(a))
continue
+ if not len(to_reschedule):
+ logging.warning('No failed actions to reschedule')
+ return
+
self.client.schedule.rescheduleActions(self.session, to_reschedule, True)
print 'Rescheduled %i action(s)' % len(to_reschedule)
commit 3facd97341b2ec38fceb7a0022e5031e70b563ec
Author: Aron Parsons <aparsons(a)redhat.com>
Date: Tue Jul 27 10:32:19 2010 -0400
fixed tab completion in schedule_cancel
diff --git a/spacecmd/src/lib/schedule.py b/spacecmd/src/lib/schedule.py
index fa19165..bbdf889 100644
--- a/spacecmd/src/lib/schedule.py
+++ b/spacecmd/src/lib/schedule.py
@@ -92,7 +92,7 @@ def help_schedule_cancel(self):
def complete_schedule_cancel(self, text, line, beg, end):
try:
actions = self.client.schedule.listInProgressActions(self.session)
- return tab_completer([ a.get('id') for a in actions ], text)
+ return tab_completer([ str(a.get('id')) for a in actions ], text)
except:
return []
commit 6ea381c50ee1dd1cafa2b6abe0dc7c7bd0ac68ac
Author: Aron Parsons <aparsons(a)redhat.com>
Date: Tue Jul 27 10:31:47 2010 -0400
added function schedule_reschedule
diff --git a/spacecmd/src/lib/schedule.py b/spacecmd/src/lib/schedule.py
index 63539ff..fa19165 100644
--- a/spacecmd/src/lib/schedule.py
+++ b/spacecmd/src/lib/schedule.py
@@ -130,6 +130,57 @@ def do_schedule_cancel(self, args):
####################
+def help_schedule_reschedule(self):
+ print 'schedule_reschedule: Reschedule failed actions'
+ print 'usage: schedule_reschedule ID|* ...'
+
+def complete_schedule_reschedule(self, text, line, beg, end):
+ try:
+ actions = self.client.schedule.listFailedActions(self.session)
+ return tab_completer([ str(a.get('id')) for a in actions ], text)
+ except Exception:
+ return []
+
+def do_schedule_reschedule(self, args):
+ args = parse_arguments(args)
+
+ if not len(args):
+ self.help_schedule_reschedule()
+ return
+
+ failed_actions = self.client.schedule.listFailedActions(self.session)
+ failed_actions = [ a.get('id') for a in failed_actions ]
+
+ if not len(failed_actions):
+ logging.warning('No failed actions to reschedule')
+ return
+
+ to_reschedule = []
+
+ # reschedule all failed actions
+ if '.*' in args:
+ if not self.user_confirm('Reschedule all failed actions [y/N]:'): return
+ to_reschedule = failed_actions
+ else:
+ # use the list of action IDs passed in
+ for a in args:
+ try:
+ action_id = int(a)
+
+ if action_id in failed_actions:
+ to_reschedule.append(action_id)
+ else:
+ logging.warning('%i is not a failed action' % action_id)
+ except ValueError:
+ logging.warning('%s is not a valid ID' % str(a))
+ continue
+
+ self.client.schedule.rescheduleActions(self.session, to_reschedule, True)
+
+ print 'Rescheduled %i action(s)' % len(to_reschedule)
+
+####################
+
def help_schedule_details(self):
print 'schedule_details: Show the details of a scheduled action'
print 'usage: schedule_details ID'