blob: 6defba336601f03bf7b7f0a9c25437b4abb92e99 [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"
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
khenaidood948f772021-08-11 17:49:24 -040052func (handler *APIHandler) GetHealthStatus(ctx context.Context, empty *empty.Empty) (*voltha.HealthStatus, error) {
53 return &voltha.HealthStatus{State: voltha.HealthStatus_HEALTHY}, nil
54}
55
Kent Hagerman45a13e42020-04-13 12:23:50 -040056// GetVoltha currently just returns version information
khenaidood948f772021-08-11 17:49:24 -040057func (handler *APIHandler) GetVoltha(ctx context.Context, _ *empty.Empty) (*voltha.Voltha, error) {
Rohan Agrawal31f21802020-06-12 05:38:46 +000058 logger.Debug(ctx, "GetVoltha")
David Bainbridge4087cc52019-11-13 18:36:03 +000059 /*
60 * For now, encode all the version information into a JSON object and
61 * pass that back as "version" so the client can get all the
62 * information associated with the version. Long term the API should
Kent Hagerman45a13e42020-04-13 12:23:50 -040063 * better accommodate this, but for now this will work.
David Bainbridge4087cc52019-11-13 18:36:03 +000064 */
65 data, err := json.Marshal(&version.VersionInfo)
David Bainbridge4087cc52019-11-13 18:36:03 +000066 if err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +000067 logger.Warnf(ctx, "Unable to encode version information as JSON: %s", err.Error())
Kent Hagerman45a13e42020-04-13 12:23:50 -040068 return &voltha.Voltha{Version: version.VersionInfo.Version}, nil
David Bainbridge4087cc52019-11-13 18:36:03 +000069 }
Kent Hagerman45a13e42020-04-13 12:23:50 -040070 return &voltha.Voltha{Version: string(data)}, nil
David Bainbridge4087cc52019-11-13 18:36:03 +000071}
72
Kent Hagerman45a13e42020-04-13 12:23:50 -040073var errUnimplemented = errors.New("unimplemented")
khenaidoof5a5bfa2019-01-23 22:20:29 -050074
khenaidood948f772021-08-11 17:49:24 -040075func (handler *APIHandler) ListCoreInstances(context.Context, *empty.Empty) (*voltha.CoreInstances, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -040076 return nil, errUnimplemented
khenaidoof5a5bfa2019-01-23 22:20:29 -050077}
khenaidood948f772021-08-11 17:49:24 -040078func (handler *APIHandler) GetCoreInstance(context.Context, *voltha.ID) (*voltha.CoreInstance, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -040079 return nil, errUnimplemented
khenaidoobf6e7bb2018-08-14 22:27:29 -040080}
khenaidood948f772021-08-11 17:49:24 -040081func (handler *APIHandler) ListDeviceGroups(context.Context, *empty.Empty) (*voltha.DeviceGroups, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -040082 return nil, errUnimplemented
khenaidoobf6e7bb2018-08-14 22:27:29 -040083}
khenaidood948f772021-08-11 17:49:24 -040084func (handler *APIHandler) GetDeviceGroup(context.Context, *voltha.ID) (*voltha.DeviceGroup, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -040085 return nil, errUnimplemented
khenaidoobf6e7bb2018-08-14 22:27:29 -040086}
khenaidood948f772021-08-11 17:49:24 -040087func (handler *APIHandler) CreateEventFilter(context.Context, *voltha.EventFilter) (*voltha.EventFilter, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -040088 return nil, errUnimplemented
khenaidoobf6e7bb2018-08-14 22:27:29 -040089}
khenaidood948f772021-08-11 17:49:24 -040090func (handler *APIHandler) UpdateEventFilter(context.Context, *voltha.EventFilter) (*voltha.EventFilter, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -040091 return nil, errUnimplemented
khenaidoof5a5bfa2019-01-23 22:20:29 -050092}
khenaidood948f772021-08-11 17:49:24 -040093func (handler *APIHandler) DeleteEventFilter(context.Context, *voltha.EventFilter) (*empty.Empty, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -040094 return nil, errUnimplemented
khenaidoof5a5bfa2019-01-23 22:20:29 -050095}
khenaidood948f772021-08-11 17:49:24 -040096func (handler *APIHandler) GetEventFilter(context.Context, *voltha.ID) (*voltha.EventFilters, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -040097 return nil, errUnimplemented
khenaidoof5a5bfa2019-01-23 22:20:29 -050098}
khenaidood948f772021-08-11 17:49:24 -040099func (handler *APIHandler) ListEventFilters(context.Context, *empty.Empty) (*voltha.EventFilters, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -0400100 return nil, errUnimplemented
Kent Hagermanc2c73ff2019-11-20 16:22:32 -0500101}
khenaidood948f772021-08-11 17:49:24 -0400102func (handler *APIHandler) SelfTest(context.Context, *voltha.ID) (*voltha.SelfTestResponse, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -0400103 return nil, errUnimplemented
khenaidoob3127472019-07-24 21:04:55 -0400104}
khenaidood948f772021-08-11 17:49:24 -0400105func (handler *APIHandler) Subscribe(context.Context, *voltha.OfAgentSubscriber) (*voltha.OfAgentSubscriber, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -0400106 return nil, errUnimplemented
khenaidoobf6e7bb2018-08-14 22:27:29 -0400107}
khenaidood948f772021-08-11 17:49:24 -0400108func (handler *APIHandler) GetAlarmDeviceData(context.Context, *common.ID) (*omci.AlarmDeviceData, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -0400109 return nil, errUnimplemented
khenaidoobf6e7bb2018-08-14 22:27:29 -0400110}
khenaidood948f772021-08-11 17:49:24 -0400111func (handler *APIHandler) GetMibDeviceData(context.Context, *common.ID) (*omci.MibDeviceData, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -0400112 return nil, errUnimplemented
khenaidoobf6e7bb2018-08-14 22:27:29 -0400113}
khenaidood948f772021-08-11 17:49:24 -0400114func (handler *APIHandler) GetMembership(context.Context, *empty.Empty) (*voltha.Membership, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -0400115 return nil, errUnimplemented
Kent Hagermanc2c73ff2019-11-20 16:22:32 -0500116}
khenaidood948f772021-08-11 17:49:24 -0400117func (handler *APIHandler) UpdateMembership(context.Context, *voltha.Membership) (*empty.Empty, error) {
Kent Hagerman45a13e42020-04-13 12:23:50 -0400118 return nil, errUnimplemented
Scott Bakere099e862020-04-22 11:22:35 -0700119}