summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMasanori Itoh <itoumsn@nttdata.co.jp>2011-04-11 23:00:53 +0900
committerMasanori Itoh <itoumsn@nttdata.co.jp>2011-04-11 23:00:53 +0900
commitcf3abb4ae08f594e7346eba45544c429057c83f1 (patch)
tree66bec9d2fac92d849c6335d154ce9b1777a04f26
parent3eb00eb2f82f0e907ecd47167510149cc853c548 (diff)
parent25047dd2a121ea9c8e7a8ded970aa5a7254bbfc5 (diff)
Rebased to trunk rev 973.
-rwxr-xr-xbin/nova-manage89
-rw-r--r--doc/source/man/novamanage.rst10
-rw-r--r--nova/virt/libvirt_conn.py9
3 files changed, 60 insertions, 48 deletions
diff --git a/bin/nova-manage b/bin/nova-manage
index f798434c6..adc631318 100755
--- a/bin/nova-manage
+++ b/bin/nova-manage
@@ -570,6 +570,49 @@ class NetworkCommands(object):
class VmCommands(object):
"""Class for mangaging VM instances."""
+ def list(self, host=None):
+ """Show a list of all instances
+
+ :param host: show all instance on specified host.
+ :param instance: show specificed instance.
+ """
+ print "%-10s %-15s %-10s %-10s %-19s %-12s %-12s %-12s" \
+ " %-10s %-10s %-10s %-5s" % (
+ _('instance'),
+ _('node'),
+ _('type'),
+ _('state'),
+ _('launched'),
+ _('image'),
+ _('kernel'),
+ _('ramdisk'),
+ _('project'),
+ _('user'),
+ _('zone'),
+ _('index'))
+
+ if host == None:
+ instances = db.instance_get_all(context.get_admin_context())
+ else:
+ instances = db.instance_get_all_by_host(
+ context.get_admin_context(), host)
+
+ for instance in instances:
+ print "%-10s %-15s %-10s %-10s %-19s %-12s %-12s %-12s" \
+ " %-10s %-10s %-10s %-5d" % (
+ instance['hostname'],
+ instance['host'],
+ instance['instance_type'],
+ instance['state_description'],
+ instance['launched_at'],
+ instance['image_id'],
+ instance['kernel_id'],
+ instance['ramdisk_id'],
+ instance['project_id'],
+ instance['user_id'],
+ instance['availability_zone'],
+ instance['launch_index'])
+
def live_migration(self, ec2_id, dest):
"""Migrates a running instance to a new machine.
@@ -716,49 +759,6 @@ class DbCommands(object):
print migration.db_version()
-class InstanceCommands(object):
- """Class for managing instances."""
-
- def list(self, host=None, instance=None):
- """Show a list of all instances"""
- print "%-10s %-15s %-10s %-10s %-19s %-12s %-12s %-12s" \
- " %-10s %-10s %-10s %-5s" % (
- _('instance'),
- _('node'),
- _('type'),
- _('state'),
- _('launched'),
- _('image'),
- _('kernel'),
- _('ramdisk'),
- _('project'),
- _('user'),
- _('zone'),
- _('index'))
-
- if host == None:
- instances = db.instance_get_all(context.get_admin_context())
- else:
- instances = db.instance_get_all_by_host(
- context.get_admin_context(), host)
-
- for instance in instances:
- print "%-10s %-15s %-10s %-10s %-19s %-12s %-12s %-12s" \
- " %-10s %-10s %-10s %-5d" % (
- instance['hostname'],
- instance['host'],
- instance['instance_type'],
- instance['state_description'],
- instance['launched_at'],
- instance['image_id'],
- instance['kernel_id'],
- instance['ramdisk_id'],
- instance['project_id'],
- instance['user_id'],
- instance['availability_zone'],
- instance['launch_index'])
-
-
class VolumeCommands(object):
"""Methods for dealing with a cloud in an odd state"""
@@ -1044,8 +1044,7 @@ CATEGORIES = [
('volume', VolumeCommands),
('instance_type', InstanceTypeCommands),
('image', ImageCommands),
- ('flavor', InstanceTypeCommands),
- ('instance', InstanceCommands)]
+ ('flavor', InstanceTypeCommands)]
def lazy_match(name, key_value_tuples):
diff --git a/doc/source/man/novamanage.rst b/doc/source/man/novamanage.rst
index 1d8446f08..9c54f3608 100644
--- a/doc/source/man/novamanage.rst
+++ b/doc/source/man/novamanage.rst
@@ -240,6 +240,16 @@ Nova Images
Converts all images in directory from the old (Bexar) format to the new format.
+Nova VM
+~~~~~~~~~~~
+
+``nova-manage vm list [host]``
+ Show a list of all instances. Accepts optional hostname (to show only instances on specific host).
+
+``nova-manage live-migration <ec2_id> <destination host name>``
+ Live migrate instance from current host to destination host. Requires instance id (which comes from euca-describe-instance) and destination host name (which can be found from nova-manage service list).
+
+
FILES
========
diff --git a/nova/virt/libvirt_conn.py b/nova/virt/libvirt_conn.py
index b949e6c92..9c665ab15 100644
--- a/nova/virt/libvirt_conn.py
+++ b/nova/virt/libvirt_conn.py
@@ -325,12 +325,15 @@ class LibvirtConnection(driver.ComputeDriver):
state = self.get_info(instance['name'])['state']
db.instance_set_state(context.get_admin_context(),
instance['id'], state)
- if state == power_state.SHUTDOWN:
+ if state == power_state.SHUTOFF:
break
- except Exception:
+ except Exception as ex:
+ msg = _("Error encountered when destroying instance '%(id)s': "
+ "%(ex)s") % {"id": instance["id"], "ex": ex}
+ LOG.debug(msg)
db.instance_set_state(context.get_admin_context(),
instance['id'],
- power_state.SHUTDOWN)
+ power_state.SHUTOFF)
break
self.firewall_driver.unfilter_instance(instance)