diff --git a/lib/ansible/module_utils/vca.py b/lib/ansible/module_utils/vca.py index b6085354e68..fbaf3304172 100644 --- a/lib/ansible/module_utils/vca.py +++ b/lib/ansible/module_utils/vca.py @@ -91,6 +91,20 @@ class VcaAnsibleModule(AnsibleModule): self._vdc = _vdc return _vdc + def get_vapp(self, vapp_name): + vapp = self.vca.get_vapp(self.vdc, vapp_name) + if not vapp: + raise VcaError('vca instance has no vapp named %s' % vapp_name) + return vapp + + def get_vm(self, vapp_name, vm_name): + vapp = self.get_vapp(vapp_name) + vms = [vm for vm in children.get_Vm() if vm.name == vm_name] + try: + return vms[0] + except IndexError: + raise VcaError('vapp has no vm named %s' % vm_name) + def create_instance(self): service_type = self.params.get('service_type', DEFAULT_SERVICE_TYPE) host = self.params.get('host', LOGIN_HOST.get('service_type')) @@ -182,26 +196,26 @@ VCHS_REQ_ARGS = ['service_id'] def _validate_module(module): if not HAS_PYVCLOUD: - module.fail_json("python module pyvcloud is needed for this module") + module.fail_json(msg="python module pyvcloud is needed for this module") service_type = module.params.get('service_type', DEFAULT_SERVICE_TYPE) if service_type == 'vca': for arg in VCA_REQ_ARGS: if module.params.get(arg) is None: - module.fail_json("argument %s is mandatory when service type " + module.fail_json(msg="argument %s is mandatory when service type " "is vca" % arg) if service_type == 'vchs': for arg in VCHS_REQ_ARGS: if module.params.get(arg) is None: - module.fail_json("argument %s is mandatory when service type " + module.fail_json(msg="argument %s is mandatory when service type " "is vchs" % arg) if service_type == 'vcd': for arg in VCD_REQ_ARGS: if module.params.get(arg) is None: - module.fail_json("argument %s is mandatory when service type " + module.fail_json(msg="argument %s is mandatory when service type " "is vcd" % arg)