From 1927e050a901b9be7dc6537aed3328197503cfb2 Mon Sep 17 00:00:00 2001 From: Yash Kumar Gupta Date: Thu, 18 Sep 2025 16:16:07 +0530 Subject: [PATCH 1/4] feat(registry): Populate createdAt in model metadata Signed-off-by: Yash Kumar Gupta --- generators/artifacthub/package.go | 5 ++++- generators/github/package.go | 6 +++++- go.mod | 4 ++-- go.sum | 4 ++-- registry/model.go | 15 ++++++++++++--- utils/component/openapi_generator.go | 3 +++ 6 files changed, 28 insertions(+), 9 deletions(-) diff --git a/generators/artifacthub/package.go b/generators/artifacthub/package.go index b24414fb..4ccb59f4 100644 --- a/generators/artifacthub/package.go +++ b/generators/artifacthub/package.go @@ -68,7 +68,10 @@ func (pkg AhPackage) GenerateComponents(group string) ([]_component.ComponentDef continue } if comp.Model.Metadata == nil { - comp.Model.Metadata = &model.ModelDefinition_Metadata{} + now := time.Now() + comp.Model.Metadata = &model.ModelDefinition_Metadata{ + CreatedAt: &now, + } } if comp.Model.Metadata.AdditionalProperties == nil { diff --git a/generators/github/package.go b/generators/github/package.go index fc4e09ad..2f5c2265 100644 --- a/generators/github/package.go +++ b/generators/github/package.go @@ -3,6 +3,7 @@ package github import ( "bytes" "os" + "time" "github.com/meshery/meshkit/utils" "github.com/meshery/meshkit/utils/component" @@ -73,7 +74,10 @@ func (gp GitHubPackage) GenerateComponents(group string) ([]_component.Component continue } if comp.Model.Metadata == nil { - comp.Model.Metadata = &model.ModelDefinition_Metadata{} + now := time.Now() + comp.Model.Metadata = &model.ModelDefinition_Metadata{ + CreatedAt: &now, + } } if comp.Model.Metadata.AdditionalProperties == nil { comp.Model.Metadata.AdditionalProperties = make(map[string]interface{}) diff --git a/go.mod b/go.mod index 32e46b30..6ad00761 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ replace ( github.com/googleapis/gnostic => github.com/googleapis/gnostic v0.5.5 github.com/jaguilar/vt100 => github.com/tonistiigi/vt100 v0.0.0-20190402012908-ad4c4a574305 -// github.com/meshery/schemas v0.8.30 => ../schemas +// github.com/meshery/schemas => ../schemas ) require ( @@ -199,7 +199,7 @@ require ( github.com/nats-io/nkeys v0.4.9 // indirect github.com/nats-io/nuid v1.0.1 // indirect github.com/novln/docker-parser v1.0.0 // indirect - github.com/oapi-codegen/runtime v1.1.1 // indirect + github.com/oapi-codegen/runtime v1.1.2 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/openshift/api v3.9.0+incompatible // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect diff --git a/go.sum b/go.sum index 21d250c1..dc2ff6f5 100644 --- a/go.sum +++ b/go.sum @@ -425,8 +425,8 @@ github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/novln/docker-parser v1.0.0 h1:PjEBd9QnKixcWczNGyEdfUrP6GR0YUilAqG7Wksg3uc= github.com/novln/docker-parser v1.0.0/go.mod h1:oCeM32fsoUwkwByB5wVjsrsVQySzPWkl3JdlTn1txpE= -github.com/oapi-codegen/runtime v1.1.1 h1:EXLHh0DXIJnWhdRPN2w4MXAzFyE4CskzhNLUmtpMYro= -github.com/oapi-codegen/runtime v1.1.1/go.mod h1:SK9X900oXmPWilYR5/WKPzt3Kqxn/uS/+lbpREv+eCg= +github.com/oapi-codegen/runtime v1.1.2 h1:P2+CubHq8fO4Q6fV1tqDBZHCwpVpvPg7oKiYzQgXIyI= +github.com/oapi-codegen/runtime v1.1.2/go.mod h1:SK9X900oXmPWilYR5/WKPzt3Kqxn/uS/+lbpREv+eCg= github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= diff --git a/registry/model.go b/registry/model.go index 32274c31..e404ed5d 100644 --- a/registry/model.go +++ b/registry/model.go @@ -105,7 +105,10 @@ var modelMetadataValues = []string{ func (m *ModelCSV) UpdateModelDefinition(modelDef *_model.ModelDefinition) error { metadata := modelDef.Metadata if metadata == nil { - metadata = &_model.ModelDefinition_Metadata{} + now := time.Now() + metadata = &_model.ModelDefinition_Metadata{ + CreatedAt: &now, + } } if metadata.AdditionalProperties == nil { metadata.AdditionalProperties = make(map[string]interface{}) @@ -626,7 +629,10 @@ func GenerateComponentsFromPkg(pkg models.Package, compDirPath string, defVersio for _, comp := range comps { comp.Version = defVersion if modelDef.Metadata == nil { - modelDef.Metadata = &_model.ModelDefinition_Metadata{} + now := time.Now() + modelDef.Metadata = &_model.ModelDefinition_Metadata{ + CreatedAt: &now, + } } if modelDef.Metadata.AdditionalProperties == nil { modelDef.Metadata.AdditionalProperties = make(map[string]interface{}) @@ -918,7 +924,10 @@ func InvokeGenerationFromSheet(wg *sync.WaitGroup, path string, modelsheetID, co // i.e., If model is enabled, comps are also "enabled". Ultimately, all individual comps will have the ability to control their status. // The status "enabled" indicates that the component will be registered inside the registry. if modelDef.Metadata == nil { - modelDef.Metadata = &_model.ModelDefinition_Metadata{} + now := time.Now() + modelDef.Metadata = &_model.ModelDefinition_Metadata{ + CreatedAt: &now, + } } if modelDef.Metadata.AdditionalProperties == nil { modelDef.Metadata.AdditionalProperties = make(map[string]interface{}) diff --git a/utils/component/openapi_generator.go b/utils/component/openapi_generator.go index c40a3961..e25bfd80 100644 --- a/utils/component/openapi_generator.go +++ b/utils/component/openapi_generator.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "strings" + "time" "cuelang.org/go/cue" "cuelang.org/go/cue/cuecontext" @@ -121,6 +122,7 @@ func GenerateFromOpenAPI(resource string, pkg models.Package) ([]component.Compo } } + now := time.Now() c := component.ComponentDefinition{ SchemaVersion: v1beta1.ComponentSchemaVersion, Format: component.JSON, @@ -141,6 +143,7 @@ func GenerateFromOpenAPI(resource string, pkg models.Package) ([]component.Compo Name: pkg.GetName(), DisplayName: manifests.FormatToReadableString(pkg.GetName()), Metadata: &model.ModelDefinition_Metadata{ + CreatedAt: &now, AdditionalProperties: map[string]interface{}{ "source_uri": pkg.GetSourceURL(), }, From 837d47324bb3408544255f03b16e783b19730d0d Mon Sep 17 00:00:00 2001 From: Yash Kumar Gupta Date: Thu, 18 Sep 2025 17:31:04 +0530 Subject: [PATCH 2/4] refactor: Use constructor for ModelDefinition_Metadata Signed-off-by: Yash Kumar Gupta --- generators/artifacthub/package.go | 5 +---- generators/github/package.go | 5 +---- go.mod | 4 ++-- go.sum | 6 ++---- registry/model.go | 15 +++------------ utils/component/openapi_generator.go | 13 ++++++------- 6 files changed, 15 insertions(+), 33 deletions(-) diff --git a/generators/artifacthub/package.go b/generators/artifacthub/package.go index 4ccb59f4..ce0a522e 100644 --- a/generators/artifacthub/package.go +++ b/generators/artifacthub/package.go @@ -68,10 +68,7 @@ func (pkg AhPackage) GenerateComponents(group string) ([]_component.ComponentDef continue } if comp.Model.Metadata == nil { - now := time.Now() - comp.Model.Metadata = &model.ModelDefinition_Metadata{ - CreatedAt: &now, - } + comp.Model.Metadata = model.NewModelDefinition_Metadata() } if comp.Model.Metadata.AdditionalProperties == nil { diff --git a/generators/github/package.go b/generators/github/package.go index 2f5c2265..a0435fab 100644 --- a/generators/github/package.go +++ b/generators/github/package.go @@ -74,10 +74,7 @@ func (gp GitHubPackage) GenerateComponents(group string) ([]_component.Component continue } if comp.Model.Metadata == nil { - now := time.Now() - comp.Model.Metadata = &model.ModelDefinition_Metadata{ - CreatedAt: &now, - } + comp.Model.Metadata = model.NewModelDefinition_Metadata() } if comp.Model.Metadata.AdditionalProperties == nil { comp.Model.Metadata.AdditionalProperties = make(map[string]interface{}) diff --git a/go.mod b/go.mod index 6ad00761..16f1cd40 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ replace ( github.com/googleapis/gnostic => github.com/googleapis/gnostic v0.5.5 github.com/jaguilar/vt100 => github.com/tonistiigi/vt100 v0.0.0-20190402012908-ad4c4a574305 -// github.com/meshery/schemas => ../schemas + github.com/meshery/schemas => ../schemas ) require ( @@ -44,7 +44,7 @@ require ( gopkg.in/yaml.v3 v3.0.1 gorm.io/driver/postgres v1.5.11 gorm.io/driver/sqlite v1.5.7 - gorm.io/gorm v1.30.0 + gorm.io/gorm v1.30.1 helm.sh/helm/v3 v3.18.4 k8s.io/api v0.33.2 k8s.io/apimachinery v0.33.2 diff --git a/go.sum b/go.sum index dc2ff6f5..405d9ff6 100644 --- a/go.sum +++ b/go.sum @@ -378,8 +378,6 @@ github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lL github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM= github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/meshery/schemas v0.8.34 h1:RiD5JWWQE92d8nkEWy7Lt0guZRAG3XQstX07spfPw7w= -github.com/meshery/schemas v0.8.34/go.mod h1:6BxRPapEnbH4ATuneUVLb7lOAWSdr8gyvNp1zAgmyKA= github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM= github.com/miekg/dns v1.1.57/go.mod h1:uqRjCRUuEAA6qsOiJvDd+CFo/vW+y5WR6SNmHE55hZk= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= @@ -698,8 +696,8 @@ gorm.io/driver/postgres v1.5.11 h1:ubBVAfbKEUld/twyKZ0IYn9rSQh448EdelLYk9Mv314= gorm.io/driver/postgres v1.5.11/go.mod h1:DX3GReXH+3FPWGrrgffdvCk3DQ1dwDPdmbenSkweRGI= gorm.io/driver/sqlite v1.5.7 h1:8NvsrhP0ifM7LX9G4zPB97NwovUakUxc+2V2uuf3Z1I= gorm.io/driver/sqlite v1.5.7/go.mod h1:U+J8craQU6Fzkcvu8oLeAQmi50TkwPEhHDEjQZXDah4= -gorm.io/gorm v1.30.0 h1:qbT5aPv1UH8gI99OsRlvDToLxW5zR7FzS9acZDOZcgs= -gorm.io/gorm v1.30.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= +gorm.io/gorm v1.30.1 h1:lSHg33jJTBxs2mgJRfRZeLDG+WZaHYCk3Wtfl6Ngzo4= +gorm.io/gorm v1.30.1/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= helm.sh/helm/v3 v3.18.4 h1:pNhnHM3nAmDrxz6/UC+hfjDY4yeDATQCka2/87hkZXQ= diff --git a/registry/model.go b/registry/model.go index e404ed5d..c77df373 100644 --- a/registry/model.go +++ b/registry/model.go @@ -105,10 +105,7 @@ var modelMetadataValues = []string{ func (m *ModelCSV) UpdateModelDefinition(modelDef *_model.ModelDefinition) error { metadata := modelDef.Metadata if metadata == nil { - now := time.Now() - metadata = &_model.ModelDefinition_Metadata{ - CreatedAt: &now, - } + metadata = _model.NewModelDefinition_Metadata() } if metadata.AdditionalProperties == nil { metadata.AdditionalProperties = make(map[string]interface{}) @@ -629,10 +626,7 @@ func GenerateComponentsFromPkg(pkg models.Package, compDirPath string, defVersio for _, comp := range comps { comp.Version = defVersion if modelDef.Metadata == nil { - now := time.Now() - modelDef.Metadata = &_model.ModelDefinition_Metadata{ - CreatedAt: &now, - } + modelDef.Metadata = _model.NewModelDefinition_Metadata() } if modelDef.Metadata.AdditionalProperties == nil { modelDef.Metadata.AdditionalProperties = make(map[string]interface{}) @@ -924,10 +918,7 @@ func InvokeGenerationFromSheet(wg *sync.WaitGroup, path string, modelsheetID, co // i.e., If model is enabled, comps are also "enabled". Ultimately, all individual comps will have the ability to control their status. // The status "enabled" indicates that the component will be registered inside the registry. if modelDef.Metadata == nil { - now := time.Now() - modelDef.Metadata = &_model.ModelDefinition_Metadata{ - CreatedAt: &now, - } + modelDef.Metadata = _model.NewModelDefinition_Metadata() } if modelDef.Metadata.AdditionalProperties == nil { modelDef.Metadata.AdditionalProperties = make(map[string]interface{}) diff --git a/utils/component/openapi_generator.go b/utils/component/openapi_generator.go index e25bfd80..826649d3 100644 --- a/utils/component/openapi_generator.go +++ b/utils/component/openapi_generator.go @@ -122,7 +122,11 @@ func GenerateFromOpenAPI(resource string, pkg models.Package) ([]component.Compo } } - now := time.Now() + metadata := model.NewModelDefinition_Metadata() + if metadata.AdditionalProperties == nil { + metadata.AdditionalProperties = make(map[string]interface{}) + } + metadata.AdditionalProperties["source_uri"] = pkg.GetSourceURL() c := component.ComponentDefinition{ SchemaVersion: v1beta1.ComponentSchemaVersion, Format: component.JSON, @@ -142,12 +146,7 @@ func GenerateFromOpenAPI(resource string, pkg models.Package) ([]component.Compo }, Name: pkg.GetName(), DisplayName: manifests.FormatToReadableString(pkg.GetName()), - Metadata: &model.ModelDefinition_Metadata{ - CreatedAt: &now, - AdditionalProperties: map[string]interface{}{ - "source_uri": pkg.GetSourceURL(), - }, - }, + Metadata: metadata, }, } From 1a4990401214d893b9df9ceb966e3f57d8543f86 Mon Sep 17 00:00:00 2001 From: Yash Kumar Gupta Date: Fri, 19 Sep 2025 06:16:48 +0530 Subject: [PATCH 3/4] fix(go.mod): remove local replace for schemas causing build failure Signed-off-by: Yash Kumar Gupta --- go.mod | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 16f1cd40..2379721a 100644 --- a/go.mod +++ b/go.mod @@ -8,10 +8,10 @@ replace ( // github.com/docker/libcompose => github.com/docker/libcompose v0.4.1-0.20190808084053-143e0f3f1ab9 github.com/googleapis/gnostic => github.com/googleapis/gnostic v0.5.5 github.com/jaguilar/vt100 => github.com/tonistiigi/vt100 v0.0.0-20190402012908-ad4c4a574305 - - github.com/meshery/schemas => ../schemas ) +//github.com/meshery/schemas => ../schemas + require ( cuelang.org/go v0.11.2 github.com/Masterminds/semver/v3 v3.3.1 From 6e2114ae864247e5cd53157c23b222338b279179 Mon Sep 17 00:00:00 2001 From: Yash Kumar Gupta Date: Fri, 19 Sep 2025 18:44:59 +0530 Subject: [PATCH 4/4] removed local replace for schemas from go.mod Signed-off-by: Yash Kumar Gupta --- go.mod | 2 -- 1 file changed, 2 deletions(-) diff --git a/go.mod b/go.mod index 2379721a..46f7307b 100644 --- a/go.mod +++ b/go.mod @@ -10,8 +10,6 @@ replace ( github.com/jaguilar/vt100 => github.com/tonistiigi/vt100 v0.0.0-20190402012908-ad4c4a574305 ) -//github.com/meshery/schemas => ../schemas - require ( cuelang.org/go v0.11.2 github.com/Masterminds/semver/v3 v3.3.1