Skip to content

Commit 26f4ec8

Browse files
committed
Fix volume and server errors
1 parent e053a5b commit 26f4ec8

2 files changed

Lines changed: 20 additions & 11 deletions

File tree

chi/server.py

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ class Server:
7676
Args:
7777
name (str): The name of the server.
7878
reservation_id (Optional[str]): The reservation ID associated with the server. Defaults to None.
79-
image_name (str): The name of the image to use for the server. Defaults to DEFAULT_IMAGE_NAME.
79+
image_name (Optional[str]): The name of the image to use for the server. Defaults to DEFAULT_IMAGE_NAME.
8080
image (Optional[str]): The image ID or name to use for the server. Defaults to None.
8181
flavor_name (str): The name of the flavor to use for the server. Defaults to BAREMETAL_FLAVOR.
8282
key_name (str): The name of the keypair to use for the server. Defaults to None.
@@ -86,7 +86,7 @@ class Server:
8686
Attributes:
8787
name (str): The name of the server.
8888
reservation_id (Optional[str]): The reservation ID associated with the server.
89-
image_name (str): The name of the image used for the server.
89+
image_name (Optional[str]): The name of the image used for the server.
9090
flavor_name (str): The name of the flavor used for the server.
9191
keypair (Optional[Keypair]): The keypair object used for the server.
9292
network_name (str): The name of the network used for the server.
@@ -104,7 +104,7 @@ def __init__(
104104
self,
105105
name: str,
106106
reservation_id: Optional[str] = None,
107-
image_name: str = DEFAULT_IMAGE_NAME,
107+
image_name: Optional[str] = DEFAULT_IMAGE_NAME,
108108
image: Optional[Image] = None,
109109
flavor_name: str = BAREMETAL_FLAVOR,
110110
key_name: str = None,
@@ -114,8 +114,13 @@ def __init__(
114114
self.name = name
115115
self.reservation_id = reservation_id or None
116116
# Add this once chi.image is implemented
117-
self.image = image or chi.image.get_image(image_name)
118-
self.image_name = self.image.name
117+
if image:
118+
self.image = image
119+
elif image_name:
120+
self.image = chi.image.get_image(image_name)
121+
else:
122+
self.image = None
123+
self.image_name = self.image.name if self.image else None
119124
self.flavor_name = flavor_name
120125

121126
if keypair:
@@ -216,10 +221,13 @@ def _server_cleanup_func():
216221

217222
@classmethod
218223
def _from_nova_server(cls, nova_server):
219-
try:
220-
image_id = nova_server.image["id"]
221-
except Exception:
222-
image_id = nova_server.image_id
224+
if nova_server.image:
225+
if isinstance(nova_server.image, dict):
226+
image_id = nova_server.image.get("id")
227+
else:
228+
image_id = nova_server.image
229+
else:
230+
image_id = None
223231
flavor_name = nova_server.flavor.get("original_name", "")
224232

225233
try:
@@ -238,7 +246,7 @@ def _from_nova_server(cls, nova_server):
238246
server = cls(
239247
name=nova_server.name,
240248
reservation_id=None,
241-
image_name=get_image_name(image_id),
249+
image_name=get_image_name(image_id) if image_id else None,
242250
flavor_name=flavor_name,
243251
key_name=nova_server.key_name,
244252
network_name=(

chi/storage.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from dataclasses import dataclass
22
from typing import List
33

4+
import cinderclient
45
import manilaclient
56
import swiftclient
67

@@ -295,7 +296,7 @@ def get_volume(ref) -> Volume:
295296
"""
296297
try:
297298
volume = cinder().volumes.get(ref)
298-
except cinder.exceptions.NotFound:
299+
except cinderclient.exceptions.NotFound:
299300
volumes = list(cinder().volumes.list(search_opts={"name": ref}))
300301
if not volumes:
301302
raise CHIValueError(f'No volumes found matching name "{ref}"')

0 commit comments

Comments
 (0)