Skip to content

Commit

Permalink
remove dynamic client usage; go mod tidy/vendor
Browse files Browse the repository at this point in the history
  • Loading branch information
gabemontero committed Jul 26, 2021
1 parent 88f1035 commit 2dd158f
Show file tree
Hide file tree
Showing 19 changed files with 85 additions and 448 deletions.
1 change: 0 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ go 1.15
require (
github.com/mailru/easyjson v0.7.1 // indirect
github.com/onsi/gomega v1.10.3
github.com/pkg/errors v0.9.1
github.com/shipwright-io/build v0.5.2-0.20210715083206-5d8fb411a1eb
github.com/spf13/cobra v1.1.3
github.com/spf13/pflag v1.0.5
Expand Down
10 changes: 7 additions & 3 deletions pkg/shp/cmd/build/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ import (
"github.com/shipwright-io/cli/pkg/shp/cmd/runner"
"github.com/shipwright-io/cli/pkg/shp/flags"
"github.com/shipwright-io/cli/pkg/shp/params"
"github.com/shipwright-io/cli/pkg/shp/resource"
"github.com/spf13/cobra"

metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/cli-runtime/pkg/genericclioptions"
)

Expand Down Expand Up @@ -55,8 +56,11 @@ func (c *CreateCommand) Run(params *params.Params, io *genericclioptions.IOStrea
b := &buildv1alpha1.Build{Spec: *c.buildSpec}
flags.SanitizeBuildSpec(&b.Spec)

buildResource := resource.GetBuildResource(params)
if err := buildResource.Create(c.cmd.Context(), c.name, b); err != nil {
clientset, err := params.ShipwrightClientSet()
if err != nil {
return err
}
if _, err := clientset.ShipwrightV1alpha1().Builds(params.Namespace()).Create(c.cmd.Context(), b, metav1.CreateOptions{}); err != nil {
return err
}
fmt.Fprintf(io.Out, "Created build %q\n", c.name)
Expand Down
17 changes: 8 additions & 9 deletions pkg/shp/cmd/build/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import (

"github.com/shipwright-io/cli/pkg/shp/cmd/runner"
"github.com/shipwright-io/cli/pkg/shp/params"
"github.com/shipwright-io/cli/pkg/shp/resource"
)

// DeleteCommand contains data provided by user to the delete subcommand
Expand Down Expand Up @@ -55,24 +54,24 @@ func (c *DeleteCommand) Validate() error {

// Run contains main logic of delete subcommand
func (c *DeleteCommand) Run(params *params.Params, io *genericclioptions.IOStreams) error {
br := resource.GetBuildResource(params)

if err := br.Delete(c.cmd.Context(), c.name); err != nil {
clientset, err := params.ShipwrightClientSet()
if err != nil {
return err
}
if err := clientset.ShipwrightV1alpha1().Builds(params.Namespace()).Delete(c.Cmd().Context(), c.name, v1.DeleteOptions{}); err != nil {
return err
}

if c.deleteRuns {
brr := resource.GetBuildRunResource(params)

var brList buildv1alpha1.BuildRunList
if err := brr.ListWithOptions(c.cmd.Context(), &brList, v1.ListOptions{
var brList *buildv1alpha1.BuildRunList
if brList, err = clientset.ShipwrightV1alpha1().BuildRuns(params.Namespace()).List(c.cmd.Context(), v1.ListOptions{
LabelSelector: fmt.Sprintf("%v/name=%v", buildv1alpha1.BuildDomain, c.name),
}); err != nil {
return err
}

for _, buildrun := range brList.Items {
if err := brr.Delete(c.cmd.Context(), buildrun.Name); err != nil {
if err := clientset.ShipwrightV1alpha1().BuildRuns(params.Namespace()).Delete(c.cmd.Context(), buildrun.Name, v1.DeleteOptions{}); err != nil {
fmt.Fprintf(io.ErrOut, "Error deleting BuildRun %q: %v\n", buildrun.Name, err)
}
}
Expand Down
17 changes: 9 additions & 8 deletions pkg/shp/cmd/build/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,12 @@ import (
"text/tabwriter"

buildv1alpha1 "github.com/shipwright-io/build/pkg/apis/build/v1alpha1"
"github.com/shipwright-io/cli/pkg/shp/cmd/runner"
"github.com/shipwright-io/cli/pkg/shp/params"
"github.com/spf13/cobra"

metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/cli-runtime/pkg/genericclioptions"

"github.com/shipwright-io/cli/pkg/shp/cmd/runner"
"github.com/shipwright-io/cli/pkg/shp/params"
"github.com/shipwright-io/cli/pkg/shp/resource"
)

// ListCommand struct contains user input to the List subcommand of Build
Expand Down Expand Up @@ -59,10 +58,12 @@ func (c *ListCommand) Run(params *params.Params, io *genericclioptions.IOStreams
columnNames := "NAME\tOUTPUT\tSTATUS"
columnTemplate := "%s\t%s\t%s\n"

var buildList buildv1alpha1.BuildList
br := resource.GetBuildResource(params)

if err := br.List(c.cmd.Context(), &buildList); err != nil {
var buildList *buildv1alpha1.BuildList
clientset, err := params.ShipwrightClientSet()
if err != nil {
return err
}
if buildList, err = clientset.ShipwrightV1alpha1().Builds(params.Namespace()).List(c.cmd.Context(), metav1.ListOptions{}); err != nil {
return err
}

Expand Down
12 changes: 7 additions & 5 deletions pkg/shp/cmd/build/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import (
"github.com/shipwright-io/cli/pkg/shp/flags"
"github.com/shipwright-io/cli/pkg/shp/params"
"github.com/shipwright-io/cli/pkg/shp/reactor"
"github.com/shipwright-io/cli/pkg/shp/resource"
"github.com/shipwright-io/cli/pkg/shp/tail"

"github.com/spf13/cobra"
Expand Down Expand Up @@ -151,8 +150,11 @@ func (r *RunCommand) Run(params *params.Params, ioStreams *genericclioptions.IOS
}
flags.SanitizeBuildRunSpec(&br.Spec)

buildRunResource := resource.GetBuildRunResource(params)
err := buildRunResource.Create(r.cmd.Context(), "", br)
clientset, err := params.ShipwrightClientSet()
if err != nil {
return err
}
br, err = clientset.ShipwrightV1alpha1().BuildRuns(params.Namespace()).Create(r.cmd.Context(), br, metav1.CreateOptions{})
if err != nil {
return err
}
Expand All @@ -167,7 +169,7 @@ func (r *RunCommand) Run(params *params.Params, ioStreams *genericclioptions.IOS
return err
}

clientset, err := params.ClientSet()
kclientset, err := params.ClientSet()
if err != nil {
return err
}
Expand All @@ -180,7 +182,7 @@ func (r *RunCommand) Run(params *params.Params, ioStreams *genericclioptions.IOS
r.buildName,
br.GetName(),
)}
r.pw, err = reactor.NewPodWatcher(r.Cmd().Context(), clientset, listOpts, params.Namespace())
r.pw, err = reactor.NewPodWatcher(r.Cmd().Context(), kclientset, listOpts, params.Namespace())
if err != nil {
return err
}
Expand Down
27 changes: 23 additions & 4 deletions pkg/shp/cmd/buildrun/cancel.go
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
package buildrun

import (
"encoding/json"
"fmt"

"github.com/spf13/cobra"

corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/cli-runtime/pkg/genericclioptions"

buildv1alpha1 "github.com/shipwright-io/build/pkg/apis/build/v1alpha1"
"github.com/shipwright-io/cli/pkg/shp/cmd/runner"
"github.com/shipwright-io/cli/pkg/shp/params"
"github.com/shipwright-io/cli/pkg/shp/resource"
)

// CancelCommand contains data input from user for delete sub-command
Expand Down Expand Up @@ -50,10 +52,13 @@ func (c *CancelCommand) Validate() error {

// Run executes cancel sub-command logic
func (c *CancelCommand) Run(params *params.Params, ioStreams *genericclioptions.IOStreams) error {
brr := resource.GetBuildRunResource(params)
clientset, err := params.ShipwrightClientSet()
if err != nil {
return err
}

br := &buildv1alpha1.BuildRun{}
if err := brr.Get(c.cmd.Context(), c.name, br); err != nil {
if br, err = clientset.ShipwrightV1alpha1().BuildRuns(params.Namespace()).Get(c.cmd.Context(), c.name, metav1.GetOptions{}); err != nil {
return fmt.Errorf("failed to retrieve BuildRun %s: %s", c.name, err.Error())
}
//TODO replace with br.IsDone() when that is available and vendored in
Expand All @@ -63,7 +68,21 @@ func (c *CancelCommand) Run(params *params.Params, ioStreams *genericclioptions.
}

//TODO use constant when vendor in api changes
if err := brr.Patch(c.cmd.Context(), c.name, "replace", "/spec/state", "BuildRunCanceled"); err != nil {
type patchStringValue struct {
Op string `json:"op"`
Path string `json:"path"`
Value string `json:"value"`
}
payload := []patchStringValue{{
Op: "replace",
Path: "/spec/state",
Value: buildv1alpha1.BuildRunStateCancel,
}}
var data []byte
if data, err = json.Marshal(payload); err != nil {
return err
}
if _, err = clientset.ShipwrightV1alpha1().BuildRuns(params.Namespace()).Patch(c.Cmd().Context(), c.name, types.JSONPatchType, data, metav1.PatchOptions{}); err != nil {
return err
}

Expand Down
10 changes: 7 additions & 3 deletions pkg/shp/cmd/buildrun/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ import (
"github.com/shipwright-io/cli/pkg/shp/cmd/runner"
"github.com/shipwright-io/cli/pkg/shp/flags"
"github.com/shipwright-io/cli/pkg/shp/params"
"github.com/shipwright-io/cli/pkg/shp/resource"
"github.com/spf13/cobra"

metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/cli-runtime/pkg/genericclioptions"
)

Expand Down Expand Up @@ -56,8 +57,11 @@ func (c *CreateCommand) Run(params *params.Params, ioStreams *genericclioptions.
br := &buildv1alpha1.BuildRun{Spec: *c.buildRunSpec}
flags.SanitizeBuildRunSpec(&br.Spec)

buildRunResource := resource.GetBuildRunResource(params)
if err := buildRunResource.Create(c.cmd.Context(), c.name, br); err != nil {
clientset, err := params.ShipwrightClientSet()
if err != nil {
return err
}
if _, err = clientset.ShipwrightV1alpha1().BuildRuns(params.Namespace()).Create(c.cmd.Context(), br, metav1.CreateOptions{}); err != nil {
return err
}
fmt.Fprintf(ioStreams.Out, "BuildRun created %q for Build %q\n", c.name, br.Spec.BuildRef.Name)
Expand Down
9 changes: 6 additions & 3 deletions pkg/shp/cmd/buildrun/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ import (

"github.com/spf13/cobra"

metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/cli-runtime/pkg/genericclioptions"

"github.com/shipwright-io/cli/pkg/shp/cmd/runner"
"github.com/shipwright-io/cli/pkg/shp/params"
"github.com/shipwright-io/cli/pkg/shp/resource"
)

// DeleteCommand contains data input from user for delete sub-command
Expand Down Expand Up @@ -48,9 +48,12 @@ func (c *DeleteCommand) Validate() error {

// Run executes delete sub-command logic
func (c *DeleteCommand) Run(params *params.Params, ioStreams *genericclioptions.IOStreams) error {
brr := resource.GetBuildRunResource(params)
clientset, err := params.ShipwrightClientSet()
if err != nil {
return err
}

if err := brr.Delete(c.cmd.Context(), c.name); err != nil {
if err = clientset.ShipwrightV1alpha1().BuildRuns(params.Namespace()).Delete(c.cmd.Context(), c.name, metav1.DeleteOptions{}); err != nil {
return err
}

Expand Down
10 changes: 6 additions & 4 deletions pkg/shp/cmd/buildrun/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import (

"github.com/shipwright-io/cli/pkg/shp/cmd/runner"
"github.com/shipwright-io/cli/pkg/shp/params"
"github.com/shipwright-io/cli/pkg/shp/resource"
)

// ListCommand contains data input from user for list sub-command
Expand Down Expand Up @@ -61,10 +60,13 @@ func (c *ListCommand) Run(params *params.Params, io *genericclioptions.IOStreams
columnNames := "NAME\tSTATUS"
columnTemplate := "%s\t%s\n"

brr := resource.GetBuildRunResource(params)
clientset, err := params.ShipwrightClientSet()
if err != nil {
return err
}

var brs buildv1alpha1.BuildRunList
if err := brr.List(c.cmd.Context(), &brs); err != nil {
var brs *buildv1alpha1.BuildRunList
if brs, err = clientset.ShipwrightV1alpha1().BuildRuns(params.Namespace()).List(c.cmd.Context(), metav1.ListOptions{}); err != nil {
return err
}

Expand Down
8 changes: 2 additions & 6 deletions pkg/shp/cmd/buildrun/logs.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import (

"github.com/shipwright-io/cli/pkg/shp/cmd/runner"
"github.com/shipwright-io/cli/pkg/shp/params"
"github.com/shipwright-io/cli/pkg/shp/resource"
"github.com/shipwright-io/cli/pkg/shp/util"
)

Expand Down Expand Up @@ -53,8 +52,6 @@ func (c *LogsCommand) Validate() error {

// Run executes logs sub-command logic
func (c *LogsCommand) Run(params *params.Params, ioStreams *genericclioptions.IOStreams) error {
podResource := resource.GetPodResource(params)

clientset, err := params.ClientSet()
if err != nil {
return err
Expand All @@ -64,11 +61,10 @@ func (c *LogsCommand) Run(params *params.Params, ioStreams *genericclioptions.IO
LabelSelector: fmt.Sprintf("%v=%v", buildv1alpha1.LabelBuildRun, c.name),
}

var pods corev1.PodList
if err := podResource.ListWithOptions(c.cmd.Context(), &pods, lo); err != nil {
var pods *corev1.PodList
if pods, err = clientset.CoreV1().Pods(params.Namespace()).List(c.cmd.Context(), lo); err != nil {
return err
}

if len(pods.Items) == 0 {
return fmt.Errorf("no builder pod found for BuildRun %q", c.name)
}
Expand Down
41 changes: 9 additions & 32 deletions pkg/shp/params/params.go
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
package params

import (
"github.com/pkg/errors"
"github.com/spf13/pflag"

buildclientset "github.com/shipwright-io/build/pkg/client/clientset/versioned"
"github.com/spf13/pflag"

"k8s.io/cli-runtime/pkg/genericclioptions"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/kubernetes"
)

// Params is a place for Shipwright CLI to store its runtime parameters including configured dynamic
// client and global flags.
type Params struct {
client dynamic.Interface
clientset kubernetes.Interface
shpClientset buildclientset.Interface

Expand All @@ -27,33 +23,6 @@ func (p *Params) AddFlags(flags *pflag.FlagSet) {
p.configFlags.AddFlags(flags)
}

// Client returns preconfigured dynamic client with overrides
// from global flags and kubernetes configuration set by user
func (p *Params) Client() (dynamic.Interface, error) {
if p.client != nil {
return p.client, nil
}

clientConfig := p.configFlags.ToRawKubeConfigLoader()

config, err := clientConfig.ClientConfig()
if err != nil {
return nil, err
}

p.namespace, _, err = clientConfig.Namespace()
if err != nil {
return nil, err
}

p.client, err = dynamic.NewForConfig(config)
if err != nil {
return nil, errors.Wrap(err, "could not create Dynamic client")
}

return p.client, nil
}

// ClientSet returns a kubernetes clientset.
func (p *Params) ClientSet() (kubernetes.Interface, error) {
if p.clientset != nil {
Expand All @@ -65,6 +34,10 @@ func (p *Params) ClientSet() (kubernetes.Interface, error) {
if err != nil {
return nil, err
}
p.namespace, _, err = clientConfig.Namespace()
if err != nil {
return nil, err
}

p.clientset, err = kubernetes.NewForConfig(config)
if err != nil {
Expand All @@ -84,6 +57,10 @@ func (p *Params) ShipwrightClientSet() (buildclientset.Interface, error) {
if err != nil {
return nil, err
}
p.namespace, _, err = clientConfig.Namespace()
if err != nil {
return nil, err
}
p.shpClientset, err = buildclientset.NewForConfig(config)
if err != nil {
return nil, err
Expand Down
Loading

0 comments on commit 2dd158f

Please sign in to comment.