diff --git a/cinder/exception.py b/cinder/exception.py index ccbaad114a6..bec31fb1b3e 100644 --- a/cinder/exception.py +++ b/cinder/exception.py @@ -474,6 +474,10 @@ class Duplicate3PARHost(CinderException): message = _("3PAR Host already exists: %(err)s. %(info)s") +class Invalid3PARDomain(CinderException): + message = _("Invalid 3PAR Domain: %(err)s") + + class VolumeTypeCreateFailed(CinderException): message = _("Cannot create volume_type with " "name %(name)s and specs %(extra_specs)s") diff --git a/cinder/volume/drivers/san/hp/hp_3par_common.py b/cinder/volume/drivers/san/hp/hp_3par_common.py index cd1d9ee770d..ea37b89f54b 100644 --- a/cinder/volume/drivers/san/hp/hp_3par_common.py +++ b/cinder/volume/drivers/san/hp/hp_3par_common.py @@ -272,7 +272,12 @@ def _delete_3par_host(self, hostname): self._cli_run('removehost %s' % hostname, None) def _create_3par_vlun(self, volume, hostname): - self._cli_run('createvlun %s auto %s' % (volume, hostname), None) + out = self._cli_run('createvlun %s auto %s' % (volume, hostname), None) + if out and len(out) > 1: + if "must be in the same domain" in out[0]: + err = out[0].strip() + err = err + " " + out[1].strip() + raise exception.Invalid3PARDomain(err=err) def _safe_hostname(self, hostname): """