From 3782bab80a650526a8869547eaa65aa23472bf56 Mon Sep 17 00:00:00 2001 From: Wang Yan Date: Fri, 1 Mar 2024 14:40:02 +0800 Subject: [PATCH] add sbom settings for project (#20069) Add a new switcher for sbom generation, by default is false. Signed-off-by: wang yan --- src/pkg/project/models/pro_meta.go | 1 + src/pkg/project/models/project.go | 9 +++++++++ src/server/v2.0/handler/project_metadata.go | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/pkg/project/models/pro_meta.go b/src/pkg/project/models/pro_meta.go index bc4fe3ca3..a8a0659fe 100644 --- a/src/pkg/project/models/pro_meta.go +++ b/src/pkg/project/models/pro_meta.go @@ -23,4 +23,5 @@ const ( ProMetaSeverity = "severity" ProMetaAutoScan = "auto_scan" ProMetaReuseSysCVEAllowlist = "reuse_sys_cve_allowlist" + ProMetaAutoSBOMGen = "auto_sbom_generation" ) diff --git a/src/pkg/project/models/project.go b/src/pkg/project/models/project.go index 5a379468a..e533bd911 100644 --- a/src/pkg/project/models/project.go +++ b/src/pkg/project/models/project.go @@ -147,6 +147,15 @@ func (p *Project) AutoScan() bool { return isTrue(auto) } +// AutoSBOMGen ... +func (p *Project) AutoSBOMGen() bool { + auto, exist := p.GetMetadata(ProMetaAutoSBOMGen) + if !exist { + return false + } + return isTrue(auto) +} + // FilterByPublic returns orm.QuerySeter with public filter func (p *Project) FilterByPublic(_ context.Context, qs orm.QuerySeter, _ string, value interface{}) orm.QuerySeter { subQuery := `SELECT project_id FROM project_metadata WHERE name = 'public' AND value = '%s'` diff --git a/src/server/v2.0/handler/project_metadata.go b/src/server/v2.0/handler/project_metadata.go index 8a2ba6cb7..a5bde2e45 100644 --- a/src/server/v2.0/handler/project_metadata.go +++ b/src/server/v2.0/handler/project_metadata.go @@ -143,7 +143,7 @@ func (p *projectMetadataAPI) validate(metas map[string]string) (map[string]strin switch key { case proModels.ProMetaPublic, proModels.ProMetaEnableContentTrust, proModels.ProMetaEnableContentTrustCosign, - proModels.ProMetaPreventVul, proModels.ProMetaAutoScan, proModels.ProMetaReuseSysCVEAllowlist: + proModels.ProMetaAutoSBOMGen, proModels.ProMetaPreventVul, proModels.ProMetaAutoScan, proModels.ProMetaReuseSysCVEAllowlist: v, err := strconv.ParseBool(value) if err != nil { return nil, errors.New(nil).WithCode(errors.BadRequestCode).WithMessage("invalid value: %s", value)