Commit 97aac97f authored by Simon Redman's avatar Simon Redman

Document custom NetworkGraph fields

parent ef3d802d
...@@ -17,16 +17,18 @@ These instructions will be updated as the code is actually written ...@@ -17,16 +17,18 @@ These instructions will be updated as the code is actually written
Before you will be able to run any commands, activate the virtual environment by running `source env/bin/activate` Before you will be able to run any commands, activate the virtual environment by running `source env/bin/activate`
#### 1. topomap_parser.py #### 1. topomap_parser.py
This is both a program which can be run on its own, mostly for testing purposes, and a library which is used by the following programs to parse emulab's topology into [NetJSON](netjson.org) for usage with the NetworkX network graph library. This is both a program which can be run on its own, mostly for testing purposes, and a library which is used by the following programs to parse emulab's topology into [NetJSON](netjson.org) NetworkGraph for usage with the NetworkX network graph library.
When used as a library, the most interesting method is `parse_topomap_to_netjson`, which returns a NetJSON-formatted dictionary. When run standalone, the program has built-in help by passing the `--help` flag. When used as a library, the most interesting method is `parse_topomap_to_netjson`, which returns a NetJSON-formatted dictionary. When run standalone, the program has built-in help by passing the `--help` flag.
The topology is parsed using the information in `/var/emulab/boot/topomap` to get basic information, and management IP addresses are found using DNS records. In many situations, topomap_parser will only properly work if run on one of the nodes of an experiment. The topology is parsed using the information in `/var/emulab/boot/topomap` to get basic information, and management IP addresses are found using DNS records. In many situations, topomap_parser will only properly work if run on one of the nodes of an experiment.
For description of the non-standard fields used, see the NetworkGraph section of this document
## TODO ## TODO
Once this codebase is finished, this section should go away. But great works are never finished, merely abandoned. Once this codebase is finished, this section should go away. But great works are never finished, merely abandoned.
The basic goal is to take all the scripts from [https://gitlab.flux.utah.edu/safeedge/sripv6-linux] and convert them to not assume anything about the experiment topology The basic goal is to take all the scripts from <https://gitlab.flux.utah.edu/safeedge/sripv6-linux> and convert them to not assume anything about the experiment topology
1. Replace `add_global_ipv6.sh` 1. Replace `add_global_ipv6.sh`
2. Replace `create_all_zebra_conf.sh` 2. Replace `create_all_zebra_conf.sh`
...@@ -36,3 +38,15 @@ The basic goal is to take all the scripts from [https://gitlab.flux.utah.edu/saf ...@@ -36,3 +38,15 @@ The basic goal is to take all the scripts from [https://gitlab.flux.utah.edu/saf
6. Replace `start_all_ovs.sh` 6. Replace `start_all_ovs.sh`
7. Replace `start_all_ospf_monitor.sh` 7. Replace `start_all_ospf_monitor.sh`
8. Write top-level script which runs all previous scripts in an easy-to-use way 8. Write top-level script which runs all previous scripts in an easy-to-use way
## NetworkGraph
For the most part, standard NetJSON NetworkGraph fields are used, and those are documented [here](http://netjson.org/rfc.html#rfc.section.4)
At the top-level, no optional fields are defined. This may change in the future to add human-relevant information
Each Node defines the following properties:
- 'lans': A mapping of Emulab LANs a Node is connected to and its IP address on that lan
- 'management-ip': A single remote-accessible IP or hostname
Each Link defines the following properties:
- 'netmask': The netmask of the Emulab LAN which corresponds to this link
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment