NORDUnet Network Inventory project
NORDUnet Network inventory project is divided in to three parts.
- Producers that produce data files in the NERDS format.
- Consumers that uses the collected data. NOCLook is one of those consumers.
- Repository for version control. We use git.
NERDS project
NERDS stand for Network Enterprise Resource Discovery System. A collaborative effort between initially NORDUnet and Stockholm University to collect reusable data about "stuff" on our networks. The collected data is saved in a JSON format by the producers. The thought is that you then can create consumers for data that was collected by someone else or use a producer that you have not written yourself.
https://github.com/fredrikt/nerds
...
...
Code Block |
---|
title | NERDS JSON structure |
---|
|
{
"host": {
"name": "hostname-or-other-unique-identifier",
"version": 1,
"name-of-producer": { ... any private data ... }
}
}
|
Code Block |
---|
title | JSON data from the Alcatel ISIS producer |
---|
|
{
"host": {
"alcatel_isis": {
"data": {
"ip_address": "",
"link": "",
"name": "NU-TUG-LM-02",
"osi_address": "4700230000000100010001000100206066D6F81D",
"ots": "NA",
"type": "ne1626LM"
},
"name": "NU-TUG-LM-02",
"neighbours": [
{
"metric": "12",
"name": "NU-ORE-TSS-01"
}
]
},
"name": "NU-TUG-LM-02",
"version": 1
}
}
|
NOCLook
NOCLook is one of the possible consumer for the collected NERDS data. It is a web app built with Django and the Neo4j graph database.
All nodes have a SQL node handle to make it easy to use regular Django reusable apps like Django Comments or Taggit.
The nodes also have a node type that is stored in the SQL database.
Code Block |
---|
| none |
---|
| none |
---|
title | NodeHandle model properties |
---|
|
# Handle <-> Node data
handle_id = models.AutoField(primary_key=True)
# Data shared with the node
node_name = models.CharField(max_length=200)
node_type = models.ForeignKey(NodeType)
node_meta_type = models.CharField(max_length=255,
choices=NODE_META_TYPE_CHOICES)
# Meta information
creator = models.ForeignKey(User, related_name='creator')
created = models.DateTimeField(auto_now_add=True)
modifier = models.ForeignKey(User, related_name='modifier')
modified = models.DateTimeField(auto_now=True)
.
.
methods
|
http://git.nordu.net/?p=norduni.git
https://portal.nordu.net/display/NI/
Graph Data Model
Gliffy Diagram |
---|
| |
---|
size | 1200 |
---|
name | Data model |
---|
pagePin | 6 |
---|
|
Actual Data in model
Gliffy Diagram |
---|
| |
---|
size | 1200 |
---|
name | Actual data in model |
---|
pagePin | 6 |
---|
|
...