Source code for mirrors.cmdline

from cmd import Cmd
import logging
from mirrors.repo import RepoError


[docs]class Console(Cmd): def __init__(self, repo_manager): Cmd.__init__(self) self.prompt = "> " self.intro = "Welcome to the mirrors interactive shell. Type help to display commands." self.repo_manager = repo_manager
[docs] def do_status(self, *args): """Prints status table or the status of an individual sync.""" name = args[0] if name: try: print self.repo_manager.status(name) except RepoError as e: print e.message else: for key in self.repo_manager.gen_repo(): self.do_status(key.name)
[docs] def do_list(self, *args): """List all of the loaded repos.""" for key in self.repo_manager.gen_repo(): print key
[docs] def do_enqueue(self, *args): """Add repo onto the end of the async queue.""" name = args[0] if name == "all": for repo in self.repo_manager.gen_repo(): self.do_enqueue(repo.name) elif name: try: self.repo_manager.enqueue(name) print("{0} added to sync queue".format(name)) except RepoError as e: print(e.message) else: print("Requires a repo name as an argument.")
do_start = do_enqueue
[docs] def do_activate(self, *args): """Activate repo for syncing.""" name = args[0] if name: try: self.repo_manager.activate(name) except RepoError as e: print e.message else: print("Requires a repo name as an argument.")
[docs] def do_deactivate(self, *args): """Deactivate repo from syncing.""" name = args[0] if name: try: self.repo_manager.deactivate(name) except RepoError as e: print e.message else: print("Requires a repo name as an argument.")
[docs] def do_print(self, *args): """Print config and status events. TODO """ pass
[docs] def do_config(self, *args): """Edit configuration running settings. TODO """ pass
[docs] def do_write(self, *args): """Write configuration settings to file. TODO """ pass
[docs] def do_add(self, *args): """Add repo from running config. TODO """ pass
[docs] def do_del(self, *args): """Delete repo from running config. TODO """ pass
[docs] def do_reload(self, *args): """Reload either individual or entire config. TODO """ pass
[docs] def do_terminate(self, *args): """Send SIGTERM to rsync process.""" if args[0]: self.repo_manager.get_repo(args[0]).terminate() else: print("Missing required argument: Repo")
do_kill = do_terminate
[docs] def do_forcekill(self, *args): """Send SIGKILL to rsync process.""" if args[0]: self.repo_manager.get_repo(args[0]).kill() else: print("Missing required argument: Repo")
[docs] def do_exit(self, *args): """Stops all syncs and terminates mirrors.""" return True
do_quit = do_exit
[docs] def postloop(self): """postloop cleanup.""" # Cleanup Process for key in self.repo_manager.gen_repo(): key.terminate() print("Terminating mirrors process") logging.debug("Process Terminated via REPL")