components/openstack/nova/files/solariszones/driver.py
branchs11u2-sru
changeset 3201 6839f7d1f036
parent 3178 77584387a894
child 3809 eb8d6ce0657e
child 4156 4b1def16fe9b
--- a/components/openstack/nova/files/solariszones/driver.py	Wed Jul 02 06:53:43 2014 -0700
+++ b/components/openstack/nova/files/solariszones/driver.py	Wed Jul 09 15:10:27 2014 -0700
@@ -95,7 +95,7 @@
 # Mapping between zone state and Nova power_state.
 SOLARISZONES_POWER_STATE = {
     ZONE_STATE_CONFIGURED:      power_state.NOSTATE,
-    ZONE_STATE_INCOMPLETE:      power_state.BUILDING,
+    ZONE_STATE_INCOMPLETE:      power_state.NOSTATE,
     ZONE_STATE_UNAVAILABLE:     power_state.NOSTATE,
     ZONE_STATE_INSTALLED:       power_state.SHUTDOWN,
     ZONE_STATE_READY:           power_state.RUNNING,
@@ -498,9 +498,9 @@
             kstat_object = self._rad_instance.get_object(
                 kstat.Kstat(), rad.client.ADRGlobPattern(pattern))
         except Exception as reason:
-            LOG.warning(_("Unable to retrieve kstat object '%s:%s:%s' of "
-                          "class '%s' via kstat(3RAD): %s")
-                        % (module, instance, name, kstat_class, reason))
+            LOG.info(_("Unable to retrieve kstat object '%s:%s:%s' of class "
+                       "'%s' via kstat(3RAD): %s")
+                     % (module, instance, name, kstat_class, reason))
             return None
 
         kstat_data = {}
@@ -727,7 +727,8 @@
                 LOG.error(_("Cannot attach Fibre Channel volume '%s' because "
                           "no Fibre Channel HBA initiators were found")
                           % (target_wwn))
-                raise exception.InvalidVolume(reason="No host FC initiator")
+                raise exception.InvalidVolume(
+                    reason="No host Fibre Channel initiator found")
 
             target_lun = data['target_lun']
             # If the volume was exported just a few seconds previously then
@@ -1404,6 +1405,10 @@
         if zone is None:
             raise exception.InstanceNotFound(instance_id=name)
 
+        if self._get_state(zone) == power_state.SHUTDOWN:
+            self._power_on(instance)
+            return
+
         try:
             if reboot_type == 'SOFT':
                 zone.shutdown(['-r'])