diff --git a/README.md b/README.md index aecc71b49a1faf1c2fffd9b6a76317c2f33c5e15..03229feac9d450b8b5500f39b76d859416f13ef7 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,67 @@ -# GoSDN +# goSDN [](https://code.fbi.h-da.de/cocsn/gosdn/-/commits/master) [](https://code.fbi.h-da.de/cocsn/gosdn/-/commits/master) -### CI Status Master -[](https://code.fbi.h-da.de/cocsn/gosdn/-/commits/master) -[](https://code.fbi.h-da.de/cocsn/gosdn/-/commits/master) +`goSDN` is a prototypical approach to build a model driven multi-vendor SDN controller. -### CI Status Develop +# Table of Contents -[](https://code.fbi.h-da.de/cocsn/gosdn/-/commits/develop) -[](https://code.fbi.h-da.de/cocsn/gosdn/-/commits/develop) +- [Overview](#overview) +- [Concepts](#concepts) +- [Installing](#installing) +- [Getting Started](#getting-started) + * [k8s](#k8s) + * [Using the goSDN CLI](#using-the-cli) + * [Example](#example) +- [Contributing](CONTRIBUTING.md) +- [License](LICENSE) +- [CI Status](#ci-status) -The GIT repo for the GoSDN design and implementation. GoSDN is intended to be controller for Software Defined Networks (SDN) that follows a modern software architecture design and a well-documented implementation in the go language. +# Overview -## Generate Code Stubs +`goSDN` is also an application that will allow you to manage your multi-vendor network using one unified controller. -YANG code stubs are located in the `yang-processor` directory. They are generated by calling `go generate` from their respective sub directories. -``` -gosdn -+-- yang-processor - +-- ciena //Ciena code stubs - +-- tapi //TAPI code stubs -+-- yang //All YANG modules +`goSDN` provides: +* Model driven device representation +* Native multi vendor support +* Multi controller environments + +# Concepts + +The `goSDN` core - also called `nucleus` - is a lightweight library that manages principal network domains and provides southbound interface operations for orchestrated networking devices. + +## 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 OND has to be applied by the PND. + +## Orchestrated Networking Device (OND) + +Any device directly configured by `goSDN` + +# Installing +You can install `goSDN` locally using the `go get` command. Since the repository and some dependencies are not publicly available you have to modify your git config first: +```sh +> git config --global url."git@code.fbi.h-da.de:".insteadOf "https://code.fbi.h-da.de" +> go get code.fbi.h-da.de/cocsn/gosdn/cmd/gosdn ``` +Now you can start `goSDN` locally using the `gosdn` command or [use the CLI](#using-the-cli) to interact with a running `goSDN` instance. + +# Getting Started +## k8s + +We have an instance of `goSDN` for each the latest master and current develop branch running on the department's k8s cluster. These endpoints can be accessed using the `gosdn cli` command. If anything breaks please file an [issue](https://code.fbi.h-da.de/cocsn/gosdn/-/issues/new). + +## Using the CLI + +The `gosdn cli` command allows you to interact with a running `goSDN` controller. Use `gosdn help cli` to print the available commands and flags. + +## Example + + + -## Documentation +# CI Status -The latest documentatiion generated on the master branch can be downloaded [here](https://code.fbi.h-da.de/cocsn/gosdn/-/jobs). +| Master | Develop | +| ------ | ------ | +| [](https://code.fbi.h-da.de/cocsn/gosdn/-/commits/master) | [](https://code.fbi.h-da.de/cocsn/gosdn/-/commits/develop) | +| [](https://code.fbi.h-da.de/cocsn/gosdn/-/commits/master) | [](https://code.fbi.h-da.de/cocsn/gosdn/-/commits/develop) |