def terminate_kickstart_sessions(server_id): log_debug(3, server_id) history = [] tokens_obj = rhnFlags.get('registration_token') current_ks_session_id = tokens_obj.get_kickstart_session_id() # ks_session_id can be null h = rhnSQL.prepare(_query_lookup_pending_kickstart_sessions) h.execute(server_id=server_id, ks_session_id=current_ks_session_id) log_debug(4, "current_ks_session_id", current_ks_session_id) ks_session_ids = [] action_ids = [] while 1: row = h.fetchone_dict() if not row: break ks_session_ids.append(row['id']) action_ids.append(row['action_id']) if not ks_session_ids: # Nothing to do log_debug(4, "Nothing to do", server_id, current_ks_session_id) return [] ks_session_table = rhnSQL.Table('rhnKickstartSessionState', 'label') state_id_failed = ks_session_table['failed']['id'] state_ids = [state_id_failed] * len(ks_session_ids) # Add a history item for ks_session_id in ks_session_ids: log_debug(4, "Adding history entry for session id", ks_session_id) history.append( ("Kickstart session canceled", "A kickstart session for this system was canceled because " "the system was re-registered with token <strong>%s</strong>" % tokens_obj.get_names())) h = rhnSQL.prepare(_query_terminate_pending_kickstart_sessions) params = { 'kickstart_session_id': ks_session_ids, 'state_id': state_ids, } # Terminate pending actions log_debug(4, "Terminating sessions", params) h.execute_bulk(params) # Invalidate pending actions for action_id in action_ids: if action_id is None: continue rhnAction.invalidate_action(server_id, action_id) return history
def terminate_kickstart_sessions(server_id): log_debug(3, server_id) history = [] tokens_obj = rhnFlags.get('registration_token') current_ks_session_id = tokens_obj.get_kickstart_session_id() # ks_session_id can be null h = rhnSQL.prepare(_query_lookup_pending_kickstart_sessions) h.execute(server_id=server_id, ks_session_id=current_ks_session_id) log_debug(4, "current_ks_session_id", current_ks_session_id) ks_session_ids = [] action_ids = [] while 1: row = h.fetchone_dict() if not row: break ks_session_ids.append(row['id']) action_ids.append(row['action_id']) if not ks_session_ids: # Nothing to do log_debug(4, "Nothing to do", server_id, current_ks_session_id) return [] ks_session_table = rhnSQL.Table('rhnKickstartSessionState', 'label') state_id_failed = ks_session_table['failed']['id'] state_ids = [state_id_failed] * len(ks_session_ids) # Add a history item for ks_session_id in ks_session_ids: log_debug(4, "Adding history entry for session id", ks_session_id) history.append(("Kickstart session canceled", "A kickstart session for this system was canceled because " "the system was re-registered with token <strong>%s</strong>" % tokens_obj.get_names())) h = rhnSQL.prepare(_query_terminate_pending_kickstart_sessions) params = { 'kickstart_session_id': ks_session_ids, 'state_id': state_ids, } # Terminate pending actions log_debug(4, "Terminating sessions", params) h.execute_bulk(params) # Invalidate pending actions for action_id in action_ids: if action_id is None: continue rhnAction.invalidate_action(server_id, action_id) return history
def _invalidate_child_actions(self, action_id): f_action_ids = rhnAction.invalidate_action(self.server_id, action_id) for f_action_id in f_action_ids: # Invalidate any kickstart session that depends on this action server_kickstart.update_kickstart_session(self.server_id, f_action_id, action_status=3, kickstart_state='failed', next_action_type=None) return f_action_ids
def look_at_actions(server_id): h = rhnSQL.prepare(_query_action_lookup) h.execute(server_id=server_id) return h.fetchall_dict() if __name__ == "__main__": myserver = TestServer() #myserver.upload_packages('/home/devel/wregglej/rpmtest') #handler = rhnHandler() #print handler.auth_system( myserver.getSystemId() ) #up2date = myserver.getUp2date() #id = myserver.getSystemId() #print up2date.solvedep( id, ['libcaps.so'] ) #print "Done!" #rhnserver = rhnServer.Server(myserver.testuser, org_id=myserver.org_id) fake_key = create_activation_key(org_id=myserver.org_id, user_id=myserver.testuser.getid(), channels=[myserver.label], server_id=myserver.getServerId()) fake_action = rhnAction.schedule_server_action(myserver.getServerId(), "packages.update", action_name="Testing", delta_time=9999, org_id=myserver.org_id) fake_token = rhnServer.search_token(fake_key._token) print look_at_actions(myserver.getServerId()) rhnFlags.set("registration_token", fake_token) myserver.testserver.use_token() print look_at_actions(myserver.getServerId()) rhnAction.invalidate_action(myserver.getServerId(), fake_action) rhnSQL.rollback()
myserver = TestServer() #myserver.upload_packages('/home/devel/wregglej/rpmtest') #handler = rhnHandler() #print handler.auth_system( myserver.getSystemId() ) #up2date = myserver.getUp2date() #id = myserver.getSystemId() #print up2date.solvedep( id, ['libcaps.so'] ) #print "Done!" #rhnserver = rhnServer.Server(myserver.testuser, org_id=myserver.org_id) fake_key = create_activation_key(org_id=myserver.org_id, user_id=myserver.testuser.getid(), channels=[myserver.label], server_id=myserver.getServerId()) fake_action = rhnAction.schedule_server_action(myserver.getServerId(), "packages.update", action_name="Testing", delta_time=9999, org_id=myserver.org_id) fake_token = rhnServer.search_token(fake_key._token) print look_at_actions(myserver.getServerId()) rhnFlags.set("registration_token", fake_token) myserver.testserver.use_token() print look_at_actions(myserver.getServerId()) rhnAction.invalidate_action(myserver.getServerId(), fake_action) rhnSQL.rollback()