Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add support for --all-namespaces (-A) #50

Merged
merged 4 commits into from
Feb 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion pkg/api/cephr.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ func (c *cephrStore) List(ctx context.Context, options *metainternalversion.List
// fieldSelector = options.FieldSelector
// }
}
klog.Infof("listing cluster ephemeral reports")
list, err := c.listCephr()
if err != nil {
return nil, errors.NewBadRequest("failed to list resource clusterephemeralreport")
Expand All @@ -86,6 +87,7 @@ func (c *cephrStore) List(ctx context.Context, options *metainternalversion.List
}

func (c *cephrStore) Get(ctx context.Context, name string, options *metav1.GetOptions) (runtime.Object, error) {
klog.Infof("getting cluster ephemeral reports name=%s", name)
report, err := c.getCephr(name)
if err != nil || report == nil {
return nil, errors.NewNotFound(reportsv1.Resource("clusterephemeralreports"), name)
Expand Down Expand Up @@ -115,6 +117,7 @@ func (c *cephrStore) Create(ctx context.Context, obj runtime.Object, createValid
return nil, errors.NewBadRequest("failed to validate cluster ephemeral report")
}

klog.Infof("creating cluster ephemeral reports name=%s", cephr.Name)
if !isDryRun {
if err := c.createCephr(cephr); err != nil {
return nil, errors.NewBadRequest(fmt.Sprintf("cannot create cluster ephemeral report: %s", err.Error()))
Expand Down Expand Up @@ -171,8 +174,9 @@ func (c *cephrStore) Update(ctx context.Context, name string, objInfo rest.Updat
return nil, false, errors.NewBadRequest("failed to validate cluster ephemeral report")
}

klog.Infof("updating cluster ephemeral reports name=%s", cephr.Name)
if !isDryRun {
if err := c.createCephr(cephr); err != nil {
if err := c.updateCephr(cephr, false); err != nil {
return nil, false, errors.NewBadRequest(fmt.Sprintf("cannot create cluster ephemeral report: %s", err.Error()))
}
if err := c.broadcaster.Action(watch.Modified, updatedObject); err != nil {
Expand All @@ -198,6 +202,7 @@ func (c *cephrStore) Delete(ctx context.Context, name string, deleteValidation r
return nil, false, errors.NewBadRequest(fmt.Sprintf("invalid resource: %s", err.Error()))
}

klog.Infof("deleting cluster ephemeral reports name=%s", cephr.Name)
if !isDryRun {
if err = c.deleteCephr(cephr); err != nil {
klog.ErrorS(err, "failed to delete cephr", "name", name)
Expand Down
7 changes: 6 additions & 1 deletion pkg/api/cpolr.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ func (c *cpolrStore) List(ctx context.Context, options *metainternalversion.List
// fieldSelector = options.FieldSelector
// }
}
klog.Infof("listing all cluster policy reports")
list, err := c.listCpolr()
if err != nil {
return nil, errors.NewBadRequest("failed to list resource clusterpolicyreport")
Expand All @@ -86,6 +87,7 @@ func (c *cpolrStore) List(ctx context.Context, options *metainternalversion.List
}

func (c *cpolrStore) Get(ctx context.Context, name string, options *metav1.GetOptions) (runtime.Object, error) {
klog.Infof("fetching cluster policy report name=%s", name)
report, err := c.getCpolr(name)
if err != nil || report == nil {
return nil, errors.NewNotFound(v1alpha2.Resource("clusterpolicyreports"), name)
Expand Down Expand Up @@ -115,6 +117,7 @@ func (c *cpolrStore) Create(ctx context.Context, obj runtime.Object, createValid
return nil, errors.NewBadRequest("failed to validate cluster policy report")
}

klog.Infof("creating cluster policy report name=%s", cpolr.Name)
if !isDryRun {
if err := c.createCpolr(cpolr); err != nil {
return nil, errors.NewBadRequest(fmt.Sprintf("cannot create cluster policy report: %s", err.Error()))
Expand Down Expand Up @@ -171,8 +174,9 @@ func (c *cpolrStore) Update(ctx context.Context, name string, objInfo rest.Updat
return nil, false, errors.NewBadRequest("failed to validate cluster policy report")
}

klog.Infof("updating cluster policy report name=%s", cpolr.Name)
if !isDryRun {
if err := c.createCpolr(cpolr); err != nil {
if err := c.updateCpolr(cpolr, false); err != nil {
return nil, false, errors.NewBadRequest(fmt.Sprintf("cannot create cluster policy report: %s", err.Error()))
}
if err := c.broadcaster.Action(watch.Modified, updatedObject); err != nil {
Expand All @@ -198,6 +202,7 @@ func (c *cpolrStore) Delete(ctx context.Context, name string, deleteValidation r
return nil, false, errors.NewBadRequest(fmt.Sprintf("invalid resource: %s", err.Error()))
}

klog.Infof("deleting cluster policy report name=%s", cpolr.Name)
if !isDryRun {
if err = c.deleteCpolr(cpolr); err != nil {
klog.ErrorS(err, "failed to delete cpolr", "name", name)
Expand Down
8 changes: 8 additions & 0 deletions pkg/api/ephr.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ func (p *ephrStore) List(ctx context.Context, options *metainternalversion.ListO
// }
}
namespace := genericapirequest.NamespaceValue(ctx)

klog.Infof("listing ephemeral reports for namespace=%s", namespace)
list, err := p.listEphr(namespace)
if err != nil {
return nil, errors.NewBadRequest("failed to list resource ephemeralreport")
Expand All @@ -89,6 +91,8 @@ func (p *ephrStore) List(ctx context.Context, options *metainternalversion.ListO

func (p *ephrStore) Get(ctx context.Context, name string, options *metav1.GetOptions) (runtime.Object, error) {
namespace := genericapirequest.NamespaceValue(ctx)

klog.Infof("getting ephemeral reports name=%s namespace=%s", name, namespace)
report, err := p.getEphr(name, namespace)
if err != nil || report == nil {
return nil, errors.NewNotFound(reportsv1.Resource("ephemeralreports"), name)
Expand Down Expand Up @@ -119,10 +123,12 @@ func (p *ephrStore) Create(ctx context.Context, obj runtime.Object, createValida
}

namespace := genericapirequest.NamespaceValue(ctx)

if len(ephr.Namespace) == 0 {
ephr.Namespace = namespace
}

klog.Infof("creating ephemeral reports name=%s namespace=%s", ephr.Name, ephr.Namespace)
if !isDryRun {
err := p.createEphr(ephr)
if err != nil {
Expand Down Expand Up @@ -185,6 +191,7 @@ func (p *ephrStore) Update(ctx context.Context, name string, objInfo rest.Update
ephr.Namespace = namespace
}

klog.Infof("updating ephemeral reports name=%s namespace=%s", ephr.Name, ephr.Namespace)
if !isDryRun {
err := p.updateEphr(ephr, false)
if err != nil {
Expand Down Expand Up @@ -214,6 +221,7 @@ func (p *ephrStore) Delete(ctx context.Context, name string, deleteValidation re
return nil, false, errors.NewBadRequest(fmt.Sprintf("invalid resource: %s", err.Error()))
}

klog.Infof("deleting ephemeral reports name=%s namespace=%s", ephr.Name, ephr.Namespace)
if !isDryRun {
err = p.deleteEphr(ephr)
if err != nil {
Expand Down
8 changes: 8 additions & 0 deletions pkg/api/polr.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ func (p *polrStore) List(ctx context.Context, options *metainternalversion.ListO
// }
}
namespace := genericapirequest.NamespaceValue(ctx)

klog.Infof("listing policy reports for namespace=%s", namespace)
list, err := p.listPolr(namespace)
if err != nil {
return nil, errors.NewBadRequest("failed to list resource policyreport")
Expand All @@ -89,6 +91,8 @@ func (p *polrStore) List(ctx context.Context, options *metainternalversion.ListO

func (p *polrStore) Get(ctx context.Context, name string, options *metav1.GetOptions) (runtime.Object, error) {
namespace := genericapirequest.NamespaceValue(ctx)

klog.Infof("getting policy reports name=%s namespace=%s", name, namespace)
report, err := p.getPolr(name, namespace)
if err != nil || report == nil {
return nil, errors.NewNotFound(v1alpha2.Resource("policyreports"), name)
Expand Down Expand Up @@ -119,10 +123,12 @@ func (p *polrStore) Create(ctx context.Context, obj runtime.Object, createValida
}

namespace := genericapirequest.NamespaceValue(ctx)

if len(polr.Namespace) == 0 {
polr.Namespace = namespace
}

klog.Infof("creating policy reports name=%s namespace=%s", polr.Name, polr.Namespace)
if !isDryRun {
err := p.createPolr(polr)
if err != nil {
Expand Down Expand Up @@ -185,6 +191,7 @@ func (p *polrStore) Update(ctx context.Context, name string, objInfo rest.Update
polr.Namespace = namespace
}

klog.Infof("updating policy reports name=%s namespace=%s", polr.Name, polr.Namespace)
if !isDryRun {
err := p.updatePolr(polr, false)
if err != nil {
Expand Down Expand Up @@ -214,6 +221,7 @@ func (p *polrStore) Delete(ctx context.Context, name string, deleteValidation re
return nil, false, errors.NewBadRequest(fmt.Sprintf("invalid resource: %s", err.Error()))
}

klog.Infof("deleting policy reports name=%s namespace=%s", polr.Name, polr.Namespace)
if !isDryRun {
err = p.deletePolr(polr)
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion pkg/app/opts/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ func (o Options) restConfig() (*rest.Config, error) {
return nil, fmt.Errorf("unable to construct lister client config: %v", err)
}

config.ContentType = "application/vnd.kubernetes.protobuf"
// config.ContentType = "application/vnd.kubernetes.protobuf"

err = rest.SetKubernetesDefaults(config)
if err != nil {
Expand Down
8 changes: 7 additions & 1 deletion pkg/storage/db/ephr.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,14 @@ func (p *ephrdb) List(ctx context.Context, namespace string) ([]reportsv1.Epheme
klog.Infof("listing all values for namespace:%s", namespace)
res := make([]reportsv1.EphemeralReport, 0)
var jsonb string
var rows *sql.Rows
var err error

rows, err := p.db.Query("SELECT report FROM ephemeralreports WHERE namespace = $1", namespace)
if len(namespace) == 0 {
rows, err = p.db.Query("SELECT report FROM ephemeralreports")
} else {
rows, err = p.db.Query("SELECT report FROM ephemeralreports WHERE namespace = $1", namespace)
}
if err != nil {
klog.ErrorS(err, "ephemeralreport list: ")
return nil, fmt.Errorf("ephemeralreport list %q: %v", namespace, err)
Expand Down
8 changes: 3 additions & 5 deletions pkg/storage/db/new.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ import (
)

const (
maxRetries = 10
backoffDuration = 15 * time.Second
maxRetries = 10
sleepDuration = 15 * time.Second
)

func New(config *PostgresConfig) (api.Storage, error) {
Expand All @@ -24,16 +24,14 @@ func New(config *PostgresConfig) (api.Storage, error) {
return nil, err
}

sleepDuration := 0 * time.Second
for attempt := 1; attempt <= maxRetries; attempt++ {
time.Sleep(sleepDuration)
klog.Infof("pinging postgres db, attempt: %d", attempt)
err := db.PingContext(context.TODO())
if err == nil {
break
}
klog.Error("failed to ping db", err.Error())
sleepDuration = sleepDuration + backoffDuration
time.Sleep(sleepDuration)
}

err = db.Ping()
Expand Down
9 changes: 8 additions & 1 deletion pkg/storage/db/polr.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,15 @@ func (p *polrdb) List(ctx context.Context, namespace string) ([]v1alpha2.PolicyR
klog.Infof("listing all values for namespace:%s", namespace)
res := make([]v1alpha2.PolicyReport, 0)
var jsonb string
var rows *sql.Rows
var err error

if len(namespace) == 0 {
rows, err = p.db.Query("SELECT report FROM policyreports")
} else {
rows, err = p.db.Query("SELECT report FROM policyreports WHERE namespace = $1", namespace)
}

rows, err := p.db.Query("SELECT report FROM policyreports WHERE namespace = $1", namespace)
if err != nil {
klog.ErrorS(err, "policyreport list: ")
return nil, fmt.Errorf("policyreport list %q: %v", namespace, err)
Expand Down
Loading