feat(set_image): implement set_image for daemonset

mine
Antoine Meausoone 2020-08-20 12:42:29 +02:00
parent 612148debb
commit e75bf0acfa
2 changed files with 45 additions and 6 deletions

View File

@ -21,11 +21,12 @@ import (
)
var (
_ Accessor = (*DaemonSet)(nil)
_ Nuker = (*DaemonSet)(nil)
_ Loggable = (*DaemonSet)(nil)
_ Restartable = (*DaemonSet)(nil)
_ Controller = (*DaemonSet)(nil)
_ Accessor = (*DaemonSet)(nil)
_ Nuker = (*DaemonSet)(nil)
_ Loggable = (*DaemonSet)(nil)
_ Restartable = (*DaemonSet)(nil)
_ Controller = (*DaemonSet)(nil)
_ ContainsPodSpec = (*DaemonSet)(nil)
)
// DaemonSet represents a K8s daemonset.
@ -225,6 +226,42 @@ func (d *DaemonSet) Scan(ctx context.Context, gvr, fqn string, wait bool) (Refs,
return refs, nil
}
func (d *DaemonSet) GetPodSpec(path string) (*v1.PodSpec, error) {
ds, err := d.GetInstance(path)
if err != nil {
return nil, err
}
podSpec := ds.Spec.Template.Spec
return &podSpec, nil
}
func (d *DaemonSet) SetImages(ctx context.Context, path string, spec v1.PodSpec) error {
ns, n := client.Namespaced(path)
auth, err := d.Client().CanI(ns, "apps/v1/daemonset", []string{client.PatchVerb})
if err != nil {
return err
}
if !auth {
return fmt.Errorf("user is not authorized to patch a daemonset")
}
jsonPatch, err := SetImageJsonPatch(spec)
if err != nil {
return err
}
dial, err := d.Client().Dial()
if err != nil {
return err
}
_, err = dial.AppsV1().DaemonSets(ns).Patch(
ctx,
n,
types.StrategicMergePatchType,
[]byte(jsonPatch),
metav1.PatchOptions{},
)
return err
}
// ----------------------------------------------------------------------------
// Helpers...

View File

@ -17,7 +17,9 @@ func NewDaemonSet(gvr client.GVR) ResourceViewer {
d := DaemonSet{
ResourceViewer: NewPortForwardExtender(
NewRestartExtender(
NewLogsExtender(NewBrowser(gvr), nil),
NewSetImageExtender(
NewLogsExtender(NewBrowser(gvr), nil),
),
),
),
}