From 42057bd71b813cb8a0726a020b21d74de6e7205a Mon Sep 17 00:00:00 2001 From: Frank Brehm Date: Tue, 5 Nov 2019 15:52:40 +0100 Subject: [PATCH] Raising on different VSphere definitions --- lib/cr_tf/handler.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/cr_tf/handler.py b/lib/cr_tf/handler.py index 7b2ca8a..de43fdf 100644 --- a/lib/cr_tf/handler.py +++ b/lib/cr_tf/handler.py @@ -61,7 +61,7 @@ from .terraform.disk import TerraformDisk from .xlate import XLATOR -__version__ = '3.0.1' +__version__ = '3.0.2' LOG = logging.getLogger(__name__) _ = XLATOR.gettext @@ -460,7 +460,7 @@ class CreateTerraformHandler(BaseHandler): print() LOG.info(_("Initialising VSPhere handlers.")) - self.init_vspheres() + self.init_vspheres(yaml_file) self.exec_collect_folders(yaml_file) self.assign_default_vmw_values() @@ -607,11 +607,27 @@ class CreateTerraformHandler(BaseHandler): raise AbortExecution('pdns-zones') # -------------------------------------------------------------------------· - def init_vspheres(self): + def init_vspheres(self, yaml_file): if self.stop_at_step == 'vmw-init': self.incr_verbosity() + # Test for multiple VSphere references + found_vspheres = [] + for vm in self.vms: + vname = vm.vsphere + if vname not in found_vspheres: + found_vspheres.append(vname) + if len(found_vspheres) > 1: + msg = _( + "There is only one, unique VSPhere definition allowed in a project file. " + "In {f!r} were found {nr} different VSPhere definitions:").format( + f=yaml_file, nr=len(found_vspheres)) + msg += '\n' + for vname in sorted(found_vspheres, key=string.lower): + msg += ' * {!r}'.format(vname) + raise ExpectedHandlerError(msg) + self._init_vspheres() LOG.info(_("Finished step {!r}.").format('vmw-init')) -- 2.39.5