#!/usr/bin/python import sys import os import argparse import eos_downloader.eos from loguru import logger from rich.console import Console ARISTA_TOKEN = os.getenv('ARISTA_TOKEN', '') def read_cli(): parser = argparse.ArgumentParser(description='EOS downloader script.') parser.add_argument('--token', required=False, default=ARISTA_TOKEN, help='arista.com user API key - can use ENV:ARISTA_TOKEN') parser.add_argument('--image', required=False, default='EOS', help='Type of EOS image required') parser.add_argument('--version', required=True, default='', help='EOS version to download from website') parser.add_argument('--destination', required=False, default=str(os.getcwd()), help='Path where to save EOS package downloaded') parser.add_argument('--eve', required=False, action='store_true', help="Option to install EOS package to EVE-NG") parser.add_argument('--noztp', required=False, action='store_true', help="Option to deactivate ZTP when used with EVE-NG") parser.add_argument('--import_docker', required=False, action='store_true', help="Option to import cEOS image to docker") parser.add_argument('--docker_name', required=False, default='arista/ceos', help='Docker image name to use') parser.add_argument('--verbose', required=False, default='info', help='Script verbosity') parser.add_argument('--log', required=False, action='store_true', help="Option to activate logging to eos-downloader.log file") return parser.parse_args() if __name__ == '__main__': cli_options = read_cli() console = Console() console.print('\n[red]WARNING: This script is now deprecated. Please use ardl cli instead[/red]\n\n') if cli_options.token is None or cli_options.token == '': console.print('\nā— Token is unset ! Please configure ARISTA_TOKEN or use --token option', style="bold red") sys.exit(1) logger.remove() if cli_options.log: logger.add("eos-downloader.log", rotation="10 MB", level=str(cli_options.verbose).upper()) console.print("šŸŖ [bold blue]eos-downloader[/bold blue] is starting...", ) console.print(f' - Image Type: {cli_options.image}') console.print(f' - Version: {cli_options.version}') my_download = eos_downloader.eos.EOSDownloader( image=cli_options.image, software='EOS', version=cli_options.version, token=cli_options.token, hash_method='sha512sum') my_download.authenticate() if cli_options.eve: my_download.provision_eve(noztp=cli_options.noztp, checksum=True) else: my_download.download_local(file_path=cli_options.destination, checksum=True) if cli_options.import_docker: my_download.docker_import( image_name=cli_options.docker_name ) console.print('āœ… processing done !') sys.exit(0)