def getNodePublicIPv4Address(self, node_id=None, state=None): node_public_interfaces = self.getNodePublicInterfaces(node_id, state) for interface_id in node_public_interfaces: addresses = self.getNodeInterfaceAddresses(interface_id, node_id, state) for addr in addresses: if IP.isIpv4(addr): return addr return None
def __pre_check(self): if not self.delete: self.add = True if not self.dns: if "happy_dns" in os.environ.keys(): self.dns = os.environ['happy_dns'].split() if self.add and self.dns is None: emsg = "No DNS servers listed." self.logger.error("[localhost] HappyDNS: %s" % (emsg)) self.exit() for dns_addr in self.dns: if not IP.isIpv4(dns_addr): emsg = "DNS %s is not a valid IPv4 address." % (dns_addr) self.logger.error("[localhost] HappyDNS: %s" % (emsg)) self.exit()
def __pre_check(self): # Sanity check the transport if self.transport != "udp" and self.transport != "tcp" and self.transport != "raw": emsg = "Transport type must be one of 'raw', 'tcp', or 'udp'." self.__log_error_and_exit(emsg) # Sanity check the IP version if self.ipversion != "4" and self.ipversion != "6": emsg = "The IP version must be one of '4' or '6'." self.__log_error_and_exit(emsg) # There must be exactly one sender if self.sender['node'] == None: emsg = "The test must have exactly one sender." self.__log_error_and_exit(emsg) # There must be exactly one receiver if self.sender['node'] == None: emsg = "The test must have exactly one receiver." self.__log_error_and_exit(emsg) # Each specified sender and receiver node must exist in the # loaded Happy configuration. self.__checkNodeExists(self.sender['node'], "sender") self.__checkNodeExists(self.receiver['node'], "receiver") # Use the sender and receiver node names, specified prefix, # and IP version and attempt to lookup addresses for the # sender and receiver. # First, sanity check the prefix if self.prefix == None: emsg = "Please specifiy a valid IPv%s prefix." % (self.ipversion) self.__log_error_and_exit(emsg) # Second, sanity check the prefix against the IP version. if (self.ipversion == "4" and not IP.isIpv4(self.prefix)) or ( self.ipversion == "6" and not IP.isIpv6(self.prefix)): emsg = "The specified prefix %s is the wrong address family for IPv%s" % ( self.prefix, self.ipversion) self.__log_error_and_exit(emsg) # Finally, find and take the first matching addresses for the # node names and specified prefix. rips = self.getNodeAddressesOnPrefix(self.prefix, self.receiver['node']) if rips != None and len(rips) > 0: self.receiver['ip'] = rips[0] sips = self.getNodeAddressesOnPrefix(self.prefix, self.sender['node']) if sips != None and len(sips) > 0: self.sender['ip'] = sips[0] # Check if all unknowns were found if self.receiver['ip'] == None: emsg = "Could not find IP address of the receiver node, %s" % ( self.receiver['node']) self.__log_error_and_exit(emsg) if self.sender['ip'] == None: emsg = "Could not find IP address of the sender node, %s" % ( self.sender['node']) self.__log_error_and_exit(emsg) if self.tx_size == None or not self.tx_size.isdigit(): emsg = "Please specify a valid size of data to send per transmission." self.__log_error_and_exit(emsg) if self.rx_tx_length == None or not self.rx_tx_length.isdigit(): emsg = "Please specify a valid total length of data to send and receive." self.__log_error_and_exit(emsg) if not self.interval == None and not self.interval.isdigit(): emsg = "Please specify a valid send interval in milliseconds." self.__log_error_and_exit(emsg)