Skip to content
Snippets Groups Projects
Commit d9d48818 authored by Fabian Seidl's avatar Fabian Seidl
Browse files

fix compile errors due to update of ygot in generator

parent 889bb7e6
No related branches found
No related tags found
1 merge request!441[renovate] Update module github.com/openconfig/ygot to v0.27.0
Pipeline #138754 failed
This commit is part of merge request !441. Comments created here will be created in the context of that merge request.
...@@ -13,6 +13,7 @@ import ( ...@@ -13,6 +13,7 @@ import (
spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound" spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
"github.com/google/uuid" "github.com/google/uuid"
gpb "github.com/openconfig/gnmi/proto/gnmi" gpb "github.com/openconfig/gnmi/proto/gnmi"
"github.com/openconfig/ygot/gogen"
"github.com/openconfig/ygot/ygen" "github.com/openconfig/ygot/ygen"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
) )
...@@ -49,10 +50,8 @@ func Generate(ctx context.Context, models []*gpb.ModelData, repository Repositor ...@@ -49,10 +50,8 @@ func Generate(ctx context.Context, models []*gpb.ModelData, repository Repositor
} else if len(yangFiles) != len(models) { } else if len(yangFiles) != len(models) {
log.Warn("could not find all models") log.Warn("could not find all models")
} }
cfg := &ygen.GeneratorConfig{
PackageName: "main", generator := gogen.New("GoCodeGenerator", ygen.IROptions{
GenerateJSONSchema: true,
StoreRawSchema: true,
ParseOptions: ygen.ParseOpts{ ParseOptions: ygen.ParseOpts{
YANGParseOptions: yang.Options{ YANGParseOptions: yang.Options{
IgnoreSubmoduleCircularDependencies: true, IgnoreSubmoduleCircularDependencies: true,
...@@ -63,39 +62,40 @@ func Generate(ctx context.Context, models []*gpb.ModelData, repository Repositor ...@@ -63,39 +62,40 @@ func Generate(ctx context.Context, models []*gpb.ModelData, repository Repositor
GenerateFakeRoot: true, GenerateFakeRoot: true,
FakeRootName: "Device", FakeRootName: "Device",
}, },
GoOptions: ygen.GoOpts{ }, gogen.GoOpts{
IncludeModelData: true, PackageName: "main",
GenerateSimpleUnions: true, GenerateJSONSchema: true,
ValidateFunctionName: "Validate", IncludeModelData: true,
}, GenerateSimpleUnions: true,
} ValidateFunctionName: "Validate",
})
lock.Lock() lock.Lock()
generator := ygen.NewYANGCodeGenerator(cfg)
searchpath, err := repository.YANGPathsWithSuffix() searchpath, err := repository.YANGPathsWithSuffix()
if err != nil { if err != nil {
return Deployment{}, promHandleError(labels, err, codeGenerationErrorsTotal) return Deployment{}, promHandleError(labels, err, codeGenerationErrorsTotal)
} }
code, errs := generator.GenerateGoCode(yangFiles, searchpath)
code, errs := generator.Generate(yangFiles, searchpath)
for _, e := range errs { for _, e := range errs {
if strings.Contains(e.Error(), "duplicate entry interfaces at the root") { if strings.Contains(e.Error(), "duplicate entry interfaces at the root") {
if strings.Contains(e.Error(), "ietf-interfaces") { if strings.Contains(e.Error(), "ietf-interfaces") {
generator.Config.ParseOptions.ExcludeModules = append(generator.Config.ParseOptions.ExcludeModules, "ietf-interfaces") generator.IROptions.ParseOptions.ExcludeModules = append(generator.IROptions.ParseOptions.ExcludeModules, "ietf-interfaces")
} else { } else {
splitted := strings.SplitAfter(e.Error(), "new: ") splitted := strings.SplitAfter(e.Error(), "new: ")
model := strings.Split(splitted[0], "/")[1] model := strings.Split(splitted[0], "/")[1]
generator.Config.ParseOptions.ExcludeModules = append(generator.Config.ParseOptions.ExcludeModules, model) generator.IROptions.ParseOptions.ExcludeModules = append(generator.IROptions.ParseOptions.ExcludeModules, model)
} }
} }
log.Warnf("error during first round %v", promHandleError(labels, e, codeGenerationErrorsTotal)) log.Warnf("error during first round %v", promHandleError(labels, e, codeGenerationErrorsTotal))
} }
log.Infof("excluded models: %v", generator.Config.ParseOptions.ExcludeModules) log.Infof("excluded models: %v", generator.IROptions.ParseOptions.ExcludeModules)
if code == nil { if code == nil {
log.Info("running second round") log.Info("running second round")
code, errs = generator.GenerateGoCode(yangFiles, searchpath) code, errs = generator.Generate(yangFiles, searchpath)
} }
lock.Unlock() lock.Unlock()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment