oopt-goldstone / goldstone-mgmt

TIP Goldstone management layer implementation
Apache License 2.0
7 stars 9 forks source link

Goldstone Management Layer Implementation

goldstone-mgmt is the management layer implementation of Goldstone NOS. The components in this repo are pre-installed in Goldstone NOS.

What this repo includes

Goldstone Management Components

Getting Started

You can try running goldstone-mgmt components without a real networking device. You need to set up a Kubernetes cluster for that. You can use k3s to set it up quickly.

After making sure you have access to a Kubernetes cluster, try following.

$ git clone https://github.com/oopt-goldstone/goldstone-mgmt.git
$ cd goldstone-mgmt
$ kubectl apply -f k8s
$ kubectl get daemonset
NAME                  DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
south-sonic           1         1         1       1            1           <none>          70m
svclb-north-snmp      1         1         1       1            1           <none>          14m
svclb-north-netconf   1         1         1       1            1           <none>          14m
north-snmp            1         1         1       1            1           <none>          14m
north-netconf         1         1         1       1            1           <none>          14m
north-cli             1         1         1       1            1           <none>          14m
xlate-oc              1         1         1       1            1           <none>          14m
south-tai             1         1         1       1            1           <none>          14m
north-notif           1         1         1       1            1           <none>          14m
south-onlp            1         1         1       1            1           <none>          14m
south-system          1         1         1       1            1           <none>          14m

You can start the Goldstone CLI (gscli) by the following command

$ kubectl exec -it ds/north-cli -- gscli
> show version
latest
> show transponder summary
+-------------+-------------+--------------------+----------------------+--------------+-------------+
| transponder | vendor-name | vendor-part-number | vendor-serial-number | admin-status | oper-status |
+-------------+-------------+--------------------+----------------------+--------------+-------------+
| piu1        | BASIC       | N/A                | N/A                  |     down     | initialize  |
| piu2        | BASIC       | N/A                | N/A                  |     down     | initialize  |
| piu3        | N/A         | N/A                | N/A                  |     N/A      |     N/A     |
| piu4        | N/A         | N/A                | N/A                  |     N/A      |     N/A     |
| piu5        | N/A         | N/A                | N/A                  |     N/A      |     N/A     |
| piu6        | N/A         | N/A                | N/A                  |     N/A      |     N/A     |
+-------------+-------------+--------------------+----------------------+--------------+-------------+
> show chassis-hardware piu table
name    status     PIU type    CFP2 presence
------  ---------  ----------  ---------------
piu1    present    ACO         present
piu2    present    DCO         present
piu3    present    QSFP28      unplugged
piu4    unplugged  UNKNOWN     unplugged
piu5    present    ACO         unplugged
piu6    present    DCO         unplugged

Architecture

The management layer of Goldstone needs to meet the following requirements.

goldstone-mgmt uses sysrepo as a central configuration infrastructure. goldstone-mgmt has its own native YANG models which are placed under yang/ directory. The intention to have native YANG models is to fully cover what the underneath hardware supports.

Using the standard YANG models (OpenConfig, OpenROADM etc..) is also supported by using translater daemons.

goldstone-mgmt framework has four kinds of daemon which interact with sysrepo datastore.

How to build

Prerequisite

$ git clone https://github.com/oopt-goldstone/goldstone-mgmt.git
$ cd goldstone-mgmt
$ git submodule update --init
$ make all

This will build all Goldstone management components as container images.

$ docker images | grep oopt-goldstone/mgmt
ghcr.io/oopt-goldstone/mgmt/south-onlp      latest           3306a75b5445   3 hours ago     228MB
ghcr.io/oopt-goldstone/mgmt/builder         latest           50b26971c311   3 hours ago     1.67GB
ghcr.io/oopt-goldstone/mgmt/south-tai       latest           6cb422fe2d4c   3 hours ago     228MB
ghcr.io/oopt-goldstone/mgmt/south-gearbox   latest           663bb2dc39aa   3 hours ago     227MB
ghcr.io/oopt-goldstone/mgmt/north-notif     latest           6407dee38cc6   3 hours ago     210MB
ghcr.io/oopt-goldstone/mgmt/north-snmp      latest           062ad6d39b28   3 hours ago     200MB
ghcr.io/oopt-goldstone/mgmt/south-sonic     latest           c5156742195b   3 hours ago     281MB
ghcr.io/oopt-goldstone/mgmt/north-netconf   latest           78ff4effe763   3 hours ago     476MB
ghcr.io/oopt-goldstone/mgmt/south-system    latest           fa83287947bd   3 hours ago     252MB
ghcr.io/oopt-goldstone/mgmt/north-cli       latest           fe8286bf95fb   3 hours ago     238MB
ghcr.io/oopt-goldstone/mgmt/xlate-oc        latest           79e3e935785a   3 hours ago     211MB
ghcr.io/oopt-goldstone/mgmt/snmpd           latest           eca87e95b7a4   3 hours ago     174MB