def logs(id, url, tail, follow, sleep_duration=1): """ Print the logs of the run. """ tail = tail or follow log_msg_printed = False while True: try: experiment = ExperimentClient().get(normalize_job_name(id)) except FloydException: experiment = ExperimentClient().get(id) instance_log_id = experiment.instance_log_id if instance_log_id: break elif not log_msg_printed: floyd_logger.info("Waiting for logs ...\n") log_msg_printed = True sleep(1) log_url = "{}/api/v1/resources/{}?content=true".format( floyd.floyd_host, instance_log_id) if url: floyd_logger.info(log_url) return if tail: floyd_logger.info("Launching job ...") current_shell_output = "" while True: # Get the logs in a loop and log the new lines log_file_contents = ResourceClient().get_content(instance_log_id) print_output = log_file_contents[len(current_shell_output):] if len(print_output.strip()): floyd_logger.info(print_output) current_shell_output = log_file_contents sleep(sleep_duration) else: log_file_contents = ResourceClient().get_content(instance_log_id) if len(log_file_contents.strip()): floyd_logger.info(log_file_contents) else: floyd_logger.info("Launching job now. Try after a few seconds.")
def logs(id, url, tail, sleep_duration=1): """ Print the logs of the run. """ try: experiment = ExperimentClient().get(normalize_job_name(id)) except FloydException: experiment = ExperimentClient().get(id) if experiment.state == 'queued': floyd_logger.info("Job is currently in a queue") return instance_log_id = experiment.instance_log_id if not instance_log_id: floyd_logger.info("Job not started yet, no log to show.") sys.exit(1) log_url = "{}/api/v1/resources/{}?content=true".format( floyd.floyd_host, instance_log_id) if url: floyd_logger.info(log_url) return if tail: floyd_logger.info("Launching job ...") current_shell_output = "" while True: # Get the logs in a loop and log the new lines log_file_contents = ResourceClient().get_content(instance_log_id) print_output = log_file_contents[len(current_shell_output):] if len(print_output.strip()): floyd_logger.info(print_output) current_shell_output = log_file_contents sleep(sleep_duration) else: log_file_contents = ResourceClient().get_content(instance_log_id) if len(log_file_contents.strip()): floyd_logger.info(log_file_contents) else: floyd_logger.info("Launching job now. Try after a few seconds.")
def logs(id, url, follow, sleep_duration=1): """ View the logs of a job. To follow along a job in real time, use the --follow flag """ instance_log_id = get_log_id(id) if url: log_url = "{}/api/v1/resources/{}?content=true".format( floyd.floyd_host, instance_log_id) floyd_logger.info(log_url) return if follow: floyd_logger.info("Launching job ...") follow_logs(instance_log_id, sleep_duration) else: log_file_contents = ResourceClient().get_content(instance_log_id) if len(log_file_contents.strip()): floyd_logger.info(log_file_contents.rstrip()) else: floyd_logger.info("Launching job now. Try after a few seconds.")
def logs(id, url, tail, follow, sleep_duration=1): """ Print the logs of the run. """ tail = tail or follow instance_log_id = get_log_id(id) if url: log_url = "{}/api/v1/resources/{}?content=true".format( floyd.floyd_host, instance_log_id) floyd_logger.info(log_url) return if tail: floyd_logger.info("Launching job ...") follow_logs(instance_log_id, sleep_duration) else: log_file_contents = ResourceClient().get_content(instance_log_id) if len(log_file_contents.strip()): floyd_logger.info(log_file_contents.rstrip()) else: floyd_logger.info("Launching job now. Try after a few seconds.")