blob: f3a93df1e03f781defb5fc2a07937d80b4677d85 [file] [log] [blame]
khenaidood2b6df92018-12-13 16:37:20 -05001/*
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 */
16package common
17
18import (
Rohan Agrawal31f21802020-06-12 05:38:46 +000019 "context"
khenaidood2b6df92018-12-13 16:37:20 -050020 "errors"
serkant.uluderya2ae470f2020-01-21 11:13:09 -080021
khenaidood2b6df92018-12-13 16:37:20 -050022 "github.com/golang/protobuf/ptypes"
23 "github.com/golang/protobuf/ptypes/empty"
serkant.uluderya2ae470f2020-01-21 11:13:09 -080024 "github.com/opencord/voltha-lib-go/v3/pkg/adapters"
25 "github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif"
26 "github.com/opencord/voltha-lib-go/v3/pkg/kafka"
27 "github.com/opencord/voltha-lib-go/v3/pkg/log"
28 ic "github.com/opencord/voltha-protos/v3/go/inter_container"
29 "github.com/opencord/voltha-protos/v3/go/openflow_13"
30 "github.com/opencord/voltha-protos/v3/go/voltha"
khenaidood2b6df92018-12-13 16:37:20 -050031 "google.golang.org/grpc/codes"
32 "google.golang.org/grpc/status"
33)
34
35type RequestHandlerProxy struct {
36 TestMode bool
37 coreInstanceId string
38 adapter adapters.IAdapter
kdarapu283d1542019-07-31 17:21:11 +053039 coreProxy adapterif.CoreProxy
khenaidood2b6df92018-12-13 16:37:20 -050040}
41
kdarapu283d1542019-07-31 17:21:11 +053042func NewRequestHandlerProxy(coreInstanceId string, iadapter adapters.IAdapter, cProxy adapterif.CoreProxy) *RequestHandlerProxy {
khenaidood2b6df92018-12-13 16:37:20 -050043 var proxy RequestHandlerProxy
44 proxy.coreInstanceId = coreInstanceId
45 proxy.adapter = iadapter
khenaidoo54e0ddf2019-02-27 16:21:33 -050046 proxy.coreProxy = cProxy
khenaidood2b6df92018-12-13 16:37:20 -050047 return &proxy
48}
49
50func (rhp *RequestHandlerProxy) Adapter_descriptor() (*empty.Empty, error) {
51 return new(empty.Empty), nil
52}
53
54func (rhp *RequestHandlerProxy) Device_types() (*voltha.DeviceTypes, error) {
55 return nil, nil
56}
57
58func (rhp *RequestHandlerProxy) Health() (*voltha.HealthStatus, error) {
59 return nil, nil
60}
61
Rohan Agrawal31f21802020-06-12 05:38:46 +000062func (rhp *RequestHandlerProxy) Adopt_device(ctx context.Context, args []*ic.Argument) (*empty.Empty, error) {
khenaidoo54e0ddf2019-02-27 16:21:33 -050063 if len(args) < 3 {
Rohan Agrawal31f21802020-06-12 05:38:46 +000064 logger.Warn(ctx, "invalid-number-of-args", log.Fields{"args": args})
khenaidood2b6df92018-12-13 16:37:20 -050065 err := errors.New("invalid-number-of-args")
66 return nil, err
67 }
68 device := &voltha.Device{}
khenaidoo6d055132019-02-12 16:51:19 -050069 transactionID := &ic.StrType{}
khenaidoo54e0ddf2019-02-27 16:21:33 -050070 fromTopic := &ic.StrType{}
khenaidoo6d055132019-02-12 16:51:19 -050071 for _, arg := range args {
72 switch arg.Key {
73 case "device":
74 if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +000075 logger.Warnw(ctx, "cannot-unmarshal-device", log.Fields{"error": err})
khenaidoo6d055132019-02-12 16:51:19 -050076 return nil, err
77 }
78 case kafka.TransactionKey:
79 if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +000080 logger.Warnw(ctx, "cannot-unmarshal-transaction-ID", log.Fields{"error": err})
khenaidoo6d055132019-02-12 16:51:19 -050081 return nil, err
82 }
khenaidoo54e0ddf2019-02-27 16:21:33 -050083 case kafka.FromTopic:
84 if err := ptypes.UnmarshalAny(arg.Value, fromTopic); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +000085 logger.Warnw(ctx, "cannot-unmarshal-from-topic", log.Fields{"error": err})
khenaidoo54e0ddf2019-02-27 16:21:33 -050086 return nil, err
87 }
khenaidoo6d055132019-02-12 16:51:19 -050088 }
khenaidood2b6df92018-12-13 16:37:20 -050089 }
khenaidoo6d055132019-02-12 16:51:19 -050090
Rohan Agrawal31f21802020-06-12 05:38:46 +000091 logger.Debugw(ctx, "Adopt_device", log.Fields{"deviceId": device.Id})
khenaidood2b6df92018-12-13 16:37:20 -050092
khenaidoo54e0ddf2019-02-27 16:21:33 -050093 //Update the core reference for that device
94 rhp.coreProxy.UpdateCoreReference(device.Id, fromTopic.Val)
95
khenaidood2b6df92018-12-13 16:37:20 -050096 //Invoke the adopt device on the adapter
Rohan Agrawal31f21802020-06-12 05:38:46 +000097 if err := rhp.adapter.Adopt_device(ctx, device); err != nil {
khenaidood2b6df92018-12-13 16:37:20 -050098 return nil, status.Errorf(codes.NotFound, "%s", err.Error())
99 }
100
101 return new(empty.Empty), nil
102}
103
Rohan Agrawal31f21802020-06-12 05:38:46 +0000104func (rhp *RequestHandlerProxy) Reconcile_device(ctx context.Context, args []*ic.Argument) (*empty.Empty, error) {
khenaidooba6b6c42019-08-02 09:11:56 -0400105 if len(args) < 3 {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000106 logger.Warn(ctx, "invalid-number-of-args", log.Fields{"args": args})
khenaidooba6b6c42019-08-02 09:11:56 -0400107 err := errors.New("invalid-number-of-args")
108 return nil, err
109 }
110
111 device := &voltha.Device{}
112 transactionID := &ic.StrType{}
113 fromTopic := &ic.StrType{}
114 for _, arg := range args {
115 switch arg.Key {
116 case "device":
117 if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000118 logger.Warnw(ctx, "cannot-unmarshal-device", log.Fields{"error": err})
khenaidooba6b6c42019-08-02 09:11:56 -0400119 return nil, err
120 }
121 case kafka.TransactionKey:
122 if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000123 logger.Warnw(ctx, "cannot-unmarshal-transaction-ID", log.Fields{"error": err})
khenaidooba6b6c42019-08-02 09:11:56 -0400124 return nil, err
125 }
126 case kafka.FromTopic:
127 if err := ptypes.UnmarshalAny(arg.Value, fromTopic); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000128 logger.Warnw(ctx, "cannot-unmarshal-from-topic", log.Fields{"error": err})
khenaidooba6b6c42019-08-02 09:11:56 -0400129 return nil, err
130 }
131 }
132 }
133 //Update the core reference for that device
134 rhp.coreProxy.UpdateCoreReference(device.Id, fromTopic.Val)
135
136 //Invoke the reconcile device API on the adapter
Rohan Agrawal31f21802020-06-12 05:38:46 +0000137 if err := rhp.adapter.Reconcile_device(ctx, device); err != nil {
khenaidooba6b6c42019-08-02 09:11:56 -0400138 return nil, status.Errorf(codes.NotFound, "%s", err.Error())
139 }
khenaidood2b6df92018-12-13 16:37:20 -0500140 return new(empty.Empty), nil
141}
142
143func (rhp *RequestHandlerProxy) Abandon_device(args []*ic.Argument) (*empty.Empty, error) {
144 return new(empty.Empty), nil
145}
146
Rohan Agrawal31f21802020-06-12 05:38:46 +0000147func (rhp *RequestHandlerProxy) Disable_device(ctx context.Context, args []*ic.Argument) (*empty.Empty, error) {
khenaidoo3ab34882019-05-02 21:33:30 -0400148 if len(args) < 3 {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000149 logger.Warn(ctx, "invalid-number-of-args", log.Fields{"args": args})
khenaidoo3ab34882019-05-02 21:33:30 -0400150 err := errors.New("invalid-number-of-args")
151 return nil, err
152 }
153
154 device := &voltha.Device{}
155 transactionID := &ic.StrType{}
156 fromTopic := &ic.StrType{}
157 for _, arg := range args {
158 switch arg.Key {
159 case "device":
160 if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000161 logger.Warnw(ctx, "cannot-unmarshal-device", log.Fields{"error": err})
khenaidoo3ab34882019-05-02 21:33:30 -0400162 return nil, err
163 }
164 case kafka.TransactionKey:
165 if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000166 logger.Warnw(ctx, "cannot-unmarshal-transaction-ID", log.Fields{"error": err})
khenaidoo3ab34882019-05-02 21:33:30 -0400167 return nil, err
168 }
169 case kafka.FromTopic:
170 if err := ptypes.UnmarshalAny(arg.Value, fromTopic); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000171 logger.Warnw(ctx, "cannot-unmarshal-from-topic", log.Fields{"error": err})
khenaidoo3ab34882019-05-02 21:33:30 -0400172 return nil, err
173 }
174 }
175 }
176 //Update the core reference for that device
177 rhp.coreProxy.UpdateCoreReference(device.Id, fromTopic.Val)
178 //Invoke the Disable_device API on the adapter
Rohan Agrawal31f21802020-06-12 05:38:46 +0000179 if err := rhp.adapter.Disable_device(ctx, device); err != nil {
khenaidoo3ab34882019-05-02 21:33:30 -0400180 return nil, status.Errorf(codes.NotFound, "%s", err.Error())
181 }
khenaidood2b6df92018-12-13 16:37:20 -0500182 return new(empty.Empty), nil
183}
184
Rohan Agrawal31f21802020-06-12 05:38:46 +0000185func (rhp *RequestHandlerProxy) Reenable_device(ctx context.Context, args []*ic.Argument) (*empty.Empty, error) {
khenaidoo3ab34882019-05-02 21:33:30 -0400186 if len(args) < 3 {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000187 logger.Warn(ctx, "invalid-number-of-args", log.Fields{"args": args})
khenaidoo3ab34882019-05-02 21:33:30 -0400188 err := errors.New("invalid-number-of-args")
189 return nil, err
190 }
191
192 device := &voltha.Device{}
193 transactionID := &ic.StrType{}
194 fromTopic := &ic.StrType{}
195 for _, arg := range args {
196 switch arg.Key {
197 case "device":
198 if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000199 logger.Warnw(ctx, "cannot-unmarshal-device", log.Fields{"error": err})
khenaidoo3ab34882019-05-02 21:33:30 -0400200 return nil, err
201 }
202 case kafka.TransactionKey:
203 if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000204 logger.Warnw(ctx, "cannot-unmarshal-transaction-ID", log.Fields{"error": err})
khenaidoo3ab34882019-05-02 21:33:30 -0400205 return nil, err
206 }
207 case kafka.FromTopic:
208 if err := ptypes.UnmarshalAny(arg.Value, fromTopic); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000209 logger.Warnw(ctx, "cannot-unmarshal-from-topic", log.Fields{"error": err})
khenaidoo3ab34882019-05-02 21:33:30 -0400210 return nil, err
211 }
212 }
213 }
214 //Update the core reference for that device
215 rhp.coreProxy.UpdateCoreReference(device.Id, fromTopic.Val)
216 //Invoke the Reenable_device API on the adapter
Rohan Agrawal31f21802020-06-12 05:38:46 +0000217 if err := rhp.adapter.Reenable_device(ctx, device); err != nil {
khenaidoo3ab34882019-05-02 21:33:30 -0400218 return nil, status.Errorf(codes.NotFound, "%s", err.Error())
219 }
khenaidood2b6df92018-12-13 16:37:20 -0500220 return new(empty.Empty), nil
221}
222
Rohan Agrawal31f21802020-06-12 05:38:46 +0000223func (rhp *RequestHandlerProxy) Reboot_device(ctx context.Context, args []*ic.Argument) (*empty.Empty, error) {
Girish Gowdru894d97d2019-05-28 05:07:18 -0400224 if len(args) < 3 {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000225 logger.Warn(ctx, "invalid-number-of-args", log.Fields{"args": args})
Girish Gowdru894d97d2019-05-28 05:07:18 -0400226 err := errors.New("invalid-number-of-args")
227 return nil, err
228 }
229
230 device := &voltha.Device{}
231 transactionID := &ic.StrType{}
232 fromTopic := &ic.StrType{}
233 for _, arg := range args {
234 switch arg.Key {
235 case "device":
236 if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000237 logger.Warnw(ctx, "cannot-unmarshal-device", log.Fields{"error": err})
Girish Gowdru894d97d2019-05-28 05:07:18 -0400238 return nil, err
239 }
240 case kafka.TransactionKey:
241 if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000242 logger.Warnw(ctx, "cannot-unmarshal-transaction-ID", log.Fields{"error": err})
Girish Gowdru894d97d2019-05-28 05:07:18 -0400243 return nil, err
244 }
245 case kafka.FromTopic:
246 if err := ptypes.UnmarshalAny(arg.Value, fromTopic); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000247 logger.Warnw(ctx, "cannot-unmarshal-from-topic", log.Fields{"error": err})
Girish Gowdru894d97d2019-05-28 05:07:18 -0400248 return nil, err
249 }
250 }
251 }
252 //Update the core reference for that device
253 rhp.coreProxy.UpdateCoreReference(device.Id, fromTopic.Val)
254 //Invoke the Reboot_device API on the adapter
Rohan Agrawal31f21802020-06-12 05:38:46 +0000255 if err := rhp.adapter.Reboot_device(ctx, device); err != nil {
Girish Gowdru894d97d2019-05-28 05:07:18 -0400256 return nil, status.Errorf(codes.NotFound, "%s", err.Error())
257 }
khenaidood2b6df92018-12-13 16:37:20 -0500258 return new(empty.Empty), nil
Girish Gowdru894d97d2019-05-28 05:07:18 -0400259
khenaidood2b6df92018-12-13 16:37:20 -0500260}
261
262func (rhp *RequestHandlerProxy) Self_test_device(args []*ic.Argument) (*empty.Empty, error) {
263 return new(empty.Empty), nil
264}
265
Rohan Agrawal31f21802020-06-12 05:38:46 +0000266func (rhp *RequestHandlerProxy) Delete_device(ctx context.Context, args []*ic.Argument) (*empty.Empty, error) {
khenaidoo0a822f92019-05-08 15:15:57 -0400267 if len(args) < 3 {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000268 logger.Warn(ctx, "invalid-number-of-args", log.Fields{"args": args})
khenaidoo0a822f92019-05-08 15:15:57 -0400269 err := errors.New("invalid-number-of-args")
270 return nil, err
271 }
272
273 device := &voltha.Device{}
274 transactionID := &ic.StrType{}
275 fromTopic := &ic.StrType{}
276 for _, arg := range args {
277 switch arg.Key {
278 case "device":
279 if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000280 logger.Warnw(ctx, "cannot-unmarshal-device", log.Fields{"error": err})
khenaidoo0a822f92019-05-08 15:15:57 -0400281 return nil, err
282 }
283 case kafka.TransactionKey:
284 if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000285 logger.Warnw(ctx, "cannot-unmarshal-transaction-ID", log.Fields{"error": err})
khenaidoo0a822f92019-05-08 15:15:57 -0400286 return nil, err
287 }
288 case kafka.FromTopic:
289 if err := ptypes.UnmarshalAny(arg.Value, fromTopic); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000290 logger.Warnw(ctx, "cannot-unmarshal-from-topic", log.Fields{"error": err})
khenaidoo0a822f92019-05-08 15:15:57 -0400291 return nil, err
292 }
293 }
294 }
295 //Update the core reference for that device
296 rhp.coreProxy.UpdateCoreReference(device.Id, fromTopic.Val)
khenaidoob3127472019-07-24 21:04:55 -0400297 //Invoke the delete_device API on the adapter
Rohan Agrawal31f21802020-06-12 05:38:46 +0000298 if err := rhp.adapter.Delete_device(ctx, device); err != nil {
khenaidoo0a822f92019-05-08 15:15:57 -0400299 return nil, status.Errorf(codes.NotFound, "%s", err.Error())
300 }
khenaidood2b6df92018-12-13 16:37:20 -0500301 return new(empty.Empty), nil
302}
303
304func (rhp *RequestHandlerProxy) Get_device_details(args []*ic.Argument) (*empty.Empty, error) {
305 return new(empty.Empty), nil
306}
307
Rohan Agrawal31f21802020-06-12 05:38:46 +0000308func (rhp *RequestHandlerProxy) Update_flows_bulk(ctx context.Context, args []*ic.Argument) (*empty.Empty, error) {
309 logger.Debug(ctx, "Update_flows_bulk")
Manikkaraj kb1a10922019-07-29 12:10:34 -0400310 if len(args) < 5 {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000311 logger.Warn(ctx, "Update_flows_bulk-invalid-number-of-args", log.Fields{"args": args})
khenaidoo0458db62019-06-20 08:50:36 -0400312 err := errors.New("invalid-number-of-args")
313 return nil, err
314 }
315 device := &voltha.Device{}
316 transactionID := &ic.StrType{}
317 flows := &voltha.Flows{}
Manikkaraj kb1a10922019-07-29 12:10:34 -0400318 flowMetadata := &voltha.FlowMetadata{}
khenaidoo0458db62019-06-20 08:50:36 -0400319 groups := &voltha.FlowGroups{}
320 for _, arg := range args {
321 switch arg.Key {
322 case "device":
323 if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000324 logger.Warnw(ctx, "cannot-unmarshal-device", log.Fields{"error": err})
khenaidoo0458db62019-06-20 08:50:36 -0400325 return nil, err
326 }
327 case "flows":
328 if err := ptypes.UnmarshalAny(arg.Value, flows); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000329 logger.Warnw(ctx, "cannot-unmarshal-flows", log.Fields{"error": err})
khenaidoo0458db62019-06-20 08:50:36 -0400330 return nil, err
331 }
332 case "groups":
333 if err := ptypes.UnmarshalAny(arg.Value, groups); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000334 logger.Warnw(ctx, "cannot-unmarshal-groups", log.Fields{"error": err})
khenaidoo0458db62019-06-20 08:50:36 -0400335 return nil, err
336 }
Manikkaraj kb1a10922019-07-29 12:10:34 -0400337 case "flow_metadata":
338 if err := ptypes.UnmarshalAny(arg.Value, flowMetadata); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000339 logger.Warnw(ctx, "cannot-unmarshal-metadata", log.Fields{"error": err})
Manikkaraj kb1a10922019-07-29 12:10:34 -0400340 return nil, err
341 }
khenaidoo0458db62019-06-20 08:50:36 -0400342 case kafka.TransactionKey:
343 if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000344 logger.Warnw(ctx, "cannot-unmarshal-transaction-ID", log.Fields{"error": err})
khenaidoo0458db62019-06-20 08:50:36 -0400345 return nil, err
346 }
347 }
348 }
Rohan Agrawal31f21802020-06-12 05:38:46 +0000349 logger.Debugw(ctx, "Update_flows_bulk", log.Fields{"flows": flows, "groups": groups})
khenaidoob3127472019-07-24 21:04:55 -0400350 //Invoke the bulk flow update API of the adapter
Rohan Agrawal31f21802020-06-12 05:38:46 +0000351 if err := rhp.adapter.Update_flows_bulk(ctx, device, flows, groups, flowMetadata); err != nil {
khenaidoo0458db62019-06-20 08:50:36 -0400352 return nil, status.Errorf(codes.NotFound, "%s", err.Error())
353 }
khenaidood2b6df92018-12-13 16:37:20 -0500354 return new(empty.Empty), nil
355}
356
Rohan Agrawal31f21802020-06-12 05:38:46 +0000357func (rhp *RequestHandlerProxy) Update_flows_incrementally(ctx context.Context, args []*ic.Argument) (*empty.Empty, error) {
358 logger.Debug(ctx, "Update_flows_incrementally")
Manikkaraj kb1a10922019-07-29 12:10:34 -0400359 if len(args) < 5 {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000360 logger.Warn(ctx, "Update_flows_incrementally-invalid-number-of-args", log.Fields{"args": args})
mkoodali252f7672019-03-25 12:13:12 +0530361 err := errors.New("invalid-number-of-args")
362 return nil, err
363 }
364 device := &voltha.Device{}
365 transactionID := &ic.StrType{}
khenaidoo2c6a0992019-04-29 13:46:56 -0400366 flows := &openflow_13.FlowChanges{}
Manikkaraj kb1a10922019-07-29 12:10:34 -0400367 flowMetadata := &voltha.FlowMetadata{}
khenaidoo2c6a0992019-04-29 13:46:56 -0400368 groups := &openflow_13.FlowGroupChanges{}
mkoodali252f7672019-03-25 12:13:12 +0530369 for _, arg := range args {
370 switch arg.Key {
371 case "device":
372 if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000373 logger.Warnw(ctx, "cannot-unmarshal-device", log.Fields{"error": err})
mkoodali252f7672019-03-25 12:13:12 +0530374 return nil, err
375 }
376 case "flow_changes":
377 if err := ptypes.UnmarshalAny(arg.Value, flows); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000378 logger.Warnw(ctx, "cannot-unmarshal-flows", log.Fields{"error": err})
mkoodali252f7672019-03-25 12:13:12 +0530379 return nil, err
380 }
381 case "group_changes":
382 if err := ptypes.UnmarshalAny(arg.Value, groups); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000383 logger.Warnw(ctx, "cannot-unmarshal-groups", log.Fields{"error": err})
mkoodali252f7672019-03-25 12:13:12 +0530384 return nil, err
385 }
Manikkaraj kb1a10922019-07-29 12:10:34 -0400386 case "flow_metadata":
387 if err := ptypes.UnmarshalAny(arg.Value, flowMetadata); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000388 logger.Warnw(ctx, "cannot-unmarshal-metadata", log.Fields{"error": err})
Manikkaraj kb1a10922019-07-29 12:10:34 -0400389 return nil, err
390 }
mkoodali252f7672019-03-25 12:13:12 +0530391 case kafka.TransactionKey:
392 if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000393 logger.Warnw(ctx, "cannot-unmarshal-transaction-ID", log.Fields{"error": err})
mkoodali252f7672019-03-25 12:13:12 +0530394 return nil, err
395 }
396 }
397 }
Rohan Agrawal31f21802020-06-12 05:38:46 +0000398 logger.Debugw(ctx, "Update_flows_incrementally", log.Fields{"flows": flows, "groups": groups})
khenaidoob3127472019-07-24 21:04:55 -0400399 //Invoke the incremental flow update API of the adapter
Rohan Agrawal31f21802020-06-12 05:38:46 +0000400 if err := rhp.adapter.Update_flows_incrementally(ctx, device, flows, groups, flowMetadata); err != nil {
khenaidoo2c6a0992019-04-29 13:46:56 -0400401 return nil, status.Errorf(codes.NotFound, "%s", err.Error())
402 }
khenaidood2b6df92018-12-13 16:37:20 -0500403 return new(empty.Empty), nil
404}
405
Rohan Agrawal31f21802020-06-12 05:38:46 +0000406func (rhp *RequestHandlerProxy) Update_pm_config(ctx context.Context, args []*ic.Argument) (*empty.Empty, error) {
407 logger.Debug(ctx, "Update_pm_config")
khenaidoob3127472019-07-24 21:04:55 -0400408 if len(args) < 2 {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000409 logger.Warn(ctx, "Update_pm_config-invalid-number-of-args", log.Fields{"args": args})
khenaidoob3127472019-07-24 21:04:55 -0400410 err := errors.New("invalid-number-of-args")
411 return nil, err
412 }
413 device := &voltha.Device{}
414 transactionID := &ic.StrType{}
415 pmConfigs := &voltha.PmConfigs{}
416 for _, arg := range args {
417 switch arg.Key {
418 case "device":
419 if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000420 logger.Warnw(ctx, "cannot-unmarshal-device", log.Fields{"error": err})
khenaidoob3127472019-07-24 21:04:55 -0400421 return nil, err
422 }
423 case "pm_configs":
424 if err := ptypes.UnmarshalAny(arg.Value, pmConfigs); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000425 logger.Warnw(ctx, "cannot-unmarshal-pm-configs", log.Fields{"error": err})
khenaidoob3127472019-07-24 21:04:55 -0400426 return nil, err
427 }
428 case kafka.TransactionKey:
429 if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000430 logger.Warnw(ctx, "cannot-unmarshal-transaction-ID", log.Fields{"error": err})
khenaidoob3127472019-07-24 21:04:55 -0400431 return nil, err
432 }
433 }
434 }
Girish Gowdra5abbc0c2020-09-16 13:21:10 -0700435 logger.Debugw(ctx, "Update_pm_config", log.Fields{"device-id": device.Id, "pmConfigs": pmConfigs})
khenaidoob3127472019-07-24 21:04:55 -0400436 //Invoke the pm config update API of the adapter
Rohan Agrawal31f21802020-06-12 05:38:46 +0000437 if err := rhp.adapter.Update_pm_config(ctx, device, pmConfigs); err != nil {
khenaidoob3127472019-07-24 21:04:55 -0400438 return nil, status.Errorf(codes.NotFound, "%s", err.Error())
439 }
khenaidood2b6df92018-12-13 16:37:20 -0500440 return new(empty.Empty), nil
441}
442
Rohan Agrawal31f21802020-06-12 05:38:46 +0000443func (rhp *RequestHandlerProxy) Receive_packet_out(ctx context.Context, args []*ic.Argument) (*empty.Empty, error) {
444 logger.Debugw(ctx, "Receive_packet_out", log.Fields{"args": args})
manikkaraj k6c9689d2019-05-09 12:59:52 -0400445 if len(args) < 3 {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000446 logger.Warn(ctx, "Receive_packet_out-invalid-number-of-args", log.Fields{"args": args})
manikkaraj k6c9689d2019-05-09 12:59:52 -0400447 err := errors.New("invalid-number-of-args")
448 return nil, err
449 }
450 deviceId := &ic.StrType{}
451 egressPort := &ic.IntType{}
452 packet := &openflow_13.OfpPacketOut{}
453 transactionID := &ic.StrType{}
454 for _, arg := range args {
455 switch arg.Key {
456 case "deviceId":
457 if err := ptypes.UnmarshalAny(arg.Value, deviceId); err != nil {
Girish Gowdra5abbc0c2020-09-16 13:21:10 -0700458 logger.Warnw(ctx, "cannot-unmarshal-device-id", log.Fields{"error": err})
manikkaraj k6c9689d2019-05-09 12:59:52 -0400459 return nil, err
460 }
461 case "outPort":
462 if err := ptypes.UnmarshalAny(arg.Value, egressPort); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000463 logger.Warnw(ctx, "cannot-unmarshal-egressPort", log.Fields{"error": err})
manikkaraj k6c9689d2019-05-09 12:59:52 -0400464 return nil, err
465 }
466 case "packet":
467 if err := ptypes.UnmarshalAny(arg.Value, packet); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000468 logger.Warnw(ctx, "cannot-unmarshal-packet", log.Fields{"error": err})
manikkaraj k6c9689d2019-05-09 12:59:52 -0400469 return nil, err
470 }
471 case kafka.TransactionKey:
472 if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000473 logger.Warnw(ctx, "cannot-unmarshal-transaction-ID", log.Fields{"error": err})
manikkaraj k6c9689d2019-05-09 12:59:52 -0400474 return nil, err
475 }
476 }
477 }
Girish Gowdra5abbc0c2020-09-16 13:21:10 -0700478 logger.Debugw(ctx, "Receive_packet_out", log.Fields{"device-id": deviceId.Val, "outPort": egressPort, "packet": packet})
manikkaraj k6c9689d2019-05-09 12:59:52 -0400479 //Invoke the adopt device on the adapter
Rohan Agrawal31f21802020-06-12 05:38:46 +0000480 if err := rhp.adapter.Receive_packet_out(ctx, deviceId.Val, int(egressPort.Val), packet); err != nil {
manikkaraj k6c9689d2019-05-09 12:59:52 -0400481 return nil, status.Errorf(codes.NotFound, "%s", err.Error())
482 }
khenaidood2b6df92018-12-13 16:37:20 -0500483 return new(empty.Empty), nil
484}
485
486func (rhp *RequestHandlerProxy) Suppress_alarm(args []*ic.Argument) (*empty.Empty, error) {
487 return new(empty.Empty), nil
488}
489
490func (rhp *RequestHandlerProxy) Unsuppress_alarm(args []*ic.Argument) (*empty.Empty, error) {
491 return new(empty.Empty), nil
492}
493
Rohan Agrawal31f21802020-06-12 05:38:46 +0000494func (rhp *RequestHandlerProxy) Get_ofp_device_info(ctx context.Context, args []*ic.Argument) (*ic.SwitchCapability, error) {
khenaidoo54e0ddf2019-02-27 16:21:33 -0500495 if len(args) < 2 {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000496 logger.Warn(ctx, "invalid-number-of-args", log.Fields{"args": args})
khenaidood2b6df92018-12-13 16:37:20 -0500497 err := errors.New("invalid-number-of-args")
498 return nil, err
499 }
500 device := &voltha.Device{}
khenaidoo6d055132019-02-12 16:51:19 -0500501 transactionID := &ic.StrType{}
502 for _, arg := range args {
503 switch arg.Key {
504 case "device":
505 if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000506 logger.Warnw(ctx, "cannot-unmarshal-device", log.Fields{"error": err})
khenaidoo6d055132019-02-12 16:51:19 -0500507 return nil, err
508 }
509 case kafka.TransactionKey:
510 if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000511 logger.Warnw(ctx, "cannot-unmarshal-transaction-ID", log.Fields{"error": err})
khenaidoo6d055132019-02-12 16:51:19 -0500512 return nil, err
513 }
514 }
khenaidood2b6df92018-12-13 16:37:20 -0500515 }
khenaidoo6d055132019-02-12 16:51:19 -0500516
Girish Gowdra5abbc0c2020-09-16 13:21:10 -0700517 logger.Debugw(ctx, "Get_ofp_device_info", log.Fields{"device-id": device.Id})
khenaidood2b6df92018-12-13 16:37:20 -0500518
519 var cap *ic.SwitchCapability
520 var err error
Rohan Agrawal31f21802020-06-12 05:38:46 +0000521 if cap, err = rhp.adapter.Get_ofp_device_info(ctx, device); err != nil {
khenaidood2b6df92018-12-13 16:37:20 -0500522 return nil, status.Errorf(codes.NotFound, "%s", err.Error())
523 }
Rohan Agrawal31f21802020-06-12 05:38:46 +0000524 logger.Debugw(ctx, "Get_ofp_device_info", log.Fields{"cap": cap})
khenaidood2b6df92018-12-13 16:37:20 -0500525 return cap, nil
526}
527
Rohan Agrawal31f21802020-06-12 05:38:46 +0000528func (rhp *RequestHandlerProxy) Process_inter_adapter_message(ctx context.Context, args []*ic.Argument) (*empty.Empty, error) {
khenaidoo54e0ddf2019-02-27 16:21:33 -0500529 if len(args) < 2 {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000530 logger.Warn(ctx, "invalid-number-of-args", log.Fields{"args": args})
khenaidood2b6df92018-12-13 16:37:20 -0500531 err := errors.New("invalid-number-of-args")
532 return nil, err
533 }
534 iaMsg := &ic.InterAdapterMessage{}
khenaidoo6d055132019-02-12 16:51:19 -0500535 transactionID := &ic.StrType{}
536 for _, arg := range args {
537 switch arg.Key {
538 case "msg":
539 if err := ptypes.UnmarshalAny(arg.Value, iaMsg); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000540 logger.Warnw(ctx, "cannot-unmarshal-device", log.Fields{"error": err})
khenaidoo6d055132019-02-12 16:51:19 -0500541 return nil, err
542 }
543 case kafka.TransactionKey:
544 if err := ptypes.UnmarshalAny(arg.Value, transactionID); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000545 logger.Warnw(ctx, "cannot-unmarshal-transaction-ID", log.Fields{"error": err})
khenaidoo6d055132019-02-12 16:51:19 -0500546 return nil, err
547 }
548 }
khenaidood2b6df92018-12-13 16:37:20 -0500549 }
550
Rohan Agrawal31f21802020-06-12 05:38:46 +0000551 logger.Debugw(ctx, "Process_inter_adapter_message", log.Fields{"msgId": iaMsg.Header.Id})
khenaidood2b6df92018-12-13 16:37:20 -0500552
553 //Invoke the inter adapter API on the handler
Rohan Agrawal31f21802020-06-12 05:38:46 +0000554 if err := rhp.adapter.Process_inter_adapter_message(ctx, iaMsg); err != nil {
khenaidood2b6df92018-12-13 16:37:20 -0500555 return nil, status.Errorf(codes.NotFound, "%s", err.Error())
556 }
557
558 return new(empty.Empty), nil
559}
560
khenaidoof5a5bfa2019-01-23 22:20:29 -0500561func (rhp *RequestHandlerProxy) Download_image(args []*ic.Argument) (*voltha.ImageDownload, error) {
562 return &voltha.ImageDownload{}, nil
khenaidood2b6df92018-12-13 16:37:20 -0500563}
564
khenaidoof5a5bfa2019-01-23 22:20:29 -0500565func (rhp *RequestHandlerProxy) Get_image_download_status(args []*ic.Argument) (*voltha.ImageDownload, error) {
566 return &voltha.ImageDownload{}, nil
khenaidood2b6df92018-12-13 16:37:20 -0500567}
568
khenaidoof5a5bfa2019-01-23 22:20:29 -0500569func (rhp *RequestHandlerProxy) Cancel_image_download(args []*ic.Argument) (*voltha.ImageDownload, error) {
570 return &voltha.ImageDownload{}, nil
khenaidood2b6df92018-12-13 16:37:20 -0500571}
572
khenaidoof5a5bfa2019-01-23 22:20:29 -0500573func (rhp *RequestHandlerProxy) Activate_image_update(args []*ic.Argument) (*voltha.ImageDownload, error) {
574 return &voltha.ImageDownload{}, nil
khenaidood2b6df92018-12-13 16:37:20 -0500575}
576
khenaidoof5a5bfa2019-01-23 22:20:29 -0500577func (rhp *RequestHandlerProxy) Revert_image_update(args []*ic.Argument) (*voltha.ImageDownload, error) {
578 return &voltha.ImageDownload{}, nil
khenaidood2b6df92018-12-13 16:37:20 -0500579}
kesavandbc2d1622020-01-21 00:42:01 -0500580
Rohan Agrawal31f21802020-06-12 05:38:46 +0000581func (rhp *RequestHandlerProxy) Enable_port(ctx context.Context, args []*ic.Argument) error {
582 logger.Debugw(ctx, "enable_port", log.Fields{"args": args})
583 deviceId, port, err := rhp.getEnableDisableParams(ctx, args)
kesavandbc2d1622020-01-21 00:42:01 -0500584 if err != nil {
Girish Gowdra5abbc0c2020-09-16 13:21:10 -0700585 logger.Warnw(ctx, "enable_port", log.Fields{"args": args, "device-id": deviceId, "port": port})
kesavandbc2d1622020-01-21 00:42:01 -0500586 return err
587 }
Rohan Agrawal31f21802020-06-12 05:38:46 +0000588 return rhp.adapter.Enable_port(ctx, deviceId, port)
kesavandbc2d1622020-01-21 00:42:01 -0500589}
590
Rohan Agrawal31f21802020-06-12 05:38:46 +0000591func (rhp *RequestHandlerProxy) Disable_port(ctx context.Context, args []*ic.Argument) error {
592 logger.Debugw(ctx, "disable_port", log.Fields{"args": args})
593 deviceId, port, err := rhp.getEnableDisableParams(ctx, args)
kesavandbc2d1622020-01-21 00:42:01 -0500594 if err != nil {
Girish Gowdra5abbc0c2020-09-16 13:21:10 -0700595 logger.Warnw(ctx, "disable_port", log.Fields{"args": args, "device-id": deviceId, "port": port})
kesavandbc2d1622020-01-21 00:42:01 -0500596 return err
597 }
Rohan Agrawal31f21802020-06-12 05:38:46 +0000598 return rhp.adapter.Disable_port(ctx, deviceId, port)
kesavandbc2d1622020-01-21 00:42:01 -0500599}
600
Rohan Agrawal31f21802020-06-12 05:38:46 +0000601func (rhp *RequestHandlerProxy) getEnableDisableParams(ctx context.Context, args []*ic.Argument) (string, *voltha.Port, error) {
602 logger.Debugw(ctx, "getEnableDisableParams", log.Fields{"args": args})
kesavandbc2d1622020-01-21 00:42:01 -0500603 if len(args) < 3 {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000604 logger.Warn(ctx, "invalid-number-of-args", log.Fields{"args": args})
kesavandbc2d1622020-01-21 00:42:01 -0500605 return "", nil, errors.New("invalid-number-of-args")
606 }
607 deviceId := &ic.StrType{}
608 port := &voltha.Port{}
609 for _, arg := range args {
610 switch arg.Key {
611 case "deviceId":
612 if err := ptypes.UnmarshalAny(arg.Value, deviceId); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000613 logger.Warnw(ctx, "cannot-unmarshal-device", log.Fields{"error": err})
kesavandbc2d1622020-01-21 00:42:01 -0500614 return "", nil, err
615 }
616 case "port":
617 if err := ptypes.UnmarshalAny(arg.Value, port); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000618 logger.Warnw(ctx, "cannot-unmarshal-port", log.Fields{"error": err})
kesavandbc2d1622020-01-21 00:42:01 -0500619 return "", nil, err
620 }
621 }
622 }
623 return deviceId.Val, port, nil
624}
Scott Baker0e78ba22020-02-24 17:58:47 -0800625
Rohan Agrawal31f21802020-06-12 05:38:46 +0000626func (rhp *RequestHandlerProxy) Child_device_lost(ctx context.Context, args []*ic.Argument) error {
Scott Baker0e78ba22020-02-24 17:58:47 -0800627 if len(args) < 4 {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000628 logger.Warn(ctx, "invalid-number-of-args", log.Fields{"args": args})
Scott Baker0e78ba22020-02-24 17:58:47 -0800629 return errors.New("invalid-number-of-args")
630 }
631
632 pDeviceId := &ic.StrType{}
633 pPortNo := &ic.IntType{}
634 onuID := &ic.IntType{}
635 fromTopic := &ic.StrType{}
636 for _, arg := range args {
637 switch arg.Key {
638 case "pDeviceId":
639 if err := ptypes.UnmarshalAny(arg.Value, pDeviceId); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000640 logger.Warnw(ctx, "cannot-unmarshal-parent-deviceId", log.Fields{"error": err})
Scott Baker0e78ba22020-02-24 17:58:47 -0800641 return err
642 }
643 case "pPortNo":
644 if err := ptypes.UnmarshalAny(arg.Value, pPortNo); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000645 logger.Warnw(ctx, "cannot-unmarshal-port", log.Fields{"error": err})
Scott Baker0e78ba22020-02-24 17:58:47 -0800646 return err
647 }
648 case "onuID":
649 if err := ptypes.UnmarshalAny(arg.Value, onuID); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000650 logger.Warnw(ctx, "cannot-unmarshal-transaction-ID", log.Fields{"error": err})
Scott Baker0e78ba22020-02-24 17:58:47 -0800651 return err
652 }
653 case kafka.FromTopic:
654 if err := ptypes.UnmarshalAny(arg.Value, fromTopic); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000655 logger.Warnw(ctx, "cannot-unmarshal-from-topic", log.Fields{"error": err})
Scott Baker0e78ba22020-02-24 17:58:47 -0800656 return err
657 }
658 }
659 }
660 //Update the core reference for that device
661 rhp.coreProxy.UpdateCoreReference(pDeviceId.Val, fromTopic.Val)
662 //Invoke the Child_device_lost API on the adapter
Rohan Agrawal31f21802020-06-12 05:38:46 +0000663 if err := rhp.adapter.Child_device_lost(ctx, pDeviceId.Val, uint32(pPortNo.Val), uint32(onuID.Val)); err != nil {
Scott Baker0e78ba22020-02-24 17:58:47 -0800664 return status.Errorf(codes.NotFound, "%s", err.Error())
665 }
666 return nil
667}
Scott Baker432f9be2020-03-26 11:56:30 -0700668
Rohan Agrawal31f21802020-06-12 05:38:46 +0000669func (rhp *RequestHandlerProxy) Start_omci_test(ctx context.Context, args []*ic.Argument) (*ic.TestResponse, error) {
Scott Baker432f9be2020-03-26 11:56:30 -0700670 if len(args) < 2 {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000671 logger.Warn(ctx, "invalid-number-of-args", log.Fields{"args": args})
Scott Baker432f9be2020-03-26 11:56:30 -0700672 err := errors.New("invalid-number-of-args")
673 return nil, err
674 }
675
676 // TODO: See related comment in voltha-go:adapter_proxy_go:startOmciTest()
677 // Second argument should perhaps be uuid instead of omcitestrequest
678
679 device := &voltha.Device{}
680 request := &voltha.OmciTestRequest{}
681 for _, arg := range args {
682 switch arg.Key {
683 case "device":
684 if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000685 logger.Warnw(ctx, "cannot-unmarshal-device", log.Fields{"error": err})
Scott Baker432f9be2020-03-26 11:56:30 -0700686 return nil, err
687 }
688 case "omcitestrequest":
689 if err := ptypes.UnmarshalAny(arg.Value, request); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000690 logger.Warnw(ctx, "cannot-unmarshal-omcitestrequest", log.Fields{"error": err})
Scott Baker432f9be2020-03-26 11:56:30 -0700691 return nil, err
692 }
693 }
694 }
Rohan Agrawal31f21802020-06-12 05:38:46 +0000695 logger.Debugw(ctx, "Start_omci_test", log.Fields{"device-id": device.Id, "req": request})
696 result, err := rhp.adapter.Start_omci_test(ctx, device, request)
Scott Baker432f9be2020-03-26 11:56:30 -0700697 if err != nil {
698 return nil, status.Errorf(codes.NotFound, "%s", err.Error())
699 }
700 return result, nil
701}
Rohan Agrawal31f21802020-06-12 05:38:46 +0000702func (rhp *RequestHandlerProxy) Get_ext_value(ctx context.Context, args []*ic.Argument) (*voltha.ReturnValues, error) {
Dinesh Belwalkarc1129f12020-02-27 10:41:33 -0800703 if len(args) < 3 {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000704 logger.Warn(ctx, "invalid-number-of-args", log.Fields{"args": args})
Dinesh Belwalkarc1129f12020-02-27 10:41:33 -0800705 return nil, errors.New("invalid-number-of-args")
706 }
707
708 pDeviceId := &ic.StrType{}
709 device := &voltha.Device{}
710 valuetype := &ic.IntType{}
711 for _, arg := range args {
712 switch arg.Key {
713 case "device":
714 if err := ptypes.UnmarshalAny(arg.Value, device); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000715 logger.Warnw(ctx, "cannot-unmarshal-device", log.Fields{"error": err})
Dinesh Belwalkarc1129f12020-02-27 10:41:33 -0800716 return nil, err
717 }
718 case "pDeviceId":
719 if err := ptypes.UnmarshalAny(arg.Value, pDeviceId); err != nil {
Girish Gowdra5abbc0c2020-09-16 13:21:10 -0700720 logger.Warnw(ctx, "cannot-unmarshal-parent-device-id", log.Fields{"error": err})
Dinesh Belwalkarc1129f12020-02-27 10:41:33 -0800721 return nil, err
722 }
723 case "valuetype":
724 if err := ptypes.UnmarshalAny(arg.Value, valuetype); err != nil {
Rohan Agrawal31f21802020-06-12 05:38:46 +0000725 logger.Warnw(ctx, "cannot-unmarshal-valuetype", log.Fields{"error": err})
Dinesh Belwalkarc1129f12020-02-27 10:41:33 -0800726 return nil, err
727 }
728 default:
Rohan Agrawal31f21802020-06-12 05:38:46 +0000729 logger.Warnw(ctx, "key-not-found", log.Fields{"arg.Key": arg.Key})
Dinesh Belwalkarc1129f12020-02-27 10:41:33 -0800730 }
731 }
732
733 //Invoke the Get_value API on the adapter
Rohan Agrawal31f21802020-06-12 05:38:46 +0000734 return rhp.adapter.Get_ext_value(ctx, pDeviceId.Val, device, voltha.ValueType_Type(valuetype.Val))
Dinesh Belwalkarc1129f12020-02-27 10:41:33 -0800735}