From 6247e7bc38c9b6e8b883b704a274e290581e4028 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Moser?= Date: Mon, 19 Sep 2016 14:47:03 +0200 Subject: [PATCH] cloudstack: move common code to module_utils (#17635) --- lib/ansible/module_utils/cloudstack.py | 27 ++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/lib/ansible/module_utils/cloudstack.py b/lib/ansible/module_utils/cloudstack.py index 6ac2e08797b..6e93a32d897 100644 --- a/lib/ansible/module_utils/cloudstack.py +++ b/lib/ansible/module_utils/cloudstack.py @@ -109,6 +109,7 @@ class AnsibleCloudStack(object): self.vpc = None self.zone = None self.vm = None + self.vm_default_nic = None self.os_type = None self.hypervisor = None self.capabilities = None @@ -287,6 +288,32 @@ class AnsibleCloudStack(object): return self._get_by_key(key, self.ip_address) + def get_vm_guest_ip(self): + vm_guest_ip = self.module.params.get('vm_guest_ip') + default_nic = self.get_vm_default_nic() + + if not vm_guest_ip: + return default_nic['ipaddress'] + + for secondary_ip in default_nic['secondaryip']: + if vm_guest_ip == secondary_ip['ipaddress']: + return vm_guest_ip + self.module.fail_json(msg="Secondary IP '%s' not assigned to VM" % vm_guest_ip) + + + def get_vm_default_nic(self): + if self.vm_default_nic: + return self.vm_default_nic + + nics = self.cs.listNics(virtualmachineid=self.get_vm(key='id')) + if nics: + for n in nics['nic']: + if n['isdefault']: + self.vm_default_nic = n + return self.vm_default_nic + self.module.fail_json(msg="No default IP address of VM '%s' found" % self.module.params.get('vm')) + + def get_vm(self, key=None): if self.vm: return self._get_by_key(key, self.vm)