Skip to content
This repository was archived by the owner on Nov 14, 2024. It is now read-only.

feat: initial implementation of coder-doctor #3

Merged
merged 11 commits into from
Aug 16, 2021
Prev Previous commit
cian's code review
  • Loading branch information
jawnsy committed Aug 16, 2021
commit 71f97fc56a8aa4cd7a48ebdfbc9affb5a3d1e00f
3 changes: 2 additions & 1 deletion internal/checks/kube/kubernetes.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (

"github.com/Masterminds/semver/v3"
"k8s.io/client-go/kubernetes"
"golang.org/x/xerrors"

"cdr.dev/slog"
"cdr.dev/slog/sloggers/sloghuman"
Expand Down Expand Up @@ -65,7 +66,7 @@ func (*KubernetesChecker) Validate() error {
func (k *KubernetesChecker) Run(ctx context.Context) error {
err := k.writer.WriteResult(k.CheckVersion(ctx))
if err != nil {
return err
return xerrors.Errorf("check version: %w", err)
}
return nil
}
2 changes: 1 addition & 1 deletion internal/checks/kube/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ func (k *KubernetesChecker) CheckVersion(ctx context.Context) *api.CheckResult {

err = json.Unmarshal(body, &versionInfo)
if err != nil {
return api.ErrorResult(checkName, "failed to parse server version", err)
return api.ErrorResult(checkName, "failed to unmarshal version info", err)
}

selectedVersion := findNearestVersion(k.coderVersion)
Expand Down
23 changes: 12 additions & 11 deletions internal/cmd/check/kubernetes/kubernetes.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (

"github.com/Masterminds/semver/v3"
"github.com/spf13/cobra"
"golang.org/x/xerrors"

"cdr.dev/slog"
"cdr.dev/slog/sloggers/sloghuman"
Expand Down Expand Up @@ -44,17 +45,17 @@ func getConfigOverridesFromFlags(cmd *cobra.Command) (*clientcmd.ConfigOverrides

overrides.CurrentContext, err = cmd.Flags().GetString(clientcmd.FlagContext)
if err != nil {
return nil, err
return nil, xerrors.Errorf("parse %s: %w", clientcmd.FlagContext, err)
}

overrides.Context.Namespace, err = cmd.Flags().GetString(clientcmd.FlagNamespace)
if err != nil {
return nil, err
return nil, xerrors.Errorf("parse %s: %w", clientcmd.FlagNamespace, err)
}

overrides.Context.Cluster, err = cmd.Flags().GetString(clientcmd.FlagClusterName)
if err != nil {
return nil, err
return nil, xerrors.Errorf("parse %s: %w", clientcmd.FlagClusterName, err)
}

return overrides, nil
Expand All @@ -66,38 +67,38 @@ func run(cmd *cobra.Command, _ []string) error {
var err error
loadingRules.ExplicitPath, err = cmd.Flags().GetString(clientcmd.RecommendedConfigPathFlag)
if err != nil {
return err
return xerrors.Errorf("parse %s: %w", clientcmd.RecommendedConfigPathFlag, err)
}

overrides, err := getConfigOverridesFromFlags(cmd)
if err != nil {
return err
return xerrors.Errorf("parse flags: %w", err)
}

config, err := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(loadingRules, overrides).ClientConfig()
if err != nil {
return err
return xerrors.Errorf("creating NonInteractiveDeferredLoadingClientConfig: %w", err)
}

clientset, err := kclient.NewForConfig(config)
if err != nil {
return err
return xerrors.Errorf("creating kube client from config: %w", err)
}

coderVersion, err := cmd.Flags().GetString("coder-version")
if err != nil {
return err
return xerrors.Errorf("parse coder-version string: %w", err)
}

cv, err := semver.NewVersion(coderVersion)
if err != nil {
return err
return xerrors.Errorf("parse coder-version from string %q: %w", coderVersion, err)
}

log := slog.Make(sloghuman.Sink(cmd.OutOrStdout()))
verbosity, err := cmd.Flags().GetInt("verbosity")
if err != nil {
return err
return xerrors.Errorf("parse verbosity: %w", err)
}

// TODO: this is pretty arbitrary, use a defined verbosity similar to
Expand All @@ -115,7 +116,7 @@ func run(cmd *cobra.Command, _ []string) error {

err = checker.Run(cmd.Context())
if err != nil {
return err
return xerrors.Errorf("run kube checker: %w", err)
}

return nil
Expand Down