Downloading files to locally repro crashes (#3160)

Add `repro get_files` command
This commit is contained in:
Kanan B
2023-06-07 08:17:51 -07:00
committed by GitHub
parent e448947abe
commit 8e2e11fcd9

View File

@ -546,6 +546,38 @@ class Repro(Endpoint):
"GET", models.Repro, data=requests.ReproGet(vm_id=vm_id_expanded) "GET", models.Repro, data=requests.ReproGet(vm_id=vm_id_expanded)
) )
def get_files(
self,
report_container: primitives.Container,
report_name: str,
include_setup: bool = False,
output_dir: primitives.Directory = primitives.Directory("."),
) -> None:
"""downloads the files necessary to locally repro the crash from a given report"""
report_bytes = self.onefuzz.containers.files.get(report_container, report_name)
report = json.loads(report_bytes)
self.logger.info(
"downloading files necessary to locally repro crash %s",
report["input_blob"]["name"],
)
self.onefuzz.containers.files.download(
report["input_blob"]["container"],
report["input_blob"]["name"],
os.path.join(output_dir, report["input_blob"]["name"]),
)
if include_setup:
setup_container = list(
self.onefuzz.jobs.containers.list(
report["job_id"], enums.ContainerType.setup
)
)[0]
self.onefuzz.containers.files.download_dir(
primitives.Container(setup_container), output_dir
)
def create( def create(
self, container: primitives.Container, path: str, duration: int = 24 self, container: primitives.Container, path: str, duration: int = 24
) -> models.Repro: ) -> models.Repro: