@@ -447,32 +447,33 @@ def init(self):
447447 self ._create_master_instance ()
448448 self ._dump_gce_data ()
449449 return
450-
451- self ._create_network ()
452- self ._create_ssh_key ()
453- self ._request_source_image ()
454- if 'instance_name' not in self .config :
455- self .config ['instance_name' ] = f'lithops-master-{ self .network_key } '
456- self ._create_master_instance ()
457- self ._load_instance_types ()
458- self .gce_data = {
459- 'mode' : self .mode ,
460- 'vpc_data_type' : self .vpc_data_type ,
461- 'ssh_data_type' : self .ssh_data_type ,
462- 'master_name' : self .master .name ,
463- 'master_id' : self .network_key ,
464- 'network_name' : self .config ['network_name' ],
465- 'network_key' : self .network_key ,
466- 'subnet_name' : self .config ['subnet_name' ],
467- 'firewall_name' : self .config ['firewall_name' ],
468- 'internal_firewall_name' : self .config ['internal_firewall_name' ],
469- 'router_name' : self .config .get ('router_name' ),
470- 'nat_name' : self .config .get ('nat_name' ),
471- 'ssh_key_filename' : self .config ['ssh_key_filename' ],
472- 'source_image' : self .config ['source_image' ],
473- 'instance_types' : self .instance_types ,
474- }
475- self ._dump_gce_data ()
450+
451+ elif self .mode in [StandaloneMode .CREATE .value , StandaloneMode .REUSE .value ]:
452+ self ._create_network ()
453+ self ._create_ssh_key ()
454+ self ._request_source_image ()
455+ if 'instance_name' not in self .config :
456+ self .config ['instance_name' ] = f'lithops-master-{ self .network_key } '
457+ self ._create_master_instance ()
458+ self ._load_instance_types ()
459+ self .gce_data = {
460+ 'mode' : self .mode ,
461+ 'vpc_data_type' : self .vpc_data_type ,
462+ 'ssh_data_type' : self .ssh_data_type ,
463+ 'master_name' : self .master .name ,
464+ 'master_id' : self .network_key ,
465+ 'network_name' : self .config ['network_name' ],
466+ 'network_key' : self .network_key ,
467+ 'subnet_name' : self .config ['subnet_name' ],
468+ 'firewall_name' : self .config ['firewall_name' ],
469+ 'internal_firewall_name' : self .config ['internal_firewall_name' ],
470+ 'router_name' : self .config .get ('router_name' ),
471+ 'nat_name' : self .config .get ('nat_name' ),
472+ 'ssh_key_filename' : self .config ['ssh_key_filename' ],
473+ 'source_image' : self .config ['source_image' ],
474+ 'instance_types' : self .instance_types ,
475+ }
476+ self ._dump_gce_data ()
476477
477478 @staticmethod
478479 def _is_default_ubuntu_source_image (source_image ):
@@ -609,6 +610,7 @@ def build_image(self, image_name, script_file, overwrite, include, extra_args=[]
609610 )
610611 logger .debug (f"User script '{ script_file } ' finsihed" )
611612
613+ logger .debug (f'Stopping { build_vm } before creating VM image' )
612614 build_vm .stop ()
613615 build_vm .wait_stopped ()
614616
@@ -628,7 +630,6 @@ def build_image(self, image_name, script_file, overwrite, include, extra_args=[]
628630 self ._wait_operation (op ['name' ], scope = 'global' )
629631
630632 logger .debug ("Starting VM image creation" )
631- logger .debug ("Be patient, VM imaging can take up to 10 minutes" )
632633 self ._wait_image_ready (image_name )
633634
634635 if not is_initialized :
@@ -1021,11 +1022,18 @@ def wait_ready(self, timeout=INSTANCE_START_TIMEOUT):
10211022 raise TimeoutError (f'Readiness probe expired on { self } ' )
10221023
10231024 def get_instance_data (self ):
1024- res = self .compute_client .instances ().get (
1025- project = self .project_name ,
1026- zone = self .zone ,
1027- instance = self .name
1028- ).execute ()
1025+ try :
1026+ res = self .compute_client .instances ().get (
1027+ project = self .project_name ,
1028+ zone = self .zone ,
1029+ instance = self .name
1030+ ).execute ()
1031+ except HttpError as err :
1032+ if getattr (err .resp , 'status' , None ) == 404 :
1033+ self .instance_data = None
1034+ return None
1035+ raise
1036+
10291037 self .instance_data = res
10301038 self .instance_id = str (res .get ('id' ))
10311039
@@ -1053,10 +1061,7 @@ def get_public_ip(self):
10531061 return self .public_ip
10541062
10551063 def get_status (self ):
1056- try :
1057- self .get_instance_data ()
1058- except HttpError :
1059- return None
1064+ self .get_instance_data ()
10601065 return self .instance_data .get ('status' ) if self .instance_data else None
10611066
10621067 def is_stopped (self ):
0 commit comments