diff -r 7b878dfe6f0d -r d4b1a12dae66 components/openstack/nova/files/solariszones/driver.py --- a/components/openstack/nova/files/solariszones/driver.py Thu Sep 15 11:53:59 2016 -0700 +++ b/components/openstack/nova/files/solariszones/driver.py Thu Sep 15 10:02:21 2016 -0700 @@ -1132,7 +1132,7 @@ image_meta = glanceapi.get(context, instance['image_ref']) image_properties = image_meta.get('properties') if image_properties.get('architecture') is None: - reason = reason + (_("The 'architecture' property is not set " + reason = reason + (_(" The 'architecture' property is not set " "on the Glance image.")) raise exception.ImageUnacceptable(image_id=instance['image_ref'], @@ -3044,6 +3044,19 @@ :param image_id: Reference to a pre-created image that will hold the snapshot. """ + name = instance['name'] + zone = self._get_zone_by_name(name) + if zone is None: + raise exception.InstanceNotFound(instance_id=name) + + # look to see if the zone is a kernel zone and is powered off. If it + # is raise an exception before trying to archive it + extra_specs = self._get_extra_specs(instance) + brand = extra_specs.get('zonecfg:brand', ZONE_BRAND_SOLARIS) + if zone.state != ZONE_STATE_RUNNING and \ + brand == ZONE_BRAND_SOLARIS_KZ: + raise exception.InstanceNotRunning(instance_id=name) + # Get original base image info (base_service, base_id) = glance.get_remote_image_service( context, instance['image_ref'])