diff --git a/go.mod b/go.mod index 244f9928..f0119450 100644 --- a/go.mod +++ b/go.mod @@ -4,8 +4,9 @@ go 1.19 require ( github.com/K-Phoen/jennifer v0.0.0-20230811102814-e6c78cf40086 - github.com/K-Phoen/sdk v0.12.4 + github.com/K-Phoen/sdk v0.13.0 github.com/blang/semver v3.5.1+incompatible + github.com/invopop/jsonschema v0.12.0 github.com/prometheus/common v0.45.0 github.com/rhysd/go-github-selfupdate v1.2.3 github.com/spf13/cobra v1.8.0 @@ -26,7 +27,6 @@ require ( github.com/gosimple/unidecode v1.0.1 // indirect github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/invopop/jsonschema v0.12.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/spf13/pflag v1.0.5 // indirect diff --git a/go.sum b/go.sum index 9927f696..a8264465 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ github.com/K-Phoen/jennifer v0.0.0-20230811102814-e6c78cf40086 h1:cvgm5R+2OIaCzMqyA8YAHuybHEbdvBIC3OAziNiMbEU= github.com/K-Phoen/jennifer v0.0.0-20230811102814-e6c78cf40086/go.mod h1:rm3gx5yYxh/Q3ynk+qaNoN6nQiII0Vn/uz46bIgj0P0= -github.com/K-Phoen/sdk v0.12.4 h1:j2EYuBJm3zDTD0fGKACVFWxAXtkR0q5QzfVqxmHSeGQ= -github.com/K-Phoen/sdk v0.12.4/go.mod h1:qmM0wO23CtoDux528MXPpYvS4XkRWkWX6rvX9Za8EVU= +github.com/K-Phoen/sdk v0.13.0 h1:eMJWVekp0iFBJO5dCyKHWxMDow4EFSy2DURy46+b/sk= +github.com/K-Phoen/sdk v0.13.0/go.mod h1:qmM0wO23CtoDux528MXPpYvS4XkRWkWX6rvX9Za8EVU= github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk= github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= diff --git a/target/cloudmonitoring/mql.go b/target/cloudmonitoring/mql.go index 521d6dbc..c708969a 100644 --- a/target/cloudmonitoring/mql.go +++ b/target/cloudmonitoring/mql.go @@ -30,7 +30,7 @@ func NewMQL(projectName, query string, options ...MQLOption) *MQL { mql := &MQL{ target: &sdk.Target{ QueryType: "timeSeriesQuery", - TimeSeriesQuery: &sdk.StackdriverTimeSeriesQuery{ + TimeSeriesQuery: &sdk.GCMTimeSeriesQuery{ ProjectName: projectName, Query: query, }, diff --git a/target/cloudmonitoring/promql.go b/target/cloudmonitoring/promql.go index 863f2c12..316795ee 100644 --- a/target/cloudmonitoring/promql.go +++ b/target/cloudmonitoring/promql.go @@ -25,10 +25,10 @@ func NewPromQL(projectName, expr string, options ...PromQLOption) *PromQL { QueryType: "promQL", // For some reason I can't explain, Grafana seems to require TimeSeriesQuery to be set // when we're making a promQL query. - TimeSeriesQuery: &sdk.StackdriverTimeSeriesQuery{ + TimeSeriesQuery: &sdk.GCMTimeSeriesQuery{ ProjectName: projectName, }, - PromQLQuery: &sdk.StackdriverPromQLQuery{ + PromQLQuery: &sdk.GCMPromQLQuery{ ProjectName: projectName, Expr: expr, Step: "10s", diff --git a/target/cloudmonitoring/slo.go b/target/cloudmonitoring/slo.go index 13cdb431..4dfa6dd0 100644 --- a/target/cloudmonitoring/slo.go +++ b/target/cloudmonitoring/slo.go @@ -38,6 +38,12 @@ func SLORef(id, name string) SLOOption { } } +func Goal(goal float64) SLOOption { + return func(s *SLO) { + s.target.SLOQuery.Goal = &goal + } +} + func LookbackPeriod(period string) SLOOption { return func(s *SLO) { s.target.SLOQuery.LookbackPeriod = period @@ -52,7 +58,7 @@ func NewSLO(projectName string, options ...SLOOption) *SLO { slo := &SLO{ target: &sdk.Target{ QueryType: "slo", - SLOQuery: &sdk.StackdriverSLOQuery{ + SLOQuery: &sdk.GCMSLOQuery{ ProjectName: projectName, }, }, diff --git a/target/cloudmonitoring/timeseries.go b/target/cloudmonitoring/timeseries.go index 9380d32d..71c02357 100644 --- a/target/cloudmonitoring/timeseries.go +++ b/target/cloudmonitoring/timeseries.go @@ -92,7 +92,7 @@ func NewTimeSeries(projectName, metricType string, options ...TimeSeriesOption) cloudMonitoring := &TimeSeries{ target: &sdk.Target{ QueryType: "timeSeriesList", - TimeSeriesList: &sdk.StackdriverTimeSeriesList{ + TimeSeriesList: &sdk.GCMTimeSeriesList{ ProjectName: projectName, Filters: []string{ "metric.type", string(FilterOperatorEqual), metricType,