Skip to content
This repository has been archived by the owner on Nov 1, 2023. It is now read-only.

Commit

Permalink
Add Onefuzz.container.reset to the SDK (#198)
Browse files Browse the repository at this point in the history
  • Loading branch information
anshuman-goel authored Oct 23, 2020
1 parent 6989cf9 commit 2fe56f9
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 25 deletions.
43 changes: 24 additions & 19 deletions src/cli/onefuzz/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,29 @@ def list(self) -> List[responses.ContainerInfoBase]:
self.logger.debug("list containers")
return self._req_model_list("GET", responses.ContainerInfoBase)

def reset(
self, container_types: Optional[List[enums.ContainerType]] = None
) -> None:
"""Reset containers unless specified.
[Caution]: It can lead to unexpected results.
The default conatiners are listed ContainerType.reset_defaults
"""
if not container_types:
container_types = enums.ContainerType.reset_defaults()

if not container_types:
raise Exception("Container type is None")

for container in self.list():
if (
container.metadata
and "container_type" in container.metadata
and enums.ContainerType(container.metadata["container_type"])
in container_types
):
self.logger.info("removing container: %s", container.name)
self.delete(container.name)


class Repro(Endpoint):
""" Interact with Reproduction VMs """
Expand Down Expand Up @@ -1364,25 +1387,7 @@ def _delete_components(
self.scalesets.shutdown(scaleset.scaleset_id, now=True)

if containers:
for container in self.containers.list():
if (
container.metadata
and "container_type" in container.metadata
and container.metadata["container_type"]
in [
"analysis",
"coverage",
"crashes",
"inputs",
"no_repro",
"readonly_inputs",
"reports",
"setup",
"unique_reports",
]
):
self.logger.info("removing container: %s", container.name)
self.containers.delete(container.name)
self.containers.reset()

def reset(
self,
Expand Down
26 changes: 20 additions & 6 deletions src/pytypes/onefuzztypes/enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -189,17 +189,31 @@ class Compare(Enum):


class ContainerType(Enum):
setup = "setup"
analysis = "analysis"
coverage = "coverage"
crashes = "crashes"
inputs = "inputs"
no_repro = "no_repro"
readonly_inputs = "readonly_inputs"
unique_inputs = "unique_inputs"
coverage = "coverage"
reports = "reports"
unique_reports = "unique_reports"
no_repro = "no_repro"
setup = "setup"
tools = "tools"
analysis = "analysis"
unique_inputs = "unique_inputs"
unique_reports = "unique_reports"

@classmethod
def reset_defaults(cls) -> List["ContainerType"]:
return [
cls.analysis,
cls.coverage,
cls.crashes,
cls.inputs,
cls.no_repro,
cls.readonly_inputs,
cls.reports,
cls.setup,
cls.unique_reports,
]


class StatsFormat(Enum):
Expand Down

0 comments on commit 2fe56f9

Please sign in to comment.