Skip to content

Commit

Permalink
Merge pull request #144 from appuio/add/appcat_managed
Browse files Browse the repository at this point in the history
Add AppCat queries for APPUiO Managed instances
  • Loading branch information
Kidswiss committed Jul 4, 2023
2 parents 9644579 + 82b557d commit fd1d44e
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 129 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ See `docker-compose.yml` for the configuration.

```sh
# Needs to be repeated after a Docker restart
make docker-compose-up
make docker-compose-up

# Next command asks for a password, it is "reporting"
createdb --username=reporting -h localhost -p 5432 appuio-cloud-reporting-test
Expand Down
68 changes: 7 additions & 61 deletions pkg/db/seeds.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
package db

import (
"bytes"
"database/sql"
"fmt"
"text/template"

_ "embed"

Expand Down Expand Up @@ -32,8 +30,7 @@ var appuioManagedOpenShiftvCPUQuery string
//go:embed seeds/appuio_managed_kubernetes_vcpu.promql
var appuioManagedKubernetesvCPUQuery string

//go:embed seeds/appcat_vshn.promql.tmpl
var appcatVSHNTemplate string
var appcatQuery = "appcat:billing"

// DefaultQueries consists of default starter queries.
var DefaultQueries = []Query{
Expand Down Expand Up @@ -80,57 +77,28 @@ var DefaultQueries = []Query{
Query: appuioManagedKubernetesvCPUQuery,
Unit: "vCPU",
},
}

var renderedQueries = []RenderedQuery{
{
Query: Query{
Name: "appcat_postgresql_by_vshn",
Description: "Number of VSHN managed postgres instances",
Unit: "Instances",
},
ProductName: "appcat_postgres",
ServiceName: "appcat-postgresql",
Template: appcatVSHNTemplate,
},
{
Query: Query{
Name: "appcat_redis_by_vshn",
Description: "Number of VSHN managed redis instances",
Unit: "Instances",
},
ProductName: "appcat_redis",
ServiceName: "appcat-redis",
Template: appcatVSHNTemplate,
Name: "appcat_services",
Description: "AppCat service instances query",
Query: appcatQuery,
Unit: "instances",
},
}

type RenderedQuery struct {
Query
ProductName string
ServiceName string
Template string
}

// Seed seeds the database with "starter" data.
// Is idempotent and thus can be executed multiple times in one database.
func Seed(db *sql.DB) error {
return SeedQueries(db, DefaultQueries, renderedQueries)
return SeedQueries(db, DefaultQueries)
}

func SeedQueries(db *sql.DB, queries []Query, RenderedQueries []RenderedQuery) error {
func SeedQueries(db *sql.DB, queries []Query) error {
dbx := NewDBx(db)
tx, err := dbx.Beginx()
if err != nil {
return err
}
defer tx.Rollback()

queries, err = addRenderedQueries(queries, RenderedQueries)
if err != nil {
return err
}

if err := createQueries(tx, queries); err != nil {
return err
}
Expand Down Expand Up @@ -183,25 +151,3 @@ func queryExistsByName(tx *sqlx.Tx, name string) (bool, error) {
err := tx.Get(&exists, "SELECT EXISTS(SELECT 1 FROM queries WHERE name = $1)", name)
return exists, err
}

func addRenderedQueries(queries []Query, renderenderedQueries []RenderedQuery) ([]Query, error) {
for _, query := range renderenderedQueries {
rendered, err := renderQuery(query)
if err != nil {
return nil, err
}
query.Query.Query = rendered
queries = append(queries, query.Query)
}
return queries, nil
}

func renderQuery(query RenderedQuery) (string, error) {
tmpl, err := template.New("AppCatService").Parse(query.Template)
if err != nil {
return "", err
}
buffer := &bytes.Buffer{}
err = tmpl.Execute(buffer, query)
return buffer.String(), err
}
65 changes: 0 additions & 65 deletions pkg/db/seeds/appcat_vshn.promql.tmpl

This file was deleted.

4 changes: 2 additions & 2 deletions pkg/db/seeds_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ func (s *SeedsTestSuite) TestSeedDefaultQueries() {
_, err := d.Exec("DELETE FROM queries")
require.NoError(t, err)

expQueryNum := 9
expQueryNum := 8

count := "SELECT COUNT(*) FROM queries"
requireQueryEqual(t, d, 0, count)
Expand All @@ -33,7 +33,7 @@ func (s *SeedsTestSuite) TestSeedDefaultQueries() {
Description: "Memory usage (maximum of requested and used memory) aggregated by namespace",
Unit: "MiB",
},
}, []db.RenderedQuery{}))
}))
t.Log(t, count)
requireQueryEqual(t, d, 1, count)

Expand Down
1 change: 1 addition & 0 deletions pkg/report/report.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ func runQuery(ctx context.Context, tx *sqlx.Tx, prom PromQuerier, query db.Query
defer cancel()
promQCtx = ctx
}

// The data in the database is from T to T+1h. Prometheus queries backwards from T to T-1h.
res, _, err := prom.Query(promQCtx, query.Query, from.Add(time.Hour))
if err != nil {
Expand Down

0 comments on commit fd1d44e

Please sign in to comment.