Skip to content

Commit

Permalink
Merge pull request #167 from project-arlo/transformer-phase2
Browse files Browse the repository at this point in the history
Exclude annotation file from generating ocbinds, fix Makefile
  • Loading branch information
kwangsuk authored Oct 11, 2019
2 parents 22fc0ca + b39c568 commit 212c201
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 49 deletions.
1 change: 0 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,6 @@ install:
$(INSTALL) -D $(TOPDIR)/models/yang/sonic/common/*.yang $(DESTDIR)/usr/models/yang/
$(INSTALL) -D $(TOPDIR)/src/cvl/schema/*.yin $(DESTDIR)/usr/sbin/schema/
$(INSTALL) -D $(TOPDIR)/src/cvl/testdata/schema/*.yin $(DESTDIR)/usr/sbin/schema/
$(INSTALL) -D $(TOPDIR)/src/cvl/schema/*.yang $(DESTDIR)/usr/models/yang/
$(INSTALL) -D $(TOPDIR)/models/yang/*.yang $(DESTDIR)/usr/models/yang/
$(INSTALL) -D $(TOPDIR)/config/transformer/models_list $(DESTDIR)/usr/models/yang/
$(INSTALL) -D $(TOPDIR)/models/yang/common/*.yang $(DESTDIR)/usr/models/yang/
Expand Down
2 changes: 1 addition & 1 deletion src/translib/ocbinds/oc.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@

package ocbinds

//go:generate sh -c "/usr/local/go/bin/go run $BUILD_GOPATH/src/github.com/openconfig/ygot/generator/generator.go -generate_fakeroot -output_file ocbinds.go -package_name ocbinds -generate_fakeroot -fakeroot_name=device -compress_paths=false -exclude_modules ietf-interfaces -path . $(find ../../../models/yang -name '*.yang' | sort)"
//go:generate sh -c "/usr/local/go/bin/go run $BUILD_GOPATH/src/github.com/openconfig/ygot/generator/generator.go -generate_fakeroot -output_file ocbinds.go -package_name ocbinds -generate_fakeroot -fakeroot_name=device -compress_paths=false -exclude_modules ietf-interfaces -path . $(find ../../../models/yang -name '*.yang' -not -name '*annot.yang' | sort)"
17 changes: 3 additions & 14 deletions src/translib/transformer/xlate_from_db.go
Original file line number Diff line number Diff line change
Expand Up @@ -472,7 +472,7 @@ func yangListDataFill(dbs [db.MaxDB]*db.DB, ygRoot *ygot.GoStruct, uri string, x
}

func terminalNodeProcess(dbs [db.MaxDB]*db.DB, ygRoot *ygot.GoStruct, uri string, xpath string, dbDataMap *map[db.DBNum]map[string]map[string]db.Value, tbl string, tblKey string) (map[string]interface{}, error) {
log.Infof("Received xpath - %v, uri - %v, dbDataMap - %v, table - %v, table key - %v", xpath, uri, (*dbDataMap), tbl, tblKey)
log.Infof("Received xpath - %v, uri - %v, table - %v, table key - %v", xpath, uri, tbl, tblKey)
var err error
resFldValMap := make(map[string]interface{})
if xYangSpecMap[xpath].yangEntry == nil {
Expand Down Expand Up @@ -718,20 +718,9 @@ func dbDataToYangJsonCreate(uri string, ygRoot *ygot.GoStruct, dbs [db.MaxDB]*db
break
} else if yangType == YANG_LIST {
var err error
var logStr string
if xYangSpecMap[reqXpath].xfmrTbl != nil {
/* pass empty table string since in case of list table transformer can have multiple tables returned,
which are already being fetched and handled in yangListDataFill
*/
err = yangListDataFill(dbs, ygRoot, uri, reqXpath, dbDataMap, resultMap, "", keyName, cdb, IsValidate)
logStr = fmt.Sprintf("yangListDataFill failed for list case(\"%v\").\r\n", uri)
} else {
err = yangDataFill(dbs, ygRoot, uri, reqXpath, dbDataMap, resultMap, tableName, keyName, cdb, IsValidate)
logStr = fmt.Sprintf("yangDataFill failed for list(\"%v\").\r\n", uri)

}
err = yangListDataFill(dbs, ygRoot, uri, reqXpath, dbDataMap, resultMap, tableName, keyName, cdb, IsValidate)
if err != nil {
log.Infof("%v", logStr)
log.Infof("yangListDataFill failed for list case(\"%v\").\r\n", uri)
}
break
} else {
Expand Down
48 changes: 15 additions & 33 deletions src/translib/transformer/xlate_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,21 +113,20 @@ func dbKeyToYangDataConvert(uri string, xpath string, dbKey string, dbKeySep str
}
}

var kLvlValList []string
keyDataList := strings.Split(dbKey, dbKeySep)
keyNameList := yangKeyFromEntryGet(xYangSpecMap[xpath].yangEntry)
id := xYangSpecMap[xpath].keyLevel
keyDataList := strings.SplitN(dbKey, dbKeySep, id)
uriWithKey := fmt.Sprintf("%v", xpath)
uriWithKeyCreate := true

/* if uri contins key, use it else use xpath */
if strings.Contains(uri, "[") {
uriXpath, _ := XfmrRemoveXPATHPredicates(uri)
if (uriXpath == xpath && (strings.HasSuffix(uri, "]") || strings.HasSuffix(uri, "]/"))) {
uriWithKeyCreate = false
}
uriWithKey = fmt.Sprintf("%v", uri)
}
keyConcat := dbKeySep
if len(xYangSpecMap[xpath].delim) > 0 {
keyConcat = xYangSpecMap[xpath].delim
log.Infof("Found key concatenater(\"%v\") for xpath %v", keyConcat, xpath)
}

if len(xYangSpecMap[xpath].xfmrKey) > 0 {
var dbs [db.MaxDB]*db.DB
Expand All @@ -137,42 +136,25 @@ func dbKeyToYangDataConvert(uri string, xpath string, dbKey string, dbKeySep str
return nil, "", err
}
rmap := ret[0].Interface().(map[string]interface{})
for k, v := range rmap {
uriWithKey += fmt.Sprintf("[%v=%v]", k, v)
}
if uriWithKeyCreate {
for k, v := range rmap {
uriWithKey += fmt.Sprintf("[%v=%v]", k, v)
}
}
return rmap, uriWithKey, nil
}

if len(keyDataList) == 0 || len(keyNameList) == 0 {
return nil, "", nil
}

kLvlValList = append(kLvlValList, keyDataList[id])

if len(keyNameList) > 1 {
kLvlValList = strings.Split(keyDataList[id], keyConcat)
}

/* TODO: Need to add leaf-ref related code in here and remove this code*/
kvalExceedFlag := false
chgId := -1
if len(keyNameList) < len(kLvlValList) {
kvalExceedFlag = true
chgId = len(keyNameList) - 1
}

rmap := make(map[string]interface{})
for i, kname := range keyNameList {
kval := kLvlValList[i]

/* TODO: Need to add leaf-ref related code in here and remove this code*/
if kvalExceedFlag && (i == chgId) {
kval = strings.Join(kLvlValList[chgId:], keyConcat)
}

uriWithKey += fmt.Sprintf("[%v=%v]", kname, kval)
rmap[kname] = kval
if len(keyNameList) > 1 {
log.Infof("No key transformer found for multi element yang key mapping to a single redis key string.")
return rmap, uriWithKey, nil
}
rmap[keyNameList[0]] = keyDataList[0]

return rmap, uriWithKey, nil
}
Expand Down

0 comments on commit 212c201

Please sign in to comment.