gitextract_scgum9gk/ ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ ├── generate-docs.yml │ └── python-publish.yml ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── bin/ │ └── spotty ├── docs/ │ ├── Makefile │ ├── make.bat │ ├── requirements.txt │ └── source/ │ ├── _static/ │ │ ├── favicon/ │ │ │ ├── browserconfig.xml │ │ │ └── site.webmanifest │ │ ├── scripts.js │ │ └── styles.css │ ├── conf.py │ ├── docs/ │ │ ├── cli/ │ │ │ ├── spotty-aws.rst │ │ │ ├── spotty-download.rst │ │ │ ├── spotty-exec.rst │ │ │ ├── spotty-run.rst │ │ │ ├── spotty-sh.rst │ │ │ ├── spotty-start.rst │ │ │ ├── spotty-stop.rst │ │ │ ├── spotty-sync.rst │ │ │ └── spotty.rst │ │ ├── providers/ │ │ │ ├── aws/ │ │ │ │ ├── caching-docker-image-on-an-ebs-volume.md │ │ │ │ ├── ebs-volumes-and-deletion-policies.md │ │ │ │ ├── faq.md │ │ │ │ ├── instance-parameters.md │ │ │ │ └── overview.rst │ │ │ ├── gcp/ │ │ │ │ ├── account-preparation.md │ │ │ │ ├── caching-docker-image-on-a-disk.md │ │ │ │ ├── disks-and-deletion-policies.md │ │ │ │ ├── instance-parameters.md │ │ │ │ └── overview.rst │ │ │ ├── local/ │ │ │ │ ├── instance-parameters.md │ │ │ │ └── overview.rst │ │ │ └── remote/ │ │ │ ├── instance-parameters.md │ │ │ └── overview.rst │ │ └── user-guide/ │ │ ├── configuration-file.md │ │ ├── getting-started.md │ │ └── installation.md │ ├── index.rst │ └── main.html ├── setup.cfg ├── setup.py ├── spotty/ │ ├── __init__.py │ ├── cli.py │ ├── commands/ │ │ ├── __init__.py │ │ ├── abstract_command.py │ │ ├── abstract_config_command.py │ │ ├── abstract_provider_command.py │ │ ├── aws.py │ │ ├── download.py │ │ ├── exec.py │ │ ├── run.py │ │ ├── sh.py │ │ ├── start.py │ │ ├── status.py │ │ ├── stop.py │ │ ├── sync.py │ │ └── writers/ │ │ ├── __init__.py │ │ ├── abstract_output_writrer.py │ │ ├── null_output_writrer.py │ │ └── output_writrer.py │ ├── config/ │ │ ├── __init__.py │ │ ├── abstract_instance_config.py │ │ ├── abstract_instance_volume.py │ │ ├── config_utils.py │ │ ├── container_config.py │ │ ├── host_path_volume.py │ │ ├── project_config.py │ │ ├── tmp_dir_volume.py │ │ └── validation.py │ ├── configuration.py │ ├── deployment/ │ │ ├── __init__.py │ │ ├── abstract_cloud_instance/ │ │ │ ├── __init__.py │ │ │ ├── abstract_bucket_manager.py │ │ │ ├── abstract_cloud_instance_manager.py │ │ │ ├── abstract_data_transfer.py │ │ │ ├── abstract_instance_deployment.py │ │ │ ├── errors/ │ │ │ │ ├── __init__.py │ │ │ │ └── bucket_not_found.py │ │ │ ├── file_structure.py │ │ │ └── resources/ │ │ │ ├── __init__.py │ │ │ ├── abstract_bucket.py │ │ │ └── abstract_instance.py │ │ ├── abstract_docker_instance_manager.py │ │ ├── abstract_instance_manager.py │ │ ├── abstract_ssh_instance_manager.py │ │ ├── container/ │ │ │ ├── __init__.py │ │ │ ├── abstract_container_commands.py │ │ │ ├── abstract_container_script.py │ │ │ └── docker/ │ │ │ ├── __init__.py │ │ │ ├── docker_commands.py │ │ │ └── scripts/ │ │ │ ├── __init__.py │ │ │ ├── abstract_docker_script.py │ │ │ ├── container_bash_script.py │ │ │ ├── data/ │ │ │ │ ├── container_bash.sh.tpl │ │ │ │ ├── start_container.sh.tpl │ │ │ │ └── stop_container.sh.tpl │ │ │ ├── start_container_script.py │ │ │ └── stop_container_script.py │ │ └── utils/ │ │ ├── __init__.py │ │ ├── cli.py │ │ ├── commands.py │ │ ├── print_info.py │ │ └── user_scripts.py │ ├── errors/ │ │ ├── __init__.py │ │ ├── instance_not_running.py │ │ └── nothing_to_do.py │ ├── providers/ │ │ ├── __init__.py │ │ ├── aws/ │ │ │ ├── __init__.py │ │ │ ├── cfn_templates/ │ │ │ │ ├── __init__.py │ │ │ │ ├── instance/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── files/ │ │ │ │ │ │ │ └── tmux.conf │ │ │ │ │ │ ├── startup_scripts/ │ │ │ │ │ │ │ ├── 01_prepare_instance.sh │ │ │ │ │ │ │ ├── 02_mount_volumes.sh │ │ │ │ │ │ │ ├── 03_set_docker_root.sh │ │ │ │ │ │ │ ├── 04_sync_project.sh │ │ │ │ │ │ │ ├── 05_run_instance_startup_commands.sh │ │ │ │ │ │ │ └── user_data.sh │ │ │ │ │ │ └── template.yaml │ │ │ │ │ ├── start_container_script.py │ │ │ │ │ └── template.py │ │ │ │ └── instance_profile/ │ │ │ │ ├── __init__.py │ │ │ │ ├── data/ │ │ │ │ │ └── template.yaml │ │ │ │ └── template.py │ │ │ ├── commands/ │ │ │ │ ├── __init__.py │ │ │ │ ├── clean_logs.py │ │ │ │ └── spot_prices.py │ │ │ ├── config/ │ │ │ │ ├── __init__.py │ │ │ │ ├── ebs_volume.py │ │ │ │ ├── instance_config.py │ │ │ │ └── validation.py │ │ │ ├── data_transfer.py │ │ │ ├── deletion_policies.py │ │ │ ├── errors/ │ │ │ │ ├── __init__.py │ │ │ │ └── volume_not_found.py │ │ │ ├── helpers/ │ │ │ │ ├── __init__.py │ │ │ │ ├── ami.py │ │ │ │ ├── availability_zone.py │ │ │ │ ├── instance_prices.py │ │ │ │ ├── logs.py │ │ │ │ ├── s3_sync.py │ │ │ │ ├── subnet.py │ │ │ │ └── vpc.py │ │ │ ├── instance_deployment.py │ │ │ ├── instance_manager.py │ │ │ ├── resource_managers/ │ │ │ │ ├── __init__.py │ │ │ │ ├── bucket_manager.py │ │ │ │ ├── instance_profile_stack_manager.py │ │ │ │ ├── instance_stack_manager.py │ │ │ │ └── key_pair_manager.py │ │ │ └── resources/ │ │ │ ├── __init__.py │ │ │ ├── bucket.py │ │ │ ├── image.py │ │ │ ├── instance.py │ │ │ ├── snapshot.py │ │ │ ├── stack.py │ │ │ ├── subnet.py │ │ │ ├── volume.py │ │ │ └── vpc.py │ │ ├── gcp/ │ │ │ ├── __init__.py │ │ │ ├── config/ │ │ │ │ ├── __init__.py │ │ │ │ ├── disk_volume.py │ │ │ │ ├── image_uri.py │ │ │ │ ├── instance_config.py │ │ │ │ └── validation.py │ │ │ ├── data_transfer.py │ │ │ ├── dm_templates/ │ │ │ │ ├── __init__.py │ │ │ │ └── instance/ │ │ │ │ ├── __init__.py │ │ │ │ ├── data/ │ │ │ │ │ ├── startup_script.sh.tpl │ │ │ │ │ ├── startup_scripts/ │ │ │ │ │ │ ├── 01_prepare_instance.sh │ │ │ │ │ │ ├── 02_mount_volumes.sh │ │ │ │ │ │ ├── 03_set_docker_root.sh │ │ │ │ │ │ ├── 04_sync_project.sh │ │ │ │ │ │ └── 05_run_instance_startup_commands.sh │ │ │ │ │ └── template.yaml │ │ │ │ └── instance_template.py │ │ │ ├── errors/ │ │ │ │ ├── __init__.py │ │ │ │ └── image_not_found.py │ │ │ ├── helpers/ │ │ │ │ ├── __init__.py │ │ │ │ ├── ce_client.py │ │ │ │ ├── deployment.py │ │ │ │ ├── dm_client.py │ │ │ │ ├── dm_resource.py │ │ │ │ ├── gcp_credentials.py │ │ │ │ ├── gs_client.py │ │ │ │ ├── gsutil_rsync.py │ │ │ │ ├── image.py │ │ │ │ ├── rtc_client.py │ │ │ │ └── volumes.py │ │ │ ├── instance_deployment.py │ │ │ ├── instance_manager.py │ │ │ ├── resource_managers/ │ │ │ │ ├── __init__.py │ │ │ │ ├── bucket_manager.py │ │ │ │ ├── instance_stack_manager.py │ │ │ │ └── ssh_key_manager.py │ │ │ └── resources/ │ │ │ ├── __init__.py │ │ │ ├── bucket.py │ │ │ ├── disk.py │ │ │ ├── image.py │ │ │ ├── instance.py │ │ │ ├── snapshot.py │ │ │ └── stack.py │ │ ├── instance_manager_factory.py │ │ ├── local/ │ │ │ ├── __init__.py │ │ │ ├── config/ │ │ │ │ ├── __init__.py │ │ │ │ ├── instance_config.py │ │ │ │ └── validation.py │ │ │ └── instance_manager.py │ │ └── remote/ │ │ ├── __init__.py │ │ ├── config/ │ │ │ ├── __init__.py │ │ │ ├── instance_config.py │ │ │ └── validation.py │ │ ├── helpers/ │ │ │ └── rsync.py │ │ └── instance_manager.py │ └── utils.py └── tests/ ├── __init__.py ├── container_config.py ├── helpers/ │ ├── __init__.py │ ├── cli.py │ └── spotty_cli.py └── providers/ ├── __init__.py ├── aws/ │ ├── __init__.py │ ├── commands/ │ │ ├── data/ │ │ │ └── test-project/ │ │ │ ├── ignored-dir/ │ │ │ │ ├── ignored-file │ │ │ │ └── included-file │ │ │ ├── ignored-file │ │ │ ├── local-file │ │ │ └── spotty.yaml │ │ ├── download.py │ │ └── sync.py │ ├── config/ │ │ ├── __init__.py │ │ ├── container_deployment.py │ │ ├── data/ │ │ │ ├── config-wo-mounts.yaml │ │ │ └── config1.yaml │ │ └── instance_config_validation.py │ └── project_resources/ │ ├── __init__.py │ ├── bucket.py │ └── key_pair.py ├── gcp/ │ └── config/ │ ├── __init__.py │ └── image_uri.py └── local/ ├── __init__.py ├── commands/ │ ├── __init__.py │ ├── data/ │ │ └── test-project/ │ │ └── spotty.yaml │ └── run.py └── config/ ├── __init__.py ├── container_deployment.py └── data/ └── config1.yaml