blob: e034da50eff88c1cb6b7314c4bea5ec0c1febe80 [file] [log] [blame]
khenaidoobf6e7bb2018-08-14 22:27:29 -04001/*
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 */
npujar1d86a522019-11-14 17:11:16 +053016
Kent Hagerman2b216042020-04-03 18:28:56 -040017package api
khenaidoobf6e7bb2018-08-14 22:27:29 -040018
19import (
20 "context"
David Bainbridge4087cc52019-11-13 18:36:03 +000021 "encoding/json"
khenaidoobf6e7bb2018-08-14 22:27:29 -040022 "errors"
23 "github.com/golang/protobuf/ptypes/empty"
Kent Hagerman2b216042020-04-03 18:28:56 -040024 "github.com/opencord/voltha-go/rw_core/core/adapter"
25 "github.com/opencord/voltha-go/rw_core/core/device"
yasin sapli5458a1c2021-06-14 22:24:38 +000026 "github.com/opencord/voltha-lib-go/v5/pkg/version"
Maninderdfadc982020-10-28 14:04:33 +053027 "github.com/opencord/voltha-protos/v4/go/common"
28 "github.com/opencord/voltha-protos/v4/go/omci"
29 "github.com/opencord/voltha-protos/v4/go/voltha"
khenaidoobf6e7bb2018-08-14 22:27:29 -040030)
31
Kent Hagerman45a13e42020-04-13 12:23:50 -040032// NBIHandler combines the partial API implementations in various components into a complete voltha implementation
Kent Hagerman2b216042020-04-03 18:28:56 -040033type NBIHandler struct {
Kent Hagerman45a13e42020-04-13 12:23:50 -040034 *device.Manager
35 *device.LogicalManager
36 adapterManager // *adapter.Manager
khenaidoobf6e7bb2018-08-14 22:27:29 -040037}
38
Kent Hagerman45a13e42020-04-13 12:23:50 -040039// avoid having multiple embedded types with the same name (`<package>.Manager`s conflict)
40type adapterManager struct{ *adapter.Manager }
41
42// NewNBIHandler creates API handler instance
43func NewNBIHandler(deviceMgr *device.Manager, logicalDeviceMgr *device.LogicalManager, adapterMgr *adapter.Manager) *NBIHandler {
Kent Hagerman2b216042020-04-03 18:28:56 -040044 return &NBIHandler{
Kent Hagerman45a13e42020-04-13 12:23:50 -040045 Manager: deviceMgr,
46 LogicalManager: logicalDeviceMgr,
47 adapterManager: adapterManager{adapterMgr},
Stephane Barbarie6e1bd502018-11-05 22:44:45 -050048 }
khenaidoobf6e7bb2018-08-14 22:27:29 -040049}
khenaidoo4d4802d2018-10-04 21:59:49 -040050
Kent Hagerman45a13e42020-04-13 12:23:50 -040051// GetVoltha currently just returns version information
Rohan Agrawal31f21802020-06-12 05:38:46 +000052func (handler *NBIHandler) GetVoltha(ctx context.Context, _ *empty.Empty) (*voltha.Voltha, error) {
53 logger.Debug(ctx, "GetVoltha")
David Bainbridge4087cc52019-11-13 18:36:03 +000054 /*
55 * For now, encode all the version information into a JSON object and
56 * pass that back as "version" so the client can get all the
57 * information associated with the version. Long term the API should
Kent Hagerman45a13e42020-04-13 12:23:50 -040058 * better accommodate this, but for now this will work.
David Bainbridge4087cc52019-11-13 18:36:03 +000059 */
60 data, err := json.Marshal(&version.VersionInfo)
David Bainbridge4087cc52019-11-13 18:36:03 +000061 if err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +000062 logger.Warnf(ctx, "Unable to encode version information as JSON: %s", err.Error())
Kent Hagerman45a13e42020-04-13 12:23:50 -040063 return &voltha.Voltha{Version: version.VersionInfo.Version}, nil
David Bainbridge4087cc52019-11-13 18:36:03 +000064 }
Kent Hagerman45a13e42020-04-13 12:23:50 -040065 return &voltha.Voltha{Version: string(data)}, nil
David Bainbridge4087cc52019-11-13 18:36:03 +000066}
67
Kent Hagerman45a13e42020-04-13 12:23:50 -040068var errUnimplemented = errors.New("unimplemented")
khenaidoof5a5bfa2019-01-23 22:20:29 -050069
Kent Hagerman45a13e42020-04-13 12:23:50 -040070func (handler *NBIHandler) ListCoreInstances(context.Context, *empty.Empty) (*voltha.CoreInstances, error) {
71 return nil, errUnimplemented
khenaidoof5a5bfa2019-01-23 22:20:29 -050072}
Kent Hagerman45a13e42020-04-13 12:23:50 -040073func (handler *NBIHandler) GetCoreInstance(context.Context, *voltha.ID) (*voltha.CoreInstance, error) {
74 return nil, errUnimplemented
khenaidoobf6e7bb2018-08-14 22:27:29 -040075}
Kent Hagerman45a13e42020-04-13 12:23:50 -040076func (handler *NBIHandler) ListDeviceGroups(context.Context, *empty.Empty) (*voltha.DeviceGroups, error) {
77 return nil, errUnimplemented
khenaidoobf6e7bb2018-08-14 22:27:29 -040078}
Kent Hagerman45a13e42020-04-13 12:23:50 -040079func (handler *NBIHandler) GetDeviceGroup(context.Context, *voltha.ID) (*voltha.DeviceGroup, error) {
80 return nil, errUnimplemented
khenaidoobf6e7bb2018-08-14 22:27:29 -040081}
Kent Hagerman45a13e42020-04-13 12:23:50 -040082func (handler *NBIHandler) CreateEventFilter(context.Context, *voltha.EventFilter) (*voltha.EventFilter, error) {
83 return nil, errUnimplemented
khenaidoobf6e7bb2018-08-14 22:27:29 -040084}
Kent Hagerman45a13e42020-04-13 12:23:50 -040085func (handler *NBIHandler) UpdateEventFilter(context.Context, *voltha.EventFilter) (*voltha.EventFilter, error) {
86 return nil, errUnimplemented
khenaidoof5a5bfa2019-01-23 22:20:29 -050087}
Kent Hagerman45a13e42020-04-13 12:23:50 -040088func (handler *NBIHandler) DeleteEventFilter(context.Context, *voltha.EventFilter) (*empty.Empty, error) {
89 return nil, errUnimplemented
khenaidoof5a5bfa2019-01-23 22:20:29 -050090}
Kent Hagerman45a13e42020-04-13 12:23:50 -040091func (handler *NBIHandler) GetEventFilter(context.Context, *voltha.ID) (*voltha.EventFilters, error) {
92 return nil, errUnimplemented
khenaidoof5a5bfa2019-01-23 22:20:29 -050093}
Kent Hagerman45a13e42020-04-13 12:23:50 -040094func (handler *NBIHandler) ListEventFilters(context.Context, *empty.Empty) (*voltha.EventFilters, error) {
95 return nil, errUnimplemented
Kent Hagermanc2c73ff2019-11-20 16:22:32 -050096}
Kent Hagerman45a13e42020-04-13 12:23:50 -040097func (handler *NBIHandler) SelfTest(context.Context, *voltha.ID) (*voltha.SelfTestResponse, error) {
98 return nil, errUnimplemented
khenaidoob3127472019-07-24 21:04:55 -040099}
Kent Hagerman45a13e42020-04-13 12:23:50 -0400100func (handler *NBIHandler) Subscribe(context.Context, *voltha.OfAgentSubscriber) (*voltha.OfAgentSubscriber, error) {
101 return nil, errUnimplemented
khenaidoobf6e7bb2018-08-14 22:27:29 -0400102}
Kent Hagerman45a13e42020-04-13 12:23:50 -0400103func (handler *NBIHandler) GetAlarmDeviceData(context.Context, *common.ID) (*omci.AlarmDeviceData, error) {
104 return nil, errUnimplemented
khenaidoobf6e7bb2018-08-14 22:27:29 -0400105}
Kent Hagerman45a13e42020-04-13 12:23:50 -0400106func (handler *NBIHandler) GetMibDeviceData(context.Context, *common.ID) (*omci.MibDeviceData, error) {
107 return nil, errUnimplemented
khenaidoobf6e7bb2018-08-14 22:27:29 -0400108}
Kent Hagerman2b216042020-04-03 18:28:56 -0400109func (handler *NBIHandler) GetMembership(context.Context, *empty.Empty) (*voltha.Membership, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -0400110 return nil, errUnimplemented
Kent Hagermanc2c73ff2019-11-20 16:22:32 -0500111}
Kent Hagerman2b216042020-04-03 18:28:56 -0400112func (handler *NBIHandler) UpdateMembership(context.Context, *voltha.Membership) (*empty.Empty, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -0400113 return nil, errUnimplemented
Scott Bakere099e862020-04-22 11:22:35 -0700114}