@@ -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 = (
0 commit comments