blob: d18911b7275b1dfc543e30546a4cbfdd734df1c8 [file] [log] [blame]
khenaidoobf6e7bb2018-08-14 22:27:29 -04001/*
Joey Armstrong5f51f2e2023-01-17 17:06:26 -05002 * Copyright 2018-2023 Open Networking Foundation (ONF) and the ONF Contributors
khenaidoobf6e7bb2018-08-14 22:27:29 -04003
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"
khenaidood948f772021-08-11 17:49:24 -040023
khenaidoobf6e7bb2018-08-14 22:27:29 -040024 "github.com/golang/protobuf/ptypes/empty"
Kent Hagerman2b216042020-04-03 18:28:56 -040025 "github.com/opencord/voltha-go/rw_core/core/adapter"
26 "github.com/opencord/voltha-go/rw_core/core/device"
khenaidood948f772021-08-11 17:49:24 -040027 "github.com/opencord/voltha-lib-go/v7/pkg/version"
28 "github.com/opencord/voltha-protos/v5/go/common"
29 "github.com/opencord/voltha-protos/v5/go/omci"
30 "github.com/opencord/voltha-protos/v5/go/voltha"
khenaidoobf6e7bb2018-08-14 22:27:29 -040031)
32
khenaidood948f772021-08-11 17:49:24 -040033// APIHandler combines the partial API implementations in various components into a complete voltha implementation
34type APIHandler struct {
Kent Hagerman45a13e42020-04-13 12:23:50 -040035 *device.Manager
36 *device.LogicalManager
37 adapterManager // *adapter.Manager
khenaidoobf6e7bb2018-08-14 22:27:29 -040038}
39
Kent Hagerman45a13e42020-04-13 12:23:50 -040040// avoid having multiple embedded types with the same name (`<package>.Manager`s conflict)
41type adapterManager struct{ *adapter.Manager }
42
khenaidood948f772021-08-11 17:49:24 -040043// NewAPIHandler creates API handler instance
44func NewAPIHandler(deviceMgr *device.Manager, logicalDeviceMgr *device.LogicalManager, adapterMgr *adapter.Manager) *APIHandler {
45 return &APIHandler{
Kent Hagerman45a13e42020-04-13 12:23:50 -040046 Manager: deviceMgr,
47 LogicalManager: logicalDeviceMgr,
48 adapterManager: adapterManager{adapterMgr},
Stephane Barbarie6e1bd502018-11-05 22:44:45 -050049 }
khenaidoobf6e7bb2018-08-14 22:27:29 -040050}
khenaidoo4d4802d2018-10-04 21:59:49 -040051
Kent Hagerman45a13e42020-04-13 12:23:50 -040052// GetVoltha currently just returns version information
khenaidood948f772021-08-11 17:49:24 -040053func (handler *APIHandler) GetVoltha(ctx context.Context, _ *empty.Empty) (*voltha.Voltha, error) {
Rohan Agrawal31f21802020-06-12 05:38:46 +000054 logger.Debug(ctx, "GetVoltha")
David Bainbridge4087cc52019-11-13 18:36:03 +000055 /*
56 * For now, encode all the version information into a JSON object and
57 * pass that back as "version" so the client can get all the
58 * information associated with the version. Long term the API should
Kent Hagerman45a13e42020-04-13 12:23:50 -040059 * better accommodate this, but for now this will work.
David Bainbridge4087cc52019-11-13 18:36:03 +000060 */
61 data, err := json.Marshal(&version.VersionInfo)
David Bainbridge4087cc52019-11-13 18:36:03 +000062 if err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +000063 logger.Warnf(ctx, "Unable to encode version information as JSON: %s", err.Error())
Kent Hagerman45a13e42020-04-13 12:23:50 -040064 return &voltha.Voltha{Version: version.VersionInfo.Version}, nil
David Bainbridge4087cc52019-11-13 18:36:03 +000065 }
Kent Hagerman45a13e42020-04-13 12:23:50 -040066 return &voltha.Voltha{Version: string(data)}, nil
David Bainbridge4087cc52019-11-13 18:36:03 +000067}
68
Kent Hagerman45a13e42020-04-13 12:23:50 -040069var errUnimplemented = errors.New("unimplemented")
khenaidoof5a5bfa2019-01-23 22:20:29 -050070
khenaidood948f772021-08-11 17:49:24 -040071func (handler *APIHandler) ListCoreInstances(context.Context, *empty.Empty) (*voltha.CoreInstances, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -040072 return nil, errUnimplemented
khenaidoof5a5bfa2019-01-23 22:20:29 -050073}
khenaidood948f772021-08-11 17:49:24 -040074func (handler *APIHandler) GetCoreInstance(context.Context, *voltha.ID) (*voltha.CoreInstance, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -040075 return nil, errUnimplemented
khenaidoobf6e7bb2018-08-14 22:27:29 -040076}
khenaidood948f772021-08-11 17:49:24 -040077func (handler *APIHandler) CreateEventFilter(context.Context, *voltha.EventFilter) (*voltha.EventFilter, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -040078 return nil, errUnimplemented
khenaidoobf6e7bb2018-08-14 22:27:29 -040079}
khenaidood948f772021-08-11 17:49:24 -040080func (handler *APIHandler) UpdateEventFilter(context.Context, *voltha.EventFilter) (*voltha.EventFilter, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -040081 return nil, errUnimplemented
khenaidoof5a5bfa2019-01-23 22:20:29 -050082}
khenaidood948f772021-08-11 17:49:24 -040083func (handler *APIHandler) DeleteEventFilter(context.Context, *voltha.EventFilter) (*empty.Empty, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -040084 return nil, errUnimplemented
khenaidoof5a5bfa2019-01-23 22:20:29 -050085}
khenaidood948f772021-08-11 17:49:24 -040086func (handler *APIHandler) GetEventFilter(context.Context, *voltha.ID) (*voltha.EventFilters, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -040087 return nil, errUnimplemented
khenaidoof5a5bfa2019-01-23 22:20:29 -050088}
khenaidood948f772021-08-11 17:49:24 -040089func (handler *APIHandler) ListEventFilters(context.Context, *empty.Empty) (*voltha.EventFilters, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -040090 return nil, errUnimplemented
Kent Hagermanc2c73ff2019-11-20 16:22:32 -050091}
khenaidood948f772021-08-11 17:49:24 -040092func (handler *APIHandler) SelfTest(context.Context, *voltha.ID) (*voltha.SelfTestResponse, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -040093 return nil, errUnimplemented
khenaidoob3127472019-07-24 21:04:55 -040094}
khenaidood948f772021-08-11 17:49:24 -040095func (handler *APIHandler) GetAlarmDeviceData(context.Context, *common.ID) (*omci.AlarmDeviceData, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -040096 return nil, errUnimplemented
khenaidoobf6e7bb2018-08-14 22:27:29 -040097}
khenaidood948f772021-08-11 17:49:24 -040098func (handler *APIHandler) GetMibDeviceData(context.Context, *common.ID) (*omci.MibDeviceData, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -040099 return nil, errUnimplemented
khenaidoobf6e7bb2018-08-14 22:27:29 -0400100}