mirror of https://github.com/k3s-io/k3s
Merge pull request #46798 from nikhiljindal/servicesReaper
Automatic merge from submit-queue Deleting kubectl.ServiceReaper since there is no special service deletion logic Ref https://github.com/kubernetes/kubernetes/pull/46471 #42594 ServiceReaper does not have any special deletion logic so we dont need it. The generic deletion logic should be enough. By removing this reaper, service deletion also gets the new wait logic from https://github.com/kubernetes/kubernetes/pull/46471 cc @kubernetes/sig-cli-miscpull/6/head
commit
4361b4d9be
|
@ -81,9 +81,6 @@ func ReaperFor(kind schema.GroupKind, c internalclientset.Interface) (Reaper, er
|
|||
case api.Kind("Pod"):
|
||||
return &PodReaper{c.Core()}, nil
|
||||
|
||||
case api.Kind("Service"):
|
||||
return &ServiceReaper{c.Core()}, nil
|
||||
|
||||
case batch.Kind("Job"):
|
||||
return &JobReaper{c.Batch(), c.Core(), Interval, Timeout}, nil
|
||||
|
||||
|
@ -126,9 +123,6 @@ type DeploymentReaper struct {
|
|||
type PodReaper struct {
|
||||
client coreclient.PodsGetter
|
||||
}
|
||||
type ServiceReaper struct {
|
||||
client coreclient.ServicesGetter
|
||||
}
|
||||
type StatefulSetReaper struct {
|
||||
client appsclient.StatefulSetsGetter
|
||||
podClient coreclient.PodsGetter
|
||||
|
@ -484,14 +478,3 @@ func (reaper *PodReaper) Stop(namespace, name string, timeout time.Duration, gra
|
|||
}
|
||||
return pods.Delete(name, gracePeriod)
|
||||
}
|
||||
|
||||
func (reaper *ServiceReaper) Stop(namespace, name string, timeout time.Duration, gracePeriod *metav1.DeleteOptions) error {
|
||||
services := reaper.client.Services(namespace)
|
||||
_, err := services.Get(name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
falseVar := false
|
||||
deleteOptions := &metav1.DeleteOptions{OrphanDependents: &falseVar}
|
||||
return services.Delete(name, deleteOptions)
|
||||
}
|
||||
|
|
|
@ -558,26 +558,26 @@ func (c *noSuchPod) Get(name string, options metav1.GetOptions) (*api.Pod, error
|
|||
return nil, fmt.Errorf("%s does not exist", name)
|
||||
}
|
||||
|
||||
type noDeleteService struct {
|
||||
coreclient.ServiceInterface
|
||||
type noDeletePod struct {
|
||||
coreclient.PodInterface
|
||||
}
|
||||
|
||||
func (c *noDeleteService) Delete(service string, o *metav1.DeleteOptions) error {
|
||||
func (c *noDeletePod) Delete(name string, o *metav1.DeleteOptions) error {
|
||||
return fmt.Errorf("I'm afraid I can't do that, Dave")
|
||||
}
|
||||
|
||||
type reaperFake struct {
|
||||
*fake.Clientset
|
||||
noSuchPod, noDeleteService bool
|
||||
noSuchPod, noDeletePod bool
|
||||
}
|
||||
|
||||
func (c *reaperFake) Core() coreclient.CoreInterface {
|
||||
return &reaperCoreFake{c.Clientset.Core(), c.noSuchPod, c.noDeleteService}
|
||||
return &reaperCoreFake{c.Clientset.Core(), c.noSuchPod, c.noDeletePod}
|
||||
}
|
||||
|
||||
type reaperCoreFake struct {
|
||||
coreclient.CoreInterface
|
||||
noSuchPod, noDeleteService bool
|
||||
noSuchPod, noDeletePod bool
|
||||
}
|
||||
|
||||
func (c *reaperCoreFake) Pods(namespace string) coreclient.PodInterface {
|
||||
|
@ -585,25 +585,16 @@ func (c *reaperCoreFake) Pods(namespace string) coreclient.PodInterface {
|
|||
if c.noSuchPod {
|
||||
return &noSuchPod{pods}
|
||||
}
|
||||
return pods
|
||||
}
|
||||
|
||||
func (c *reaperCoreFake) Services(namespace string) coreclient.ServiceInterface {
|
||||
services := c.CoreInterface.Services(namespace)
|
||||
if c.noDeleteService {
|
||||
return &noDeleteService{services}
|
||||
if c.noDeletePod {
|
||||
return &noDeletePod{pods}
|
||||
}
|
||||
return services
|
||||
return pods
|
||||
}
|
||||
|
||||
func pod() *api.Pod {
|
||||
return &api.Pod{ObjectMeta: metav1.ObjectMeta{Namespace: metav1.NamespaceDefault, Name: "foo"}}
|
||||
}
|
||||
|
||||
func service() *api.Service {
|
||||
return &api.Service{ObjectMeta: metav1.ObjectMeta{Namespace: metav1.NamespaceDefault, Name: "foo"}}
|
||||
}
|
||||
|
||||
func TestSimpleStop(t *testing.T) {
|
||||
tests := []struct {
|
||||
fake *reaperFake
|
||||
|
@ -624,18 +615,6 @@ func TestSimpleStop(t *testing.T) {
|
|||
expectError: false,
|
||||
test: "stop pod succeeds",
|
||||
},
|
||||
{
|
||||
fake: &reaperFake{
|
||||
Clientset: fake.NewSimpleClientset(service()),
|
||||
},
|
||||
kind: api.Kind("Service"),
|
||||
actions: []testcore.Action{
|
||||
testcore.NewGetAction(api.Resource("services").WithVersion(""), metav1.NamespaceDefault, "foo"),
|
||||
testcore.NewDeleteAction(api.Resource("services").WithVersion(""), metav1.NamespaceDefault, "foo"),
|
||||
},
|
||||
expectError: false,
|
||||
test: "stop service succeeds",
|
||||
},
|
||||
{
|
||||
fake: &reaperFake{
|
||||
Clientset: fake.NewSimpleClientset(),
|
||||
|
@ -648,15 +627,15 @@ func TestSimpleStop(t *testing.T) {
|
|||
},
|
||||
{
|
||||
fake: &reaperFake{
|
||||
Clientset: fake.NewSimpleClientset(service()),
|
||||
noDeleteService: true,
|
||||
Clientset: fake.NewSimpleClientset(pod()),
|
||||
noDeletePod: true,
|
||||
},
|
||||
kind: api.Kind("Service"),
|
||||
kind: api.Kind("Pod"),
|
||||
actions: []testcore.Action{
|
||||
testcore.NewGetAction(api.Resource("services").WithVersion(""), metav1.NamespaceDefault, "foo"),
|
||||
testcore.NewGetAction(api.Resource("pods").WithVersion(""), metav1.NamespaceDefault, "foo"),
|
||||
},
|
||||
expectError: true,
|
||||
test: "stop service fails, can't delete",
|
||||
test: "stop pod fails, can't delete",
|
||||
},
|
||||
}
|
||||
for _, test := range tests {
|
||||
|
|
Loading…
Reference in New Issue