Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Add cmd/authenticator and misc command tweaks #39

Merged
merged 1 commit into from
Jul 30, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions cmd/authenticator/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
module github.com/SUSE/telemetry/cmd/authenticator

go 1.21

replace github.com/SUSE/telemetry => ../../

require github.com/SUSE/telemetry v0.0.0-00010101000000-000000000000

require (
github.com/golang-jwt/jwt/v5 v5.2.1 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/mattn/go-sqlite3 v1.14.22 // indirect
github.com/xyproto/randomstring v1.0.5 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
18 changes: 18 additions & 0 deletions cmd/authenticator/go.sum
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
124 changes: 124 additions & 0 deletions cmd/authenticator/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
package main

import (
"flag"
"fmt"
"log/slog"

"github.com/SUSE/telemetry/pkg/client"
"github.com/SUSE/telemetry/pkg/config"
"github.com/SUSE/telemetry/pkg/logging"
)

// options is a struct of the options
type options struct {
config string
dryrun bool
noregister bool
authenticate bool
debug bool
}

var opts options

func main() {
if err := logging.SetupBasicLogging(opts.debug); err != nil {
panic(err)
}

slog.Debug("Authenticator", slog.Any("options", opts))

cfg, err := config.NewConfig(opts.config)
if err != nil {
slog.Error(
"Failed to load config",
slog.String("config", opts.config),
slog.String("error", err.Error()),
)
panic(err)
}

// setup logging based upon config settings
lm := logging.NewLogManager()
if err := lm.Config(&cfg.Logging); err != nil {
panic(err)
}

// override config log level to debug if option specified
if opts.debug {
lm.SetLevel("DEBUG")
slog.Debug("Debug mode enabled")
}

if err := lm.Setup(); err != nil {
panic(err)
}

tc, err := client.NewTelemetryClient(cfg)
if err != nil {
slog.Error(
"Failed to instantiate TelemetryClient",
slog.String("config", opts.config),
slog.String("error", err.Error()),
)
panic(err)
}

if !opts.noregister {
err = tc.Register()
if err != nil {
slog.Error(
"Failed to register TelemetryClient",
slog.String("error", err.Error()),
)
panic(err)
}
}

if opts.authenticate {
err = tc.Authenticate()
if err != nil {
slog.Error(
"Failed to (re)uthenticate TelemetryClient",
slog.String("error", err.Error()),
)
panic(err)
}
}

issuer, err := tc.AuthIssuer()
if err != nil {
slog.Error(
"AuthIssuer() failed",
slog.String("err", err.Error()),
)
}

expiration, err := tc.AuthExpiration()
if err != nil {
slog.Error(
"AuthExpiration() failed",
slog.String("err", err.Error()),
)
}

fmt.Printf(
"Current Auth Token:\n %-[1]*[2]s %[3]s\n %-[1]*[4]s %[5]s\n %-[1]*[6]s %[7]s\n",
19,
"Issuer:",
issuer,
"Expiration (UTC):",
expiration.UTC().Format("2006-01-02T15:04:05.000000"),
"Expiration (local):",
expiration.Format("2006-01-02T15:04:05.000000Z07:00"),
)
}

func init() {
flag.StringVar(&opts.config, "config", client.CONFIG_PATH, "Path to config file to read")
flag.BoolVar(&opts.debug, "debug", false, "Whether to enable debug level logging.")
flag.BoolVar(&opts.dryrun, "dryrun", false, "Process provided JSON files but do add them to the telemetry staging area.")
flag.BoolVar(&opts.noregister, "noregister", false, "Whether to skip registering the telemetry client if it is needed.")
flag.BoolVar(&opts.authenticate, "authenticate", false, "Whether to (re)authenticate the telemetry client.")
flag.Parse()
}
1 change: 1 addition & 0 deletions cmd/clientds/go.mod
Original file line number Diff line number Diff line change
@@ -7,6 +7,7 @@ replace github.com/SUSE/telemetry => ../../../telemetry
require github.com/SUSE/telemetry v0.0.0-00010101000000-000000000000

require (
github.com/golang-jwt/jwt/v5 v5.2.1 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/mattn/go-sqlite3 v1.14.22 // indirect
github.com/xyproto/randomstring v1.0.5 // indirect
2 changes: 2 additions & 0 deletions cmd/clientds/go.sum
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
23 changes: 17 additions & 6 deletions cmd/clientds/main.go
Original file line number Diff line number Diff line change
@@ -19,14 +19,13 @@ type options struct {
debug bool
}

func (o options) String() string {
return fmt.Sprintf("config=%v, items=%v, bundles=%v, reports=%v, debug=%v", o.config, o.items, o.bundles, o.reports, o.debug)
}

var opts options

func main() {
fmt.Printf("clientds: %s\n", opts)
slog.Debug(
"clientds",
slog.Any("options", opts),
)

if err := logging.SetupBasicLogging(opts.debug); err != nil {
panic(err)
@@ -41,7 +40,6 @@ func main() {
)
panic(err)
}
fmt.Printf("Config: %+v\n", cfg)

// setup logging based upon config settings
lm := logging.NewLogManager()
@@ -71,6 +69,9 @@ func main() {

processor := tc.Processor()

// this will be toggled to true if items, bundles or reports were found
foundEntries := false

if opts.items {
itemRows, err := processor.GetItemRows()
if err != nil {
@@ -87,6 +88,8 @@ func main() {
for i, dataItemRow := range itemRows {
fmt.Printf("Data Item[%d]: %q\n", i, dataItemRow.ItemId)
}

foundEntries = true
}
}

@@ -106,6 +109,8 @@ func main() {
for i, bundleRow := range bundleRows {
fmt.Printf("Bundle[%d]: %q\n", i, bundleRow.BundleId)
}

foundEntries = true
}
}

@@ -125,8 +130,14 @@ func main() {
for i, reportRow := range reportRows {
fmt.Printf("Reports[%d]: %q\n", i, reportRow.ReportId)
}

foundEntries = true
}
}

if !foundEntries {
fmt.Println("No items, bundles or reports found in client datastore")
}
}

func init() {
1 change: 1 addition & 0 deletions cmd/generator/go.mod
Original file line number Diff line number Diff line change
@@ -7,6 +7,7 @@ replace github.com/SUSE/telemetry => ../../
require github.com/SUSE/telemetry v0.0.0-00010101000000-000000000000

require (
github.com/golang-jwt/jwt/v5 v5.2.1 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/mattn/go-sqlite3 v1.14.22 // indirect
github.com/xyproto/randomstring v1.0.5 // indirect
2 changes: 2 additions & 0 deletions cmd/generator/go.sum
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
14 changes: 14 additions & 0 deletions cmd/generator/main.go
Original file line number Diff line number Diff line change
@@ -5,6 +5,7 @@ import (
"fmt"
"log/slog"
"os"
"path/filepath"

"github.com/SUSE/telemetry/pkg/client"
"github.com/SUSE/telemetry/pkg/config"
@@ -114,6 +115,13 @@ func main() {
)
panic(err)
}

fmt.Printf(
"Added telemetry data from %q as type %q with tags %s to local datastore\n",
filepath.Base(jsonFile),
opts.telemetry,
opts.tags,
)
}

// create one or more bundles from available data items
@@ -125,6 +133,8 @@ func main() {
)
panic(err)
}

fmt.Println("Created telemetry bundles from pending telemetry data items")
}

// create one or more reports from available bundles
@@ -136,6 +146,8 @@ func main() {
)
panic(err)
}

fmt.Println("Created telemetry reports from pending telemetry bundles")
}

// create one or more reports from available bundles and then
@@ -148,6 +160,8 @@ func main() {
)
panic(err)
}

fmt.Println("Submitted pending telemetry reports")
}
}

1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
@@ -5,6 +5,7 @@ go 1.21
replace github.com/SUSE/telemetry => ../telemetry

require (
github.com/golang-jwt/jwt/v5 v5.2.1
github.com/google/uuid v1.6.0
github.com/mattn/go-sqlite3 v1.14.22
github.com/stretchr/testify v1.9.0
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
Loading