blob: ad07ed072fe602079a645b2561e7fd33625568e9 [file] [log] [blame]
package deleter
import (
"context"
"go.skia.org/infra/go/skerr"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
)
// Impl implements PodDeleter.
type Impl struct {
clientSet kubernetes.Interface
}
// New returns a new implementation of PodDeleter.
func New() (*Impl, error) {
config, err := rest.InClusterConfig()
if err != nil {
return nil, skerr.Wrapf(err, "Failed to get in-cluster config.")
}
clientSet, err := kubernetes.NewForConfig(config)
if err != nil {
return nil, skerr.Wrapf(err, "Failed to get in-cluster clientset.")
}
return &Impl{
clientSet: clientSet,
}, nil
}
// Delete implements PodDeleter.
func (d *Impl) Delete(ctx context.Context, podName string) error {
zero := int64(0)
if err := d.clientSet.CoreV1().Pods("default").Delete(ctx, podName, metav1.DeleteOptions{
GracePeriodSeconds: &zero,
}); err != nil {
return skerr.Wrapf(err, "Failed to delete pod: %q", podName)
}
return nil
}
var _ PodDeleter = (*Impl)(nil)