-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathremove_containers.py
More file actions
54 lines (46 loc) · 1.54 KB
/
remove_containers.py
File metadata and controls
54 lines (46 loc) · 1.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import json
from argparse import ArgumentParser
import docker
"""
Script for removing containers associated with specified instance IDs.
"""
def main(instance_ids, predictions_path):
all_ids = set()
if predictions_path:
with open(predictions_path, "r") as f:
predictions = json.loads(f.read())
for pred in predictions:
all_ids.add(pred["instance_id"])
if instance_ids:
all_ids |= set(instance_ids)
if not all_ids:
print("No instance IDs provided, exiting.")
return
for instance_id in all_ids:
try:
client = docker.from_env()
container = client.containers.get(f"sweb.eval.{instance_id}")
container.stop()
container.remove()
print(f"Removed container {instance_id}")
except docker.errors.NotFound:
print(f"Container {instance_id} not found, skipping.")
except Exception as e:
print(f"Error removing container {instance_id}: {e}")
continue
if __name__ == "__main__":
parser = ArgumentParser(description=__doc__)
parser.add_argument(
"--instance_ids",
help="Instance IDs to remove containers for",
)
parser.add_argument(
"--predictions_path",
help="Path to predictions file",
)
args = parser.parse_args()
instance_ids = [i.strip() for i in args.instance_ids.split(",")] if args.instance_ids else []
main(
instance_ids=instance_ids,
predictions_path=args.predictions_path,
)