Skip to content

Commit 045cbf9

Browse files
committed
changed the xSpecMap to xYangSpecMap for code clarity and added new file with transformer-constants
1 parent b7f5146 commit 045cbf9

File tree

6 files changed

+133
-101
lines changed

6 files changed

+133
-101
lines changed

src/translib/transformer/xconst.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package transformer
2+
3+
const (
4+
YANG_MODULE = "module"
5+
YANG_LIST = "list"
6+
YANG_CONTAINER = "container"
7+
YANG_LEAF = "leaf"
8+
YANG_LEAF_LIST = "leaflist"
9+
10+
YANG_ANNOT_DB_NAME = "redis-db-name"
11+
YANG_ANNOT_TABLE_NAME = "table-name"
12+
YANG_ANNOT_FIELD_NAME = "field-name"
13+
YANG_ANNOT_KEY_DELIM = "key-delimiter"
14+
YANG_ANNOT_TABLE_XFMR = "table-transformer"
15+
YANG_ANNOT_FIELD_XFMR = "field-transformer"
16+
YANG_ANNOT_KEY_XFMR = "key-transformer"
17+
YANG_ANNOT_POST_XFMR = "post-transformer"
18+
YANG_ANNOT_SUBTREE_XFMR = "subtree-transformer"
19+
YANG_ANNOT_VALIDATE_FUNC = "get-validate"
20+
21+
REDIS_DB_TYPE_APPLN = "APPL_DB"
22+
REDIS_DB_TYPE_ASIC = "ASIC_DB"
23+
REDIS_DB_TYPE_CONFIG = "CONFIG_DB"
24+
REDIS_DB_TYPE_COUNTER = "COUNTERS_DB"
25+
REDIS_DB_TYPE_LOG_LVL = "LOGLEVEL_DB"
26+
REDIS_DB_TYPE_STATE = "STATE_DB"
27+
REDIS_DB_TYPE_FLX_COUNTER = "FLEX_COUNTER_DB"
28+
29+
XPATH_SEP_FWD_SLASH = "/"
30+
XFMR_EMPTY_STRING = ""
31+
)

src/translib/transformer/xlate.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,12 +128,12 @@ func XlateUriToKeySpec(uri string, ygRoot *ygot.GoStruct, t *interface{}) (*[]Ke
128128
}
129129

130130
func FillKeySpecs(yangXpath string , keyStr string, retdbFormat *[]KeySpec) ([]KeySpec){
131-
if xSpecMap == nil {
131+
if xYangSpecMap == nil {
132132
return *retdbFormat
133133
}
134-
_, ok := xSpecMap[yangXpath]
134+
_, ok := xYangSpecMap[yangXpath]
135135
if ok {
136-
xpathInfo := xSpecMap[yangXpath]
136+
xpathInfo := xYangSpecMap[yangXpath]
137137
if xpathInfo.tableName != nil {
138138
dbFormat := KeySpec{}
139139
dbFormat.Ts.Name = *xpathInfo.tableName
@@ -303,7 +303,7 @@ func XlateFromDb(uri string, ygRoot *ygot.GoStruct, dbs [db.MaxDB]*db.DB, data m
303303
}
304304
} else {
305305
xpath, _ := RemoveXPATHPredicates(uri)
306-
cdb = xSpecMap[xpath].dbIndex
306+
cdb = xYangSpecMap[xpath].dbIndex
307307
}
308308
payload, err := dbDataToYangJsonCreate(uri, ygRoot, dbs, &dbData, cdb)
309309
log.Info("Payload generated:", payload)

src/translib/transformer/xlate_from_db.go

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ type typeMapOfInterface map[string]interface{}
2121
func xfmrHandlerFunc(inParams XfmrParams) (map[string]interface{}, error) {
2222
result := make(map[string]interface{})
2323
xpath, _ := RemoveXPATHPredicates(inParams.uri)
24-
log.Infof("Subtree transformer function(\"%v\") invoked for yang path(\"%v\").", xSpecMap[xpath].xfmrFunc, xpath)
25-
_, err := XlateFuncCall(dbToYangXfmrFunc(xSpecMap[xpath].xfmrFunc), inParams)
24+
log.Infof("Subtree transformer function(\"%v\") invoked for yang path(\"%v\").", xYangSpecMap[xpath].xfmrFunc, xpath)
25+
_, err := XlateFuncCall(dbToYangXfmrFunc(xYangSpecMap[xpath].xfmrFunc), inParams)
2626
if err != nil {
2727
log.Infof("Failed to retrieve data for xpath(\"%v\") err(%v).", inParams.uri, err)
2828
return result, err
@@ -61,7 +61,7 @@ func xfmrHandlerFunc(inParams XfmrParams) (map[string]interface{}, error) {
6161

6262
func leafXfmrHandlerFunc(inParams XfmrParams) (map[string]interface{}, error) {
6363
xpath, _ := RemoveXPATHPredicates(inParams.uri)
64-
ret, err := XlateFuncCall(dbToYangXfmrFunc(xSpecMap[xpath].xfmrFunc), inParams)
64+
ret, err := XlateFuncCall(dbToYangXfmrFunc(xYangSpecMap[xpath].xfmrFunc), inParams)
6565
if err != nil {
6666
return nil, err
6767
}
@@ -71,7 +71,7 @@ func leafXfmrHandlerFunc(inParams XfmrParams) (map[string]interface{}, error) {
7171

7272
func validateHandlerFunc(inParams XfmrParams) (bool) {
7373
xpath, _ := RemoveXPATHPredicates(inParams.uri)
74-
ret, err := XlateFuncCall(xSpecMap[xpath].validateFunc, inParams)
74+
ret, err := XlateFuncCall(xYangSpecMap[xpath].validateFunc, inParams)
7575
if err != nil {
7676
return false
7777
}
@@ -272,8 +272,8 @@ func yangListDataFill(dbs [db.MaxDB]*db.DB, ygRoot *ygot.GoStruct, uri string, x
272272
var tblList []string
273273
tblXfmr := false
274274

275-
if tbl == "" && xSpecMap[xpath].xfmrTbl != nil {
276-
xfmrTblFunc := *xSpecMap[xpath].xfmrTbl
275+
if tbl == "" && xYangSpecMap[xpath].xfmrTbl != nil {
276+
xfmrTblFunc := *xYangSpecMap[xpath].xfmrTbl
277277
if len(xfmrTblFunc) > 0 {
278278
tblXfmr = true
279279
inParams := formXfmrInputRequest(dbs[cdb], dbs, cdb, ygRoot, uri, GET, "", dbDataMap, nil)
@@ -296,7 +296,7 @@ func yangListDataFill(dbs [db.MaxDB]*db.DB, ygRoot *ygot.GoStruct, uri string, x
296296
for dbKey, _ := range tblData {
297297
curMap := make(map[string]interface{})
298298
curKeyMap, curUri, _ := dbKeyToYangDataConvert(uri, xpath, dbKey)
299-
if len(xSpecMap[xpath].xfmrFunc) > 0 {
299+
if len(xYangSpecMap[xpath].xfmrFunc) > 0 {
300300
inParams := formXfmrInputRequest(dbs[cdb], dbs, cdb, ygRoot, curUri, GET, "", dbDataMap, nil)
301301
cmap, _ := xfmrHandlerFunc(inParams)
302302
if len(cmap) > 0 {
@@ -317,7 +317,7 @@ func yangListDataFill(dbs [db.MaxDB]*db.DB, ygRoot *ygot.GoStruct, uri string, x
317317
}
318318
}
319319
if len(mapSlice) > 0 {
320-
resultMap[xSpecMap[xpath].yangEntry.Name] = mapSlice
320+
resultMap[xYangSpecMap[xpath].yangEntry.Name] = mapSlice
321321
} else {
322322
log.Infof("Empty slice for (\"%v\").\r\n", uri)
323323
}
@@ -330,14 +330,14 @@ func terminalNodeProcess(dbs [db.MaxDB]*db.DB, ygRoot *ygot.GoStruct, uri string
330330
log.Infof("Received xpath - %v, uri - %v, dbDataMap - %v, table - %v, table key - %v", xpath, uri, (*dbDataMap), tbl, tblKey)
331331
var err error
332332
resFldValMap := make(map[string]interface{})
333-
if xSpecMap[xpath].yangEntry == nil {
333+
if xYangSpecMap[xpath].yangEntry == nil {
334334
logStr := fmt.Sprintf("No yang entry found for xpath %v.", xpath)
335335
err = fmt.Errorf("%v", logStr)
336336
return resFldValMap, err
337337
}
338338

339-
cdb := xSpecMap[xpath].dbIndex
340-
if len(xSpecMap[xpath].xfmrFunc) > 0 {
339+
cdb := xYangSpecMap[xpath].dbIndex
340+
if len(xYangSpecMap[xpath].xfmrFunc) > 0 {
341341
_, key, _ := xpathKeyExtract(dbs[cdb], ygRoot, GET, uri)
342342
inParams := formXfmrInputRequest(dbs[cdb], dbs, cdb, ygRoot, uri, GET, key, dbDataMap, nil)
343343
fldValMap, err := leafXfmrHandlerFunc(inParams)
@@ -350,26 +350,26 @@ func terminalNodeProcess(dbs [db.MaxDB]*db.DB, ygRoot *ygot.GoStruct, uri string
350350
resFldValMap[lf] = val
351351
}
352352
} else {
353-
dbFldName := xSpecMap[xpath].fieldName
353+
dbFldName := xYangSpecMap[xpath].fieldName
354354
/* if there is no transformer extension/annotation then it means leaf-list in yang is also leaflist in db */
355-
if len(dbFldName) > 0 && !xSpecMap[xpath].isKey {
356-
yangType := yangTypeGet(xSpecMap[xpath].yangEntry)
355+
if len(dbFldName) > 0 && !xYangSpecMap[xpath].isKey {
356+
yangType := yangTypeGet(xYangSpecMap[xpath].yangEntry)
357357
if yangType == "leaf-list" {
358358
dbFldName += "@"
359359
val, ok := (*dbDataMap)[cdb][tbl][tblKey].Field[dbFldName]
360360
if ok {
361361
resLst := processLfLstDbToYang(xpath, val)
362-
resFldValMap[xSpecMap[xpath].yangEntry.Name] = resLst
362+
resFldValMap[xYangSpecMap[xpath].yangEntry.Name] = resLst
363363
}
364364
} else {
365365
val, ok := (*dbDataMap)[cdb][tbl][tblKey].Field[dbFldName]
366366
if ok {
367-
yngTerminalNdDtType := xSpecMap[xpath].yangEntry.Type.Kind
367+
yngTerminalNdDtType := xYangSpecMap[xpath].yangEntry.Type.Kind
368368
resVal, err := DbToYangType(yngTerminalNdDtType, xpath, val)
369369
if err != nil {
370370
log.Error("Failure in converting Db value type to yang type for field", xpath)
371371
} else {
372-
resFldValMap[xSpecMap[xpath].yangEntry.Name] = resVal
372+
resFldValMap[xYangSpecMap[xpath].yangEntry.Name] = resVal
373373
}
374374
}
375375
}
@@ -382,15 +382,15 @@ func terminalNodeProcess(dbs [db.MaxDB]*db.DB, ygRoot *ygot.GoStruct, uri string
382382
func yangDataFill(dbs [db.MaxDB]*db.DB, ygRoot *ygot.GoStruct, uri string, xpath string, dbDataMap *map[db.DBNum]map[string]map[string]db.Value, resultMap map[string]interface{}, tbl string, tblKey string, cdb db.DBNum, validate bool) error {
383383
var err error
384384
isValid := validate
385-
yangNode, ok := xSpecMap[xpath]
385+
yangNode, ok := xYangSpecMap[xpath]
386386

387387
if ok && yangNode.yangEntry != nil {
388388
for yangChldName := range yangNode.yangEntry.Dir {
389389
chldXpath := xpath+"/"+yangChldName
390390
chldUri := uri+"/"+yangChldName
391-
if xSpecMap[chldXpath] != nil && xSpecMap[chldXpath].yangEntry != nil {
391+
if xYangSpecMap[chldXpath] != nil && xYangSpecMap[chldXpath].yangEntry != nil {
392392
_, key, _ := xpathKeyExtract(dbs[cdb], ygRoot, GET, chldUri)
393-
if len(xSpecMap[chldXpath].validateFunc) > 0 && !validate {
393+
if len(xYangSpecMap[chldXpath].validateFunc) > 0 && !validate {
394394
// TODO - handle non CONFIG-DB
395395
inParams := formXfmrInputRequest(dbs[cdb], dbs, cdb, ygRoot, chldUri, GET, key, dbDataMap, nil)
396396
res := validateHandlerFunc(inParams)
@@ -400,8 +400,8 @@ func yangDataFill(dbs [db.MaxDB]*db.DB, ygRoot *ygot.GoStruct, uri string, xpath
400400
isValid = res
401401
}
402402
}
403-
chldYangType := yangTypeGet(xSpecMap[chldXpath].yangEntry)
404-
cdb = xSpecMap[chldXpath].dbIndex
403+
chldYangType := yangTypeGet(xYangSpecMap[chldXpath].yangEntry)
404+
cdb = xYangSpecMap[chldXpath].dbIndex
405405
if chldYangType == "leaf" || chldYangType == "leaf-list" {
406406
fldValMap, err := terminalNodeProcess(dbs, ygRoot, chldUri, chldXpath, dbDataMap, tbl, tblKey)
407407
if err != nil {
@@ -411,17 +411,17 @@ func yangDataFill(dbs [db.MaxDB]*db.DB, ygRoot *ygot.GoStruct, uri string, xpath
411411
resultMap[lf] = val
412412
}
413413
} else if chldYangType == "container" {
414-
cname := xSpecMap[chldXpath].yangEntry.Name
415-
if len(xSpecMap[chldXpath].xfmrFunc) > 0 {
414+
cname := xYangSpecMap[chldXpath].yangEntry.Name
415+
if len(xYangSpecMap[chldXpath].xfmrFunc) > 0 {
416416
inParams := formXfmrInputRequest(dbs[cdb], dbs, cdb, ygRoot, chldUri, GET, "", dbDataMap, nil)
417417
cmap, _ := xfmrHandlerFunc(inParams)
418418
if len(cmap) > 0 {
419419
resultMap[cname] = cmap
420420
} else {
421421
log.Infof("Empty container(\"%v\").\r\n", chldUri)
422422
}
423-
} else if xSpecMap[chldXpath].xfmrTbl != nil {
424-
xfmrTblFunc := *xSpecMap[chldXpath].xfmrTbl
423+
} else if xYangSpecMap[chldXpath].xfmrTbl != nil {
424+
xfmrTblFunc := *xYangSpecMap[chldXpath].xfmrTbl
425425
if len(xfmrTblFunc) > 0 {
426426
inParams := formXfmrInputRequest(dbs[cdb], dbs, cdb, ygRoot, chldUri, GET, "", dbDataMap, nil)
427427
tblList := xfmrTblHandlerFunc(xfmrTblFunc, inParams)
@@ -439,8 +439,8 @@ func yangDataFill(dbs [db.MaxDB]*db.DB, ygRoot *ygot.GoStruct, uri string, xpath
439439
log.Infof("Empty container(\"%v\").\r\n", chldUri)
440440
}
441441
} else if chldYangType == "list" {
442-
cdb = xSpecMap[chldXpath].dbIndex
443-
if len(xSpecMap[chldXpath].xfmrFunc) > 0 {
442+
cdb = xYangSpecMap[chldXpath].dbIndex
443+
if len(xYangSpecMap[chldXpath].xfmrFunc) > 0 {
444444
inParams := formXfmrInputRequest(dbs[cdb], dbs, cdb, ygRoot, chldUri, GET, "", dbDataMap, nil)
445445
cmap, _ := xfmrHandlerFunc(inParams)
446446
if len(cmap) > 0 {
@@ -449,7 +449,7 @@ func yangDataFill(dbs [db.MaxDB]*db.DB, ygRoot *ygot.GoStruct, uri string, xpath
449449
log.Infof("Empty list(\"%v\").\r\n", chldUri)
450450
}
451451
} else {
452-
ynode, ok := xSpecMap[chldXpath]
452+
ynode, ok := xYangSpecMap[chldXpath]
453453
lTblName := ""
454454
if ok && ynode.tableName != nil {
455455
lTblName = *ynode.tableName
@@ -474,15 +474,15 @@ func dbDataToYangJsonCreate(uri string, ygRoot *ygot.GoStruct, dbs [db.MaxDB]*db
474474
} else {
475475
var d *db.DB
476476
reqXpath, keyName, tableName := xpathKeyExtract(d, ygRoot, GET, uri)
477-
yangNode, ok := xSpecMap[reqXpath]
477+
yangNode, ok := xYangSpecMap[reqXpath]
478478
if ok {
479479
yangType := yangTypeGet(yangNode.yangEntry)
480480
if yangType == "leaf" || yangType == "leaf-list" {
481-
//fldName := xSpecMap[reqXpath].fieldName
482-
yangName := xSpecMap[reqXpath].yangEntry.Name
481+
//fldName := xYangSpecMap[reqXpath].fieldName
482+
yangName := xYangSpecMap[reqXpath].yangEntry.Name
483483
tbl, key, _ := tableNameAndKeyFromDbMapGet((*dbDataMap)[cdb])
484484
validateHandlerFlag := false
485-
if len(xSpecMap[reqXpath].validateFunc) > 0 {
485+
if len(xYangSpecMap[reqXpath].validateFunc) > 0 {
486486
// TODO - handle non CONFIG-DB
487487
inParams := formXfmrInputRequest(dbs[cdb], dbs, cdb, ygRoot, uri, GET, key, dbDataMap, nil)
488488
res := validateHandlerFunc(inParams)
@@ -500,9 +500,9 @@ func dbDataToYangJsonCreate(uri string, ygRoot *ygot.GoStruct, dbs [db.MaxDB]*db
500500
resultMap = fldValMap
501501
}
502502
} else if yangType == "container" {
503-
cname := xSpecMap[reqXpath].yangEntry.Name
503+
cname := xYangSpecMap[reqXpath].yangEntry.Name
504504
cmap := make(map[string]interface{})
505-
if len(xSpecMap[reqXpath].xfmrFunc) > 0 {
505+
if len(xYangSpecMap[reqXpath].xfmrFunc) > 0 {
506506
inParams := formXfmrInputRequest(dbs[cdb], dbs, cdb, ygRoot, uri, GET, "", dbDataMap, nil)
507507
cmap, _ = xfmrHandlerFunc(inParams)
508508
if len(cmap) > 0 {

0 commit comments

Comments
 (0)