Skip to content

Commit a7f0fb9

Browse files
Implement translib backend logic for the gNSI Pathz
Signed-off-by: niranjanivivek <niranjaniv@google.com>
1 parent 71b3577 commit a7f0fb9

File tree

5 files changed

+597
-5
lines changed

5 files changed

+597
-5
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
module openconfig-system-annot {
2+
3+
yang-version "1";
4+
5+
namespace "http://openconfig.net/yang/openconfig-system-annot";
6+
prefix "oc-sys-annot";
7+
8+
import openconfig-system { prefix oc-sys; }
9+
import openconfig-yang-types { prefix oc-yang; }
10+
import openconfig-system { prefix oc-sys; }
11+
import gnsi-credentialz { prefix gnsi-credz; }
12+
import gnsi-pathz { prefix gnsi-pathz; }
13+
import sonic-extensions {prefix sonic-ext; }
14+
import openconfig-system-grpc { prefix oc-sys-grpc; }
15+
16+
deviation /oc-sys:system/oc-sys-grpc:grpc-servers {
17+
deviate add {
18+
sonic-ext:key-transformer "grpc_server_key_xfmr";
19+
sonic-ext:subtree-transformer "grpc_server_xfmr";
20+
}
21+
}
22+
23+
deviation /oc-sys:system/gnsi-pathz:gnmi-pathz-policies {
24+
deviate add {
25+
sonic-ext:key-transformer "pathz_policies_key_xfmr";
26+
sonic-ext:subtree-transformer "pathz_policies_xfmr";
27+
}
28+
}
29+
}

translib/tlerr/tlerr.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ package tlerr
3131

3232
import (
3333
// "fmt"
34+
"errors"
3435
"github.com/Azure/sonic-mgmt-common/cvl"
36+
"github.com/golang/glog"
3537
"golang.org/x/text/language"
3638
"golang.org/x/text/message"
3739
// "errors"
@@ -190,3 +192,32 @@ type TranslibBusy struct {
190192
func (e TranslibBusy) Error() string {
191193
return p.Sprintf("Translib Busy")
192194
}
195+
196+
func IsTranslibRedisClientEntryNotExist(err error) bool {
197+
switch err.(type) {
198+
case *TranslibRedisClientEntryNotExist, TranslibRedisClientEntryNotExist:
199+
return true
200+
}
201+
return false
202+
}
203+
204+
// isDBEntryNotExistError returns `true` if `err` is (or wraps around) an error
205+
// of type `TranslibRedisClientEntryNotExist`.
206+
func isDBEntryNotExistError(err error) bool {
207+
if IsTranslibRedisClientEntryNotExist(err) {
208+
return true
209+
}
210+
pdberr := &TranslibRedisClientEntryNotExist{}
211+
return errors.As(err, &TranslibRedisClientEntryNotExist{}) || errors.As(err, &pdberr)
212+
}
213+
214+
// ErrorSeverity based on `err` calculates the VLOG level.
215+
func ErrorSeverity(err error) glog.Level {
216+
if err == nil {
217+
return 3
218+
}
219+
if isDBEntryNotExistError(err) {
220+
return 3
221+
}
222+
return 0
223+
}

translib/transformer/subscribe_req_xlate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,7 @@ func (pathXltr *subscribePathXlator) handleSubtreeNodeXlate() error {
478478
log.Info(pathXltr.subReq.reqLogId, "handleSubtreeNodeXlate: handleSubtreeNodeXlate: uriSubtree: ", uriSubtree)
479479
}
480480

481-
subInParam := XfmrSubscInParams{uriSubtree, pathXltr.subReq.dbs, make(RedisDbMap), TRANSLATE_SUBSCRIBE}
481+
subInParam := XfmrSubscInParams{uri: uriSubtree, requestURI: pathXltr.subReq.reqUri, dbs: pathXltr.subReq.dbs, dbDataMap: make(RedisDbMap), subscProc: TRANSLATE_SUBSCRIBE}
482482
subOutPram, subErr := xfmrSubscSubtreeHandler(subInParam, ygXpathInfo.xfmrFunc)
483483

484484
if log.V(dbLgLvl) {

translib/transformer/xfmr_interface.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,11 @@ type notificationOpts struct {
7676

7777
// XfmrSubscInParams represents input to subscribe subtree callbacks - request uri, DBs info access-pointers, DB info for request uri and subscription process type from translib.
7878
type XfmrSubscInParams struct {
79-
uri string
80-
dbs [db.MaxDB]*db.DB
81-
dbDataMap RedisDbMap
82-
subscProc SubscProcType
79+
uri string
80+
requestURI string
81+
dbs [db.MaxDB]*db.DB
82+
dbDataMap RedisDbMap
83+
subscProc SubscProcType
8384
}
8485

8586
// XfmrSubscOutParams represents output from subscribe subtree callback - DB data for request uri, Need cache, OnChange, subscription preference and interval.

0 commit comments

Comments
 (0)