Skip to content
Open
Show file tree
Hide file tree
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
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1!11.1.5
1!11.1.6
6 changes: 5 additions & 1 deletion pycloudlib/oci/cloud.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from pycloudlib.config import ConfigFile
from pycloudlib.errors import (
CloudSetupError,
ImageNotFoundError,
InstanceNotFoundError,
InvalidTagNameError,
PycloudlibException,
Expand Down Expand Up @@ -198,7 +199,10 @@ def daily_image(
for i in image_response.data
if "aarch64" not in i.display_name and "GPU" not in i.display_name
]
image_id = matching_image[0].id
try:
image_id = matching_image[0].id
except IndexError:
raise ImageNotFoundError(release=release)
return image_id

def image_serial(self, image_id):
Expand Down
18 changes: 18 additions & 0 deletions tests/unit_tests/oci/test_cloud.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import toml

from pycloudlib.errors import (
ImageNotFoundError,
InstanceNotFoundError,
InvalidTagNameError,
PycloudlibException,
Expand Down Expand Up @@ -223,6 +224,23 @@ def test_invalid_release(self, oci_cloud):
with pytest.raises(ValueError, match="Invalid release"):
oci_cloud.daily_image("invalid-release")

def test_daily_image_not_found(self, oci_cloud):
"""Test daily_image raises ImageNotFoundError when no matching image is found."""
oci_cloud.compute_client.list_images.return_value = mock.Mock(data=[])
with pytest.raises(ImageNotFoundError):
oci_cloud.daily_image("20.04")

def test_daily_image_filters_aarch64_and_gpu(self, oci_cloud):
"""Test daily_image filters out aarch64 and GPU images and picks the first match."""
oci_cloud.compute_client.list_images.return_value = mock.Mock(
data=[
mock.Mock(display_name="Canonical Ubuntu 20.04 aarch64", id="aarch64-id"),
mock.Mock(display_name="Canonical Ubuntu 20.04 GPU", id="gpu-id"),
mock.Mock(display_name="Canonical Ubuntu 20.04", id="image-id"),
]
)
assert oci_cloud.daily_image("20.04") == "image-id"

def test_image_serial_not_implemented(self, oci_cloud):
"""Test image_serial raises NotImplementedError."""
with pytest.raises(NotImplementedError):
Expand Down