Skip to content

Commit 90434b3

Browse files
authored
Merge pull request #11 from OpenLabsX/adam-ami-dicts
2 parents 5d780fd + db97fb5 commit 90434b3

File tree

3 files changed

+76
-0
lines changed

3 files changed

+76
-0
lines changed

src/app/enums/operating_systems.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
from enum import Enum
2+
3+
4+
class OpenLabsOS(Enum):
5+
"""OpenLabs supported OS."""
6+
7+
DEBIAN_11 = "debian_11" # Debian 11
8+
DEBIAN_12 = "debian_12" # Debian 12
9+
UBUNTU_20 = "ubuntu_20" # Debian 20.04
10+
UBUNTU_22 = "ubuntu_22" # Ubuntu 22.04
11+
UBUNTU_24 = "ubuntu_24" # Ubuntu 24.04
12+
SUSE_12 = "suse_12" # SUSE 12
13+
SUSE_15 = "suse_15" # SUSE 15
14+
# CENTOS_9 = "centos_9" # CentOS Stream 9
15+
# CENTOS_10 = "centos_10" # CentOS Stream 10
16+
KALI = "kali" # Kali Linux
17+
WINDOWS_10 = "windows_10" # Windows 10
18+
WINDOWS_11 = "windows_11" # Windows 11
19+
WINDOWS_2016 = "windows_2016" # Windows Server 2016
20+
WINDOWS_2019 = "windows_2019" # Windows Server 2019
21+
WINDOWS_2022 = "windows_2022" # Windows Server 2022
22+
23+
24+
# Using AWS ami
25+
AWS_OS_MAP = {
26+
# Debian - https://wiki.debian.org/Cloud/AmazonEC2Image
27+
OpenLabsOS.DEBIAN_11: "ami-053413bdacb39d8dc",
28+
OpenLabsOS.DEBIAN_12: "ami-0e8087266e36fe754",
29+
# Ubuntu - https://cloud-images.ubuntu.com/locator/ec2/
30+
OpenLabsOS.UBUNTU_20: "ami-014f7ab33242ea43c",
31+
OpenLabsOS.UBUNTU_22: "ami-0e1bed4f06a3b463d",
32+
OpenLabsOS.UBUNTU_24: "ami-04b4f1a9cf54c11d0",
33+
# SUSE
34+
OpenLabsOS.SUSE_12: "ami-0d6a3fb3bfdd87b52",
35+
OpenLabsOS.SUSE_15: "ami-0d9f9dbae7b9a241d",
36+
# CentOS - https://www.centos.org/download/aws-images/
37+
# OpenLabsOS.CENTOS_9 : "ami-0705f7887207411ca"
38+
# OpenLabsOS.CENTOS_10 : "ami-03753625d82454d04"
39+
# Kali - https://aws.amazon.com/marketplace/server/configuration?productId=804fcc46-63fc-4eb6-85a1-50e66d6c7215
40+
OpenLabsOS.KALI: "ami-02be3d7604aff56a7",
41+
# Windows
42+
OpenLabsOS.WINDOWS_2016: "ami-032ec7a32b7fb247c",
43+
OpenLabsOS.WINDOWS_2019: "ami-049dd04cca2dc5594",
44+
OpenLabsOS.WINDOWS_2022: "ami-0a0ebee827a585d06",
45+
}
46+
47+
48+
# URN formatted as <publisher>:<offer>:<sku>:<version>
49+
AZURE_OS_MAP = {
50+
# Debian - https://wiki.debian.org/Cloud/MicrosoftAzure
51+
OpenLabsOS.DEBIAN_11: "Debian:debian-11:11-backports-gen2:latest",
52+
OpenLabsOS.DEBIAN_12: "Debian:debian-12:12-gen2:latest",
53+
# Ubuntu - https://documentation.ubuntu.com/azure/en/latest/azure-how-to/instances/find-ubuntu-images/
54+
OpenLabsOS.UBUNTU_20: "Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2:latest",
55+
OpenLabsOS.UBUNTU_22: "Canonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2:latest",
56+
OpenLabsOS.UBUNTU_24: "Canonical:ubuntu-24_04-lts:server:latest",
57+
# SUSE
58+
OpenLabsOS.SUSE_12: "SUSE:sles-12-sp5:gen2:latest",
59+
OpenLabsOS.SUSE_15: "SUSE:sles-15-sp5:gen2:latest",
60+
# CentOS
61+
# OpenLabsOS.CENTOS_9 : ""
62+
# OpenLabsOS.CENTOS_10 : ""
63+
# Kali
64+
OpenLabsOS.KALI: "kali-linux:kali:kali-2024-4:2024.4.1",
65+
# Windows
66+
OpenLabsOS.WINDOWS_2016: "MicrosoftWindowsServer:WindowsServer:2016-datacenter-gensecond:latest",
67+
OpenLabsOS.WINDOWS_2019: "MicrosoftWindowsServer:WindowsServer:2019-datacenter-gensecond:latest",
68+
OpenLabsOS.WINDOWS_2022: "MicrosoftWindowsServer:WindowsServer:2022-datacenter-g2:latest",
69+
}

src/app/schemas/openlabs.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from pydantic import BaseModel, Field, field_validator
44

5+
from ..enums.operating_systems import OpenLabsOS
56
from ..enums.providers import OpenLabsProvider
67
from ..enums.specs import OpenLabsSpec
78
from ..validators.network import is_valid_hostname
@@ -16,6 +17,11 @@ class OpenLabsHost(BaseModel):
1617
min_length=1,
1718
examples=["example-host-1"],
1819
)
20+
os: OpenLabsOS = Field(
21+
...,
22+
description="Operating system of machine",
23+
examples=[OpenLabsOS.DEBIAN_11, OpenLabsOS.KALI, OpenLabsOS.WINDOWS_2022],
24+
)
1925
spec: OpenLabsSpec = Field(
2026
...,
2127
description="Ram and CPU size",

tests/api/v1/test_templates.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
{
2727
"hostname": "example-host-1",
2828
"spec": "tiny",
29+
"os": "debian_11",
2930
"size": 1,
3031
"tags": ["web", "linux"],
3132
}

0 commit comments

Comments
 (0)