def get_address(self, index=0): """ Return the address of a NIC of the guest, in host space. If port redirection is used, return 'localhost' (the NIC has no IP address of its own). Otherwise return the NIC's IP address. @param index: Index of the NIC whose address is requested. @raise VMMACAddressMissingError: If no MAC address is defined for the requested NIC @raise VMIPAddressMissingError: If no IP address is found for the the NIC's MAC address @raise VMAddressVerificationError: If the MAC-IP address mapping cannot be verified (using arping) """ nics = self.params.objects("nics") nic_name = nics[index] nic_params = self.params.object_params(nic_name) if nic_params.get("nic_mode") == "tap": mac = self.get_mac_address(index).lower() # Get the IP address from the cache ip = self.address_cache.get(mac) if not ip: raise virt_vm.VMIPAddressMissingError(mac) # Make sure the IP address is assigned to this guest macs = [self.get_mac_address(i) for i in range(len(nics))] if not virt_utils.verify_ip_address_ownership(ip, macs): raise virt_vm.VMAddressVerificationError(mac, ip) return ip else: return "localhost"
def get_address(self, index=0, *args): """ Return the address of the guest through ovirt node tcpdump cache. :param index: Name or index of the NIC whose address is requested. :return: IP address of NIC. :raise VMIPAddressMissingError: If no IP address is found for the the NIC's MAC address """ nic = self.virtnet[index] if nic.nettype == 'bridge': mac = self.get_mac_address() ip = self.address_cache.get(mac) # TODO: Verify MAC-IP address mapping on remote ovirt node if not ip: raise virt_vm.VMIPAddressMissingError(mac) return ip else: raise ValueError("Ovirt only support bridge nettype now.")