From 1e1ae86bc9ef5821d1ac422c53fafa9d71960105 Mon Sep 17 00:00:00 2001 From: Vishal Choudhary Date: Tue, 8 Oct 2024 13:32:06 +0530 Subject: [PATCH] feat: add options Signed-off-by: Vishal Choudhary --- pkg/app/opts/options.go | 2 ++ pkg/app/policyserver.go | 13 +++++++++++++ pkg/storage/store.go | 24 ++++++++++++++---------- 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/pkg/app/opts/options.go b/pkg/app/opts/options.go index ba05942..883e245 100644 --- a/pkg/app/opts/options.go +++ b/pkg/app/opts/options.go @@ -35,6 +35,7 @@ type Options struct { Kubeconfig string // dbopts + EtcdDir string DBHost string DBPort int DBUser string @@ -66,6 +67,7 @@ func (o *Options) validate() []error { func (o *Options) Flags() (fs flag.NamedFlagSets) { msfs := fs.FlagSet("policy server") msfs.BoolVar(&o.Debug, "debug", false, "Use inmemory database for debugging") + msfs.StringVar(&o.EtcdDir, "etcdDir", "", "Directory used for creating etcd server") msfs.BoolVar(&o.ShowVersion, "version", false, "Show version") msfs.StringVar(&o.Kubeconfig, "kubeconfig", o.Kubeconfig, "The path to the kubeconfig used to connect to the Kubernetes API server and the Kubelets (defaults to in-cluster config)") msfs.StringVar(&o.DBHost, "dbhost", "reportsdb.kyverno", "Host url of postgres instance") diff --git a/pkg/app/policyserver.go b/pkg/app/policyserver.go index 7c09b70..9465942 100644 --- a/pkg/app/policyserver.go +++ b/pkg/app/policyserver.go @@ -6,11 +6,13 @@ import ( "os" "github.com/kyverno/reports-server/pkg/app/opts" + "github.com/kyverno/reports-server/pkg/storage/etcd" "github.com/spf13/cobra" cliflag "k8s.io/component-base/cli/flag" "k8s.io/component-base/logs" "k8s.io/component-base/term" "k8s.io/component-base/version" + "k8s.io/klog/v2" ) func NewPolicyServer(stopCh <-chan struct{}) *cobra.Command { @@ -62,6 +64,17 @@ func runCommand(o *opts.Options, stopCh <-chan struct{}) error { if err != nil { return err } + + if o.Debug { + go func() { + err := etcd.StartETCDServer(stopCh, o.EtcdDir) + if err != nil { + klog.ErrorS(err, "failed to start etcd server") + os.Exit(1) + } + }() + } + s, err := config.Complete() if err != nil { return err diff --git a/pkg/storage/store.go b/pkg/storage/store.go index bf7f2d5..c3a7ca7 100644 --- a/pkg/storage/store.go +++ b/pkg/storage/store.go @@ -3,7 +3,7 @@ package storage import ( "github.com/kyverno/reports-server/pkg/storage/api" "github.com/kyverno/reports-server/pkg/storage/db" - "github.com/kyverno/reports-server/pkg/storage/inmemory" + "github.com/kyverno/reports-server/pkg/storage/etcd" "k8s.io/klog/v2" ) @@ -14,19 +14,23 @@ type Interface interface { func New(debug bool, config *db.PostgresConfig) (Interface, error) { klog.Infof("setting up storage, debug=%v", debug) + var storage api.Storage + var err error + if debug { - return &store{ - db: inmemory.New(), - versioning: NewVersioning(), - }, nil + storage, err = etcd.New() + if err != nil { + return nil, err + } + } else { + storage, err = db.New(config) + if err != nil { + return nil, err + } } - db, err := db.New(config) - if err != nil { - return nil, err - } return &store{ - db: db, + db: storage, versioning: NewVersioning(), }, nil }