Minor refactoring to avoid code duplication

This commit is contained in:
Andres Riancho 2014-08-20 14:51:24 -03:00
parent b94401247f
commit 4b1b0f8514

View File

@ -141,8 +141,7 @@ class InstanceBackend(object):
def start_instances(self, instance_ids): def start_instances(self, instance_ids):
started_instances = [] started_instances = []
for instance in self.all_instances(): for instance in self.get_multi_instances_by_id(instance_ids):
if instance.id in instance_ids:
instance.start() instance.start()
started_instances.append(instance) started_instances.append(instance)
@ -150,8 +149,7 @@ class InstanceBackend(object):
def stop_instances(self, instance_ids): def stop_instances(self, instance_ids):
stopped_instances = [] stopped_instances = []
for instance in self.all_instances(): for instance in self.get_multi_instances_by_id(instance_ids):
if instance.id in instance_ids:
instance.stop() instance.stop()
stopped_instances.append(instance) stopped_instances.append(instance)
@ -159,8 +157,7 @@ class InstanceBackend(object):
def terminate_instances(self, instance_ids): def terminate_instances(self, instance_ids):
terminated_instances = [] terminated_instances = []
for instance in self.all_instances(): for instance in self.get_multi_instances_by_id(instance_ids):
if instance.id in instance_ids:
instance.terminate() instance.terminate()
terminated_instances.append(instance) terminated_instances.append(instance)
@ -168,8 +165,7 @@ class InstanceBackend(object):
def reboot_instances(self, instance_ids): def reboot_instances(self, instance_ids):
rebooted_instances = [] rebooted_instances = []
for instance in self.all_instances(): for instance in self.get_multi_instances_by_id(instance_ids):
if instance.id in instance_ids:
instance.reboot() instance.reboot()
rebooted_instances.append(instance) rebooted_instances.append(instance)
@ -192,6 +188,20 @@ class InstanceBackend(object):
instances.append(instance) instances.append(instance)
return instances return instances
def get_multi_instances_by_id(self, instance_ids):
"""
:param instance_ids: A string list with instance ids
:return: A list with instance objects
"""
result = []
for reservation in self.all_reservations():
for instance in reservation.instances:
if instance.id in instance_ids:
result.append(instance)
return result
def get_instance_by_id(self, instance_id): def get_instance_by_id(self, instance_id):
for reservation in self.all_reservations(): for reservation in self.all_reservations():
for instance in reservation.instances: for instance in reservation.instances: