From d98bf27885c800d398b836035fa9a49d9ca8840a Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 2 May 2023 11:28:34 +0545 Subject: [PATCH 01/10] prepare for duty migration in canary checker --- fixtures/dummy/components.go | 26 +-- models/components.go | 323 ++++++++++++++++----------------- models/config.go | 14 ++ topology_test.go | 5 +- types/summary.go | 134 ++++++++++++++ types/types.go | 9 + types/zz_generated.deepcopy.go | 49 +++++ utils/hash.go | 22 +++ 8 files changed, 403 insertions(+), 179 deletions(-) create mode 100644 types/summary.go create mode 100644 utils/hash.go diff --git a/fixtures/dummy/components.go b/fixtures/dummy/components.go index a9c80696..c849f8c3 100644 --- a/fixtures/dummy/components.go +++ b/fixtures/dummy/components.go @@ -14,7 +14,7 @@ var Logistics = models.Component{ Labels: types.JSONStringMap{"telemetry": "enabled"}, Owner: "logistics-team", CreatedAt: DummyCreatedAt, - Status: models.ComponentStatusHealthy, + Status: types.ComponentStatusHealthy, } var LogisticsAPI = models.Component{ @@ -22,7 +22,7 @@ var LogisticsAPI = models.Component{ Name: "logistics-api", ExternalId: "dummy/logistics-api", Type: "Application", - Status: models.ComponentStatusHealthy, + Status: types.ComponentStatusHealthy, Labels: types.JSONStringMap{"telemetry": "enabled"}, Owner: "logistics-team", ParentId: &Logistics.ID, @@ -35,7 +35,7 @@ var LogisticsUI = models.Component{ Name: "logistics-ui", Type: "Application", ExternalId: "dummy/logistics-ui", - Status: models.ComponentStatusHealthy, + Status: types.ComponentStatusHealthy, Owner: "logistics-team", ParentId: &Logistics.ID, Path: Logistics.ID.String(), @@ -47,7 +47,7 @@ var LogisticsWorker = models.Component{ Name: "logistics-worker", ExternalId: "dummy/logistics-worker", Type: "Application", - Status: models.ComponentStatusHealthy, + Status: types.ComponentStatusHealthy, ParentId: &LogisticsAPI.ID, Path: Logistics.ID.String() + "." + LogisticsAPI.ID.String(), CreatedAt: DummyCreatedAt, @@ -58,7 +58,7 @@ var LogisticsDB = models.Component{ Name: "logistics-db", ExternalId: "dummy/logistics-db", Type: "Database", - Status: models.ComponentStatusUnhealthy, + Status: types.ComponentStatusUnhealthy, ParentId: &LogisticsAPI.ID, Path: Logistics.ID.String() + "." + LogisticsAPI.ID.String(), CreatedAt: DummyCreatedAt, @@ -69,7 +69,7 @@ var ClusterComponent = models.Component{ Name: "cluster", ExternalId: "dummy/cluster", Type: "KubernetesCluster", - Status: models.ComponentStatusHealthy, + Status: types.ComponentStatusHealthy, CreatedAt: DummyCreatedAt, } @@ -78,7 +78,7 @@ var NodesComponent = models.Component{ Name: "Nodes", ExternalId: "dummy/nodes", Type: "KubernetesNodes", - Status: models.ComponentStatusHealthy, + Status: types.ComponentStatusHealthy, ParentId: &ClusterComponent.ID, CreatedAt: DummyCreatedAt, } @@ -88,7 +88,7 @@ var NodeA = models.Component{ Name: "node-a", ExternalId: "dummy/node-a", Type: "KubernetesNode", - Status: models.ComponentStatusHealthy, + Status: types.ComponentStatusHealthy, ParentId: &NodesComponent.ID, CreatedAt: DummyCreatedAt, } @@ -98,7 +98,7 @@ var NodeB = models.Component{ Name: "node-b", ExternalId: "dummy/node-b", Type: "KubernetesNode", - Status: models.ComponentStatusHealthy, + Status: types.ComponentStatusHealthy, ParentId: &NodesComponent.ID, CreatedAt: DummyCreatedAt, } @@ -108,7 +108,7 @@ var PodsComponent = models.Component{ Name: "Pods", ExternalId: "dummy/pods", Type: "KubernetesPods", - Status: models.ComponentStatusHealthy, + Status: types.ComponentStatusHealthy, ParentId: &ClusterComponent.ID, CreatedAt: DummyCreatedAt, } @@ -118,7 +118,7 @@ var LogisticsAPIPod = models.Component{ Name: "logistics-api-574dc95b5d-mp64w", ExternalId: "dummy/logistics-api-574dc95b5d-mp64w", Type: "KubernetesPod", - Status: models.ComponentStatusHealthy, + Status: types.ComponentStatusHealthy, ParentId: &PodsComponent.ID, CreatedAt: DummyCreatedAt, } @@ -128,7 +128,7 @@ var LogisticsUIPod = models.Component{ Name: "logistics-ui-676b85b87c-tjjcp", Type: "KubernetesPod", ExternalId: "dummy/logistics-ui-676b85b87c-tjjcp", - Status: models.ComponentStatusHealthy, + Status: types.ComponentStatusHealthy, ParentId: &PodsComponent.ID, CreatedAt: DummyCreatedAt, } @@ -138,7 +138,7 @@ var LogisticsWorkerPod = models.Component{ Name: "logistics-worker-79cb67d8f5-lr66n", ExternalId: "dummy/logistics-worker-79cb67d8f5-lr66n", Type: "KubernetesPod", - Status: models.ComponentStatusHealthy, + Status: types.ComponentStatusHealthy, ParentId: &PodsComponent.ID, CreatedAt: DummyCreatedAt, } diff --git a/models/components.go b/models/components.go index 051c574e..3d842db6 100644 --- a/models/components.go +++ b/models/components.go @@ -9,6 +9,7 @@ import ( "strings" "time" + "github.com/flanksource/commons/console" "github.com/flanksource/commons/logger" "github.com/flanksource/duty/types" "github.com/google/uuid" @@ -17,52 +18,42 @@ import ( "gorm.io/gorm/schema" ) -type ComponentStatus string - -const ( - ComponentStatusHealthy ComponentStatus = "healthy" - ComponentStatusUnhealthy ComponentStatus = "unhealthy" - ComponentStatusWarning ComponentStatus = "warning" - ComponentStatusError ComponentStatus = "error" - ComponentStatusInfo ComponentStatus = "info" -) - type Component struct { - ID uuid.UUID `json:"id,omitempty" gorm:"default:generate_ulid()"` //nolint - TopologyID *uuid.UUID `json:"topology_id,omitempty"` - ExternalId string `json:"external_id,omitempty"` //nolint - ParentId *uuid.UUID `json:"parent_id,omitempty"` //nolint - Name string `json:"name,omitempty"` - Text string `json:"text,omitempty"` - TopologyType string `json:"topology_type,omitempty"` - Namespace string `json:"namespace,omitempty"` - Labels types.JSONStringMap `json:"labels,omitempty"` - Hidden bool `json:"hidden,omitempty"` - Silenced bool `json:"silenced,omitempty"` - Status ComponentStatus `json:"status,omitempty"` - Description string `json:"description,omitempty"` - Lifecycle string `json:"lifecycle,omitempty"` - LogSelectors types.LogSelectors `json:"logs,omitempty" gorm:"column:log_selectors"` - Tooltip string `json:"tooltip,omitempty"` - StatusReason string `json:"statusReason,omitempty"` - Schedule string `json:"schedule,omitempty"` - Icon string `json:"icon,omitempty"` - Type string `json:"type,omitempty"` - Owner string `json:"owner,omitempty"` - Selectors ResourceSelectors `json:"selectors,omitempty" gorm:"resourceSelectors" swaggerignore:"true"` - Configs types.JSON `json:"configs,omitempty"` - Properties Properties `json:"properties,omitempty" gorm:"type:properties"` - Path string `json:"path,omitempty"` - Summary Summary `json:"summary,omitempty" gorm:"type:summary"` - IsLeaf bool `json:"is_leaf"` - CostPerMinute float64 `json:"cost_per_minute,omitempty" gorm:"column:cost_per_minute"` - CostTotal1d float64 `json:"cost_total_1d,omitempty" gorm:"column:cost_total_1d"` - CostTotal7d float64 `json:"cost_total_7d,omitempty" gorm:"column:cost_total_7d"` - CostTotal30d float64 `json:"cost_total_30d,omitempty" gorm:"column:cost_total_30d"` - CreatedBy *uuid.UUID `json:"created_by,omitempty"` - CreatedAt time.Time `json:"created_at,omitempty" time_format:"postgres_timestamp" gorm:"default:CURRENT_TIMESTAMP()"` - UpdatedAt time.Time `json:"updated_at,omitempty" time_format:"postgres_timestamp" gorm:"default:CURRENT_TIMESTAMP()"` - DeletedAt *time.Time `json:"deleted_at,omitempty" time_format:"postgres_timestamp" swaggerignore:"true"` + ID uuid.UUID `json:"id,omitempty" gorm:"default:generate_ulid()"` //nolint + TopologyID *uuid.UUID `json:"topology_id,omitempty"` + ExternalId string `json:"external_id,omitempty"` //nolint + ParentId *uuid.UUID `json:"parent_id,omitempty"` //nolint + Name string `json:"name,omitempty"` + Text string `json:"text,omitempty"` + TopologyType string `json:"topology_type,omitempty"` + Namespace string `json:"namespace,omitempty"` + Labels types.JSONStringMap `json:"labels,omitempty"` + Hidden bool `json:"hidden,omitempty"` + Silenced bool `json:"silenced,omitempty"` + Status types.ComponentStatus `json:"status,omitempty"` + Description string `json:"description,omitempty"` + Lifecycle string `json:"lifecycle,omitempty"` + LogSelectors types.LogSelectors `json:"logs,omitempty" gorm:"column:log_selectors"` + Tooltip string `json:"tooltip,omitempty"` + StatusReason string `json:"statusReason,omitempty"` + Schedule string `json:"schedule,omitempty"` + Icon string `json:"icon,omitempty"` + Type string `json:"type,omitempty"` + Owner string `json:"owner,omitempty"` + Selectors ResourceSelectors `json:"selectors,omitempty" gorm:"resourceSelectors" swaggerignore:"true"` + Configs types.JSON `json:"configs,omitempty"` + Properties Properties `json:"properties,omitempty" gorm:"type:properties"` + Path string `json:"path,omitempty"` + Summary types.Summary `json:"summary,omitempty" gorm:"type:summary"` + IsLeaf bool `json:"is_leaf"` + CostPerMinute float64 `json:"cost_per_minute,omitempty" gorm:"column:cost_per_minute"` + CostTotal1d float64 `json:"cost_total_1d,omitempty" gorm:"column:cost_total_1d"` + CostTotal7d float64 `json:"cost_total_7d,omitempty" gorm:"column:cost_total_7d"` + CostTotal30d float64 `json:"cost_total_30d,omitempty" gorm:"column:cost_total_30d"` + CreatedBy *uuid.UUID `json:"created_by,omitempty"` + CreatedAt time.Time `json:"created_at,omitempty" time_format:"postgres_timestamp" gorm:"default:CURRENT_TIMESTAMP()"` + UpdatedAt time.Time `json:"updated_at,omitempty" time_format:"postgres_timestamp" gorm:"default:CURRENT_TIMESTAMP()"` + DeletedAt *time.Time `json:"deleted_at,omitempty" time_format:"postgres_timestamp" swaggerignore:"true"` // Auxiliary fields Checks map[string]int `json:"checks,omitempty" gorm:"-"` @@ -76,17 +67,17 @@ type Component struct { Parents []string `json:"parents,omitempty" gorm:"-"` } -func (c *Component) GetStatus() ComponentStatus { +func (c *Component) GetStatus() types.ComponentStatus { if c.Summary.Healthy > 0 && c.Summary.Unhealthy > 0 { - return ComponentStatusWarning + return types.ComponentStatusWarning } else if c.Summary.Unhealthy > 0 { - return ComponentStatusUnhealthy + return types.ComponentStatusUnhealthy } else if c.Summary.Warning > 0 { - return ComponentStatusWarning + return types.ComponentStatusWarning } else if c.Summary.Healthy > 0 { - return ComponentStatusHealthy + return types.ComponentStatusHealthy } else { - return ComponentStatusInfo + return types.ComponentStatusInfo } } @@ -97,29 +88,29 @@ func (component Component) GetAsEnvironment() map[string]interface{} { } } -func (c *Component) Summarize() Summary { - if c.Summary.processed { +func (c *Component) Summarize() types.Summary { + if c.Summary.IsProcessed() { return c.Summary } - var s Summary + var s types.Summary s.Incidents = c.Summary.Incidents s.Insights = c.Summary.Insights if c.Components == nil { switch c.Status { - case ComponentStatusHealthy: + case types.ComponentStatusHealthy: s.Healthy++ - case ComponentStatusUnhealthy: + case types.ComponentStatusUnhealthy: s.Unhealthy++ - case ComponentStatusWarning: + case types.ComponentStatusWarning: s.Warning++ - case ComponentStatusInfo: + case types.ComponentStatusInfo: s.Info++ } s.Incidents = c.Summary.Incidents s.Insights = c.Summary.Insights - s.processed = true + s.SetProcessed(true) return s } @@ -127,10 +118,70 @@ func (c *Component) Summarize() Summary { childSummary := child.Summarize() s = s.Add(childSummary, c.Name+"-"+child.Name) } - s.processed = true + s.SetProcessed(true) return s } +func (component Component) GetID() string { + if component.ID != uuid.Nil { + return component.ID.String() + } + if component.Text != "" { + return component.Text + } + return component.Name +} + +func (component Component) Clone() Component { + clone := Component{ + Name: component.Name, + TopologyType: component.TopologyType, + Order: component.Order, + ID: component.ID, + Text: component.Text, + Namespace: component.Namespace, + Labels: component.Labels, + Tooltip: component.Tooltip, + Icon: component.Icon, + Owner: component.Owner, + Status: component.Status, + StatusReason: component.StatusReason, + Type: component.Type, + Lifecycle: component.Lifecycle, + Checks: component.Checks, + Configs: component.Configs, + Properties: component.Properties, + ExternalId: component.ExternalId, + Schedule: component.Schedule, + } + + copy(clone.LogSelectors, component.LogSelectors) + return clone +} + +func (component Component) String() string { + s := "" + if component.Type != "" { + s += component.Type + "/" + } + if component.Namespace != "" { + s += component.Namespace + "/" + } + if component.Text != "" { + s += component.Text + } else if component.Name != "" { + s += component.Name + } else { + s += component.ExternalId + } + return s +} + +func (component Component) IsHealthy() bool { + s := component.Summarize() + return s.Healthy > 0 && s.Unhealthy == 0 && s.Warning == 0 +} + type Components []*Component func (components Components) Map(fn func(c *Component)) { @@ -142,130 +193,74 @@ func (components Components) Map(fn func(c *Component)) { } } -type Text struct { - Tooltip string `json:"tooltip,omitempty"` - Icon string `json:"icon,omitempty"` - Text string `json:"text,omitempty"` - Label string `json:"label,omitempty"` -} - -type Link struct { - // e.g. documentation, support, playbook - Type string `json:"type,omitempty"` - URL string `json:"url,omitempty"` - Text `json:",inline"` -} - -type Latency struct { - Percentile99 float64 `json:"p99,omitempty" db:"p99"` - Percentile97 float64 `json:"p97,omitempty" db:"p97"` - Percentile95 float64 `json:"p95,omitempty" db:"p95"` - Rolling1H float64 `json:"rolling1h"` -} +func (components Components) Debug(prefix string) string { + var s string + for _, component := range components { + status := component.Status -type Summary struct { - Healthy int `json:"healthy,omitempty"` - Unhealthy int `json:"unhealthy,omitempty"` - Warning int `json:"warning,omitempty"` - Info int `json:"info,omitempty"` - Incidents map[string]map[string]int `json:"incidents,omitempty"` - Insights map[string]map[string]int `json:"insights,omitempty"` + if component.IsHealthy() { + status = types.ComponentStatus(console.Greenf(string(status))) + } else { + status = types.ComponentStatus(console.Redf(string(status))) + } - // processed is used to prevent from being caluclated twice - processed bool -} + s += fmt.Sprintf("%s%s (%s) => %s\n", prefix, component, component.GetID(), status) + s += component.Components.Debug(prefix + "\t") + } -func (s Summary) String() string { - type _s Summary - return fmt.Sprintf("%+v", _s(s)) + return s } -func (s Summary) Add(b Summary, n string) Summary { - if b.Healthy > 0 && b.Unhealthy > 0 { - s.Warning += 1 - } else if b.Unhealthy > 0 { - s.Unhealthy += 1 - } else if b.Healthy > 0 { - s.Healthy += 1 - } - if b.Warning > 0 { - s.Warning += b.Warning - } - if b.Info > 0 { - s.Info += b.Info +func (components Components) Summarize() types.Summary { + var s types.Summary + for _, component := range components { + s = s.Add(component.Summarize(), "TODO:") } - if s.Insights == nil { - s.Insights = make(map[string]map[string]int) - } - for typ, details := range b.Insights { - if _, exists := s.Insights[typ]; !exists { - s.Insights[typ] = make(map[string]int) - } - for sev, count := range details { - s.Insights[typ][sev] += count - } - } + return s +} - if s.Incidents == nil { - s.Incidents = make(map[string]map[string]int) - } - for typ, details := range b.Incidents { - if _, exists := s.Incidents[typ]; !exists { - s.Incidents[typ] = make(map[string]int) - } - for sev, count := range details { - s.Incidents[typ][sev] += count +func (components Components) Walk() Components { + var comps Components + for _, _c := range components { + c := _c + comps = append(comps, c) + if c.Components != nil { + comps = append(comps, c.Components.Walk()...) } } - return s -} - -// Scan scan value into Jsonb, implements sql.Scanner interface -func (s Summary) Value() (driver.Value, error) { - return json.Marshal(s) + return comps } -// Scan scan value into Jsonb, implements sql.Scanner interface -func (s *Summary) Scan(val any) error { - if val == nil { - *s = Summary{} - return nil - } - var ba []byte - switch v := val.(type) { - case []byte: - ba = v - case string: - ba = []byte(v) - default: - return fmt.Errorf("failed to unmarshal properties. (type=%T, value=%v)", val, val) +func (components Components) Find(name string) *Component { + for _, component := range components { + if component.Name == name { + return component + } } - err := json.Unmarshal(ba, s) - return err + return nil } -// GormDataType gorm common data type -func (Summary) GormDataType() string { - return "summary" +type Text struct { + Tooltip string `json:"tooltip,omitempty"` + Icon string `json:"icon,omitempty"` + Text string `json:"text,omitempty"` + Label string `json:"label,omitempty"` } -func (Summary) GormDBDataType(db *gorm.DB, field *schema.Field) string { - switch db.Dialector.Name() { - case types.SqliteType: - return types.Text - case types.PostgresType: - return types.JSONBType - case types.SQLServerType: - return types.NVarcharType - } - return "" +type Link struct { + // e.g. documentation, support, playbook + Type string `json:"type,omitempty"` + URL string `json:"url,omitempty"` + Text `json:",inline"` } -func (s Summary) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { - data, _ := json.Marshal(s) - return gorm.Expr("?", data) +type Latency struct { + Percentile99 float64 `json:"p99,omitempty" db:"p99"` + Percentile97 float64 `json:"p97,omitempty" db:"p97"` + Percentile95 float64 `json:"p95,omitempty" db:"p95"` + Rolling1H float64 `json:"rolling1h"` } // Property is a realized v1.Property without the lookup definition diff --git a/models/config.go b/models/config.go index 70860f99..b6b326b7 100644 --- a/models/config.go +++ b/models/config.go @@ -7,6 +7,7 @@ import ( "time" "github.com/flanksource/duty/types" + "github.com/flanksource/duty/utils" "github.com/google/uuid" "github.com/lib/pq" "gorm.io/gorm" @@ -66,6 +67,19 @@ func (ci ConfigItem) ConfigJSONStringMap() (map[string]any, error) { return m, err } +func (c ConfigItem) GetSelectorID() string { + if c.Config == nil || *c.Config == "" { + return "" + } + + selectorID, err := utils.GenerateJSONMD5Hash(c.Config) + if err != nil { + return "" + } + + return selectorID +} + // ConfigScraper represents the config_scrapers database table type ConfigScraper struct { ID uuid.UUID `json:"id"` diff --git a/topology_test.go b/topology_test.go index e0cc5b73..4fe1e3cc 100644 --- a/topology_test.go +++ b/topology_test.go @@ -8,6 +8,7 @@ import ( "github.com/flanksource/duty/fixtures/dummy" "github.com/flanksource/duty/models" "github.com/flanksource/duty/testutils" + "github.com/flanksource/duty/types" ginkgo "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" ) @@ -91,11 +92,11 @@ var _ = ginkgo.Describe("Topology behavior", func() { }) ginkgo.It("Should test tree with status filter", func() { - testTopologyJSON(TopologyOptions{Status: []string{string(models.ComponentStatusWarning)}}, "fixtures/expectations/topology_tree_with_status_filter.json") + testTopologyJSON(TopologyOptions{Status: []string{string(types.ComponentStatusWarning)}}, "fixtures/expectations/topology_tree_with_status_filter.json") }) ginkgo.It("Should test tree with ID and status filter", func() { - testTopologyJSON(TopologyOptions{ID: dummy.LogisticsAPI.ID.String(), Status: []string{string(models.ComponentStatusHealthy)}}, "fixtures/expectations/topology_tree_with_id_and_status_filter.json") + testTopologyJSON(TopologyOptions{ID: dummy.LogisticsAPI.ID.String(), Status: []string{string(types.ComponentStatusHealthy)}}, "fixtures/expectations/topology_tree_with_id_and_status_filter.json") }) }) diff --git a/types/summary.go b/types/summary.go new file mode 100644 index 00000000..c7e50605 --- /dev/null +++ b/types/summary.go @@ -0,0 +1,134 @@ +package types + +import ( + "context" + "database/sql/driver" + "encoding/json" + "fmt" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" +) + +type ComponentStatus string + +const ( + ComponentStatusHealthy ComponentStatus = "healthy" + ComponentStatusUnhealthy ComponentStatus = "unhealthy" + ComponentStatusWarning ComponentStatus = "warning" + ComponentStatusError ComponentStatus = "error" + ComponentStatusInfo ComponentStatus = "info" +) + +// +kubebuilder:object:generate=true +type Summary struct { + Healthy int `json:"healthy,omitempty"` + Unhealthy int `json:"unhealthy,omitempty"` + Warning int `json:"warning,omitempty"` + Info int `json:"info,omitempty"` + Incidents map[string]map[string]int `json:"incidents,omitempty"` + Insights map[string]map[string]int `json:"insights,omitempty"` + + // processed is used to prevent from being caluclated twice + processed bool +} + +func (s *Summary) SetProcessed(val bool) { + s.processed = val +} + +func (s Summary) IsProcessed() bool { + return s.processed +} + +func (s Summary) String() string { + type _s Summary + return fmt.Sprintf("%+v", _s(s)) +} + +func (s Summary) GetStatus() ComponentStatus { + if s.Unhealthy > 0 { + return ComponentStatusUnhealthy + } else if s.Warning > 0 { + return ComponentStatusWarning + } else if s.Healthy > 0 { + return ComponentStatusHealthy + } + return "unknown" +} + +func (s Summary) Add(b Summary, n string) Summary { + if b.Healthy > 0 && b.Unhealthy > 0 { + s.Warning += 1 + } else if b.Unhealthy > 0 { + s.Unhealthy += 1 + } else if b.Healthy > 0 { + s.Healthy += 1 + } + if b.Warning > 0 { + s.Warning += b.Warning + } + if b.Info > 0 { + s.Info += b.Info + } + + if s.Insights == nil { + s.Insights = make(map[string]map[string]int) + } + for typ, details := range b.Insights { + if _, exists := s.Insights[typ]; !exists { + s.Insights[typ] = make(map[string]int) + } + for sev, count := range details { + s.Insights[typ][sev] += count + } + } + + if s.Incidents == nil { + s.Incidents = make(map[string]map[string]int) + } + for typ, details := range b.Incidents { + if _, exists := s.Incidents[typ]; !exists { + s.Incidents[typ] = make(map[string]int) + } + for sev, count := range details { + s.Incidents[typ][sev] += count + } + } + + return s +} + +// Scan scan value into Jsonb, implements sql.Scanner interface +func (s Summary) Value() (driver.Value, error) { + return GenericStructValue(s, true) +} + +// Scan scan value into Jsonb, implements sql.Scanner interface +func (s *Summary) Scan(val any) error { + return GenericStructScan(&s, val) +} + +// GormDataType gorm common data type +func (Summary) GormDataType() string { + return "summary" +} + +func (Summary) GormDBDataType(db *gorm.DB, field *schema.Field) string { + switch db.Dialector.Name() { + case SqliteType: + return Text + case PostgresType: + return JSONBType + case SQLServerType: + return NVarcharType + } + + return "" +} + +func (s Summary) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { + data, _ := json.Marshal(s) + return gorm.Expr("?", data) +} diff --git a/types/types.go b/types/types.go index 9e44d410..9e40306e 100644 --- a/types/types.go +++ b/types/types.go @@ -283,6 +283,15 @@ func (jm JSONStringMap) GormValue(ctx context.Context, db *gorm.DB) clause.Expr return gorm.Expr("?", string(data)) } +func (jm JSONStringMap) ToMapStringAny() map[string]any { + r := make(map[string]any, len(jm)) + for k, v := range jm { + r[k] = v + } + + return r +} + // JSONMap defiend JSON data type, need to implements driver.Valuer, sql.Scanner interface type JSONMap map[string]any diff --git a/types/zz_generated.deepcopy.go b/types/zz_generated.deepcopy.go index 510dc404..dfa6cc7c 100644 --- a/types/zz_generated.deepcopy.go +++ b/types/zz_generated.deepcopy.go @@ -120,3 +120,52 @@ func (in *SecretKeySelector) DeepCopy() *SecretKeySelector { in.DeepCopyInto(out) return out } + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Summary) DeepCopyInto(out *Summary) { + *out = *in + if in.Incidents != nil { + in, out := &in.Incidents, &out.Incidents + *out = make(map[string]map[string]int, len(*in)) + for key, val := range *in { + var outVal map[string]int + if val == nil { + (*out)[key] = nil + } else { + in, out := &val, &outVal + *out = make(map[string]int, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + (*out)[key] = outVal + } + } + if in.Insights != nil { + in, out := &in.Insights, &out.Insights + *out = make(map[string]map[string]int, len(*in)) + for key, val := range *in { + var outVal map[string]int + if val == nil { + (*out)[key] = nil + } else { + in, out := &val, &outVal + *out = make(map[string]int, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + (*out)[key] = outVal + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Summary. +func (in *Summary) DeepCopy() *Summary { + if in == nil { + return nil + } + out := new(Summary) + in.DeepCopyInto(out) + return out +} diff --git a/utils/hash.go b/utils/hash.go new file mode 100644 index 00000000..4086b535 --- /dev/null +++ b/utils/hash.go @@ -0,0 +1,22 @@ +package utils + +import ( + "crypto/md5" + "encoding/hex" + "encoding/json" +) + +// GenerateJSONMD5Hash marshals the object into JSON and generates its md5 hash +func GenerateJSONMD5Hash(obj any) (string, error) { + data, err := json.Marshal(obj) + if err != nil { + return "", err + } + + hash := md5.Sum(data) + if err != nil { + return "", err + } + + return hex.EncodeToString(hash[:]), nil +} From 16019ee4d6c5ca1a1517cf03c89c655897355744 Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 2 May 2023 14:52:36 +0545 Subject: [PATCH 02/10] added config query. Replace types.JSON with ConfigQuery in Component struct [skip ci] --- models/components.go | 124 +++++++++-------------------- types/{summary.go => component.go} | 77 ++++++++++++++++++ types/config.go | 67 ++++++++++++++++ types/zz_generated.deepcopy.go | 27 +++++++ 4 files changed, 207 insertions(+), 88 deletions(-) rename types/{summary.go => component.go} (60%) create mode 100644 types/config.go diff --git a/models/components.go b/models/components.go index 3d842db6..229c418c 100644 --- a/models/components.go +++ b/models/components.go @@ -19,41 +19,42 @@ import ( ) type Component struct { - ID uuid.UUID `json:"id,omitempty" gorm:"default:generate_ulid()"` //nolint - TopologyID *uuid.UUID `json:"topology_id,omitempty"` - ExternalId string `json:"external_id,omitempty"` //nolint - ParentId *uuid.UUID `json:"parent_id,omitempty"` //nolint - Name string `json:"name,omitempty"` - Text string `json:"text,omitempty"` - TopologyType string `json:"topology_type,omitempty"` - Namespace string `json:"namespace,omitempty"` - Labels types.JSONStringMap `json:"labels,omitempty"` - Hidden bool `json:"hidden,omitempty"` - Silenced bool `json:"silenced,omitempty"` - Status types.ComponentStatus `json:"status,omitempty"` - Description string `json:"description,omitempty"` - Lifecycle string `json:"lifecycle,omitempty"` - LogSelectors types.LogSelectors `json:"logs,omitempty" gorm:"column:log_selectors"` - Tooltip string `json:"tooltip,omitempty"` - StatusReason string `json:"statusReason,omitempty"` - Schedule string `json:"schedule,omitempty"` - Icon string `json:"icon,omitempty"` - Type string `json:"type,omitempty"` - Owner string `json:"owner,omitempty"` - Selectors ResourceSelectors `json:"selectors,omitempty" gorm:"resourceSelectors" swaggerignore:"true"` - Configs types.JSON `json:"configs,omitempty"` - Properties Properties `json:"properties,omitempty" gorm:"type:properties"` - Path string `json:"path,omitempty"` - Summary types.Summary `json:"summary,omitempty" gorm:"type:summary"` - IsLeaf bool `json:"is_leaf"` - CostPerMinute float64 `json:"cost_per_minute,omitempty" gorm:"column:cost_per_minute"` - CostTotal1d float64 `json:"cost_total_1d,omitempty" gorm:"column:cost_total_1d"` - CostTotal7d float64 `json:"cost_total_7d,omitempty" gorm:"column:cost_total_7d"` - CostTotal30d float64 `json:"cost_total_30d,omitempty" gorm:"column:cost_total_30d"` - CreatedBy *uuid.UUID `json:"created_by,omitempty"` - CreatedAt time.Time `json:"created_at,omitempty" time_format:"postgres_timestamp" gorm:"default:CURRENT_TIMESTAMP()"` - UpdatedAt time.Time `json:"updated_at,omitempty" time_format:"postgres_timestamp" gorm:"default:CURRENT_TIMESTAMP()"` - DeletedAt *time.Time `json:"deleted_at,omitempty" time_format:"postgres_timestamp" swaggerignore:"true"` + ID uuid.UUID `json:"id,omitempty" gorm:"default:generate_ulid()"` //nolint + TopologyID *uuid.UUID `json:"topology_id,omitempty"` + ExternalId string `json:"external_id,omitempty"` //nolint + ParentId *uuid.UUID `json:"parent_id,omitempty"` //nolint + Name string `json:"name,omitempty"` + Text string `json:"text,omitempty"` + TopologyType string `json:"topology_type,omitempty"` + Namespace string `json:"namespace,omitempty"` + Labels types.JSONStringMap `json:"labels,omitempty"` + Hidden bool `json:"hidden,omitempty"` + Silenced bool `json:"silenced,omitempty"` + Status types.ComponentStatus `json:"status,omitempty"` + Description string `json:"description,omitempty"` + Lifecycle string `json:"lifecycle,omitempty"` + LogSelectors types.LogSelectors `json:"logs,omitempty" gorm:"column:log_selectors"` + Tooltip string `json:"tooltip,omitempty"` + StatusReason string `json:"statusReason,omitempty"` + Schedule string `json:"schedule,omitempty"` + Icon string `json:"icon,omitempty"` + Type string `json:"type,omitempty"` + Owner string `json:"owner,omitempty"` + Selectors types.ResourceSelectors `json:"selectors,omitempty" gorm:"resourceSelectors" swaggerignore:"true"` + Configs types.ConfigQueries `json:"configs,omitempty"` + ComponentChecks types.ComponentChecks `json:"componentChecks,omitempty"` + Properties Properties `json:"properties,omitempty" gorm:"type:properties"` + Path string `json:"path,omitempty"` + Summary types.Summary `json:"summary,omitempty" gorm:"type:summary"` + IsLeaf bool `json:"is_leaf"` + CostPerMinute float64 `json:"cost_per_minute,omitempty" gorm:"column:cost_per_minute"` + CostTotal1d float64 `json:"cost_total_1d,omitempty" gorm:"column:cost_total_1d"` + CostTotal7d float64 `json:"cost_total_7d,omitempty" gorm:"column:cost_total_7d"` + CostTotal30d float64 `json:"cost_total_30d,omitempty" gorm:"column:cost_total_30d"` + CreatedBy *uuid.UUID `json:"created_by,omitempty"` + CreatedAt time.Time `json:"created_at,omitempty" time_format:"postgres_timestamp" gorm:"default:CURRENT_TIMESTAMP()"` + UpdatedAt time.Time `json:"updated_at,omitempty" time_format:"postgres_timestamp" gorm:"default:CURRENT_TIMESTAMP()"` + DeletedAt *time.Time `json:"deleted_at,omitempty" time_format:"postgres_timestamp" swaggerignore:"true"` // Auxiliary fields Checks map[string]int `json:"checks,omitempty" gorm:"-"` @@ -438,59 +439,6 @@ func (p Properties) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { return gorm.Expr("?", data) } -type ResourceSelectors []ResourceSelector - -type ResourceSelector struct { - Name string `yaml:"name,omitempty" json:"name,omitempty"` - LabelSelector string `json:"labelSelector,omitempty" yaml:"labelSelector,omitempty"` - FieldSelector string `json:"fieldSelector,omitempty" yaml:"fieldSelector,omitempty"` -} - -func (rs *ResourceSelectors) Scan(val any) error { - if val == nil { - *rs = ResourceSelectors{} - return nil - } - var ba []byte - switch v := val.(type) { - case []byte: - ba = v - default: - return errors.New(fmt.Sprint("Failed to unmarshal ResourceSelectors value:", val)) - } - return json.Unmarshal(ba, rs) -} - -func (rs ResourceSelectors) Value() (driver.Value, error) { - if len(rs) == 0 { - return []byte("[]"), nil - } - return json.Marshal(rs) -} - -// GormDataType gorm common data type -func (rs ResourceSelectors) GormDataType() string { - return "resourceSelectors" -} - -// GormDBDataType gorm db data type -func (ResourceSelectors) GormDBDataType(db *gorm.DB, field *schema.Field) string { - switch db.Dialector.Name() { - case types.SqliteType: - return types.JSONType - case types.PostgresType: - return types.JSONBType - case types.SQLServerType: - return types.NVarcharType - } - return "" -} - -func (rs ResourceSelectors) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { - data, _ := json.Marshal(rs) - return gorm.Expr("?", string(data)) -} - type ComponentRelationship struct { ComponentID uuid.UUID `gorm:"column:component_id" json:"component_id,omitempty"` RelationshipID uuid.UUID `gorm:"column:relationship_id" json:"relationship_id,omitempty"` diff --git a/types/summary.go b/types/component.go similarity index 60% rename from types/summary.go rename to types/component.go index c7e50605..a3c57593 100644 --- a/types/summary.go +++ b/types/component.go @@ -132,3 +132,80 @@ func (s Summary) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { data, _ := json.Marshal(s) return gorm.Expr("?", data) } + +type ResourceSelectors []ResourceSelector + +type ResourceSelector struct { + Name string `yaml:"name,omitempty" json:"name,omitempty"` + LabelSelector string `json:"labelSelector,omitempty" yaml:"labelSelector,omitempty"` + FieldSelector string `json:"fieldSelector,omitempty" yaml:"fieldSelector,omitempty"` +} + +func (rs *ResourceSelectors) Scan(val any) error { + return GenericStructScan(&rs, val) +} + +func (rs ResourceSelectors) Value() (driver.Value, error) { + return GenericStructValue(rs, true) +} + +// GormDataType gorm common data type +func (rs ResourceSelectors) GormDataType() string { + return "resourceSelectors" +} + +// GormDBDataType gorm db data type +func (ResourceSelectors) GormDBDataType(db *gorm.DB, field *schema.Field) string { + switch db.Dialector.Name() { + case SqliteType: + return JSONType + case PostgresType: + return JSONBType + case SQLServerType: + return NVarcharType + } + return "" +} + +func (rs ResourceSelectors) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { + data, _ := json.Marshal(rs) + return gorm.Expr("?", string(data)) +} + +type ComponentCheck struct { + Selector ResourceSelector `json:"selector,omitempty"` + Inline *JSON `json:"inline,omitempty"` +} + +type ComponentChecks []ComponentCheck + +func (cs ComponentChecks) Value() (driver.Value, error) { + return GenericStructValue(cs, true) +} + +func (cs *ComponentChecks) Scan(val interface{}) error { + return GenericStructScan(&cs, val) +} + +// GormDataType gorm common data type +func (cs ComponentChecks) GormDataType() string { + return "componentChecks" +} + +// GormDBDataType gorm db data type +func (ComponentChecks) GormDBDataType(db *gorm.DB, field *schema.Field) string { + switch db.Dialector.Name() { + case SqliteType: + return JSONType + case PostgresType: + return JSONBType + case SQLServerType: + return NVarcharType + } + return "" +} + +func (cs ComponentChecks) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { + data, _ := json.Marshal(cs) + return gorm.Expr("?", string(data)) +} diff --git a/types/config.go b/types/config.go new file mode 100644 index 00000000..955de6c2 --- /dev/null +++ b/types/config.go @@ -0,0 +1,67 @@ +package types + +import ( + "context" + "database/sql/driver" + "encoding/json" + "fmt" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" +) + +// +kubebuilder:object:generate=true +// ConfigQuery is used to look up and associate +// config items with a component. +type ConfigQuery struct { + ID []string `json:"id,omitempty"` + Type string `json:"type,omitempty"` + Name string `json:"name,omitempty"` + Namespace string `json:"namespace,omitempty"` + Tags map[string]string `json:"tags,omitempty"` +} + +func (c ConfigQuery) String() string { + s := c.Type + if c.Namespace != "" { + s += "/" + c.Namespace + } + + if c.Name != "" { + s += "/" + c.Name + } + + if len(c.Tags) > 0 { + s += " " + fmt.Sprintf("%v", c.Tags) + } + + return s +} + +type ConfigQueries []*ConfigQuery + +func (t ConfigQueries) Value() (driver.Value, error) { + return GenericStructValue(t, true) +} + +func (t *ConfigQueries) Scan(val any) error { + return GenericStructScan(&t, val) +} + +func (t ConfigQueries) GormDBDataType(db *gorm.DB, field *schema.Field) string { + switch db.Dialector.Name() { + case SqliteType: + return JSONType + case PostgresType: + return JSONBType + case SQLServerType: + return NVarcharType + } + return "" +} + +func (t ConfigQueries) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { + data, _ := json.Marshal(t) + return gorm.Expr("?", string(data)) +} diff --git a/types/zz_generated.deepcopy.go b/types/zz_generated.deepcopy.go index dfa6cc7c..0ec8a5f8 100644 --- a/types/zz_generated.deepcopy.go +++ b/types/zz_generated.deepcopy.go @@ -23,6 +23,33 @@ func (in *ConfigMapKeySelector) DeepCopy() *ConfigMapKeySelector { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigQuery) DeepCopyInto(out *ConfigQuery) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigQuery. +func (in *ConfigQuery) DeepCopy() *ConfigQuery { + if in == nil { + return nil + } + out := new(ConfigQuery) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EnvVar) DeepCopyInto(out *EnvVar) { *out = *in From 4acf4c7803b932871fac819a4b6a49788098d686 Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 2 May 2023 16:45:22 +0545 Subject: [PATCH 03/10] add class & external id to config query --- types/config.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/types/config.go b/types/config.go index 955de6c2..29b9aa6f 100644 --- a/types/config.go +++ b/types/config.go @@ -15,11 +15,13 @@ import ( // ConfigQuery is used to look up and associate // config items with a component. type ConfigQuery struct { - ID []string `json:"id,omitempty"` - Type string `json:"type,omitempty"` - Name string `json:"name,omitempty"` - Namespace string `json:"namespace,omitempty"` - Tags map[string]string `json:"tags,omitempty"` + ID []string `json:"id,omitempty"` + Type string `json:"type,omitempty"` + Class string `json:"class,omitempty"` + ExternalID string `json:"external_id,omitempty"` + Name string `json:"name,omitempty"` + Namespace string `json:"namespace,omitempty"` + Tags map[string]string `json:"tags,omitempty"` } func (c ConfigQuery) String() string { From f20c16910adcc4dd964a1daeb1589a61ccfe22b0 Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 2 May 2023 18:02:33 +0545 Subject: [PATCH 04/10] chore: fix test. * Remove config: null from fixture --- fixtures/expectations/topology_child_tree.json | 3 --- .../topology_depth_1_child_tree.json | 1 - .../expectations/topology_depth_1_root_tree.json | 2 -- .../expectations/topology_depth_2_root_tree.json | 6 ------ fixtures/expectations/topology_root_tree.json | 16 ---------------- .../topology_tree_with_id_and_status_filter.json | 2 -- .../topology_tree_with_label_filter.json | 2 -- .../topology_tree_with_owner_filter.json | 3 --- .../topology_tree_with_status_filter.json | 4 ---- .../topology_tree_with_type_filter.json | 1 - 10 files changed, 40 deletions(-) diff --git a/fixtures/expectations/topology_child_tree.json b/fixtures/expectations/topology_child_tree.json index 176b121b..ed8f67e7 100644 --- a/fixtures/expectations/topology_child_tree.json +++ b/fixtures/expectations/topology_child_tree.json @@ -16,7 +16,6 @@ "name": "node-a", "status": "healthy", "type": "KubernetesNode", - "configs": null, "summary": { "healthy": 2 }, @@ -31,7 +30,6 @@ "name": "logistics-api-574dc95b5d-mp64w", "status": "healthy", "type": "KubernetesPod", - "configs": null, "summary": { "healthy": 1 }, @@ -46,7 +44,6 @@ "name": "logistics-ui-676b85b87c-tjjcp", "status": "healthy", "type": "KubernetesPod", - "configs": null, "summary": { "healthy": 1 }, diff --git a/fixtures/expectations/topology_depth_1_child_tree.json b/fixtures/expectations/topology_depth_1_child_tree.json index 2d8e4280..e7852fea 100644 --- a/fixtures/expectations/topology_depth_1_child_tree.json +++ b/fixtures/expectations/topology_depth_1_child_tree.json @@ -25,7 +25,6 @@ "status": "warning", "type": "Application", "owner": "logistics-team", - "configs": null, "checks": { "healthy": 2 }, diff --git a/fixtures/expectations/topology_depth_1_root_tree.json b/fixtures/expectations/topology_depth_1_root_tree.json index c328b908..5cbfebfa 100644 --- a/fixtures/expectations/topology_depth_1_root_tree.json +++ b/fixtures/expectations/topology_depth_1_root_tree.json @@ -30,7 +30,6 @@ "labels": { "telemetry": "enabled" }, - "configs": null, "summary": { "healthy": 1, "warning": 1, @@ -55,7 +54,6 @@ "name": "cluster", "status": "healthy", "type": "KubernetesCluster", - "configs": null, "summary": { "healthy": 2, "insights": { diff --git a/fixtures/expectations/topology_depth_2_root_tree.json b/fixtures/expectations/topology_depth_2_root_tree.json index 1f287bfb..c27865e3 100644 --- a/fixtures/expectations/topology_depth_2_root_tree.json +++ b/fixtures/expectations/topology_depth_2_root_tree.json @@ -30,7 +30,6 @@ "status": "warning", "type": "Entity", "owner": "logistics-team", - "configs": null, "summary": { "healthy": 1, "warning": 1, @@ -60,7 +59,6 @@ "status": "warning", "type": "Application", "owner": "logistics-team", - "configs": null, "checks": { "healthy": 2 }, @@ -91,7 +89,6 @@ "status": "healthy", "type": "Application", "owner": "logistics-team", - "configs": null, "path": "018681fc-e54f-bd4f-42be-068a9a69eeb5", "summary": { "healthy": 1 @@ -108,7 +105,6 @@ "name": "cluster", "status": "healthy", "type": "KubernetesCluster", - "configs": null, "summary": { "healthy": 2, "insights": { @@ -128,7 +124,6 @@ "name": "Nodes", "status": "healthy", "type": "KubernetesNodes", - "configs": null, "summary": { "healthy": 2, "insights": { @@ -148,7 +143,6 @@ "name": "Pods", "status": "healthy", "type": "KubernetesPods", - "configs": null, "summary": { "healthy": 3 }, diff --git a/fixtures/expectations/topology_root_tree.json b/fixtures/expectations/topology_root_tree.json index 72a76ac7..e8224fe6 100644 --- a/fixtures/expectations/topology_root_tree.json +++ b/fixtures/expectations/topology_root_tree.json @@ -30,7 +30,6 @@ "labels": { "telemetry": "enabled" }, - "configs": null, "summary": { "healthy": 1, "warning": 1, @@ -60,7 +59,6 @@ }, "status": "warning", "type": "Application", - "configs": null, "checks": { "healthy": 2 }, @@ -90,7 +88,6 @@ "name": "logistics-worker", "status": "healthy", "type": "Application", - "configs": null, "path": "018681fc-e54f-bd4f-42be-068a9a69eeb5.018681fd-5770-336f-227c-259435d7fc6b", "summary": { "healthy": 1 @@ -106,7 +103,6 @@ "name": "logistics-db", "status": "unhealthy", "type": "Database", - "configs": null, "checks": { "unhealthy": 1 }, @@ -138,7 +134,6 @@ "owner": "logistics-team", "status": "healthy", "type": "Application", - "configs": null, "path": "018681fc-e54f-bd4f-42be-068a9a69eeb5", "summary": { "healthy": 1 @@ -155,7 +150,6 @@ "name": "cluster", "status": "healthy", "type": "KubernetesCluster", - "configs": null, "summary": { "healthy": 2, "insights": { @@ -175,7 +169,6 @@ "name": "Nodes", "status": "healthy", "type": "KubernetesNodes", - "configs": null, "summary": { "healthy": 2, "insights": { @@ -203,7 +196,6 @@ "name": "logistics-api-574dc95b5d-mp64w", "status": "healthy", "type": "KubernetesPod", - "configs": null, "summary": { "healthy": 1 }, @@ -221,7 +213,6 @@ "name": "logistics-ui-676b85b87c-tjjcp", "status": "healthy", "type": "KubernetesPod", - "configs": null, "summary": { "healthy": 1 }, @@ -233,7 +224,6 @@ ] } ], - "configs": null, "summary": { "healthy": 2 }, @@ -256,7 +246,6 @@ "name": "logistics-worker-79cb67d8f5-lr66n", "status": "healthy", "type": "KubernetesPod", - "configs": null, "summary": { "healthy": 1 }, @@ -268,7 +257,6 @@ ] } ], - "configs": null, "summary": { "healthy": 1, "insights": { @@ -290,7 +278,6 @@ "name": "Pods", "status": "healthy", "type": "KubernetesPods", - "configs": null, "summary": { "healthy": 3 }, @@ -305,7 +292,6 @@ "name": "logistics-api-574dc95b5d-mp64w", "status": "healthy", "type": "KubernetesPod", - "configs": null, "summary": { "healthy": 1 }, @@ -320,7 +306,6 @@ "name": "logistics-ui-676b85b87c-tjjcp", "status": "healthy", "type": "KubernetesPod", - "configs": null, "summary": { "healthy": 1 }, @@ -335,7 +320,6 @@ "name": "logistics-worker-79cb67d8f5-lr66n", "status": "healthy", "type": "KubernetesPod", - "configs": null, "summary": { "healthy": 1 }, diff --git a/fixtures/expectations/topology_tree_with_id_and_status_filter.json b/fixtures/expectations/topology_tree_with_id_and_status_filter.json index 20babcee..a273340b 100644 --- a/fixtures/expectations/topology_tree_with_id_and_status_filter.json +++ b/fixtures/expectations/topology_tree_with_id_and_status_filter.json @@ -25,7 +25,6 @@ "status": "warning", "type": "Application", "owner": "logistics-team", - "configs": null, "checks": { "healthy": 2 }, @@ -55,7 +54,6 @@ "name": "logistics-worker", "status": "healthy", "type": "Application", - "configs": null, "path": "018681fc-e54f-bd4f-42be-068a9a69eeb5.018681fd-5770-336f-227c-259435d7fc6b", "summary": { "healthy": 1 diff --git a/fixtures/expectations/topology_tree_with_label_filter.json b/fixtures/expectations/topology_tree_with_label_filter.json index 5e3328b8..14ca10df 100644 --- a/fixtures/expectations/topology_tree_with_label_filter.json +++ b/fixtures/expectations/topology_tree_with_label_filter.json @@ -23,7 +23,6 @@ "status": "healthy", "type": "Entity", "owner": "logistics-team", - "configs": null, "summary": { "healthy": 1 }, @@ -42,7 +41,6 @@ "status": "healthy", "type": "Application", "owner": "logistics-team", - "configs": null, "checks": { "healthy": 2 }, diff --git a/fixtures/expectations/topology_tree_with_owner_filter.json b/fixtures/expectations/topology_tree_with_owner_filter.json index 53bb7dc7..4d669c88 100644 --- a/fixtures/expectations/topology_tree_with_owner_filter.json +++ b/fixtures/expectations/topology_tree_with_owner_filter.json @@ -23,7 +23,6 @@ "status": "healthy", "type": "Entity", "owner": "logistics-team", - "configs": null, "summary": { "healthy": 2 }, @@ -42,7 +41,6 @@ "status": "healthy", "type": "Application", "owner": "logistics-team", - "configs": null, "checks": { "healthy": 2 }, @@ -62,7 +60,6 @@ "status": "healthy", "type": "Application", "owner": "logistics-team", - "configs": null, "path": "018681fc-e54f-bd4f-42be-068a9a69eeb5", "summary": { "healthy": 1 diff --git a/fixtures/expectations/topology_tree_with_status_filter.json b/fixtures/expectations/topology_tree_with_status_filter.json index 377727d5..a0c77192 100644 --- a/fixtures/expectations/topology_tree_with_status_filter.json +++ b/fixtures/expectations/topology_tree_with_status_filter.json @@ -30,7 +30,6 @@ "status": "warning", "type": "Entity", "owner": "logistics-team", - "configs": null, "summary": { "healthy": 1, "warning": 1, @@ -60,7 +59,6 @@ "status": "warning", "type": "Application", "owner": "logistics-team", - "configs": null, "checks": { "healthy": 2 }, @@ -90,7 +88,6 @@ "name": "logistics-worker", "status": "healthy", "type": "Application", - "configs": null, "path": "018681fc-e54f-bd4f-42be-068a9a69eeb5.018681fd-5770-336f-227c-259435d7fc6b", "summary": { "healthy": 1 @@ -106,7 +103,6 @@ "name": "logistics-db", "status": "unhealthy", "type": "Database", - "configs": null, "checks": { "unhealthy": 1 }, diff --git a/fixtures/expectations/topology_tree_with_type_filter.json b/fixtures/expectations/topology_tree_with_type_filter.json index c1bb2ab4..77ea47b9 100644 --- a/fixtures/expectations/topology_tree_with_type_filter.json +++ b/fixtures/expectations/topology_tree_with_type_filter.json @@ -30,7 +30,6 @@ "status": "healthy", "type": "Entity", "owner": "logistics-team", - "configs": null, "summary": { "healthy": 1 }, From e80589dd1c209ca4891968dd0e7613f6cdee437a Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 2 May 2023 18:12:59 +0545 Subject: [PATCH 05/10] create JSONGormDBDataType. * Use Generic struct scan and value wherever it was missed. --- types/component.go | 31 ++--------- types/config.go | 10 +--- types/envvar.go | 1 + types/log_selector.go | 10 +--- types/types.go | 117 ++++++++---------------------------------- 5 files changed, 28 insertions(+), 141 deletions(-) diff --git a/types/component.go b/types/component.go index a3c57593..b81f1310 100644 --- a/types/component.go +++ b/types/component.go @@ -116,16 +116,7 @@ func (Summary) GormDataType() string { } func (Summary) GormDBDataType(db *gorm.DB, field *schema.Field) string { - switch db.Dialector.Name() { - case SqliteType: - return Text - case PostgresType: - return JSONBType - case SQLServerType: - return NVarcharType - } - - return "" + return JSONGormDBDataType(db.Dialector.Name()) } func (s Summary) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { @@ -156,15 +147,7 @@ func (rs ResourceSelectors) GormDataType() string { // GormDBDataType gorm db data type func (ResourceSelectors) GormDBDataType(db *gorm.DB, field *schema.Field) string { - switch db.Dialector.Name() { - case SqliteType: - return JSONType - case PostgresType: - return JSONBType - case SQLServerType: - return NVarcharType - } - return "" + return JSONGormDBDataType(db.Dialector.Name()) } func (rs ResourceSelectors) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { @@ -194,15 +177,7 @@ func (cs ComponentChecks) GormDataType() string { // GormDBDataType gorm db data type func (ComponentChecks) GormDBDataType(db *gorm.DB, field *schema.Field) string { - switch db.Dialector.Name() { - case SqliteType: - return JSONType - case PostgresType: - return JSONBType - case SQLServerType: - return NVarcharType - } - return "" + return JSONGormDBDataType(db.Dialector.Name()) } func (cs ComponentChecks) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { diff --git a/types/config.go b/types/config.go index 29b9aa6f..3cd12358 100644 --- a/types/config.go +++ b/types/config.go @@ -52,15 +52,7 @@ func (t *ConfigQueries) Scan(val any) error { } func (t ConfigQueries) GormDBDataType(db *gorm.DB, field *schema.Field) string { - switch db.Dialector.Name() { - case SqliteType: - return JSONType - case PostgresType: - return JSONBType - case SQLServerType: - return NVarcharType - } - return "" + return JSONGormDBDataType(db.Dialector.Name()) } func (t ConfigQueries) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { diff --git a/types/envvar.go b/types/envvar.go index fec5cded..f3fbb8f5 100644 --- a/types/envvar.go +++ b/types/envvar.go @@ -85,6 +85,7 @@ func (EnvVar) GormDBDataType(db *gorm.DB, field *schema.Field) string { case PostgresType: return Text } + return "" } diff --git a/types/log_selector.go b/types/log_selector.go index f5378616..46ae75bf 100644 --- a/types/log_selector.go +++ b/types/log_selector.go @@ -28,15 +28,7 @@ func (t *LogSelectors) Scan(val any) error { } func (t LogSelectors) GormDBDataType(db *gorm.DB, field *schema.Field) string { - switch db.Dialector.Name() { - case SqliteType: - return JSONType - case PostgresType: - return JSONBType - case SQLServerType: - return NVarcharType - } - return "" + return JSONGormDBDataType(db.Dialector.Name()) } func (t LogSelectors) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { diff --git a/types/types.go b/types/types.go index 9e40306e..0cf5a984 100644 --- a/types/types.go +++ b/types/types.go @@ -4,7 +4,6 @@ import ( "context" "database/sql/driver" "encoding/json" - "errors" "fmt" "strings" "time" @@ -47,33 +46,12 @@ type JSON json.RawMessage // Value return json value, implement driver.Valuer interface func (j JSON) Value() (driver.Value, error) { - if len(j) == 0 { - return nil, nil - } - bytes, err := json.RawMessage(j).MarshalJSON() - return string(bytes), err + return GenericStructValue(j, true) } // Scan scan value into Jsonb, implements sql.Scanner interface func (j *JSON) Scan(value any) error { - if value == nil { - *j = JSON("null") - return nil - } - var bytes []byte - switch v := value.(type) { - case []byte: - bytes = v - case string: - bytes = []byte(v) - default: - return errors.New(fmt.Sprint("Failed to unmarshal JSONB value:", value)) - } - - result := json.RawMessage{} - err := json.Unmarshal(bytes, &result) - *j = JSON(result) - return err + return GenericStructScan(&j, value) } // MarshalJSON to output non base64 encoded []byte @@ -100,15 +78,7 @@ func (JSON) GormDataType() string { // GormDBDataType gorm db data type func (JSON) GormDBDataType(db *gorm.DB, field *schema.Field) string { - switch db.Dialector.Name() { - case SqliteType: - return JSONType - case MysqlType: - return JSONType - case PostgresType: - return JSONBType - } - return "" + return JSONGormDBDataType(db.Dialector.Name()) } func (js JSON) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { @@ -215,32 +185,12 @@ type JSONStringMap map[string]string // Value return json value, implement driver.Valuer interface func (m JSONStringMap) Value() (driver.Value, error) { - if m == nil { - return nil, nil - } - ba, err := m.MarshalJSON() - return string(ba), err + return GenericStructValue(m, true) } // Scan scan value into Jsonb, implements sql.Scanner interface func (m *JSONStringMap) Scan(val any) error { - if val == nil { - *m = make(JSONStringMap) - return nil - } - var ba []byte - switch v := val.(type) { - case []byte: - ba = v - case string: - ba = []byte(v) - default: - return errors.New(fmt.Sprint("Failed to unmarshal JSONB value:", val)) - } - t := map[string]string{} - err := json.Unmarshal(ba, &t) - *m = t - return err + return GenericStructScan(&m, val) } // MarshalJSON to output non base64 encoded []byte @@ -267,15 +217,7 @@ func (m JSONStringMap) GormDataType() string { // GormDBDataType gorm db data type func (JSONStringMap) GormDBDataType(db *gorm.DB, field *schema.Field) string { - switch db.Dialector.Name() { - case SqliteType: - return JSONType - case PostgresType: - return JSONBType - case SQLServerType: - return NVarcharType - } - return "" + return JSONGormDBDataType(db.Dialector.Name()) } func (jm JSONStringMap) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { @@ -297,32 +239,12 @@ type JSONMap map[string]any // Value return json value, implement driver.Valuer interface func (m JSONMap) Value() (driver.Value, error) { - if m == nil { - return nil, nil - } - ba, err := m.MarshalJSON() - return string(ba), err + return GenericStructValue(m, true) } // Scan scan value into Jsonb, implements sql.Scanner interface func (m *JSONMap) Scan(val any) error { - if val == nil { - *m = make(JSONMap) - return nil - } - var ba []byte - switch v := val.(type) { - case []byte: - ba = v - case string: - ba = []byte(v) - default: - return errors.New(fmt.Sprint("Failed to unmarshal JSONB value:", val)) - } - t := map[string]any{} - err := json.Unmarshal(ba, &t) - *m = t - return err + return GenericStructScan(&m, val) } // MarshalJSON to output non base64 encoded []byte @@ -349,15 +271,7 @@ func (m JSONMap) GormDataType() string { // GormDBDataType gorm db data type func (JSONMap) GormDBDataType(db *gorm.DB, field *schema.Field) string { - switch db.Dialector.Name() { - case SqliteType: - return JSONType - case PostgresType: - return JSONBType - case SQLServerType: - return NVarcharType - } - return "" + return JSONGormDBDataType(db.Dialector.Name()) } func (jm JSONMap) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { @@ -395,3 +309,16 @@ func GenericStructScan[T any](t *T, val any) error { err := json.Unmarshal(ba, &t) return err } + +func JSONGormDBDataType(dialect string) string { + switch dialect { + case SqliteType: + return Text + case PostgresType: + return JSONBType + case SQLServerType: + return NVarcharType + } + + return "" +} From 58d6eb4c092521e9ac0f146104ec2cae8f3d40ee Mon Sep 17 00:00:00 2001 From: Aditya Date: Wed, 3 May 2023 11:11:16 +0545 Subject: [PATCH 06/10] created wrapper around GormValue --- models/components.go | 33 ++++----------------------------- types/component.go | 10 +++------- types/config.go | 6 ++---- types/log_selector.go | 4 +--- types/types.go | 5 +++++ 5 files changed, 15 insertions(+), 43 deletions(-) diff --git a/models/components.go b/models/components.go index 229c418c..0abc8ebc 100644 --- a/models/components.go +++ b/models/components.go @@ -4,7 +4,6 @@ import ( "context" "database/sql/driver" "encoding/json" - "errors" "fmt" "strings" "time" @@ -394,27 +393,12 @@ func (p Properties) Find(name string) *Property { // Scan scan value into Jsonb, implements sql.Scanner interface func (p Properties) Value() (driver.Value, error) { - if len(p) == 0 { - return nil, nil - } - return p.AsJSON(), nil + return types.GenericStructValue(p, true) } // Scan scan value into Jsonb, implements sql.Scanner interface func (p *Properties) Scan(val any) error { - if val == nil { - *p = make(Properties, 0) - return nil - } - var ba []byte - switch v := val.(type) { - case []byte: - ba = v - default: - return errors.New(fmt.Sprint("Failed to unmarshal properties value:", val)) - } - err := json.Unmarshal(ba, p) - return err + return types.GenericStructScan(&p, val) } // GormDataType gorm common data type @@ -423,20 +407,11 @@ func (Properties) GormDataType() string { } func (Properties) GormDBDataType(db *gorm.DB, field *schema.Field) string { - switch db.Dialector.Name() { - case types.SqliteType: - return types.Text - case types.PostgresType: - return types.JSONBType - case types.SQLServerType: - return types.NVarcharType - } - return "" + return types.JSONGormDBDataType(db.Dialector.Name()) } func (p Properties) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { - data, _ := json.Marshal(p) - return gorm.Expr("?", data) + return types.GormValue(p) } type ComponentRelationship struct { diff --git a/types/component.go b/types/component.go index b81f1310..815a8b7a 100644 --- a/types/component.go +++ b/types/component.go @@ -3,7 +3,6 @@ package types import ( "context" "database/sql/driver" - "encoding/json" "fmt" "gorm.io/gorm" @@ -120,8 +119,7 @@ func (Summary) GormDBDataType(db *gorm.DB, field *schema.Field) string { } func (s Summary) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { - data, _ := json.Marshal(s) - return gorm.Expr("?", data) + return GormValue(s) } type ResourceSelectors []ResourceSelector @@ -151,8 +149,7 @@ func (ResourceSelectors) GormDBDataType(db *gorm.DB, field *schema.Field) string } func (rs ResourceSelectors) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { - data, _ := json.Marshal(rs) - return gorm.Expr("?", string(data)) + return GormValue(rs) } type ComponentCheck struct { @@ -181,6 +178,5 @@ func (ComponentChecks) GormDBDataType(db *gorm.DB, field *schema.Field) string { } func (cs ComponentChecks) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { - data, _ := json.Marshal(cs) - return gorm.Expr("?", string(data)) + return GormValue(cs) } diff --git a/types/config.go b/types/config.go index 3cd12358..b2b49528 100644 --- a/types/config.go +++ b/types/config.go @@ -3,7 +3,6 @@ package types import ( "context" "database/sql/driver" - "encoding/json" "fmt" "gorm.io/gorm" @@ -35,7 +34,7 @@ func (c ConfigQuery) String() string { } if len(c.Tags) > 0 { - s += " " + fmt.Sprintf("%v", c.Tags) + s += " " + fmt.Sprintf("%+v", c.Tags) } return s @@ -56,6 +55,5 @@ func (t ConfigQueries) GormDBDataType(db *gorm.DB, field *schema.Field) string { } func (t ConfigQueries) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { - data, _ := json.Marshal(t) - return gorm.Expr("?", string(data)) + return GormValue(t) } diff --git a/types/log_selector.go b/types/log_selector.go index 46ae75bf..17a40612 100644 --- a/types/log_selector.go +++ b/types/log_selector.go @@ -3,7 +3,6 @@ package types import ( "context" "database/sql/driver" - "encoding/json" "gorm.io/gorm" "gorm.io/gorm/clause" @@ -32,6 +31,5 @@ func (t LogSelectors) GormDBDataType(db *gorm.DB, field *schema.Field) string { } func (t LogSelectors) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { - data, _ := json.Marshal(t) - return gorm.Expr("?", string(data)) + return GormValue(t) } diff --git a/types/types.go b/types/types.go index 0cf5a984..be97da47 100644 --- a/types/types.go +++ b/types/types.go @@ -322,3 +322,8 @@ func JSONGormDBDataType(dialect string) string { return "" } + +func GormValue(t any) clause.Expr { + data, _ := json.Marshal(t) + return gorm.Expr("?", string(data)) +} From 848d8ad94e0b13de56f3c506353f9350be4d9142 Mon Sep 17 00:00:00 2001 From: Aditya Date: Thu, 4 May 2023 15:42:45 +0545 Subject: [PATCH 07/10] bumped commons. Removed utils pkg --- go.mod | 77 ++++++++++++------------ go.sum | 148 +++++++++++++++++++++++++---------------------- models/config.go | 4 +- topology.go | 4 +- utils/hash.go | 22 ------- utils/strings.go | 11 ---- 6 files changed, 122 insertions(+), 144 deletions(-) delete mode 100644 utils/hash.go delete mode 100644 utils/strings.go diff --git a/go.mod b/go.mod index 6fb860e1..79c3a52b 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.20 require ( ariga.io/atlas v0.10.0 github.com/fergusstrange/embedded-postgres v1.21.0 - github.com/flanksource/commons v1.7.0 + github.com/flanksource/commons v1.10.0 github.com/google/uuid v1.3.0 github.com/hashicorp/hcl/v2 v2.16.2 github.com/itchyny/gojq v0.12.12 @@ -28,44 +28,44 @@ require ( ) require ( - cloud.google.com/go v0.110.0 // indirect - cloud.google.com/go/compute v1.19.0 // indirect + cloud.google.com/go v0.110.1 // indirect + cloud.google.com/go/compute v1.19.1 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v0.13.0 // indirect + cloud.google.com/go/iam v1.0.0 // indirect cloud.google.com/go/storage v1.30.1 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/Masterminds/sprig v2.22.0+incompatible // indirect - github.com/Microsoft/go-winio v0.6.0 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230331115716-d34776aa93ec // indirect - github.com/Shopify/ejson v1.3.3 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230426101702-58e86b294756 // indirect + github.com/Shopify/ejson v1.4.0 // indirect github.com/acomagu/bufpipe v1.0.4 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/antonmedv/expr v1.12.5 // indirect github.com/apparentlymart/go-cidr v1.1.0 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect - github.com/aws/aws-sdk-go v1.44.234 // indirect - github.com/aws/aws-sdk-go-v2 v1.17.7 // indirect + github.com/aws/aws-sdk-go v1.44.256 // indirect + github.com/aws/aws-sdk-go-v2 v1.18.0 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10 // indirect - github.com/aws/aws-sdk-go-v2/config v1.18.19 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.13.18 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.1 // indirect - github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.60 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.31 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.25 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.3.32 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.23 // indirect + github.com/aws/aws-sdk-go-v2/config v1.18.22 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.13.21 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.3 // indirect + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.64 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.3.34 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.25 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.26 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.25 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.0 // indirect - github.com/aws/aws-sdk-go-v2/service/s3 v1.31.1 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.12.6 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.6 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.18.7 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.28 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.2 // indirect + github.com/aws/aws-sdk-go-v2/service/s3 v1.33.0 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.12.9 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.9 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.18.10 // indirect github.com/aws/smithy-go v1.13.5 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect - github.com/cloudflare/circl v1.3.2 // indirect + github.com/cloudflare/circl v1.3.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/dustin/gojson v0.0.0-20160307161227-2e71ec9dd5ad // indirect @@ -90,6 +90,7 @@ require ( github.com/google/go-cmp v0.5.9 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/pprof v0.0.0-20230323073829-e72429f035bd // indirect + github.com/google/s2a-go v0.1.3 // indirect github.com/google/wire v0.5.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect github.com/googleapis/gax-go/v2 v2.8.0 // indirect @@ -116,7 +117,7 @@ require ( github.com/joho/godotenv v1.5.1 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect - github.com/klauspost/compress v1.16.3 // indirect + github.com/klauspost/compress v1.16.5 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect @@ -132,7 +133,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/rogpeppe/go-internal v1.10.0 // indirect - github.com/rs/zerolog v1.29.0 // indirect + github.com/rs/zerolog v1.29.1 // indirect github.com/sergi/go-diff v1.3.1 // indirect github.com/skeema/knownhosts v1.1.0 // indirect github.com/spf13/afero v1.9.5 // indirect @@ -145,24 +146,24 @@ require ( github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect go.opencensus.io v0.24.0 // indirect - go.uber.org/atomic v1.10.0 // indirect + go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.24.0 // indirect gocloud.dev v0.29.0 // indirect - golang.org/x/crypto v0.7.0 // indirect - golang.org/x/mod v0.9.0 // indirect - golang.org/x/net v0.8.0 // indirect - golang.org/x/oauth2 v0.6.0 // indirect + golang.org/x/crypto v0.8.0 // indirect + golang.org/x/mod v0.10.0 // indirect + golang.org/x/net v0.9.0 // indirect + golang.org/x/oauth2 v0.7.0 // indirect golang.org/x/sync v0.1.0 // indirect - golang.org/x/sys v0.6.0 // indirect - golang.org/x/term v0.6.0 // indirect - golang.org/x/text v0.8.0 // indirect + golang.org/x/sys v0.7.0 // indirect + golang.org/x/term v0.7.0 // indirect + golang.org/x/text v0.9.0 // indirect golang.org/x/time v0.3.0 // indirect - golang.org/x/tools v0.7.0 // indirect + golang.org/x/tools v0.8.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/api v0.114.0 // indirect + google.golang.org/api v0.121.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633 // indirect + google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect google.golang.org/grpc v1.54.0 // indirect google.golang.org/protobuf v1.30.0 // indirect gopkg.in/flanksource/yaml.v3 v3.2.2 // indirect diff --git a/go.sum b/go.sum index aa9435c7..f79d275c 100644 --- a/go.sum +++ b/go.sum @@ -41,8 +41,8 @@ cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRY cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= cloud.google.com/go v0.109.0/go.mod h1:2sYycXt75t/CSB5R9M2wPU1tJmire7AQZTPtITcGBVE= -cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= -cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= +cloud.google.com/go v0.110.1 h1:oDJ19Fu9TX9Xs06iyCw4yifSqZ7JQ8BeuVHcTmWQlOA= +cloud.google.com/go v0.110.1/go.mod h1:uc+V/WjzxQ7vpkxfJhgW4Q4axWXyfAerpQOuSNDZyFw= cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= @@ -127,8 +127,8 @@ cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARy cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= -cloud.google.com/go/compute v1.19.0 h1:+9zda3WGgW1ZSTlVppLCYFIr48Pa35q1uG2N1itbCEQ= -cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= +cloud.google.com/go/compute v1.19.1 h1:am86mquDUgjGNWxiGn+5PGLbmgiWXlE/yNWpIpNvuXY= +cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= @@ -223,8 +223,8 @@ cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHD cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= cloud.google.com/go/iam v0.10.0/go.mod h1:nXAECrMt2qHpF6RZUZseteD6QyanL68reN4OXPw0UWM= -cloud.google.com/go/iam v0.13.0 h1:+CmB+K0J/33d0zSQ9SlFWUeCCEn5XJA0ZMZ3pHE9u8k= -cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= +cloud.google.com/go/iam v1.0.0 h1:hlQJMovyJJwYjZcTohUH4o1L8Z8kYz+E+W/zktiLCBc= +cloud.google.com/go/iam v1.0.0/go.mod h1:ikbQ4f1r91wTmBmmOtBCOtuEOei6taatNXytzB7Cxew= cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= @@ -525,8 +525,8 @@ github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JP github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= -github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= -github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= @@ -546,14 +546,15 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= github.com/ProtonMail/go-crypto v0.0.0-20220824120805-4b6e5c587895/go.mod h1:UBYPn8k0D56RtnR8RFQMjmh4KrZzWJ5o7Z9SYjossQ8= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= -github.com/ProtonMail/go-crypto v0.0.0-20230331115716-d34776aa93ec h1:eQusauqzE1cAFR5hGnwkuSmFxKoy3+j9/cVaDeYfjjs= -github.com/ProtonMail/go-crypto v0.0.0-20230331115716-d34776aa93ec/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE= +github.com/ProtonMail/go-crypto v0.0.0-20230426101702-58e86b294756 h1:L6S7kR7SlhQKplIBpkra3s6yhcZV51lhRnXmYc4HohI= +github.com/ProtonMail/go-crypto v0.0.0-20230426101702-58e86b294756/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/Shopify/ejson v1.3.3 h1:dPzgmvFhUPTJIzwdF5DaqbwW1dWaoR8ADKRdSTy6Mss= github.com/Shopify/ejson v1.3.3/go.mod h1:VZMUtDzvBW/PAXRUF5fzp1ffb1ucT8MztrZXXLYZurw= +github.com/Shopify/ejson v1.4.0 h1:RvvWSOjDdInbMNtR97eJ5GEd6njjDNSbvbFHoQjJAXo= +github.com/Shopify/ejson v1.4.0/go.mod h1:VZMUtDzvBW/PAXRUF5fzp1ffb1ucT8MztrZXXLYZurw= github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= @@ -608,14 +609,14 @@ github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX github.com/aws/aws-sdk-go v1.44.156/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go v1.44.187/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go v1.44.200/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aws/aws-sdk-go v1.44.234 h1:8YbQ5AhpgV/cC7jYX8qS34Am/vcn2ZoIFJ1qIgwOL+0= -github.com/aws/aws-sdk-go v1.44.234/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.256 h1:O8VH+bJqgLDguqkH/xQBFz5o/YheeZqgcOYIgsTVWY4= +github.com/aws/aws-sdk-go v1.44.256/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2 v1.16.2/go.mod h1:ytwTPBG6fXTZLxxeeCCWj2/EMYp/xDUgX+OET6TLNNU= github.com/aws/aws-sdk-go-v2 v1.16.16/go.mod h1:SwiyXi/1zTUZ6KIAmLK5V5ll8SiURNUYOqTerZPaF9k= github.com/aws/aws-sdk-go-v2 v1.17.4/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= -github.com/aws/aws-sdk-go-v2 v1.17.7 h1:CLSjnhJSTSogvqUGhIC6LqFKATMRexcxLZ0i/Nzk9Eg= -github.com/aws/aws-sdk-go-v2 v1.17.7/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= +github.com/aws/aws-sdk-go-v2 v1.18.0 h1:882kkTpSFhdgYRKVZ/VCgf7sd0ru57p2JCxz4/oN5RY= +github.com/aws/aws-sdk-go-v2 v1.18.0/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.1/go.mod h1:n8Bs1ElDD2wJ9kCRTczA83gYbBmjSwZp3umc6zF4EeM= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8/go.mod h1:JTnlBSot91steJeti4ryyu/tLd4Sk84O5W22L7O2EQU= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10 h1:dK82zF6kkPeCo8J1e+tGx4JdvDIQzj7ygIoLg8WMuGs= @@ -623,42 +624,42 @@ github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10/go.mod h1:VeTZetY5 github.com/aws/aws-sdk-go-v2/config v1.15.3/go.mod h1:9YL3v07Xc/ohTsxFXzan9ZpFpdTOFl4X65BAKYaz8jg= github.com/aws/aws-sdk-go-v2/config v1.17.7/go.mod h1:dN2gja/QXxFF15hQreyrqYhLBaQo1d9ZKe/v/uplQoI= github.com/aws/aws-sdk-go-v2/config v1.18.12/go.mod h1:J36fOhj1LQBr+O4hJCiT8FwVvieeoSGOtPuvhKlsNu8= -github.com/aws/aws-sdk-go-v2/config v1.18.19 h1:AqFK6zFNtq4i1EYu+eC7lcKHYnZagMn6SW171la0bGw= -github.com/aws/aws-sdk-go-v2/config v1.18.19/go.mod h1:XvTmGMY8d52ougvakOv1RpiTLPz9dlG/OQHsKU/cMmY= +github.com/aws/aws-sdk-go-v2/config v1.18.22 h1:7vkUEmjjv+giht4wIROqLs+49VWmiQMMHSduxmoNKLU= +github.com/aws/aws-sdk-go-v2/config v1.18.22/go.mod h1:mN7Li1wxaPxSSy4Xkr6stFuinJGf3VZW3ZSNvO0q6sI= github.com/aws/aws-sdk-go-v2/credentials v1.11.2/go.mod h1:j8YsY9TXTm31k4eFhspiQicfXPLZ0gYXA50i4gxPE8g= github.com/aws/aws-sdk-go-v2/credentials v1.12.20/go.mod h1:UKY5HyIux08bbNA7Blv4PcXQ8cTkGh7ghHMFklaviR4= github.com/aws/aws-sdk-go-v2/credentials v1.13.12/go.mod h1:37HG2MBroXK3jXfxVGtbM2J48ra2+Ltu+tmwr/jO0KA= -github.com/aws/aws-sdk-go-v2/credentials v1.13.18 h1:EQMdtHwz0ILTW1hoP+EwuWhwCG1hD6l3+RWFQABET4c= -github.com/aws/aws-sdk-go-v2/credentials v1.13.18/go.mod h1:vnwlwjIe+3XJPBYKu1et30ZPABG3VaXJYr8ryohpIyM= +github.com/aws/aws-sdk-go-v2/credentials v1.13.21 h1:VRiXnPEaaPeGeoFcXvMZOB5K/yfIXOYE3q97Kgb0zbU= +github.com/aws/aws-sdk-go-v2/credentials v1.13.21/go.mod h1:90Dk1lJoMyspa/EDUrldTxsPns0wn6+KpRKpdAWc0uA= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.3/go.mod h1:uk1vhHHERfSVCUnqSqz8O48LBYDSC+k6brng09jcMOk= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.17/go.mod h1:yIkQcCDYNsZfXpd5UX2Cy+sWA1jPgIhGTw9cOBzfVnQ= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.22/go.mod h1:YGSIJyQ6D6FjKMQh16hVFSIUD54L4F7zTGePqYMYYJU= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.1 h1:gt57MN3liKiyGopcqgNzJb2+d9MJaKT/q1OksHNXVE4= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.1/go.mod h1:lfUx8puBRdM5lVVMQlwt2v+ofiG/X6Ms+dy0UkG/kXw= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.3 h1:jJPgroehGvjrde3XufFIJUZVK5A2L9a3KwSFgKy9n8w= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.3/go.mod h1:4Q0UFP0YJf0NrsEuEYHpM9fTSEVnD16Z3uyEF7J9JGM= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.3/go.mod h1:0dHuD2HZZSiwfJSy1FO5bX1hQ1TxVV1QXXjpn3XUE44= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.33/go.mod h1:84XgODVR8uRhmOnUkKGUZKqIMxmjmLOR8Uyp7G/TPwc= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.51/go.mod h1:7Grl2gV+dx9SWrUIgwwlUvU40t7+lOSbx34XwfmsTkY= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.60 h1:BRLcU36boYxw6BPOEvwJbDPuCtP7FqMhXMFk2NM6poM= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.60/go.mod h1:HLWzCoNyzaPkOOs9yZ3muJ91lSk8O9DJbJw5aKAWWHY= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.64 h1:9QJQs36z61YB8nxGwRDfWXEDYbU6H7jdI6zFiAX1vag= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.64/go.mod h1:4Q7R9MFpXRdjO3YnAfUTdnuENs32WzBkASt6VxSYDYQ= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.9/go.mod h1:AnVH5pvai0pAF4lXRq0bmhbes1u9R8wTE+g+183bZNM= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.23/go.mod h1:2DFxAQ9pfIRy0imBCJv+vZ2X6RKxves6fbnEuSry6b4= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.28/go.mod h1:3lwChorpIM/BhImY/hy+Z6jekmN92cXGPI1QJasVPYY= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.31 h1:sJLYcS+eZn5EeNINGHSCRAwUJMFVqklwkH36Vbyai7M= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.31/go.mod h1:QT0BqUvX1Bh2ABdTGnjqEjvjzrCfIniM9Sc8zn9Yndo= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33 h1:kG5eQilShqmJbv11XL1VpyDbaEJzWxd4zRiCG30GSn4= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33/go.mod h1:7i0PF1ME/2eUPFcjkVIwq+DOygHEoK92t5cDqNgYbIw= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.3/go.mod h1:ssOhaLpRlh88H3UmEcsBoVKq309quMvm3Ds8e9d4eJM= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.17/go.mod h1:pRwaTYCJemADaqCbUAxltMoHKata7hmB5PjEXeu0kfg= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.22/go.mod h1:EqK7gVrIGAHyZItrD1D8B0ilgwMD1GiWAmbU4u/JHNk= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.25 h1:1mnRASEKnkqsntcxHaysxwgVoUUp5dkiB+l3llKnqyg= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.25/go.mod h1:zBHOPwhBc3FlQjQJE/D3IfPWiWaQmT06Vq9aNukDo0k= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27 h1:vFQlirhuM8lLlpI7imKOMsjdQLuN9CPi+k44F/OFVsk= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27/go.mod h1:UrHnn3QV/d0pBZ6QBAEQcqFLf8FAzLmoUfPVIueOvoM= github.com/aws/aws-sdk-go-v2/internal/ini v1.3.10/go.mod h1:8DcYQcz0+ZJaSxANlHIsbbi6S+zMwjwdDqwW3r9AzaE= github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24/go.mod h1:jULHjqqjDlbyTa7pfM7WICATnOv+iOhjletM3N0Xbu8= github.com/aws/aws-sdk-go-v2/internal/ini v1.3.29/go.mod h1:TwuqRBGzxjQJIwH16/fOZodwXt2Zxa9/cwJC5ke4j7s= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.32 h1:p5luUImdIqywn6JpQsW3tq5GNOxKmOnEpybzPx+d1lk= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.32/go.mod h1:XGhIBZDEgfqmFIugclZ6FU7v75nHhBDtzuB4xB/tEi4= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.34 h1:gGLG7yKaXG02/jBlg210R7VgQIotiQntNhsCFejawx8= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.34/go.mod h1:Etz2dj6UHYuw+Xw830KfzCfWGMzqvUTCjUj5b76GVDc= github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.14/go.mod h1:AyGgqiKv9ECM6IZeNQtdT8NnMvUb3/2wokeq2Fgryto= github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.19/go.mod h1:8W88sW3PjamQpKFUQvHWWKay6ARsNvZnzU7+a4apubw= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.23 h1:DWYZIsyqagnWL00f8M/SOr9fN063OEQWn9LLTbdYXsk= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.23/go.mod h1:uIiFgURZbACBEQJfqTZPb/jxO7R+9LeoHUFudtIdeQI= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.25 h1:AzwRi5OKKwo4QNqPf7TjeO+tK8AyOK3GVSwmRPo7/Cs= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.25/go.mod h1:SUbB4wcbSEyCvqBxv/O/IBf93RbEze7U7OnoTlpPB+g= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.1/go.mod h1:GeUru+8VzrTXV/83XyMJ80KpH8xO89VPoUileyNQ+tc= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.9/go.mod h1:a9j48l6yL5XINLHLcOKInjdvknN+vWqPBxqeIDw7ktw= @@ -667,25 +668,25 @@ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11/go.mod h1: github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.3/go.mod h1:Seb8KNmD6kVTjwRjVEgOT5hPin6sq+v4C2ycJQDwuH8= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.18/go.mod h1:NS55eQ4YixUJPTC+INxi2/jCqe1y2Uw3rnh9wEOVJxY= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.23/go.mod h1:1jcUfF+FAOEwtIcNiHPaV4TSoZqkUIPzrohmD7fb95c= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.26 h1:CeuSeq/8FnYpPtnuIeLQEEvDv9zUjneuYi8EghMBdwQ= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.26/go.mod h1:2UqAAwMUXKeRkAHIlDJqvMVgOWkUi/AUXPk/YIe+Dg4= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.28 h1:vGWm5vTpMr39tEZfQeDiDAMgk+5qsnvRny3FjLpnH5w= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.28/go.mod h1:spfrICMD6wCAhjhzHuy6DOZZ+LAIY10UxhUmLzpJTTs= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.3/go.mod h1:wlY6SVjuwvh3TVRpTqdy4I1JpBFLX4UGeKZdWntaocw= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17/go.mod h1:4nYOrY41Lrbk2170/BGkcJKBhws9Pfn8MG3aGqjjeFI= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.22/go.mod h1:xt0Au8yPIwYXf/GYPy/vl4K3CgwhfQMYbrH7DlUUIws= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.25 h1:5LHn8JQ0qvjD9L9JhMtylnkcw7j05GDZqM9Oin6hpr0= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.25/go.mod h1:/95IA+0lMnzW6XzqYJRpjjsAbKEORVeO0anQqjd2CNU= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27 h1:0iKliEXAcCa2qVtRs7Ot5hItA2MsufrphbRFlz1Owxo= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27/go.mod h1:EOwBD4J4S5qYszS5/3DpkejfuK+Z5/1uzICfPaZLtqw= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.3/go.mod h1:Bm/v2IaN6rZ+Op7zX+bOUMdL4fsrYZiD0dsjLhNKwZc= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.17/go.mod h1:YqMdV+gEKCQ59NrB7rzrJdALeBIsYiVi8Inj3+KcqHI= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.22/go.mod h1:QFVbqK54XArazLvn2wvWMRBi/jGrWii46qbr5DyPGjc= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.0 h1:e2ooMhpYGhDnBfSvIyusvAwX7KexuZaHbQY2Dyei7VU= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.0/go.mod h1:bh2E0CXKZsQN+faiKVqC40vfNMAWheoULBCnEgO9K+8= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.2 h1:NbWkRxEEIRSCqxhsHQuMiTH7yo+JZW1gp8v3elSVMTQ= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.2/go.mod h1:4tfW5l4IAB32VWCDEBxCRtR9T4BWy4I4kr1spr8NgZM= github.com/aws/aws-sdk-go-v2/service/kms v1.16.3/go.mod h1:QuiHPBqlOFCi4LqdSskYYAWpQlx3PKmohy+rE2F+o5g= github.com/aws/aws-sdk-go-v2/service/kms v1.20.2/go.mod h1:vdqtUOdVuf5ooy+hJ2GnzqNo94xiAA9s1xbZ1hQgRE0= github.com/aws/aws-sdk-go-v2/service/s3 v1.26.3/go.mod h1:g1qvDuRsJY+XghsV6zg00Z4KJ7DtFFCx8fJD2a491Ak= github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11/go.mod h1:fmgDANqTUCxciViKl9hb/zD5LFbvPINFRgWhDbR+vZo= github.com/aws/aws-sdk-go-v2/service/s3 v1.30.2/go.mod h1:SXDHd6fI2RhqB7vmAzyYQCTQnpZrIprVJvYxpzW3JAM= -github.com/aws/aws-sdk-go-v2/service/s3 v1.31.1 h1:PJH4I+qYjPXclKRbVCW47iYUvtXEh1u6YmDhn5J8VQE= -github.com/aws/aws-sdk-go-v2/service/s3 v1.31.1/go.mod h1:ncltU6n4Nof5uJttDtcNQ537uNuwYqsZZQcpkd2/GUQ= +github.com/aws/aws-sdk-go-v2/service/s3 v1.33.0 h1:L5h2fymEdVJYvn6hYO8Jx48YmC6xVmjmgHJV3oGKgmc= +github.com/aws/aws-sdk-go-v2/service/s3 v1.33.0/go.mod h1:J9kLNzEiHSeGMyN7238EjJmBpCniVzFda75Gxl/NqB8= github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.15.4/go.mod h1:PJc8s+lxyU8rrre0/4a0pn2wgwiDvOEzoOjcJUBr67o= github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.18.3/go.mod h1:hqPcyOuLU6yWIbLy3qMnQnmidgKuIEwqIlW6+chYnog= github.com/aws/aws-sdk-go-v2/service/sns v1.17.4/go.mod h1:kElt+uCcXxcqFyc+bQqZPFD9DME/eC6oHBXvFzQ9Bcw= @@ -697,17 +698,17 @@ github.com/aws/aws-sdk-go-v2/service/ssm v1.35.2/go.mod h1:VLSz2SHUKYFSOlXB/GlXo github.com/aws/aws-sdk-go-v2/service/sso v1.11.3/go.mod h1:7UQ/e69kU7LDPtY40OyoHYgRmgfGM4mgsLYtcObdveU= github.com/aws/aws-sdk-go-v2/service/sso v1.11.23/go.mod h1:/w0eg9IhFGjGyyncHIQrXtU8wvNsTJOP0R6PPj0wf80= github.com/aws/aws-sdk-go-v2/service/sso v1.12.1/go.mod h1:IgV8l3sj22nQDd5qcAGY0WenwCzCphqdbFOpfktZPrI= -github.com/aws/aws-sdk-go-v2/service/sso v1.12.6 h1:5V7DWLBd7wTELVz5bPpwzYy/sikk0gsgZfj40X+l5OI= -github.com/aws/aws-sdk-go-v2/service/sso v1.12.6/go.mod h1:Y1VOmit/Fn6Tz1uFAeCO6Q7M2fmfXSCLeL5INVYsLuY= +github.com/aws/aws-sdk-go-v2/service/sso v1.12.9 h1:GAiaQWuQhQQui76KjuXeShmyXqECwQ0mGRMc/rwsL+c= +github.com/aws/aws-sdk-go-v2/service/sso v1.12.9/go.mod h1:ouy2P4z6sJN70fR3ka3wD3Ro3KezSxU6eKGQI2+2fjI= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.5/go.mod h1:csZuQY65DAdFBt1oIjO5hhBR49kQqop4+lcuCjf2arA= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.1/go.mod h1:O1YSOg3aekZibh2SngvCRRG+cRHKKlYgxf/JBF/Kr/k= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.6 h1:B8cauxOH1W1v7rd8RdI/MWnoR4Ze0wIHWrb90qczxj4= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.6/go.mod h1:Lh/bc9XUf8CfOY6Jp5aIkQtN+j1mc+nExc+KXj9jx2s= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.9 h1:TraLwncRJkWqtIBVKI/UqBymq4+hL+3MzUOtUATuzkA= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.9/go.mod h1:AFvkxc8xfBe8XA+5St5XIHHrQQtkxqrRincx4hmMHOk= github.com/aws/aws-sdk-go-v2/service/sts v1.16.3/go.mod h1:bfBj0iVmsUyUg4weDB4NxktD9rDGeKSVWnjTnwbx9b8= github.com/aws/aws-sdk-go-v2/service/sts v1.16.19/go.mod h1:h4J3oPZQbxLhzGnk+j9dfYHi5qIOVJ5kczZd658/ydM= github.com/aws/aws-sdk-go-v2/service/sts v1.18.3/go.mod h1:b+psTJn33Q4qGoDaM7ZiOVVG8uVjGI6HaZ8WBHdgDgU= -github.com/aws/aws-sdk-go-v2/service/sts v1.18.7 h1:bWNgNdRko2x6gqa0blfATqAZKZokPIeM1vfmQt2pnvM= -github.com/aws/aws-sdk-go-v2/service/sts v1.18.7/go.mod h1:JuTnSoeePXmMVe9G8NcjjwgOKEfZ4cOjMuT2IBT/2eI= +github.com/aws/aws-sdk-go-v2/service/sts v1.18.10 h1:6UbNM/KJhMBfOI5+lpVcJ/8OA7cBSz0O6OX37SRKlSw= +github.com/aws/aws-sdk-go-v2/service/sts v1.18.10/go.mod h1:BgQOMsg8av8jset59jelyPW7NoZcZXLVpDsXunGDrk8= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= github.com/aws/smithy-go v1.11.2/go.mod h1:3xHYmszWVx2c0kIwQeEVf9uSm4fYZt67FBJnwub1bgM= github.com/aws/smithy-go v1.13.3/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= @@ -773,8 +774,8 @@ github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5P github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= github.com/cloudflare/circl v1.2.0/go.mod h1:Ch2UgYr6ti2KTtlejELlROl0YIYj7SLjAC8M+INXlMk= -github.com/cloudflare/circl v1.3.2 h1:VWp8dY3yH69fdM7lM6A1+NhhVoDu9vqK0jOgmkQHFWk= -github.com/cloudflare/circl v1.3.2/go.mod h1:+CauBF6R70Jqcyl8N2hC8pAXYbWkGIezuSbuGLtRhnw= +github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= +github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -1008,8 +1009,8 @@ github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fergusstrange/embedded-postgres v1.21.0 h1:Sups0nR31+OB4iOZ0ZU4IwUDsB+dVGmcqj4S2ko0qTI= github.com/fergusstrange/embedded-postgres v1.21.0/go.mod h1:wL562t1V+iuFwq0UcgMi2e9rp8CROY9wxWZEfP8Y874= -github.com/flanksource/commons v1.7.0 h1:B87CrUFM2hcAkiJey5ermZESW7guM6ia2Z67AOeA7hQ= -github.com/flanksource/commons v1.7.0/go.mod h1:f9gxPkf6psRWWADpVutZ4hedPrgbIJfV3WoZWQQzgxE= +github.com/flanksource/commons v1.10.0 h1:Mc+fzxq1rOJ08lapF0cc0bo9ZKNDxA7/81q2D/5jt0Q= +github.com/flanksource/commons v1.10.0/go.mod h1:HpVjPtNe7v0UPk97kO/uUhOrYQ8yFD/mGglrTCkc9Ag= github.com/flanksource/gomplate/v3 v3.20.1/go.mod h1:LPpzujBIg9HBXRUngDKK/zNmEjHpEUieKa/2oRjkCzI= github.com/flanksource/gomplate/v3 v3.20.3 h1:mnNaO37uwvv8Kvi4Xswj1tHKP5UMre3FLNaKvAwqhSw= github.com/flanksource/gomplate/v3 v3.20.3/go.mod h1:l4iCvp30TdhZk89eRGuNkPwlRjJLXdUSblr+VyuZfAk= @@ -1302,6 +1303,8 @@ github.com/google/pprof v0.0.0-20230111200839-76d1ae5aea2b/go.mod h1:dDKJzRmX4S3 github.com/google/pprof v0.0.0-20230323073829-e72429f035bd h1:r8yyd+DJDmsUhGrRBxH5Pj7KeFK5l+Y3FsgT8keqKtk= github.com/google/pprof v0.0.0-20230323073829-e72429f035bd/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.3 h1:FAgZmpLl/SXurPEZyCMPBIiiYeTbqfjlbdnCNTAkbGE= +github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -1589,8 +1592,8 @@ github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8 github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY= -github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= +github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -1934,8 +1937,8 @@ github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= github.com/rs/zerolog v1.28.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= -github.com/rs/zerolog v1.29.0 h1:Zes4hju04hjbvkVkOhdl2HpZa+0PmVwigmo8XoORE5w= -github.com/rs/zerolog v1.29.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= +github.com/rs/zerolog v1.29.1 h1:cO+d60CHkknCbvzEWxP0S9K6KqyTjrCNUy1LdQLCGPc= +github.com/rs/zerolog v1.29.1/go.mod h1:Le6ESbR7hc+DP6Lt1THiV8CQSdkkNrd3R0XbEgp3ZBU= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -2197,8 +2200,9 @@ go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= @@ -2270,6 +2274,7 @@ golang.org/x/crypto v0.0.0-20211115234514-b4de73f9ece8/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20211202192323-5770296d904e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= @@ -2283,8 +2288,9 @@ golang.org/x/crypto v0.0.0-20220919173607-35f4265a4bc0/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20221012134737-56aed061732a/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ= +golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -2333,8 +2339,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= -golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2433,8 +2439,9 @@ golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2467,8 +2474,8 @@ golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A golang.org/x/oauth2 v0.3.0/go.mod h1:rQrIauxkUhJ6CuwEXwymO2/eh4xz2ZWF1nBkcxS+tGk= golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= -golang.org/x/oauth2 v0.6.0 h1:Lh8GPgSKBfWSwFvtuWOfeI3aAAnbXTSutYxJiOJFgIw= -golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= +golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g= +golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2646,8 +2653,9 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -2659,8 +2667,9 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2675,8 +2684,9 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2781,8 +2791,8 @@ golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= -golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y= +golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2864,8 +2874,8 @@ google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/ google.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= -google.golang.org/api v0.114.0 h1:1xQPji6cO2E2vLiI+C/XiFAnsn1WV3mjaEwGLhi3grE= -google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= +google.golang.org/api v0.121.0 h1:8Oopoo8Vavxx6gt+sgs8s8/X60WBAtKQq6JqnkF+xow= +google.golang.org/api v0.121.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -3021,8 +3031,8 @@ google.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ google.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633 h1:0BOZf6qNozI3pkN3fJLwNubheHJYHhMh91GRFOWWK08= -google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= diff --git a/models/config.go b/models/config.go index b6b326b7..ed302711 100644 --- a/models/config.go +++ b/models/config.go @@ -6,8 +6,8 @@ import ( "strings" "time" + "github.com/flanksource/commons/hash" "github.com/flanksource/duty/types" - "github.com/flanksource/duty/utils" "github.com/google/uuid" "github.com/lib/pq" "gorm.io/gorm" @@ -72,7 +72,7 @@ func (c ConfigItem) GetSelectorID() string { return "" } - selectorID, err := utils.GenerateJSONMD5Hash(c.Config) + selectorID, err := hash.JSONMD5Hash(c.Config) if err != nil { return "" } diff --git a/topology.go b/topology.go index 1b6ba9d9..12098127 100644 --- a/topology.go +++ b/topology.go @@ -6,8 +6,8 @@ import ( "fmt" "strings" + "github.com/flanksource/commons/collections" "github.com/flanksource/duty/models" - "github.com/flanksource/duty/utils" "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgxpool" "gorm.io/gorm" @@ -262,7 +262,7 @@ func applyStatusFilter(components []*models.Component, filterRoot bool, statii . func updateMetadata(resp TopologyResponse) TopologyResponse { // Clean teams - resp.Teams = utils.DeleteEmptyStrings(resp.Teams) + resp.Teams = collections.DeleteEmptyStrings(resp.Teams) return resp } diff --git a/utils/hash.go b/utils/hash.go deleted file mode 100644 index 4086b535..00000000 --- a/utils/hash.go +++ /dev/null @@ -1,22 +0,0 @@ -package utils - -import ( - "crypto/md5" - "encoding/hex" - "encoding/json" -) - -// GenerateJSONMD5Hash marshals the object into JSON and generates its md5 hash -func GenerateJSONMD5Hash(obj any) (string, error) { - data, err := json.Marshal(obj) - if err != nil { - return "", err - } - - hash := md5.Sum(data) - if err != nil { - return "", err - } - - return hex.EncodeToString(hash[:]), nil -} diff --git a/utils/strings.go b/utils/strings.go deleted file mode 100644 index 3ce471ef..00000000 --- a/utils/strings.go +++ /dev/null @@ -1,11 +0,0 @@ -package utils - -func DeleteEmptyStrings(s []string) []string { - var r []string - for _, str := range s { - if str != "" { - r = append(r, str) - } - } - return r -} From d8f6de3f917fa7a917bf64686573c263a788d870 Mon Sep 17 00:00:00 2001 From: Aditya Date: Thu, 4 May 2023 15:48:36 +0545 Subject: [PATCH 08/10] chore: go mod tidy on hack/migrate --- hack/migrate/go.mod | 78 +++++++++++------------ hack/migrate/go.sum | 149 +++++++++++++++++++++++--------------------- 2 files changed, 118 insertions(+), 109 deletions(-) diff --git a/hack/migrate/go.mod b/hack/migrate/go.mod index d0ba041c..c3e8801f 100644 --- a/hack/migrate/go.mod +++ b/hack/migrate/go.mod @@ -3,51 +3,51 @@ module github.com/flanksource/duty/hack/migrate go 1.20 require ( - github.com/flanksource/commons v1.7.0 + github.com/flanksource/commons v1.10.0 github.com/flanksource/duty v1.0.54 github.com/spf13/cobra v1.7.0 ) require ( ariga.io/atlas v0.10.0 // indirect - cloud.google.com/go v0.110.0 // indirect - cloud.google.com/go/compute v1.19.0 // indirect + cloud.google.com/go v0.110.1 // indirect + cloud.google.com/go/compute v1.19.1 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v0.13.0 // indirect + cloud.google.com/go/iam v1.0.0 // indirect cloud.google.com/go/storage v1.30.1 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/Masterminds/sprig v2.22.0+incompatible // indirect - github.com/Microsoft/go-winio v0.6.0 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230331115716-d34776aa93ec // indirect - github.com/Shopify/ejson v1.3.3 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230426101702-58e86b294756 // indirect + github.com/Shopify/ejson v1.4.0 // indirect github.com/acomagu/bufpipe v1.0.4 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/antonmedv/expr v1.12.5 // indirect github.com/apparentlymart/go-cidr v1.1.0 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect - github.com/aws/aws-sdk-go v1.44.234 // indirect - github.com/aws/aws-sdk-go-v2 v1.17.7 // indirect + github.com/aws/aws-sdk-go v1.44.256 // indirect + github.com/aws/aws-sdk-go-v2 v1.18.0 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10 // indirect - github.com/aws/aws-sdk-go-v2/config v1.18.19 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.13.18 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.1 // indirect - github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.60 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.31 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.25 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.3.32 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.23 // indirect + github.com/aws/aws-sdk-go-v2/config v1.18.22 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.13.21 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.3 // indirect + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.64 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.3.34 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.25 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.26 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.25 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.0 // indirect - github.com/aws/aws-sdk-go-v2/service/s3 v1.31.1 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.12.6 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.6 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.18.7 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.28 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.2 // indirect + github.com/aws/aws-sdk-go-v2/service/s3 v1.33.0 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.12.9 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.9 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.18.10 // indirect github.com/aws/smithy-go v1.13.5 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect - github.com/cloudflare/circl v1.3.2 // indirect + github.com/cloudflare/circl v1.3.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/dustin/gojson v0.0.0-20160307161227-2e71ec9dd5ad // indirect @@ -69,6 +69,7 @@ require ( github.com/google/gnostic v0.6.9 // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/google/gofuzz v1.2.0 // indirect + github.com/google/s2a-go v0.1.3 // indirect github.com/google/uuid v1.3.0 // indirect github.com/google/wire v0.5.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect @@ -101,7 +102,7 @@ require ( github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect - github.com/klauspost/compress v1.16.3 // indirect + github.com/klauspost/compress v1.16.5 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/liamylian/jsontime/v2 v2.0.0 // indirect @@ -121,7 +122,7 @@ require ( github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/rogpeppe/go-internal v1.10.0 // indirect - github.com/rs/zerolog v1.29.0 // indirect + github.com/rs/zerolog v1.29.1 // indirect github.com/sergi/go-diff v1.3.1 // indirect github.com/sirupsen/logrus v1.9.0 // indirect github.com/skeema/knownhosts v1.1.0 // indirect @@ -133,27 +134,26 @@ require ( github.com/ugorji/go/codec v1.2.11 // indirect github.com/ulikunitz/xz v0.5.11 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2 // indirect github.com/zclconf/go-cty v1.13.1 // indirect go.opencensus.io v0.24.0 // indirect - go.uber.org/atomic v1.10.0 // indirect + go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.24.0 // indirect gocloud.dev v0.29.0 // indirect - golang.org/x/crypto v0.7.0 // indirect - golang.org/x/mod v0.9.0 // indirect - golang.org/x/net v0.8.0 // indirect - golang.org/x/oauth2 v0.6.0 // indirect + golang.org/x/crypto v0.8.0 // indirect + golang.org/x/mod v0.10.0 // indirect + golang.org/x/net v0.9.0 // indirect + golang.org/x/oauth2 v0.7.0 // indirect golang.org/x/sync v0.1.0 // indirect - golang.org/x/sys v0.6.0 // indirect - golang.org/x/term v0.6.0 // indirect - golang.org/x/text v0.8.0 // indirect + golang.org/x/sys v0.7.0 // indirect + golang.org/x/term v0.7.0 // indirect + golang.org/x/text v0.9.0 // indirect golang.org/x/time v0.3.0 // indirect - golang.org/x/tools v0.7.0 // indirect + golang.org/x/tools v0.8.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/api v0.114.0 // indirect + google.golang.org/api v0.121.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633 // indirect + google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect google.golang.org/grpc v1.54.0 // indirect google.golang.org/protobuf v1.30.0 // indirect gopkg.in/flanksource/yaml.v3 v3.2.2 // indirect diff --git a/hack/migrate/go.sum b/hack/migrate/go.sum index 2d3d7324..2674ce81 100644 --- a/hack/migrate/go.sum +++ b/hack/migrate/go.sum @@ -41,8 +41,8 @@ cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRY cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= cloud.google.com/go v0.109.0/go.mod h1:2sYycXt75t/CSB5R9M2wPU1tJmire7AQZTPtITcGBVE= -cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= -cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= +cloud.google.com/go v0.110.1 h1:oDJ19Fu9TX9Xs06iyCw4yifSqZ7JQ8BeuVHcTmWQlOA= +cloud.google.com/go v0.110.1/go.mod h1:uc+V/WjzxQ7vpkxfJhgW4Q4axWXyfAerpQOuSNDZyFw= cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= @@ -127,8 +127,8 @@ cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARy cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= -cloud.google.com/go/compute v1.19.0 h1:+9zda3WGgW1ZSTlVppLCYFIr48Pa35q1uG2N1itbCEQ= -cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= +cloud.google.com/go/compute v1.19.1 h1:am86mquDUgjGNWxiGn+5PGLbmgiWXlE/yNWpIpNvuXY= +cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= @@ -223,8 +223,8 @@ cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHD cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= cloud.google.com/go/iam v0.10.0/go.mod h1:nXAECrMt2qHpF6RZUZseteD6QyanL68reN4OXPw0UWM= -cloud.google.com/go/iam v0.13.0 h1:+CmB+K0J/33d0zSQ9SlFWUeCCEn5XJA0ZMZ3pHE9u8k= -cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= +cloud.google.com/go/iam v1.0.0 h1:hlQJMovyJJwYjZcTohUH4o1L8Z8kYz+E+W/zktiLCBc= +cloud.google.com/go/iam v1.0.0/go.mod h1:ikbQ4f1r91wTmBmmOtBCOtuEOei6taatNXytzB7Cxew= cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= @@ -525,8 +525,8 @@ github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JP github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= -github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= -github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= @@ -546,14 +546,15 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= github.com/ProtonMail/go-crypto v0.0.0-20220824120805-4b6e5c587895/go.mod h1:UBYPn8k0D56RtnR8RFQMjmh4KrZzWJ5o7Z9SYjossQ8= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= -github.com/ProtonMail/go-crypto v0.0.0-20230331115716-d34776aa93ec h1:eQusauqzE1cAFR5hGnwkuSmFxKoy3+j9/cVaDeYfjjs= -github.com/ProtonMail/go-crypto v0.0.0-20230331115716-d34776aa93ec/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE= +github.com/ProtonMail/go-crypto v0.0.0-20230426101702-58e86b294756 h1:L6S7kR7SlhQKplIBpkra3s6yhcZV51lhRnXmYc4HohI= +github.com/ProtonMail/go-crypto v0.0.0-20230426101702-58e86b294756/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/Shopify/ejson v1.3.3 h1:dPzgmvFhUPTJIzwdF5DaqbwW1dWaoR8ADKRdSTy6Mss= github.com/Shopify/ejson v1.3.3/go.mod h1:VZMUtDzvBW/PAXRUF5fzp1ffb1ucT8MztrZXXLYZurw= +github.com/Shopify/ejson v1.4.0 h1:RvvWSOjDdInbMNtR97eJ5GEd6njjDNSbvbFHoQjJAXo= +github.com/Shopify/ejson v1.4.0/go.mod h1:VZMUtDzvBW/PAXRUF5fzp1ffb1ucT8MztrZXXLYZurw= github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= @@ -608,14 +609,14 @@ github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX github.com/aws/aws-sdk-go v1.44.156/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go v1.44.187/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go v1.44.200/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aws/aws-sdk-go v1.44.234 h1:8YbQ5AhpgV/cC7jYX8qS34Am/vcn2ZoIFJ1qIgwOL+0= -github.com/aws/aws-sdk-go v1.44.234/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.256 h1:O8VH+bJqgLDguqkH/xQBFz5o/YheeZqgcOYIgsTVWY4= +github.com/aws/aws-sdk-go v1.44.256/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2 v1.16.2/go.mod h1:ytwTPBG6fXTZLxxeeCCWj2/EMYp/xDUgX+OET6TLNNU= github.com/aws/aws-sdk-go-v2 v1.16.16/go.mod h1:SwiyXi/1zTUZ6KIAmLK5V5ll8SiURNUYOqTerZPaF9k= github.com/aws/aws-sdk-go-v2 v1.17.4/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= -github.com/aws/aws-sdk-go-v2 v1.17.7 h1:CLSjnhJSTSogvqUGhIC6LqFKATMRexcxLZ0i/Nzk9Eg= -github.com/aws/aws-sdk-go-v2 v1.17.7/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= +github.com/aws/aws-sdk-go-v2 v1.18.0 h1:882kkTpSFhdgYRKVZ/VCgf7sd0ru57p2JCxz4/oN5RY= +github.com/aws/aws-sdk-go-v2 v1.18.0/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.1/go.mod h1:n8Bs1ElDD2wJ9kCRTczA83gYbBmjSwZp3umc6zF4EeM= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8/go.mod h1:JTnlBSot91steJeti4ryyu/tLd4Sk84O5W22L7O2EQU= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10 h1:dK82zF6kkPeCo8J1e+tGx4JdvDIQzj7ygIoLg8WMuGs= @@ -623,42 +624,42 @@ github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10/go.mod h1:VeTZetY5 github.com/aws/aws-sdk-go-v2/config v1.15.3/go.mod h1:9YL3v07Xc/ohTsxFXzan9ZpFpdTOFl4X65BAKYaz8jg= github.com/aws/aws-sdk-go-v2/config v1.17.7/go.mod h1:dN2gja/QXxFF15hQreyrqYhLBaQo1d9ZKe/v/uplQoI= github.com/aws/aws-sdk-go-v2/config v1.18.12/go.mod h1:J36fOhj1LQBr+O4hJCiT8FwVvieeoSGOtPuvhKlsNu8= -github.com/aws/aws-sdk-go-v2/config v1.18.19 h1:AqFK6zFNtq4i1EYu+eC7lcKHYnZagMn6SW171la0bGw= -github.com/aws/aws-sdk-go-v2/config v1.18.19/go.mod h1:XvTmGMY8d52ougvakOv1RpiTLPz9dlG/OQHsKU/cMmY= +github.com/aws/aws-sdk-go-v2/config v1.18.22 h1:7vkUEmjjv+giht4wIROqLs+49VWmiQMMHSduxmoNKLU= +github.com/aws/aws-sdk-go-v2/config v1.18.22/go.mod h1:mN7Li1wxaPxSSy4Xkr6stFuinJGf3VZW3ZSNvO0q6sI= github.com/aws/aws-sdk-go-v2/credentials v1.11.2/go.mod h1:j8YsY9TXTm31k4eFhspiQicfXPLZ0gYXA50i4gxPE8g= github.com/aws/aws-sdk-go-v2/credentials v1.12.20/go.mod h1:UKY5HyIux08bbNA7Blv4PcXQ8cTkGh7ghHMFklaviR4= github.com/aws/aws-sdk-go-v2/credentials v1.13.12/go.mod h1:37HG2MBroXK3jXfxVGtbM2J48ra2+Ltu+tmwr/jO0KA= -github.com/aws/aws-sdk-go-v2/credentials v1.13.18 h1:EQMdtHwz0ILTW1hoP+EwuWhwCG1hD6l3+RWFQABET4c= -github.com/aws/aws-sdk-go-v2/credentials v1.13.18/go.mod h1:vnwlwjIe+3XJPBYKu1et30ZPABG3VaXJYr8ryohpIyM= +github.com/aws/aws-sdk-go-v2/credentials v1.13.21 h1:VRiXnPEaaPeGeoFcXvMZOB5K/yfIXOYE3q97Kgb0zbU= +github.com/aws/aws-sdk-go-v2/credentials v1.13.21/go.mod h1:90Dk1lJoMyspa/EDUrldTxsPns0wn6+KpRKpdAWc0uA= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.3/go.mod h1:uk1vhHHERfSVCUnqSqz8O48LBYDSC+k6brng09jcMOk= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.17/go.mod h1:yIkQcCDYNsZfXpd5UX2Cy+sWA1jPgIhGTw9cOBzfVnQ= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.22/go.mod h1:YGSIJyQ6D6FjKMQh16hVFSIUD54L4F7zTGePqYMYYJU= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.1 h1:gt57MN3liKiyGopcqgNzJb2+d9MJaKT/q1OksHNXVE4= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.1/go.mod h1:lfUx8puBRdM5lVVMQlwt2v+ofiG/X6Ms+dy0UkG/kXw= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.3 h1:jJPgroehGvjrde3XufFIJUZVK5A2L9a3KwSFgKy9n8w= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.3/go.mod h1:4Q0UFP0YJf0NrsEuEYHpM9fTSEVnD16Z3uyEF7J9JGM= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.3/go.mod h1:0dHuD2HZZSiwfJSy1FO5bX1hQ1TxVV1QXXjpn3XUE44= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.33/go.mod h1:84XgODVR8uRhmOnUkKGUZKqIMxmjmLOR8Uyp7G/TPwc= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.51/go.mod h1:7Grl2gV+dx9SWrUIgwwlUvU40t7+lOSbx34XwfmsTkY= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.60 h1:BRLcU36boYxw6BPOEvwJbDPuCtP7FqMhXMFk2NM6poM= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.60/go.mod h1:HLWzCoNyzaPkOOs9yZ3muJ91lSk8O9DJbJw5aKAWWHY= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.64 h1:9QJQs36z61YB8nxGwRDfWXEDYbU6H7jdI6zFiAX1vag= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.64/go.mod h1:4Q7R9MFpXRdjO3YnAfUTdnuENs32WzBkASt6VxSYDYQ= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.9/go.mod h1:AnVH5pvai0pAF4lXRq0bmhbes1u9R8wTE+g+183bZNM= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.23/go.mod h1:2DFxAQ9pfIRy0imBCJv+vZ2X6RKxves6fbnEuSry6b4= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.28/go.mod h1:3lwChorpIM/BhImY/hy+Z6jekmN92cXGPI1QJasVPYY= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.31 h1:sJLYcS+eZn5EeNINGHSCRAwUJMFVqklwkH36Vbyai7M= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.31/go.mod h1:QT0BqUvX1Bh2ABdTGnjqEjvjzrCfIniM9Sc8zn9Yndo= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33 h1:kG5eQilShqmJbv11XL1VpyDbaEJzWxd4zRiCG30GSn4= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33/go.mod h1:7i0PF1ME/2eUPFcjkVIwq+DOygHEoK92t5cDqNgYbIw= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.3/go.mod h1:ssOhaLpRlh88H3UmEcsBoVKq309quMvm3Ds8e9d4eJM= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.17/go.mod h1:pRwaTYCJemADaqCbUAxltMoHKata7hmB5PjEXeu0kfg= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.22/go.mod h1:EqK7gVrIGAHyZItrD1D8B0ilgwMD1GiWAmbU4u/JHNk= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.25 h1:1mnRASEKnkqsntcxHaysxwgVoUUp5dkiB+l3llKnqyg= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.25/go.mod h1:zBHOPwhBc3FlQjQJE/D3IfPWiWaQmT06Vq9aNukDo0k= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27 h1:vFQlirhuM8lLlpI7imKOMsjdQLuN9CPi+k44F/OFVsk= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27/go.mod h1:UrHnn3QV/d0pBZ6QBAEQcqFLf8FAzLmoUfPVIueOvoM= github.com/aws/aws-sdk-go-v2/internal/ini v1.3.10/go.mod h1:8DcYQcz0+ZJaSxANlHIsbbi6S+zMwjwdDqwW3r9AzaE= github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24/go.mod h1:jULHjqqjDlbyTa7pfM7WICATnOv+iOhjletM3N0Xbu8= github.com/aws/aws-sdk-go-v2/internal/ini v1.3.29/go.mod h1:TwuqRBGzxjQJIwH16/fOZodwXt2Zxa9/cwJC5ke4j7s= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.32 h1:p5luUImdIqywn6JpQsW3tq5GNOxKmOnEpybzPx+d1lk= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.32/go.mod h1:XGhIBZDEgfqmFIugclZ6FU7v75nHhBDtzuB4xB/tEi4= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.34 h1:gGLG7yKaXG02/jBlg210R7VgQIotiQntNhsCFejawx8= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.34/go.mod h1:Etz2dj6UHYuw+Xw830KfzCfWGMzqvUTCjUj5b76GVDc= github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.14/go.mod h1:AyGgqiKv9ECM6IZeNQtdT8NnMvUb3/2wokeq2Fgryto= github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.19/go.mod h1:8W88sW3PjamQpKFUQvHWWKay6ARsNvZnzU7+a4apubw= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.23 h1:DWYZIsyqagnWL00f8M/SOr9fN063OEQWn9LLTbdYXsk= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.23/go.mod h1:uIiFgURZbACBEQJfqTZPb/jxO7R+9LeoHUFudtIdeQI= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.25 h1:AzwRi5OKKwo4QNqPf7TjeO+tK8AyOK3GVSwmRPo7/Cs= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.25/go.mod h1:SUbB4wcbSEyCvqBxv/O/IBf93RbEze7U7OnoTlpPB+g= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.1/go.mod h1:GeUru+8VzrTXV/83XyMJ80KpH8xO89VPoUileyNQ+tc= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.9/go.mod h1:a9j48l6yL5XINLHLcOKInjdvknN+vWqPBxqeIDw7ktw= @@ -667,25 +668,25 @@ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11/go.mod h1: github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.3/go.mod h1:Seb8KNmD6kVTjwRjVEgOT5hPin6sq+v4C2ycJQDwuH8= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.18/go.mod h1:NS55eQ4YixUJPTC+INxi2/jCqe1y2Uw3rnh9wEOVJxY= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.23/go.mod h1:1jcUfF+FAOEwtIcNiHPaV4TSoZqkUIPzrohmD7fb95c= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.26 h1:CeuSeq/8FnYpPtnuIeLQEEvDv9zUjneuYi8EghMBdwQ= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.26/go.mod h1:2UqAAwMUXKeRkAHIlDJqvMVgOWkUi/AUXPk/YIe+Dg4= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.28 h1:vGWm5vTpMr39tEZfQeDiDAMgk+5qsnvRny3FjLpnH5w= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.28/go.mod h1:spfrICMD6wCAhjhzHuy6DOZZ+LAIY10UxhUmLzpJTTs= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.3/go.mod h1:wlY6SVjuwvh3TVRpTqdy4I1JpBFLX4UGeKZdWntaocw= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17/go.mod h1:4nYOrY41Lrbk2170/BGkcJKBhws9Pfn8MG3aGqjjeFI= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.22/go.mod h1:xt0Au8yPIwYXf/GYPy/vl4K3CgwhfQMYbrH7DlUUIws= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.25 h1:5LHn8JQ0qvjD9L9JhMtylnkcw7j05GDZqM9Oin6hpr0= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.25/go.mod h1:/95IA+0lMnzW6XzqYJRpjjsAbKEORVeO0anQqjd2CNU= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27 h1:0iKliEXAcCa2qVtRs7Ot5hItA2MsufrphbRFlz1Owxo= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27/go.mod h1:EOwBD4J4S5qYszS5/3DpkejfuK+Z5/1uzICfPaZLtqw= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.3/go.mod h1:Bm/v2IaN6rZ+Op7zX+bOUMdL4fsrYZiD0dsjLhNKwZc= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.17/go.mod h1:YqMdV+gEKCQ59NrB7rzrJdALeBIsYiVi8Inj3+KcqHI= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.22/go.mod h1:QFVbqK54XArazLvn2wvWMRBi/jGrWii46qbr5DyPGjc= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.0 h1:e2ooMhpYGhDnBfSvIyusvAwX7KexuZaHbQY2Dyei7VU= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.0/go.mod h1:bh2E0CXKZsQN+faiKVqC40vfNMAWheoULBCnEgO9K+8= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.2 h1:NbWkRxEEIRSCqxhsHQuMiTH7yo+JZW1gp8v3elSVMTQ= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.2/go.mod h1:4tfW5l4IAB32VWCDEBxCRtR9T4BWy4I4kr1spr8NgZM= github.com/aws/aws-sdk-go-v2/service/kms v1.16.3/go.mod h1:QuiHPBqlOFCi4LqdSskYYAWpQlx3PKmohy+rE2F+o5g= github.com/aws/aws-sdk-go-v2/service/kms v1.20.2/go.mod h1:vdqtUOdVuf5ooy+hJ2GnzqNo94xiAA9s1xbZ1hQgRE0= github.com/aws/aws-sdk-go-v2/service/s3 v1.26.3/go.mod h1:g1qvDuRsJY+XghsV6zg00Z4KJ7DtFFCx8fJD2a491Ak= github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11/go.mod h1:fmgDANqTUCxciViKl9hb/zD5LFbvPINFRgWhDbR+vZo= github.com/aws/aws-sdk-go-v2/service/s3 v1.30.2/go.mod h1:SXDHd6fI2RhqB7vmAzyYQCTQnpZrIprVJvYxpzW3JAM= -github.com/aws/aws-sdk-go-v2/service/s3 v1.31.1 h1:PJH4I+qYjPXclKRbVCW47iYUvtXEh1u6YmDhn5J8VQE= -github.com/aws/aws-sdk-go-v2/service/s3 v1.31.1/go.mod h1:ncltU6n4Nof5uJttDtcNQ537uNuwYqsZZQcpkd2/GUQ= +github.com/aws/aws-sdk-go-v2/service/s3 v1.33.0 h1:L5h2fymEdVJYvn6hYO8Jx48YmC6xVmjmgHJV3oGKgmc= +github.com/aws/aws-sdk-go-v2/service/s3 v1.33.0/go.mod h1:J9kLNzEiHSeGMyN7238EjJmBpCniVzFda75Gxl/NqB8= github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.15.4/go.mod h1:PJc8s+lxyU8rrre0/4a0pn2wgwiDvOEzoOjcJUBr67o= github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.18.3/go.mod h1:hqPcyOuLU6yWIbLy3qMnQnmidgKuIEwqIlW6+chYnog= github.com/aws/aws-sdk-go-v2/service/sns v1.17.4/go.mod h1:kElt+uCcXxcqFyc+bQqZPFD9DME/eC6oHBXvFzQ9Bcw= @@ -697,17 +698,17 @@ github.com/aws/aws-sdk-go-v2/service/ssm v1.35.2/go.mod h1:VLSz2SHUKYFSOlXB/GlXo github.com/aws/aws-sdk-go-v2/service/sso v1.11.3/go.mod h1:7UQ/e69kU7LDPtY40OyoHYgRmgfGM4mgsLYtcObdveU= github.com/aws/aws-sdk-go-v2/service/sso v1.11.23/go.mod h1:/w0eg9IhFGjGyyncHIQrXtU8wvNsTJOP0R6PPj0wf80= github.com/aws/aws-sdk-go-v2/service/sso v1.12.1/go.mod h1:IgV8l3sj22nQDd5qcAGY0WenwCzCphqdbFOpfktZPrI= -github.com/aws/aws-sdk-go-v2/service/sso v1.12.6 h1:5V7DWLBd7wTELVz5bPpwzYy/sikk0gsgZfj40X+l5OI= -github.com/aws/aws-sdk-go-v2/service/sso v1.12.6/go.mod h1:Y1VOmit/Fn6Tz1uFAeCO6Q7M2fmfXSCLeL5INVYsLuY= +github.com/aws/aws-sdk-go-v2/service/sso v1.12.9 h1:GAiaQWuQhQQui76KjuXeShmyXqECwQ0mGRMc/rwsL+c= +github.com/aws/aws-sdk-go-v2/service/sso v1.12.9/go.mod h1:ouy2P4z6sJN70fR3ka3wD3Ro3KezSxU6eKGQI2+2fjI= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.5/go.mod h1:csZuQY65DAdFBt1oIjO5hhBR49kQqop4+lcuCjf2arA= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.1/go.mod h1:O1YSOg3aekZibh2SngvCRRG+cRHKKlYgxf/JBF/Kr/k= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.6 h1:B8cauxOH1W1v7rd8RdI/MWnoR4Ze0wIHWrb90qczxj4= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.6/go.mod h1:Lh/bc9XUf8CfOY6Jp5aIkQtN+j1mc+nExc+KXj9jx2s= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.9 h1:TraLwncRJkWqtIBVKI/UqBymq4+hL+3MzUOtUATuzkA= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.9/go.mod h1:AFvkxc8xfBe8XA+5St5XIHHrQQtkxqrRincx4hmMHOk= github.com/aws/aws-sdk-go-v2/service/sts v1.16.3/go.mod h1:bfBj0iVmsUyUg4weDB4NxktD9rDGeKSVWnjTnwbx9b8= github.com/aws/aws-sdk-go-v2/service/sts v1.16.19/go.mod h1:h4J3oPZQbxLhzGnk+j9dfYHi5qIOVJ5kczZd658/ydM= github.com/aws/aws-sdk-go-v2/service/sts v1.18.3/go.mod h1:b+psTJn33Q4qGoDaM7ZiOVVG8uVjGI6HaZ8WBHdgDgU= -github.com/aws/aws-sdk-go-v2/service/sts v1.18.7 h1:bWNgNdRko2x6gqa0blfATqAZKZokPIeM1vfmQt2pnvM= -github.com/aws/aws-sdk-go-v2/service/sts v1.18.7/go.mod h1:JuTnSoeePXmMVe9G8NcjjwgOKEfZ4cOjMuT2IBT/2eI= +github.com/aws/aws-sdk-go-v2/service/sts v1.18.10 h1:6UbNM/KJhMBfOI5+lpVcJ/8OA7cBSz0O6OX37SRKlSw= +github.com/aws/aws-sdk-go-v2/service/sts v1.18.10/go.mod h1:BgQOMsg8av8jset59jelyPW7NoZcZXLVpDsXunGDrk8= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= github.com/aws/smithy-go v1.11.2/go.mod h1:3xHYmszWVx2c0kIwQeEVf9uSm4fYZt67FBJnwub1bgM= github.com/aws/smithy-go v1.13.3/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= @@ -773,8 +774,8 @@ github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5P github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= github.com/cloudflare/circl v1.2.0/go.mod h1:Ch2UgYr6ti2KTtlejELlROl0YIYj7SLjAC8M+INXlMk= -github.com/cloudflare/circl v1.3.2 h1:VWp8dY3yH69fdM7lM6A1+NhhVoDu9vqK0jOgmkQHFWk= -github.com/cloudflare/circl v1.3.2/go.mod h1:+CauBF6R70Jqcyl8N2hC8pAXYbWkGIezuSbuGLtRhnw= +github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= +github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -1007,8 +1008,8 @@ github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fergusstrange/embedded-postgres v1.21.0 h1:Sups0nR31+OB4iOZ0ZU4IwUDsB+dVGmcqj4S2ko0qTI= -github.com/flanksource/commons v1.7.0 h1:B87CrUFM2hcAkiJey5ermZESW7guM6ia2Z67AOeA7hQ= -github.com/flanksource/commons v1.7.0/go.mod h1:f9gxPkf6psRWWADpVutZ4hedPrgbIJfV3WoZWQQzgxE= +github.com/flanksource/commons v1.10.0 h1:Mc+fzxq1rOJ08lapF0cc0bo9ZKNDxA7/81q2D/5jt0Q= +github.com/flanksource/commons v1.10.0/go.mod h1:HpVjPtNe7v0UPk97kO/uUhOrYQ8yFD/mGglrTCkc9Ag= github.com/flanksource/gomplate/v3 v3.20.1/go.mod h1:LPpzujBIg9HBXRUngDKK/zNmEjHpEUieKa/2oRjkCzI= github.com/flanksource/gomplate/v3 v3.20.3 h1:mnNaO37uwvv8Kvi4Xswj1tHKP5UMre3FLNaKvAwqhSw= github.com/flanksource/gomplate/v3 v3.20.3/go.mod h1:l4iCvp30TdhZk89eRGuNkPwlRjJLXdUSblr+VyuZfAk= @@ -1299,6 +1300,8 @@ github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8I github.com/google/pprof v0.0.0-20230111200839-76d1ae5aea2b/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo= github.com/google/pprof v0.0.0-20230323073829-e72429f035bd h1:r8yyd+DJDmsUhGrRBxH5Pj7KeFK5l+Y3FsgT8keqKtk= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.3 h1:FAgZmpLl/SXurPEZyCMPBIiiYeTbqfjlbdnCNTAkbGE= +github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -1588,8 +1591,8 @@ github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8 github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY= -github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= +github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -1932,8 +1935,8 @@ github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= github.com/rs/zerolog v1.28.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= -github.com/rs/zerolog v1.29.0 h1:Zes4hju04hjbvkVkOhdl2HpZa+0PmVwigmo8XoORE5w= -github.com/rs/zerolog v1.29.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= +github.com/rs/zerolog v1.29.1 h1:cO+d60CHkknCbvzEWxP0S9K6KqyTjrCNUy1LdQLCGPc= +github.com/rs/zerolog v1.29.1/go.mod h1:Le6ESbR7hc+DP6Lt1THiV8CQSdkkNrd3R0XbEgp3ZBU= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -2097,7 +2100,6 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2 h1:zzrxE1FKn5ryBNl9eKOeqQ58Y/Qpo3Q9QNxKHX5uzzQ= -github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2/go.mod h1:hzfGeIUDq/j97IG+FhNqkowIyEcD88LrW6fyU3K3WqY= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -2197,8 +2199,9 @@ go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= @@ -2270,6 +2273,7 @@ golang.org/x/crypto v0.0.0-20211115234514-b4de73f9ece8/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20211202192323-5770296d904e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= @@ -2283,8 +2287,9 @@ golang.org/x/crypto v0.0.0-20220919173607-35f4265a4bc0/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20221012134737-56aed061732a/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ= +golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -2333,8 +2338,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= -golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2433,8 +2438,9 @@ golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2467,8 +2473,8 @@ golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A golang.org/x/oauth2 v0.3.0/go.mod h1:rQrIauxkUhJ6CuwEXwymO2/eh4xz2ZWF1nBkcxS+tGk= golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= -golang.org/x/oauth2 v0.6.0 h1:Lh8GPgSKBfWSwFvtuWOfeI3aAAnbXTSutYxJiOJFgIw= -golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= +golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g= +golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2646,8 +2652,9 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -2659,8 +2666,9 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2675,8 +2683,9 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2781,8 +2790,8 @@ golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= -golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y= +golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2864,8 +2873,8 @@ google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/ google.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= -google.golang.org/api v0.114.0 h1:1xQPji6cO2E2vLiI+C/XiFAnsn1WV3mjaEwGLhi3grE= -google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= +google.golang.org/api v0.121.0 h1:8Oopoo8Vavxx6gt+sgs8s8/X60WBAtKQq6JqnkF+xow= +google.golang.org/api v0.121.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -3021,8 +3030,8 @@ google.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ google.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633 h1:0BOZf6qNozI3pkN3fJLwNubheHJYHhMh91GRFOWWK08= -google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= From 13d192997e77af2f57f3d5857dfdcc1cc9e91f02 Mon Sep 17 00:00:00 2001 From: Aditya Date: Thu, 4 May 2023 17:32:30 +0545 Subject: [PATCH 09/10] chore: address review comments --- models/components.go | 12 +----------- types/config.go | 23 +++++++++-------------- 2 files changed, 10 insertions(+), 25 deletions(-) diff --git a/models/components.go b/models/components.go index 0abc8ebc..cee6e0d0 100644 --- a/models/components.go +++ b/models/components.go @@ -122,16 +122,6 @@ func (c *Component) Summarize() types.Summary { return s } -func (component Component) GetID() string { - if component.ID != uuid.Nil { - return component.ID.String() - } - if component.Text != "" { - return component.Text - } - return component.Name -} - func (component Component) Clone() Component { clone := Component{ Name: component.Name, @@ -204,7 +194,7 @@ func (components Components) Debug(prefix string) string { status = types.ComponentStatus(console.Redf(string(status))) } - s += fmt.Sprintf("%s%s (%s) => %s\n", prefix, component, component.GetID(), status) + s += fmt.Sprintf("%s%s (id=%s, text=%s, name=%s) => %s\n", prefix, component, component.ID, component.Text, component.Name, status) s += component.Components.Debug(prefix + "\t") } diff --git a/types/config.go b/types/config.go index b2b49528..448fc7f1 100644 --- a/types/config.go +++ b/types/config.go @@ -24,20 +24,15 @@ type ConfigQuery struct { } func (c ConfigQuery) String() string { - s := c.Type - if c.Namespace != "" { - s += "/" + c.Namespace - } - - if c.Name != "" { - s += "/" + c.Name - } - - if len(c.Tags) > 0 { - s += " " + fmt.Sprintf("%+v", c.Tags) - } - - return s + return fmt.Sprintf("id=%v, type=%s, class=%s, external_id=%s, name=%s, namespace=%s, tags=%v", + c.ID, + c.Type, + c.Class, + c.ExternalID, + c.Name, + c.Namespace, + c.Tags, + ) } type ConfigQueries []*ConfigQuery From 02ff4d9872593a8aba278b7d0e98b1c37b5b0c5a Mon Sep 17 00:00:00 2001 From: Aditya Date: Thu, 4 May 2023 17:34:30 +0545 Subject: [PATCH 10/10] fix fixtures --- fixtures/expectations/topology_child_tree.json | 2 +- fixtures/expectations/topology_depth_1_child_tree.json | 2 +- fixtures/expectations/topology_depth_1_root_tree.json | 2 +- fixtures/expectations/topology_depth_2_root_tree.json | 2 +- fixtures/expectations/topology_root_tree.json | 2 +- .../expectations/topology_tree_with_id_and_status_filter.json | 2 +- fixtures/expectations/topology_tree_with_label_filter.json | 2 +- fixtures/expectations/topology_tree_with_owner_filter.json | 2 +- fixtures/expectations/topology_tree_with_status_filter.json | 2 +- fixtures/expectations/topology_tree_with_type_filter.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/fixtures/expectations/topology_child_tree.json b/fixtures/expectations/topology_child_tree.json index ed8f67e7..679ba3d4 100644 --- a/fixtures/expectations/topology_child_tree.json +++ b/fixtures/expectations/topology_child_tree.json @@ -3,7 +3,7 @@ "healthy" ], "tags": null, - "teams": null, + "teams": [], "types": [ "KubernetesNode", "KubernetesPod" diff --git a/fixtures/expectations/topology_depth_1_child_tree.json b/fixtures/expectations/topology_depth_1_child_tree.json index e7852fea..88e7ab56 100644 --- a/fixtures/expectations/topology_depth_1_child_tree.json +++ b/fixtures/expectations/topology_depth_1_child_tree.json @@ -8,7 +8,7 @@ "enabled" ] }, - "teams": null, + "teams": [], "types": [ "Application", "Database" diff --git a/fixtures/expectations/topology_depth_1_root_tree.json b/fixtures/expectations/topology_depth_1_root_tree.json index 5cbfebfa..4e4b46c6 100644 --- a/fixtures/expectations/topology_depth_1_root_tree.json +++ b/fixtures/expectations/topology_depth_1_root_tree.json @@ -8,7 +8,7 @@ "enabled" ] }, - "teams": null, + "teams": [], "types": [ "Application", "Database", diff --git a/fixtures/expectations/topology_depth_2_root_tree.json b/fixtures/expectations/topology_depth_2_root_tree.json index c27865e3..d344298c 100644 --- a/fixtures/expectations/topology_depth_2_root_tree.json +++ b/fixtures/expectations/topology_depth_2_root_tree.json @@ -8,7 +8,7 @@ "enabled" ] }, - "teams": null, + "teams": [], "types": [ "Application", "Database", diff --git a/fixtures/expectations/topology_root_tree.json b/fixtures/expectations/topology_root_tree.json index e8224fe6..ca56e750 100644 --- a/fixtures/expectations/topology_root_tree.json +++ b/fixtures/expectations/topology_root_tree.json @@ -8,7 +8,7 @@ "enabled" ] }, - "teams": null, + "teams": [], "types": [ "Application", "Database", diff --git a/fixtures/expectations/topology_tree_with_id_and_status_filter.json b/fixtures/expectations/topology_tree_with_id_and_status_filter.json index a273340b..a38d141b 100644 --- a/fixtures/expectations/topology_tree_with_id_and_status_filter.json +++ b/fixtures/expectations/topology_tree_with_id_and_status_filter.json @@ -8,7 +8,7 @@ "enabled" ] }, - "teams": null, + "teams": [], "types": [ "Application", "Database" diff --git a/fixtures/expectations/topology_tree_with_label_filter.json b/fixtures/expectations/topology_tree_with_label_filter.json index 14ca10df..1fef0ac9 100644 --- a/fixtures/expectations/topology_tree_with_label_filter.json +++ b/fixtures/expectations/topology_tree_with_label_filter.json @@ -3,7 +3,7 @@ "Application", "Entity" ], - "teams": null, + "teams": [], "healthStatuses": [ "healthy" ], diff --git a/fixtures/expectations/topology_tree_with_owner_filter.json b/fixtures/expectations/topology_tree_with_owner_filter.json index 4d669c88..b1a439f9 100644 --- a/fixtures/expectations/topology_tree_with_owner_filter.json +++ b/fixtures/expectations/topology_tree_with_owner_filter.json @@ -7,7 +7,7 @@ "enabled" ] }, - "teams": null, + "teams": [], "types": [ "Application", "Entity" diff --git a/fixtures/expectations/topology_tree_with_status_filter.json b/fixtures/expectations/topology_tree_with_status_filter.json index a0c77192..c61cc705 100644 --- a/fixtures/expectations/topology_tree_with_status_filter.json +++ b/fixtures/expectations/topology_tree_with_status_filter.json @@ -8,7 +8,7 @@ "enabled" ] }, - "teams": null, + "teams": [], "types": [ "Application", "Database", diff --git a/fixtures/expectations/topology_tree_with_type_filter.json b/fixtures/expectations/topology_tree_with_type_filter.json index 77ea47b9..bba95329 100644 --- a/fixtures/expectations/topology_tree_with_type_filter.json +++ b/fixtures/expectations/topology_tree_with_type_filter.json @@ -8,7 +8,7 @@ "enabled" ] }, - "teams": null, + "teams": [], "types": [ "Application", "Database",