Skip to content

Commit e0eab27

Browse files
committed
aws: improve start logic
1 parent b4a932f commit e0eab27

1 file changed

Lines changed: 12 additions & 2 deletions

File tree

kvirt/providers/aws/__init__.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from kvirt.common import pprint, error, warning, get_ssh_pub_key
77
from kvirt.defaults import IMAGES, METADATA_FIELDS
88
import boto3
9+
from botocore.exceptions import ClientError, WaiterError
910
import os
1011
import sys
1112
from string import ascii_lowercase
@@ -455,8 +456,17 @@ def start(self, name):
455456
except:
456457
return {'result': 'failure', 'reason': f"VM {name} not found"}
457458
instanceid = vm['InstanceId']
458-
conn.start_instances(InstanceIds=[instanceid])
459-
return {'result': 'success'}
459+
try:
460+
conn.start_instances(InstanceIds=[instanceid])
461+
except ClientError as e:
462+
if e.response['Error']['Code'] != 'InsufficientInstanceCapacity':
463+
return {'result': 'failure', 'reason': str(e)}
464+
waiter = conn.get_waiter('instance_running')
465+
try:
466+
waiter.wait(InstanceIds=[instanceid], WaiterConfig={'Delay': 5, 'MaxAttempts': 24})
467+
return {'result': 'success'}
468+
except WaiterError:
469+
return {'result': 'failure', 'reason': 'Instance did not reach running state'}
460470

461471
def stop(self, name, soft=False):
462472
conn = self.conn

0 commit comments

Comments
 (0)