Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 17 additions & 9 deletions sipssert/scenario.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
from sipssert import tracer
from sipssert import tasks_list
from sipssert import junit_reporter
from docker.errors import NotFound, APIError

LOGS_DIR = "logs"
NETWORK_CAP = "net_capture"
Expand Down Expand Up @@ -91,13 +92,20 @@ def create_scen_logs_dir(self):
def create_volumes(self):
if isinstance(self.volumes, list):
self.volumes = {volume: {} for volume in self.volumes}

self.created_volumes = set()

for volume_name in self.volumes:
try:
self.controller.docker.volumes.get(volume_name)
logger.slog.info(f"volume {volume_name} already exists")
except NotFound:
self.controller.docker.volumes.create(name=volume_name,
driver='local',
labels={'scenario': self.name})
driver='local',
labels={'scenario': self.name})
self.created_volumes.add(volume_name)
logger.slog.info(f"volume {volume_name} created in scenario {self.name}")
except Exception as exc:
except APIError as exc:
logger.slog.error(f"could not create volume {volume_name} in scenario {self.name}")
logger.slog.exception(exc)
self.volumes.pop(volume_name)
Expand Down Expand Up @@ -130,14 +138,14 @@ def run(self):
self.cleanup_tasks.run(force_all=True)
except Exception:
logger.slog.exception("Error occured during cleanup task")
for volume_name in self.volumes:
for volume_name in self.created_volumes:
try:
volume = self.controller.docker.volumes.get(volume_name)
volume_labels = volume.attrs.get('Labels', {})
if volume_labels.get('scenario') == self.name:
self.controller.docker.volumes.get(volume.name).remove()
logger.slog.info(f"volume {volume} removed")
except Exception as exc:
volume.remove()
logger.slog.info(f"volume {volume_name} removed")
except NotFound:
logger.slog.warning(f"volume {volume_name} not found during cleanup")
except APIError as exc:
logger.slog.error(f"could not remove volume {volume}")
logger.slog.exception(exc)
if not self.no_trace:
Expand Down
Loading