Skip to content
Snippets Groups Projects
Commit 30d6a01c authored by Fabian Seidl's avatar Fabian Seidl
Browse files

restructuring of concepts and updated information

parent 50938ade
No related branches found
No related tags found
1 merge request!1148Improve documentation in README
This commit is part of merge request !1148. Comments created here will be created in the context of that merge request.
......@@ -91,11 +91,27 @@ A simple showcase how the controller can be addressed after
<p> Detailed view of plugin mechanism</p>
</div>
### Nucleus
The `goSDN` controllers core - also called `nucleus` - is a lightweight library
that manages principal network domains and provides southbound interface
operations for managed network elements.
In addition, we provide a simple Northbound-API (gRPC) for the controller [right here](https://code.fbi.h-da.de/danet/gosdn/-/tree/master/controller/api).
### Principal Networking Domain (PND)
The PND is the single source of truth within a network. Its state is held and
maintained by the controller. Any configuration of an MNE has to be applied by
the PND.
### Managed Network Element (MNE)
Any network element directly configured by `goSDN`
### Northbound Interface (NBI)
The NBI is implemented using gRPC which means one can interact with the controller with any language that supports gRPC when using our own [proto definitions](https://code.fbi.h-da.de/danet/gosdn/-/tree/master/api/proto/gosdn).
In addition, we provide a simple abstraction layer of the Northbound-API to use with the controller in Go [right here](https://code.fbi.h-da.de/danet/gosdn/-/tree/master/controller/api).
To use the API, you can build a login method as is done in the `inventory-manager` in `utils.go`.
You log in, create a session context with the returned token, then you can simply make API calls with this context.
......@@ -120,7 +136,7 @@ func createContextWithAuthorization(sessionToken string) context.Context {
}
```
The code in your app:
An example on how the code in your app to register a MNE in the controller could look like:
```golang
import "code.fbi.h-da.de/danet/gosdn/controller/api"
......@@ -130,20 +146,11 @@ ctx := createContextWithAuthorization(sessionToken)
_, err := api.AddNetworkElement(i.sessionContext, i.controllerAddress, networkElement.Name, networkElement.UUID, &transportOptions, pluginUUID, pndUUID, []string{})
```
The gRPC services can also be reached using HTTP requests via the gRPC-Gateway. The fitting OpenAPI definitions can be found [here](https://code.fbi.h-da.de/danet/gosdn/-/tree/master/api/openapiv2?ref_type=heads).
The gRPC services can also be reached using HTTP requests via the gRPC-Gateway. The fitting OpenAPI definitions can be found [here](https://code.fbi.h-da.de/danet/gosdn/-/tree/master/api/openapiv2?ref_type=heads). Note, that this is experimental and tested less well. If you want to use the controller in secure mode which implies it's mandatory to login and provide the received token in other requests via the HTTP header with the key-value pair:
Note, that this is experimental and tested less well. If you want to use the controller in secure mode it is mandatory to login and provide the received token in other requests via the HTTP header with the key-value pair:
`"authorize: token"`.
### Principal Networking Domain (PND)
The PND is the single source of truth within a network. Its state is held and
maintained by the controller. Any configuration of an MNE has to be applied by
the PND.
### Managed Network Element (MNE)
Any network element directly configured by `goSDN`
---
## Launch goSDN Controller local
In this chapter, you learn how to launch the goSDN controller.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment