diff options
| author | Vishvananda Ishaya <vishvananda@yahoo.com> | 2010-10-26 00:44:23 +0000 |
|---|---|---|
| committer | Tarmac <> | 2010-10-26 00:44:23 +0000 |
| commit | a1d907d567d38f2741e2e1d633cc7b20598d0122 (patch) | |
| tree | 7017bc128e017324bb0adcf82da45b6e8c7061c1 /nova/api | |
| parent | ebffd9cb35af4257a085f85abf64e0c2baf31ff0 (diff) | |
| parent | 0c7b1ea7972defe67d8bebf4f23d189cc7b0422c (diff) | |
Adds rescue and unrescue commands.
Diffstat (limited to 'nova/api')
| -rw-r--r-- | nova/api/cloud.py | 20 | ||||
| -rw-r--r-- | nova/api/ec2/cloud.py | 17 |
2 files changed, 35 insertions, 2 deletions
diff --git a/nova/api/cloud.py b/nova/api/cloud.py index aa84075dc..b8f15019f 100644 --- a/nova/api/cloud.py +++ b/nova/api/cloud.py @@ -36,3 +36,23 @@ def reboot(instance_id, context=None): db.queue_get_for(context, FLAGS.compute_topic, host), {"method": "reboot_instance", "args": {"instance_id": instance_ref['id']}}) + + +def rescue(instance_id, context): + """Rescue the given instance.""" + instance_ref = db.instance_get_by_internal_id(context, instance_id) + host = instance_ref['host'] + rpc.cast(context, + db.queue_get_for(context, FLAGS.compute_topic, host), + {"method": "rescue_instance", + "args": {"instance_id": instance_ref['id']}}) + + +def unrescue(instance_id, context): + """Unrescue the given instance.""" + instance_ref = db.instance_get_by_internal_id(context, instance_id) + host = instance_ref['host'] + rpc.cast(context, + db.queue_get_for(context, FLAGS.compute_topic, host), + {"method": "unrescue_instance", + "args": {"instance_id": instance_ref['id']}}) diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py index 07229dd73..dd5fe4065 100644 --- a/nova/api/ec2/cloud.py +++ b/nova/api/ec2/cloud.py @@ -936,8 +936,21 @@ class CloudController(object): def reboot_instances(self, context, instance_id, **kwargs): """instance_id is a list of instance ids""" - for id_str in instance_id: - cloud.reboot(id_str, context=context) + for ec2_id in instance_id: + internal_id = ec2_id_to_internal_id(ec2_id) + cloud.reboot(internal_id, context=context) + return True + + def rescue_instance(self, context, instance_id, **kwargs): + """This is an extension to the normal ec2_api""" + internal_id = ec2_id_to_internal_id(instance_id) + cloud.rescue(internal_id, context=context) + return True + + def unrescue_instance(self, context, instance_id, **kwargs): + """This is an extension to the normal ec2_api""" + internal_id = ec2_id_to_internal_id(instance_id) + cloud.unrescue(internal_id, context=context) return True def update_instance(self, context, ec2_id, **kwargs): |
