blob: 27b0ce5891a1784b9137ce9c5af572abca1d2394 [file] [log] [blame]
Matteo Scandolo11006992019-08-28 11:29:46 -07001/*
2 * Copyright 2018-present Open Networking Foundation
3
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7
8 * http://www.apache.org/licenses/LICENSE-2.0
9
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Matteo Scandolo82c16d02019-09-24 09:34:32 -070017package api
Matteo Scandolo84f7d482019-08-08 19:00:47 -070018
19import (
20 "context"
Matteo Scandolo11006992019-08-28 11:29:46 -070021 "github.com/opencord/bbsim/api/bbsim"
22 "github.com/opencord/bbsim/internal/bbsim/devices"
Matteo Scandolo84f7d482019-08-08 19:00:47 -070023 log "github.com/sirupsen/logrus"
24)
25
26var logger = log.WithFields(log.Fields{
27 "module": "GrpcApiServer",
28})
29
30var (
Matteo Scandolo8df63df2019-09-12 10:34:32 -070031 version string
32 buildTime string
33 commitHash string
34 gitStatus string
Matteo Scandolo84f7d482019-08-08 19:00:47 -070035)
36
37type BBSimServer struct {
38}
39
Matteo Scandolo8df63df2019-09-12 10:34:32 -070040func (s BBSimServer) Version(ctx context.Context, req *bbsim.Empty) (*bbsim.VersionNumber, error) {
Matteo Scandolo84f7d482019-08-08 19:00:47 -070041 // TODO add a flag to specofy whether the tree was clean at this commit or not
42 return &bbsim.VersionNumber{
Matteo Scandolo8df63df2019-09-12 10:34:32 -070043 Version: version,
44 BuildTime: buildTime,
Matteo Scandolo84f7d482019-08-08 19:00:47 -070045 CommitHash: commitHash,
Matteo Scandolo8df63df2019-09-12 10:34:32 -070046 GitStatus: gitStatus,
Matteo Scandolo84f7d482019-08-08 19:00:47 -070047 }, nil
48}
49
50func (s BBSimServer) GetOlt(ctx context.Context, req *bbsim.Empty) (*bbsim.Olt, error) {
51 olt := devices.GetOLT()
52 nnis := []*bbsim.NNIPort{}
53 pons := []*bbsim.PONPort{}
54
55 for _, nni := range olt.Nnis {
56 n := bbsim.NNIPort{
Matteo Scandolo8df63df2019-09-12 10:34:32 -070057 ID: int32(nni.ID),
Matteo Scandolo9a3518c2019-08-13 14:36:01 -070058 OperState: nni.OperState.Current(),
Matteo Scandolo84f7d482019-08-08 19:00:47 -070059 }
60 nnis = append(nnis, &n)
61 }
62
63 for _, pon := range olt.Pons {
64 p := bbsim.PONPort{
Matteo Scandolo8df63df2019-09-12 10:34:32 -070065 ID: int32(pon.ID),
Matteo Scandolo9a3518c2019-08-13 14:36:01 -070066 OperState: pon.OperState.Current(),
Matteo Scandolo84f7d482019-08-08 19:00:47 -070067 }
68 pons = append(pons, &p)
69 }
70
71 res := bbsim.Olt{
Matteo Scandolo8df63df2019-09-12 10:34:32 -070072 ID: int32(olt.ID),
73 SerialNumber: olt.SerialNumber,
74 OperState: olt.OperState.Current(),
Matteo Scandolo9a3518c2019-08-13 14:36:01 -070075 InternalState: olt.InternalState.Current(),
Matteo Scandolo8df63df2019-09-12 10:34:32 -070076 NNIPorts: nnis,
77 PONPorts: pons,
Matteo Scandolo84f7d482019-08-08 19:00:47 -070078 }
79 return &res, nil
Matteo Scandolo9a3518c2019-08-13 14:36:01 -070080}
81
Matteo Scandolo8df63df2019-09-12 10:34:32 -070082func (s BBSimServer) GetONUs(ctx context.Context, req *bbsim.Empty) (*bbsim.ONUs, error) {
Matteo Scandolo9a3518c2019-08-13 14:36:01 -070083 olt := devices.GetOLT()
84 onus := bbsim.ONUs{
85 Items: []*bbsim.ONU{},
86 }
87
88 for _, pon := range olt.Pons {
89 for _, o := range pon.Onus {
90 onu := bbsim.ONU{
Matteo Scandolo8df63df2019-09-12 10:34:32 -070091 ID: int32(o.ID),
Matteo Scandolo4b3fc7e2019-09-17 16:49:54 -070092 SerialNumber: o.Sn(),
Matteo Scandolo8df63df2019-09-12 10:34:32 -070093 OperState: o.OperState.Current(),
Matteo Scandolo9a3518c2019-08-13 14:36:01 -070094 InternalState: o.InternalState.Current(),
Matteo Scandolo8df63df2019-09-12 10:34:32 -070095 PonPortID: int32(o.PonPortID),
Matteo Scandolo4b3fc7e2019-09-17 16:49:54 -070096 STag: int32(o.STag),
97 CTag: int32(o.CTag),
98 HwAddress: o.HwAddress.String(),
Matteo Scandolo9a3518c2019-08-13 14:36:01 -070099 }
100 onus.Items = append(onus.Items, &onu)
101 }
102 }
103 return &onus, nil
Matteo Scandolo8df63df2019-09-12 10:34:32 -0700104}