def create_node_by_address(address): """ Creates new node with the given address. Return a refence to the node object if the node already exists. If the node has IP address, a port is created with the ip address """ node = find_node_by_address(address) if node is not None: return node # creating new node is needed if validIP4(address): hostname = get_host_by_addr(address, False) ips = [address] else: hostname = address ips = get_host_ips(address, False) node = Node() # if the address cannot be mapped to DNS name use '*' as domain if hostname is None: nodeName = ips[0] domainName = '*' else: nodeName = hostname.split('.')[0] domainName = hostname.replace(hostname.split('.')[0] + '.', '') node.unis_id = "urn:ogf:network:domain=%s:node=%s" % (domainName, nodeName) node.save() if hostname is None: hostname = ips[0] name = NetworkObjectNames.objects.create( name=Name.objects.create(value=hostname), networkobject=node) name.save() host = NodeAddresses.objects.create(node=node, address=Address.objects.create( value=hostname, type='hostname')) host.save() for ip in ips: port = Port(parent=node, unis_id=node.unis_id + ":port:%s" % ip) port.parent = node port.save() portAddress = PortAddresses.objects.create( port=port, address=Address.objects.create(value=ip, type='ipv4')) portAddress.save() dns = get_host_by_addr(ip) if dns is not None: portAddress = PortAddresses.objects.create( port=port, address=Address.objects.create(value=dns, type='hostname')) portAddress.save() logger.info("New node '%s' is created" % node) return node
def process_node(node, domain): nodeID = get_urn_value(node.getAttribute('id'), 'node') address = node.getElementsByTagNameNS(TOPOLOGY_NS, "address") ports = node.getElementsByTagNameNS(TOPOLOGY_NS, "port") n = Node(domain=domain, node=nodeID, address=address[0].firstChild.data) n.save() for p in ports: process_port(p, n)
def create_node_by_address(address): """ Creates new node with the given address. Return a refence to the node object if the node already exists. If the node has IP address, a port is created with the ip address """ node = find_node_by_address(address) if node is not None: return node # creating new node is needed if validIP4(address): hostname = get_host_by_addr(address, False) ips = [address] else: hostname = address ips = get_host_ips(address, False) node = Node() # if the address cannot be mapped to DNS name use '*' as domain if hostname is None: nodeName = ips[0] domainName = '*' else: nodeName = hostname.split('.')[0] domainName = hostname.replace(hostname.split('.')[0] + '.', '') node.unis_id = "urn:ogf:network:domain=%s:node=%s" % (domainName, nodeName) node.save() if hostname is None: hostname = ips[0] name = NetworkObjectNames.objects.create(name = Name.objects.create(value=hostname), networkobject=node) name.save() host = NodeAddresses.objects.create(node=node, address = Address.objects.create(value=hostname,type='hostname')) host.save() for ip in ips: port = Port(parent=node, unis_id=node.unis_id+":port:%s" % ip) port.parent = node port.save() portAddress = PortAddresses.objects.create(port=port, address = Address.objects.create(value=ip,type='ipv4')) portAddress.save() dns = get_host_by_addr(ip) if dns is not None: portAddress = PortAddresses.objects.create(port=port, address = Address.objects.create(value=dns,type='hostname')) portAddress.save() logger.info("New node '%s' is created" % node) return node