diff --git a/ts-obs/.goreleaser.yml b/cli/.goreleaser.yml similarity index 82% rename from ts-obs/.goreleaser.yml rename to cli/.goreleaser.yml index ae0df003..c7d3a85d 100644 --- a/ts-obs/.goreleaser.yml +++ b/cli/.goreleaser.yml @@ -1,5 +1,6 @@ # This is an example goreleaser.yaml file with some sane defaults. # Make sure to check the documentation at http://goreleaser.com +project_name: tobs before: hooks: # You may remove this if you don't use go modules. @@ -8,7 +9,8 @@ builds: - env: - CGO_ENABLED=0 archives: -- replacements: +- name_template: '{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}' + replacements: darwin: Darwin linux: Linux windows: Windows diff --git a/cli/README.md b/cli/README.md new file mode 100644 index 00000000..5aec6292 --- /dev/null +++ b/cli/README.md @@ -0,0 +1,82 @@ +# tobs - The Observability Stack for Kubernetes CLI + +This is a CLI tool for installing and managing the The Observability Stack for Kubernetes. + +## Quick Start + +__Dependencies__: [Go](https://golang.org/doc/install), [Helm](https://helm.sh/docs/intro/install/) + +To install the CLI, run `go install` from inside the `tobs` folder. +Then, copy the `tobs` binary from `$GOPATH/bin` to your `/bin` folder. + +## Commands + +The following are the commands possible with the CLI. + +### Base Commands + +| Command | Description | Flags | +|---------------------|------------------------------------------------------------------|------------------------------------------------------| +| `tobs install` | Alias for `tobs helm install`. | `--filename`, `-f` : file to load configuration from | +| `tobs uninstall` | Alias for `tobs helm unintall`. | None | +| `tobs port-forward` | Port-forwards TimescaleDB, Grafana, and Prometheus to localhost. | `--timescaledb`, `-t` : port for TimescaleDB
`--grafana`, `-g` : port for Grafana
`--prometheus`, `-p` : port for Prometheus | + +### Helm Commands + +| Command | Description | Flags | +|-------------------------|------------------------------------------------------------------------------|------------------------------------------------------| +| `tobs helm install` | Installs Helm chart for The Observability Stack. | `--filename`, `-f` : file to load configuration from | +| `tobs helm uninstall` | Uninstalls Helm chart for The Observability Stack. | None | +| `tobs helm show-values` | Prints the YAML configuration of the Helm chart for The Observability Stack. | None | +| `tobs helm delete-data` | Deletes persistent volume claims associated with The Observability Stack. | None | + +### TimescaleDB Commands + +| Command | Description | Flags | +|------------------------------------|------------------------------------------------------------|---------------------------------------------| +| `tobs timescaledb connect` | Connects to the Timescale database running in the cluster. | `--user`, `-U` : user to login with
`--master`, `-m` : directly execute session on master node | +| `tobs timescaledb port-forward` | Port-forwards TimescaleDB to localhost. | `--port`, `-p` : port to listen from | +| `tobs timescaledb get-password` | Gets the password for a user in the Timescale database. | `--user`, `-U` : user whose password to get | +| `tobs timescaledb change-password` | Changes the password for a user in the Timescale database. | `--user`, `-U` : user whose password to get | + +### Grafana Commands + +| Command | Description | Flags | +|-------------------------------------|------------------------------------------------|--------------------------------------| +| `tobs grafana port-forward` | Port-forwards the Grafana server to localhost. | `--port`, `-p` : port to listen from | +| `tobs grafana get-initial-password` | Gets the initial admin password for Grafana. | None | +| `tobs grafana change-password` | Changes the admin password for Grafana. | None | + +### Prometheus Commands + +| Command | Description | Flags | +|--------------------------------|---------------------------------------------------|--------------------------------------| +| `tobs prometheus port-forward` | Port-forwards the Prometheus server to localhost. | `--port`, `-p` : port to listen from | + +### Metrics Commands + +| Command | Description | Flags | +|-------------------------------------------|--------------------------------------------------------------------------------------|-------| +| `tobs metrics retention get` | Gets the data retention period of a specific metric. | `--user`, `-U` : database user name
`--dbname`, `-d` : database name to connect to | +| `tobs metrics retention set-default` | Sets the default data retention period to the specified number of days. | `--user`, `-U` : database user name
`--dbname`, `-d` : database name to connect to | +| `tobs metrics retention set` | Sets the data retention period of a specific metric to the specified number of days. | `--user`, `-U` : database user name
`--dbname`, `-d` : database name to connect to | +| `tobs metrics retention reset` | Resets the data retention period of a specific metric to the default value. | `--user`, `-U` : database user name
`--dbname`, `-d` : database name to connect to | +| `tobs metrics chunk-interval get` | Gets the chunk interval of a specific metric. | `--user`, `-U` : database user name
`--dbname`, `-d` : database name to connect to | +| `tobs metrics chunk-interval set-default` | Sets the default chunk interval to the specified duration. | `--user`, `-U` : database user name
`--dbname`, `-d` : database name to connect to | +| `tobs metrics chunk-interval set` | Sets the chunk interval of a specific metric to the specified duration. | `--user`, `-U` : database user name
`--dbname`, `-d` : database name to connect to | +| `tobs metrics chunk-interval reset` | Resets chunk interval of a specific metric to the default value. | `--user`, `-U` : database user name
`--dbname`, `-d` : database name to connect to | + +## Global Flags + +The following are global flags that can be used with any of the above commands: + +| Flag | Description | +|----------------|----------------------| +| `--name`, `-n` | Helm release name | +| `--namespace` | Kubernetes namespace | + +## Testing + +A testing suite is included in the `tests` folder. This testing suite has additional dependencies on [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) and [minikube](https://kubernetes.io/docs/tasks/tools/install-minikube/). + +The testing suite can be run by calling `go test -timeout 30m` from within the `tests` folder. diff --git a/ts-obs/cmd/chunkInterval.go b/cli/cmd/chunkInterval.go similarity index 100% rename from ts-obs/cmd/chunkInterval.go rename to cli/cmd/chunkInterval.go diff --git a/ts-obs/cmd/chunkIntervalGet.go b/cli/cmd/chunkIntervalGet.go similarity index 100% rename from ts-obs/cmd/chunkIntervalGet.go rename to cli/cmd/chunkIntervalGet.go diff --git a/ts-obs/cmd/chunkIntervalReset.go b/cli/cmd/chunkIntervalReset.go similarity index 100% rename from ts-obs/cmd/chunkIntervalReset.go rename to cli/cmd/chunkIntervalReset.go diff --git a/ts-obs/cmd/chunkIntervalSet.go b/cli/cmd/chunkIntervalSet.go similarity index 100% rename from ts-obs/cmd/chunkIntervalSet.go rename to cli/cmd/chunkIntervalSet.go diff --git a/ts-obs/cmd/chunkIntervalSetDefault.go b/cli/cmd/chunkIntervalSetDefault.go similarity index 100% rename from ts-obs/cmd/chunkIntervalSetDefault.go rename to cli/cmd/chunkIntervalSetDefault.go diff --git a/ts-obs/cmd/grafana.go b/cli/cmd/grafana.go similarity index 100% rename from ts-obs/cmd/grafana.go rename to cli/cmd/grafana.go diff --git a/ts-obs/cmd/grafanaChangePassword.go b/cli/cmd/grafanaChangePassword.go similarity index 100% rename from ts-obs/cmd/grafanaChangePassword.go rename to cli/cmd/grafanaChangePassword.go diff --git a/ts-obs/cmd/grafanaGetPassword.go b/cli/cmd/grafanaGetPassword.go similarity index 100% rename from ts-obs/cmd/grafanaGetPassword.go rename to cli/cmd/grafanaGetPassword.go diff --git a/ts-obs/cmd/grafanaPortForward.go b/cli/cmd/grafanaPortForward.go similarity index 100% rename from ts-obs/cmd/grafanaPortForward.go rename to cli/cmd/grafanaPortForward.go diff --git a/ts-obs/cmd/helm.go b/cli/cmd/helm.go similarity index 100% rename from ts-obs/cmd/helm.go rename to cli/cmd/helm.go diff --git a/ts-obs/cmd/helmDeleteData.go b/cli/cmd/helmDeleteData.go similarity index 82% rename from ts-obs/cmd/helmDeleteData.go rename to cli/cmd/helmDeleteData.go index 0b516592..d09feed5 100644 --- a/ts-obs/cmd/helmDeleteData.go +++ b/cli/cmd/helmDeleteData.go @@ -24,14 +24,14 @@ func helmDeleteData(cmd *cobra.Command, args []string) error { fmt.Println("Getting Persistent Volume Claims") pvcnames, err := KubeGetPVCNames(namespace, map[string]string{"release": name}) if err != nil { - return fmt.Errorf("could not uninstall Timescale Observability: %w", err) + return fmt.Errorf("could not delete PVCs: %w", err) } fmt.Println("Removing Persistent Volume Claims") for _, s := range pvcnames { err = KubeDeletePVC(namespace, s) if err != nil { - return fmt.Errorf("could not uninstall Timescale Observability: %w", err) + return fmt.Errorf("could not delete PVCs: %w", err) } } diff --git a/ts-obs/cmd/helmInstall.go b/cli/cmd/helmInstall.go similarity index 81% rename from ts-obs/cmd/helmInstall.go rename to cli/cmd/helmInstall.go index 935ed50b..3e0ed0d0 100644 --- a/ts-obs/cmd/helmInstall.go +++ b/cli/cmd/helmInstall.go @@ -16,7 +16,7 @@ const REPO_LOCATION = "https://charts.timescale.com" // helmInstallCmd represents the helm install command var helmInstallCmd = &cobra.Command{ Use: "install", - Short: "Installs Timescale Observability", + Short: "Installs The Observability Stack", Args: cobra.ExactArgs(0), RunE: helmInstall, } @@ -32,7 +32,7 @@ func helmInstall(cmd *cobra.Command, args []string) error { var file string file, err = cmd.Flags().GetString("filename") if err != nil { - return fmt.Errorf("could not install Timescale Observability: %w", err) + return fmt.Errorf("could not install The Observability Stack: %w", err) } w := io.Writer(os.Stdout) @@ -44,7 +44,7 @@ func helmInstall(cmd *cobra.Command, args []string) error { fmt.Println("Adding Timescale Helm Repository") err = addchart.Run() if err != nil { - return fmt.Errorf("could not install Timescale Observability: %w", err) + return fmt.Errorf("could not install The Observability Stack: %w", err) } update := exec.Command("helm", "repo", "update") @@ -54,7 +54,7 @@ func helmInstall(cmd *cobra.Command, args []string) error { fmt.Println("Fetching updates from repository") err = update.Run() if err != nil { - return fmt.Errorf("could not install Timescale Observability: %w", err) + return fmt.Errorf("could not install The Observability Stack: %w", err) } cmds := []string{"install", name, "timescale/timescale-observability", "--set", "cli=true"} @@ -69,10 +69,10 @@ func helmInstall(cmd *cobra.Command, args []string) error { } install := exec.Command("helm", cmds...) - fmt.Println("Installing Timescale Observability") + fmt.Println("Installing The Observability Stack") out, err := install.CombinedOutput() if err != nil { - return fmt.Errorf("could not install Timescale Observability: %w", err) + return fmt.Errorf("could not install The Observability Stack: %w", err) } time.Sleep(10 * time.Second) @@ -90,7 +90,7 @@ func helmInstall(cmd *cobra.Command, args []string) error { } } - fmt.Println("Timescale Observability has been installed successfully") + fmt.Println("The Observability Stack has been installed successfully") fmt.Println(string(out)) return nil } diff --git a/ts-obs/cmd/helmShowValues.go b/cli/cmd/helmShowValues.go similarity index 91% rename from ts-obs/cmd/helmShowValues.go rename to cli/cmd/helmShowValues.go index 9c90acc9..56d3d5e5 100644 --- a/ts-obs/cmd/helmShowValues.go +++ b/cli/cmd/helmShowValues.go @@ -10,7 +10,7 @@ import ( // helmShowValuesCmd represents the helm show-values command var helmShowValuesCmd = &cobra.Command{ Use: "show-values", - Short: "Prints the default Timescale Observability values to console", + Short: "Prints the default Observability Stack values to console", Args: cobra.ExactArgs(0), RunE: helmShowValues, } diff --git a/ts-obs/cmd/helmUninstall.go b/cli/cmd/helmUninstall.go similarity index 79% rename from ts-obs/cmd/helmUninstall.go rename to cli/cmd/helmUninstall.go index 66afef43..318bdb7f 100644 --- a/ts-obs/cmd/helmUninstall.go +++ b/cli/cmd/helmUninstall.go @@ -14,7 +14,7 @@ import ( // helmUninstallCmd represents the helm uninstall command var helmUninstallCmd = &cobra.Command{ Use: "uninstall", - Short: "Uninstalls Timescale Observability", + Short: "Uninstalls The Observability Stack", Args: cobra.ExactArgs(0), RunE: helmUninstall, } @@ -30,7 +30,7 @@ func helmUninstall(cmd *cobra.Command, args []string) error { var deleteData bool deleteData, err = cmd.Flags().GetBool("delete-data") if err != nil { - return fmt.Errorf("could not uninstall Timescale Observability: %w", err) + return fmt.Errorf("could not uninstall The Observability Stack: %w", err) } var stdbuf bytes.Buffer @@ -45,17 +45,17 @@ func helmUninstall(cmd *cobra.Command, args []string) error { uninstall.Stdout = mw uninstall.Stderr = mw - fmt.Println("Uninstalling Timescale Observability") + fmt.Println("Uninstalling The Observability Stack") err = uninstall.Run() if err != nil { - return fmt.Errorf("could not uninstall Timescale Observability: %w", err) + return fmt.Errorf("could not uninstall The Observability Stack: %w", err) } fmt.Println("Waiting for pods to terminate...") for i := 0; i < 1000; i++ { pods, err := KubeGetAllPods(namespace, name) if err != nil { - return fmt.Errorf("could not uninstall Timescale Observability: %w", err) + return fmt.Errorf("could not uninstall The Observability Stack: %w", err) } if len(pods) == 0 { break @@ -80,18 +80,18 @@ func helmUninstall(cmd *cobra.Command, args []string) error { fmt.Println("Checking Persistent Volume Claims") pvcnames, err := KubeGetPVCNames(namespace, map[string]string{"release": name}) if err != nil { - return fmt.Errorf("could not uninstall Timescale Observability: %w", err) + return fmt.Errorf("could not uninstall The Observability Stack: %w", err) } fmt.Println("Removing Persistent Volume Claims") for _, s := range pvcnames { err = KubeDeletePVC(namespace, s) if err != nil { - return fmt.Errorf("could not uninstall Timescale Observability: %w", err) + return fmt.Errorf("could not uninstall The Observability Stack: %w", err) } } } else { - fmt.Println("Data still remains. To delete data as well, run 'ts-obs helm delete-data'") + fmt.Println("Data still remains. To delete data as well, run 'tobs helm delete-data'") } return nil diff --git a/ts-obs/cmd/install.go b/cli/cmd/install.go similarity index 100% rename from ts-obs/cmd/install.go rename to cli/cmd/install.go diff --git a/ts-obs/cmd/kubectl.go b/cli/cmd/kubectl.go similarity index 98% rename from ts-obs/cmd/kubectl.go rename to cli/cmd/kubectl.go index b2b6a673..bdddd8cd 100644 --- a/ts-obs/cmd/kubectl.go +++ b/cli/cmd/kubectl.go @@ -56,10 +56,6 @@ func KubeGetPodName(namespace string, labelmap map[string]string) (string, error return "", err } - if len(pods.Items) == 0 { - return "", nil - } - return pods.Items[0].Name, nil } @@ -78,10 +74,6 @@ func KubeGetServiceName(namespace string, labelmap map[string]string) (string, e return "", err } - if len(services.Items) == 0 { - return "", nil - } - return services.Items[0].Name, nil } diff --git a/ts-obs/cmd/metrics.go b/cli/cmd/metrics.go similarity index 100% rename from ts-obs/cmd/metrics.go rename to cli/cmd/metrics.go diff --git a/ts-obs/cmd/pgx.go b/cli/cmd/pgx.go similarity index 100% rename from ts-obs/cmd/pgx.go rename to cli/cmd/pgx.go diff --git a/ts-obs/cmd/portForward.go b/cli/cmd/portForward.go similarity index 100% rename from ts-obs/cmd/portForward.go rename to cli/cmd/portForward.go diff --git a/ts-obs/cmd/prometheus.go b/cli/cmd/prometheus.go similarity index 100% rename from ts-obs/cmd/prometheus.go rename to cli/cmd/prometheus.go diff --git a/ts-obs/cmd/prometheusPortForward.go b/cli/cmd/prometheusPortForward.go similarity index 100% rename from ts-obs/cmd/prometheusPortForward.go rename to cli/cmd/prometheusPortForward.go diff --git a/ts-obs/cmd/retention.go b/cli/cmd/retention.go similarity index 100% rename from ts-obs/cmd/retention.go rename to cli/cmd/retention.go diff --git a/ts-obs/cmd/retentionGet.go b/cli/cmd/retentionGet.go similarity index 100% rename from ts-obs/cmd/retentionGet.go rename to cli/cmd/retentionGet.go diff --git a/ts-obs/cmd/retentionReset.go b/cli/cmd/retentionReset.go similarity index 100% rename from ts-obs/cmd/retentionReset.go rename to cli/cmd/retentionReset.go diff --git a/ts-obs/cmd/retentionSet.go b/cli/cmd/retentionSet.go similarity index 100% rename from ts-obs/cmd/retentionSet.go rename to cli/cmd/retentionSet.go diff --git a/ts-obs/cmd/retentionSetDefault.go b/cli/cmd/retentionSetDefault.go similarity index 100% rename from ts-obs/cmd/retentionSetDefault.go rename to cli/cmd/retentionSetDefault.go diff --git a/ts-obs/cmd/root.go b/cli/cmd/root.go similarity index 83% rename from ts-obs/cmd/root.go rename to cli/cmd/root.go index df9f585b..0ff1176e 100644 --- a/ts-obs/cmd/root.go +++ b/cli/cmd/root.go @@ -15,9 +15,9 @@ var name string // rootCmd represents the base command when called without any subcommands var rootCmd = &cobra.Command{ - Use: "ts-obs", - Short: "A CLI tool for Timescale Observablity", - Long: `Timescale Observability is a tool that uses TimescaleDB as a + Use: "tobs", + Short: "A CLI tool for The Observablity Stack", + Long: `The Observability Stack is a tool that uses TimescaleDB as a compressed long-term store for time series metrics from Prometheus. This application is a CLI tool that allows users to quickly access the different components of Observability.`, @@ -49,8 +49,8 @@ func Execute() { func init() { cobra.OnInitialize(initConfig) - rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.ts-obs.yaml)") - rootCmd.PersistentFlags().StringP("name", "n", "ts-obs", "Helm release name") + rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.tobs.yaml)") + rootCmd.PersistentFlags().StringP("name", "n", "tobs", "Helm release name") rootCmd.PersistentFlags().StringP("namespace", "", "default", "Kubernetes namespace") } @@ -67,9 +67,9 @@ func initConfig() { os.Exit(1) } - // Search config in home directory with name ".ts-obs" (without extension). + // Search config in home directory with name ".tobs" (without extension). viper.AddConfigPath(home) - viper.SetConfigName(".ts-obs") + viper.SetConfigName(".tobs") } viper.AutomaticEnv() // read in environment variables that match diff --git a/ts-obs/cmd/timescaledb.go b/cli/cmd/timescaledb.go similarity index 100% rename from ts-obs/cmd/timescaledb.go rename to cli/cmd/timescaledb.go diff --git a/ts-obs/cmd/timescaledbChangePassword.go b/cli/cmd/timescaledbChangePassword.go similarity index 100% rename from ts-obs/cmd/timescaledbChangePassword.go rename to cli/cmd/timescaledbChangePassword.go diff --git a/ts-obs/cmd/timescaledbConnect.go b/cli/cmd/timescaledbConnect.go similarity index 100% rename from ts-obs/cmd/timescaledbConnect.go rename to cli/cmd/timescaledbConnect.go diff --git a/ts-obs/cmd/timescaledbGetPassword.go b/cli/cmd/timescaledbGetPassword.go similarity index 100% rename from ts-obs/cmd/timescaledbGetPassword.go rename to cli/cmd/timescaledbGetPassword.go diff --git a/ts-obs/cmd/timescaledbPortForward.go b/cli/cmd/timescaledbPortForward.go similarity index 100% rename from ts-obs/cmd/timescaledbPortForward.go rename to cli/cmd/timescaledbPortForward.go diff --git a/ts-obs/cmd/uninstall.go b/cli/cmd/uninstall.go similarity index 100% rename from ts-obs/cmd/uninstall.go rename to cli/cmd/uninstall.go diff --git a/cli/go.mod b/cli/go.mod new file mode 100644 index 00000000..4e44f3d0 --- /dev/null +++ b/cli/go.mod @@ -0,0 +1,15 @@ +module cli + +go 1.14 + +require ( + github.com/imdario/mergo v0.3.10 // indirect + github.com/jackc/pgx/v4 v4.8.0 + github.com/mitchellh/go-homedir v1.1.0 + github.com/spf13/cobra v1.0.0 + github.com/spf13/viper v1.7.0 + k8s.io/api v0.18.6 + k8s.io/apimachinery v0.18.6 + k8s.io/client-go v0.18.6 + k8s.io/utils v0.0.0-20200720150651-0bdb4ca86cbc // indirect +) diff --git a/ts-obs/go.sum b/cli/go.sum similarity index 90% rename from ts-obs/go.sum rename to cli/go.sum index 778fcb2f..98583428 100644 --- a/ts-obs/go.sum +++ b/cli/go.sum @@ -18,7 +18,6 @@ github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxB github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= @@ -37,7 +36,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= @@ -56,7 +54,6 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96 h1:cenwrSVm+Z7QLSV/BsnenAOcDXdX4cMv4wP0B/5QbPg= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= -github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153 h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= @@ -75,7 +72,6 @@ github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1 github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= @@ -95,7 +91,6 @@ github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= @@ -111,7 +106,6 @@ github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsC github.com/googleapis/gnostic v0.1.0 h1:rVsPeBmXbYv4If/cumu1AzZPwV58q433hvONV1UEZoI= github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= @@ -141,9 +135,9 @@ github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0m github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/imdario/mergo v0.3.5 h1:JboBksRwiiAJWvIYJVo46AfV+IAIKZpfrSzVKj42R4Q= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/imdario/mergo v0.3.10 h1:6q5mVkdH/vYmqngx7kZQTjJ5HRsx+ImorDIEQ+beJgc= +github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jackc/chunkreader v1.0.0 h1:4s39bBR8ByfqH+DKm8rQA3E1LHZWB9XWcrz8fqaZbe0= github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= @@ -153,11 +147,13 @@ github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgO github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA= github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE= github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= -github.com/jackc/pgconn v1.5.0 h1:oFSOilzIZkyg787M1fEmyMfOUUvwj0daqYMfaWwNL4o= +github.com/jackc/pgconn v1.4.0/go.mod h1:Y2O3ZDF0q4mMacyWV3AstPJpeHXWGEetiFttmq5lahk= github.com/jackc/pgconn v1.5.0/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI= +github.com/jackc/pgconn v1.5.1-0.20200601181101-fa742c524853/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI= +github.com/jackc/pgconn v1.6.3 h1:4Ks3RKvSvKPolXZsnLQTDAsokDhgID14Cv4ehECmzlY= +github.com/jackc/pgconn v1.6.3/go.mod h1:w2pne1C2tZgP+TvjqLpOigGzNqjBgQW9dUw/4Chex78= github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= -github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2 h1:JVX6jT/XfzNqIjye4717ITLaNwV9mWbJx0dLCpcRzdA= github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= @@ -167,32 +163,39 @@ github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= -github.com/jackc/pgproto3/v2 v2.0.1 h1:Rdjp4NFjwHnEslx2b66FfCI2S0LhO4itac3hXz6WX9M= github.com/jackc/pgproto3/v2 v2.0.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgservicefile v0.0.0-20200307190119-3430c5407db8 h1:Q3tB+ExeflWUW7AFcAhXqk40s9mnNYLk1nOkKNZ5GnU= +github.com/jackc/pgproto3/v2 v2.0.2 h1:q1Hsy66zh4vuNsajBUF2PNqfAMMfxU5mk594lPE9vjY= +github.com/jackc/pgproto3/v2 v2.0.2/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgservicefile v0.0.0-20200307190119-3430c5407db8/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= +github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg= +github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= -github.com/jackc/pgtype v1.3.0 h1:l8JvKrby3RI7Kg3bYEeU9TA4vqC38QDpFCfcrC7KuN0= -github.com/jackc/pgtype v1.3.0/go.mod h1:b0JqxHvPmljG+HQ5IsvQ0yqeSi4nGcDTVjFoiLDb0Ik= +github.com/jackc/pgtype v1.2.0/go.mod h1:5m2OfMh1wTK7x+Fk952IDmI4nw3nPrvtQdM0ZT4WpC0= +github.com/jackc/pgtype v1.3.1-0.20200510190516-8cd94a14c75a/go.mod h1:vaogEUkALtxZMCH411K+tKzNpwzCKU+AnPzBKZ+I+Po= +github.com/jackc/pgtype v1.3.1-0.20200606141011-f6355165a91c/go.mod h1:cvk9Bgu/VzJ9/lxTO5R5sf80p0DiucVtN7ZxvaC4GmQ= +github.com/jackc/pgtype v1.4.2 h1:t+6LWm5eWPLX1H5Se702JSBcirq6uWa4jiG4wV1rAWY= +github.com/jackc/pgtype v1.4.2/go.mod h1:JCULISAZBFGrHaOXIIFiyfzW5VY0GRitRr8NeJsrdig= github.com/jackc/pgx v3.6.2+incompatible h1:2zP5OD7kiyR3xzRYMhOcXVvkDZsImVXfj+yIyTQf3/o= -github.com/jackc/pgx v3.6.2+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= -github.com/jackc/pgx/v4 v4.6.0 h1:Fh0O9GdlG4gYpjpwOqjdEodJUQM9jzN3Hdv7PN0xmm0= -github.com/jackc/pgx/v4 v4.6.0/go.mod h1:vPh43ZzxijXUVJ+t/EmXBtFmbFVO72cuneCT9oAlxAg= +github.com/jackc/pgx/v4 v4.5.0/go.mod h1:EpAKPLdnTorwmPUUsqrPxy5fphV18j9q3wrfRXgo+kA= +github.com/jackc/pgx/v4 v4.6.1-0.20200510190926-94ba730bb1e9/go.mod h1:t3/cdRQl6fOLDxqtlyhe9UWgfIi9R8+8v8GKV5TRA/o= +github.com/jackc/pgx/v4 v4.6.1-0.20200606145419-4e5062306904/go.mod h1:ZDaNWkt9sW1JMiNn0kdYBaLelIhw7Pg4qd+Vk6tw7Hg= +github.com/jackc/pgx/v4 v4.8.0 h1:xO3bPvwr0MJSoDfb4yeeWZIxSZ2VFBm5axPnaNEnGUQ= +github.com/jackc/pgx/v4 v4.8.0/go.mod h1:AjqYcDmEyst6GF8jJi/RF73Gla9d7/HLZzJEZj2uwpM= github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle v1.1.0 h1:musOWczZC/rSbqut475Vfcczg7jJsdUQf0D6oKPLgNU= github.com/jackc/puddle v1.1.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.1.1 h1:PJAw7H/9hoWC4Kf3J8iNmL1SwA6E8vfsLqBiL+F6CtI= +github.com/jackc/puddle v1.1.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.8 h1:QiWkFLKq0T7mpzwOTu6BzNDbfTE8OLrYhVKYMLF46Ok= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= @@ -201,16 +204,14 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= @@ -218,11 +219,13 @@ github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= @@ -255,9 +258,7 @@ github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181 github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -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/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= @@ -278,15 +279,13 @@ github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24 h1:pntxY8Ary0t43dCZ5dqY4YTJCObLY1kIXl0uzMv+7DE= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= +github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -301,7 +300,6 @@ github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHN github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= @@ -314,7 +312,6 @@ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoH github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= @@ -328,7 +325,10 @@ go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -339,9 +339,11 @@ golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaE golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59 h1:3zb4D3T4G8jdExgVU/95+vQXfpEPiMdCaZgmGVxjNHM= golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -407,18 +409,19 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0 h1:HyfiK1WMnHj5FXFXatD+Qs1A/xC2Run6RzeW1SyHxpc= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456 h1:ng0gs1AKnRRuEMZoTLLlbOd+C17zUDepwGQBb/n+JVg= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7 h1:HmbHVPwrPEKPGLAcHSrMe6+hqSUlvZU0rab6x5EXfGU= golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepxRw6jWvR5iDRdvjHgy8= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/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= -golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -442,11 +445,14 @@ golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 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 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -455,7 +461,6 @@ google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsb 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= -google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -472,7 +477,6 @@ google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ij google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= @@ -486,20 +490,24 @@ gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWD gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -k8s.io/api v0.18.3 h1:2AJaUQdgUZLoDZHrun21PW2Nx9+ll6cUzvn3IKhSIn0= -k8s.io/api v0.18.3/go.mod h1:UOaMwERbqJMfeeeHc8XJKawj4P9TgDRnViIqqBeH2QA= -k8s.io/apimachinery v0.18.3 h1:pOGcbVAhxADgUYnjS08EFXs9QMl8qaH5U4fr5LGUrSk= -k8s.io/apimachinery v0.18.3/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= -k8s.io/client-go v0.18.3 h1:QaJzz92tsN67oorwzmoB0a9r9ZVHuD5ryjbCKP0U22k= -k8s.io/client-go v0.18.3/go.mod h1:4a/dpQEvzAhT1BbuWW09qvIaGw6Gbu1gZYiQZIi1DMw= +k8s.io/api v0.18.6 h1:osqrAXbOQjkKIWDTjrqxWQ3w0GkKb1KA1XkUGHHYpeE= +k8s.io/api v0.18.6/go.mod h1:eeyxr+cwCjMdLAmr2W3RyDI0VvTawSg/3RFFBEnmZGI= +k8s.io/apimachinery v0.18.6 h1:RtFHnfGNfd1N0LeSrKCUznz5xtUP1elRGvHJbL3Ntag= +k8s.io/apimachinery v0.18.6/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= +k8s.io/client-go v0.18.6 h1:I+oWqJbibLSGsZj8Xs8F0aWVXJVIoUHWaaJV3kUN/Zw= +k8s.io/client-go v0.18.6/go.mod h1:/fwtGLjYMS1MaM5oi+eXhKwG+1UHidUEXRh6cNsdO0Q= +k8s.io/client-go v1.5.1 h1:XaX/lo2/u3/pmFau8HN+sB5C/b4dc4Dmm2eXjBH4p1E= +k8s.io/client-go v11.0.0+incompatible h1:LBbX2+lOwY9flffWlJM7f1Ct8V2SRNiMRDFeiwnJo9o= +k8s.io/client-go v11.0.0+incompatible/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= @@ -508,8 +516,8 @@ k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20200603063816-c1c6865ac451 h1:v8ud2Up6QK1lNOKFgiIVrZdMg7MpmSnvtrOieolJKoE= -k8s.io/utils v0.0.0-20200603063816-c1c6865ac451/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20200720150651-0bdb4ca86cbc h1:GiXZzevctVRRBh56shqcqB9s9ReWMU6GTsFyE2RCFJQ= +k8s.io/utils v0.0.0-20200720150651-0bdb4ca86cbc/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= sigs.k8s.io/structured-merge-diff/v3 v3.0.0 h1:dOmIZBMfhcHS09XZkMyUgkq5trg3/jRyJYFZUiaOp8E= diff --git a/ts-obs/main.go b/cli/main.go similarity index 96% rename from ts-obs/main.go rename to cli/main.go index 79b4aef0..fd7a7c8f 100644 --- a/ts-obs/main.go +++ b/cli/main.go @@ -15,7 +15,7 @@ limitations under the License. */ package main -import "ts-obs/cmd" +import "cli/cmd" func main() { cmd.Execute() diff --git a/ts-obs/tests/concurrent_test.go b/cli/tests/concurrent_test.go similarity index 99% rename from ts-obs/tests/concurrent_test.go rename to cli/tests/concurrent_test.go index 75440c6f..b3b82fc7 100644 --- a/ts-obs/tests/concurrent_test.go +++ b/cli/tests/concurrent_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "ts-obs/cmd" + "cli/cmd" ) func changeRelease(t testing.TB) { diff --git a/ts-obs/tests/grafana_test.go b/cli/tests/grafana_test.go similarity index 81% rename from ts-obs/tests/grafana_test.go rename to cli/tests/grafana_test.go index 5ea5a407..863821e8 100644 --- a/ts-obs/tests/grafana_test.go +++ b/cli/tests/grafana_test.go @@ -15,8 +15,8 @@ func testGrafanaPortForward(t testing.TB, port string) { cmds = append(cmds, "-p", port) } - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - portforward := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + portforward := exec.Command("tobs", cmds...) err := portforward.Start() if err != nil { @@ -39,8 +39,8 @@ func testGrafanaPortForward(t testing.TB, port string) { func testGrafanaGetPass(t testing.TB) { cmds := []string{"grafana", "get-password", "-n", RELEASE_NAME, "--namespace", NAMESPACE} - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - getpass := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + getpass := exec.Command("tobs", cmds...) out, err := getpass.CombinedOutput() if err != nil { @@ -52,8 +52,8 @@ func testGrafanaGetPass(t testing.TB) { func testGrafanaChangePass(t testing.TB, newpass string) { cmds := []string{"grafana", "change-password", "\"" + newpass + "\"", "-n", RELEASE_NAME, "--namespace", NAMESPACE} - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - changepass := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + changepass := exec.Command("tobs", cmds...) out, err := changepass.CombinedOutput() if err != nil { @@ -63,7 +63,7 @@ func testGrafanaChangePass(t testing.TB, newpass string) { } func verifyGrafanaPass(t testing.TB, expectedPass string) { - getpass := exec.Command("ts-obs", "grafana", "get-password", "-n", RELEASE_NAME, "--namespace", NAMESPACE) + getpass := exec.Command("tobs", "grafana", "get-password", "-n", RELEASE_NAME, "--namespace", NAMESPACE) out, err := getpass.CombinedOutput() if err != nil { diff --git a/ts-obs/tests/installation_test.go b/cli/tests/installation_test.go similarity index 86% rename from ts-obs/tests/installation_test.go rename to cli/tests/installation_test.go index f3c60302..386c36bd 100644 --- a/ts-obs/tests/installation_test.go +++ b/cli/tests/installation_test.go @@ -6,7 +6,7 @@ import ( "testing" "time" - "ts-obs/cmd" + "cli/cmd" ) func testInstall(t testing.TB, name, namespace, filename string) { @@ -25,8 +25,8 @@ func testInstall(t testing.TB, name, namespace, filename string) { cmds = append(cmds, "-f", filename) } - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - install := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + install := exec.Command("tobs", cmds...) out, err := install.CombinedOutput() if err != nil { @@ -51,8 +51,8 @@ func testHelmInstall(t testing.TB, name, namespace, filename string) { cmds = append(cmds, "-f", filename) } - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - install := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + install := exec.Command("tobs", cmds...) out, err := install.CombinedOutput() if err != nil { @@ -77,8 +77,8 @@ func testUninstall(t testing.TB, name, namespace string, deleteData bool) { cmds = append(cmds, "--delete-data") } - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - uninstall := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + uninstall := exec.Command("tobs", cmds...) out, err := uninstall.CombinedOutput() if err != nil { @@ -103,8 +103,8 @@ func testHelmUninstall(t testing.TB, name, namespace string, deleteData bool) { cmds = append(cmds, "--delete-data") } - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - uninstall := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + uninstall := exec.Command("tobs", cmds...) out, err := uninstall.CombinedOutput() if err != nil { @@ -112,7 +112,7 @@ func testHelmUninstall(t testing.TB, name, namespace string, deleteData bool) { t.Fatal(err) } - pods, err := cmd.KubeGetAllPods("ts-obs", "default") + pods, err := cmd.KubeGetAllPods("tobs", "default") if err != nil { t.Fatal(err) } @@ -135,8 +135,8 @@ func testHelmDeleteData(t testing.TB, name, namespace string) { cmds = append(cmds, "--namespace", NAMESPACE) } - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - deletedata := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + deletedata := exec.Command("tobs", cmds...) out, err := deletedata.CombinedOutput() if err != nil { @@ -156,8 +156,8 @@ func testHelmDeleteData(t testing.TB, name, namespace string) { func testHelmShowValues(t testing.TB) { var showvalues *exec.Cmd - t.Logf("Running 'ts-obs helm show-values'") - showvalues = exec.Command("ts-obs", "helm", "show-values") + t.Logf("Running 'tobs helm show-values'") + showvalues = exec.Command("tobs", "helm", "show-values") out, err := showvalues.CombinedOutput() if err != nil { diff --git a/ts-obs/tests/main_test.go b/cli/tests/main_test.go similarity index 86% rename from ts-obs/tests/main_test.go rename to cli/tests/main_test.go index aa2d3a1e..44972f57 100644 --- a/ts-obs/tests/main_test.go +++ b/cli/tests/main_test.go @@ -28,12 +28,12 @@ func startKube() { func installObs() { var err error - log.Println("Installing Timescale Observability") + log.Println("Installing The Observability Stack") - obsinstall := exec.Command("ts-obs", "install", "-n", RELEASE_NAME, "--namespace", NAMESPACE) + obsinstall := exec.Command("tobs", "install", "-n", RELEASE_NAME, "--namespace", NAMESPACE) err = obsinstall.Run() if err != nil { - log.Println("Error installing Timescale Observability:", err) + log.Println("Error installing The Observability Stack:", err) os.Exit(1) } } diff --git a/ts-obs/tests/metrics_test.go b/cli/tests/metrics_test.go similarity index 90% rename from ts-obs/tests/metrics_test.go rename to cli/tests/metrics_test.go index fa5785ff..ca21d0cf 100644 --- a/ts-obs/tests/metrics_test.go +++ b/cli/tests/metrics_test.go @@ -11,7 +11,7 @@ import ( "time" "github.com/jackc/pgx/v4/pgxpool" - "ts-obs/cmd" + "cli/cmd" ) var PASS string @@ -25,8 +25,8 @@ func testRetentionSetDefault(t testing.TB, period int, user, dbname string) { cmds = append(cmds, "-d", dbname) } - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - set := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + set := exec.Command("tobs", cmds...) out, err := set.CombinedOutput() if err != nil { @@ -44,8 +44,8 @@ func testRetentionSet(t testing.TB, metric string, period int, user, dbname stri cmds = append(cmds, "-d", dbname) } - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - set := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + set := exec.Command("tobs", cmds...) out, err := set.CombinedOutput() if err != nil { @@ -63,8 +63,8 @@ func testRetentionReset(t testing.TB, metric, user, dbname string) { cmds = append(cmds, "-d", dbname) } - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - reset := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + reset := exec.Command("tobs", cmds...) out, err := reset.CombinedOutput() if err != nil { @@ -82,8 +82,8 @@ func testRetentionGet(t testing.TB, metric string, expectedDays int64, user, dbn cmds = append(cmds, "-d", dbname) } - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - get := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + get := exec.Command("tobs", cmds...) out, err := get.CombinedOutput() if err != nil { @@ -110,8 +110,8 @@ func testChunkIntervalSetDefault(t testing.TB, interval, user, dbname string) { cmds = append(cmds, "-d", dbname) } - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - set := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + set := exec.Command("tobs", cmds...) out, err := set.CombinedOutput() if err != nil { @@ -129,8 +129,8 @@ func testChunkIntervalSet(t testing.TB, metric, interval, user, dbname string) { cmds = append(cmds, "-d", dbname) } - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - set := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + set := exec.Command("tobs", cmds...) out, err := set.CombinedOutput() if err != nil { @@ -148,8 +148,8 @@ func testChunkIntervalReset(t testing.TB, metric, user, dbname string) { cmds = append(cmds, "-d", dbname) } - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - reset := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + reset := exec.Command("tobs", cmds...) out, err := reset.CombinedOutput() if err != nil { @@ -167,8 +167,8 @@ func testChunkIntervalGet(t testing.TB, metric string, expectedDuration time.Dur cmds = append(cmds, "-d", dbname) } - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - get := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + get := exec.Command("tobs", cmds...) out, err := get.CombinedOutput() if err != nil { diff --git a/ts-obs/tests/portforward_test.go b/cli/tests/portforward_test.go similarity index 92% rename from ts-obs/tests/portforward_test.go rename to cli/tests/portforward_test.go index 71e8fe94..68840b6d 100644 --- a/ts-obs/tests/portforward_test.go +++ b/cli/tests/portforward_test.go @@ -21,8 +21,8 @@ func testpf(t testing.TB, timescale, grafana, prometheus string) { cmds = append(cmds, "-p", prometheus) } - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - portforward := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + portforward := exec.Command("tobs", cmds...) err := portforward.Start() if err != nil { diff --git a/ts-obs/tests/prometheus_test.go b/cli/tests/prometheus_test.go similarity index 88% rename from ts-obs/tests/prometheus_test.go rename to cli/tests/prometheus_test.go index 3673c93c..c97316df 100644 --- a/ts-obs/tests/prometheus_test.go +++ b/cli/tests/prometheus_test.go @@ -15,8 +15,8 @@ func testPrometheusPortForward(t testing.TB, port string) { cmds = append(cmds, "-p", port) } - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - portforward := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + portforward := exec.Command("tobs", cmds...) err := portforward.Start() if err != nil { diff --git a/ts-obs/tests/testdata/f1.yml b/cli/tests/testdata/f1.yml similarity index 100% rename from ts-obs/tests/testdata/f1.yml rename to cli/tests/testdata/f1.yml diff --git a/ts-obs/tests/testdata/f2.yml b/cli/tests/testdata/f2.yml similarity index 100% rename from ts-obs/tests/testdata/f2.yml rename to cli/tests/testdata/f2.yml diff --git a/ts-obs/tests/testdata/f3.yml b/cli/tests/testdata/f3.yml similarity index 100% rename from ts-obs/tests/testdata/f3.yml rename to cli/tests/testdata/f3.yml diff --git a/ts-obs/tests/testdata/f4.yml b/cli/tests/testdata/f4.yml similarity index 100% rename from ts-obs/tests/testdata/f4.yml rename to cli/tests/testdata/f4.yml diff --git a/ts-obs/tests/timescale_test.go b/cli/tests/timescale_test.go similarity index 74% rename from ts-obs/tests/timescale_test.go rename to cli/tests/timescale_test.go index 472dadaf..a9825542 100644 --- a/ts-obs/tests/timescale_test.go +++ b/cli/tests/timescale_test.go @@ -15,8 +15,8 @@ func testTimescaleGetPassword(t testing.TB, user string) { cmds = append(cmds, "-U", user) } - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - getpass := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + getpass := exec.Command("tobs", cmds...) out, err := getpass.CombinedOutput() if err != nil { @@ -34,8 +34,8 @@ func testTimescaleChangePassword(t testing.TB, user, dbname, newpass string) { cmds = append(cmds, "-d", dbname) } - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - changepass := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + changepass := exec.Command("tobs", cmds...) out, err := changepass.CombinedOutput() if err != nil { @@ -45,7 +45,7 @@ func testTimescaleChangePassword(t testing.TB, user, dbname, newpass string) { } func verifyTimescalePassword(t testing.TB, user string, expectedPass string) { - getpass := exec.Command("ts-obs", "timescaledb", "get-password", "-U", user, "-n", RELEASE_NAME, "--namespace", NAMESPACE) + getpass := exec.Command("tobs", "timescaledb", "get-password", "-U", user, "-n", RELEASE_NAME, "--namespace", NAMESPACE) out, err := getpass.CombinedOutput() if err != nil { @@ -64,8 +64,8 @@ func testTimescalePortForward(t testing.TB, port string) { cmds = append(cmds, "-p", port) } - t.Logf("Running '%v'", "ts-obs "+strings.Join(cmds, " ")) - portforward := exec.Command("ts-obs", cmds...) + t.Logf("Running '%v'", "tobs "+strings.Join(cmds, " ")) + portforward := exec.Command("tobs", cmds...) err := portforward.Start() if err != nil { @@ -89,15 +89,15 @@ func testTimescaleConnect(t testing.TB, master bool, user string) { var connect *exec.Cmd if master { - t.Logf("Running 'ts-obs timescaledb connect -m'") - connect = exec.Command("ts-obs", "timescaledb", "connect", "-m", "-n", RELEASE_NAME, "--namespace", NAMESPACE) + t.Logf("Running 'tobs timescaledb connect -m'") + connect = exec.Command("tobs", "timescaledb", "connect", "-m", "-n", RELEASE_NAME, "--namespace", NAMESPACE) } else { if user == "" { - t.Logf("Running 'ts-obs timescaledb connect'") - connect = exec.Command("ts-obs", "timescaledb", "connect", "-n", RELEASE_NAME, "--namespace", NAMESPACE) + t.Logf("Running 'tobs timescaledb connect'") + connect = exec.Command("tobs", "timescaledb", "connect", "-n", RELEASE_NAME, "--namespace", NAMESPACE) } else { - t.Logf("Running 'ts-obs timescaledb connect -U %v'", user) - connect = exec.Command("ts-obs", "timescaledb", "connect", "-U", user, "-n", RELEASE_NAME, "--namespace", NAMESPACE) + t.Logf("Running 'tobs timescaledb connect -U %v'", user) + connect = exec.Command("tobs", "timescaledb", "connect", "-U", user, "-n", RELEASE_NAME, "--namespace", NAMESPACE) } } diff --git a/ts-obs/README.md b/ts-obs/README.md deleted file mode 100644 index 6b304381..00000000 --- a/ts-obs/README.md +++ /dev/null @@ -1,82 +0,0 @@ -# Timescale Observability CLI - -This is a CLI tool for installing and managing the Timescale Observability Helm chart. - -## Quick Start - -__Dependencies__: [Go](https://golang.org/doc/install), [Helm](https://helm.sh/docs/intro/install/) - -To install the CLI, run `go install` from inside the `ts-obs` folder. -Then, copy the `ts-obs` binary from `$GOPATH/bin` to your `/bin` folder. - -## Commands - -The following are the commands possible with the CLI. - -### Base Commands - -| Command | Description | Flags | -|-----------------------|------------------------------------------------------------------|------------------------------------------------------| -| `ts-obs install` | Alias for `ts-obs helm install`. | `--filename`, `-f` : file to load configuration from | -| `ts-obs uninstall` | Alias for `ts-obs helm unintall`. | None | -| `ts-obs port-forward` | Port-forwards TimescaleDB, Grafana, and Prometheus to localhost. | `--timescaledb`, `-t` : port for TimescaleDB
`--grafana`, `-g` : port for Grafana
`--prometheus`, `-p` : port for Prometheus | - -### Helm Commands - -| Command | Description | Flags | -|---------------------------|---------------------------------------------------------------------------|------------------------------------------------------| -| `ts-obs helm install` | Installs the Timescale Observability Helm chart. | `--filename`, `-f` : file to load configuration from | -| `ts-obs helm uninstall` | Uninstalls the Timescale Observability Helm chart. | None | -| `ts-obs helm show-values` | Prints the YAML configuration of the Timescale Observability Helm chart. | None | -| `ts-obs helm delete-data` | Deletes persistent volume claims associated with Timescale Observability. | None | - -### TimescaleDB Commands - -| Command | Description | Flags | -|-----------------------------------|------------------------------------------------------------|---------------------------------------------| -| `ts-obs timescaledb connect` | Connects to the Timescale database running in the cluster. | `--user`, `-U` : user to login with
`--master`, `-m` : directly execute session on master node | -| `ts-obs timescaledb port-forward` | Port-forwards TimescaleDB to localhost. | `--port`, `-p` : port to listen from | -| `ts-obs timescaledb get-password` | Gets the password for a user in the Timescale database. | `--user`, `-U` : user whose password to get | -| `ts-obs timescaledb change-password` | Changes the password for a user in the Timescale database. | `--user`, `-U` : user whose password to get | - -### Grafana Commands - -| Command | Description | Flags | -|---------------------------------------|------------------------------------------------|--------------------------------------| -| `ts-obs grafana port-forward` | Port-forwards the Grafana server to localhost. | `--port`, `-p` : port to listen from | -| `ts-obs grafana get-initial-password` | Gets the initial admin password for Grafana. | None | -| `ts-obs grafana change-password` | Changes the admin password for Grafana. | None | - -### Prometheus Commands - -| Command | Description | Flags | -|----------------------------------|---------------------------------------------------|--------------------------------------| -| `ts-obs prometheus port-forward` | Port-forwards the Prometheus server to localhost. | `--port`, `-p` : port to listen from | - -### Metrics Commands - -| Command | Description | Flags | -|---------------------------------------------|--------------------------------------------------------------------------------------|-------| -| `ts-obs metrics retention get` | Gets the data retention period of a specific metric. | `--user`, `-U` : database user name
`--dbname`, `-d` : database name to connect to | -| `ts-obs metrics retention set-default` | Sets the default data retention period to the specified number of days. | `--user`, `-U` : database user name
`--dbname`, `-d` : database name to connect to | -| `ts-obs metrics retention set` | Sets the data retention period of a specific metric to the specified number of days. | `--user`, `-U` : database user name
`--dbname`, `-d` : database name to connect to | -| `ts-obs metrics retention reset` | Resets the data retention period of a specific metric to the default value. | `--user`, `-U` : database user name
`--dbname`, `-d` : database name to connect to | -| `ts-obs metrics chunk-interval get` | Gets the chunk interval of a specific metric. | `--user`, `-U` : database user name
`--dbname`, `-d` : database name to connect to | -| `ts-obs metrics chunk-interval set-default` | Sets the default chunk interval to the specified duration. | `--user`, `-U` : database user name
`--dbname`, `-d` : database name to connect to | -| `ts-obs metrics chunk-interval set` | Sets the chunk interval of a specific metric to the specified duration. | `--user`, `-U` : database user name
`--dbname`, `-d` : database name to connect to | -| `ts-obs metrics chunk-interval reset` | Resets chunk interval of a specific metric to the default value. | `--user`, `-U` : database user name
`--dbname`, `-d` : database name to connect to | - -## Global Flags - -The following are global flags that can be used with any of the above commands: - -| Flag | Description | -|----------------|----------------------| -| `--name`, `-n` | Helm release name | -| `--namespace` | Kubernetes namespace | - -## Testing - -A testing suite is included in the `tests` folder. This testing suite has additional dependencies on [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) and [minikube](https://kubernetes.io/docs/tasks/tools/install-minikube/). - -The testing suite can be run by calling `go test -timeout 30m` from within the `tests` folder. diff --git a/ts-obs/go.mod b/ts-obs/go.mod deleted file mode 100644 index 37253c5d..00000000 --- a/ts-obs/go.mod +++ /dev/null @@ -1,14 +0,0 @@ -module ts-obs - -go 1.14 - -require ( - github.com/jackc/pgx/v4 v4.6.0 - github.com/mitchellh/go-homedir v1.1.0 - github.com/spf13/cobra v1.0.0 - github.com/spf13/viper v1.7.0 - k8s.io/api v0.18.3 - k8s.io/apimachinery v0.18.3 - k8s.io/client-go v0.18.3 - k8s.io/utils v0.0.0-20200603063816-c1c6865ac451 // indirect -)