Skip to content
This repository has been archived by the owner on Oct 3, 2020. It is now read-only.

Add propagation_policy option to APIObject.delete() method #21

Merged
merged 1 commit into from
Apr 14, 2019

Conversation

gree-gorey
Copy link

Regarding hjacobs/kube-janitor#28

As it turned out, the issue was the following.
When you delete an object of apps/v1 version, its dependent objects are deleted. But when you delete an object of extensions/v1beta1, its dependent objects are orphaned. Here is the ref to docs about this behavior: https://kubernetes.io/docs/concepts/workloads/controllers/garbage-collection/#setting-the-cascading-deletion-policy

So, when do this:

import pykube
from helper import get_kube_api
from pykube.objects import NamespacedAPIObject

api = get_kube_api()

d = type("Deployment", (NamespacedAPIObject,), {
    'version': "extensions/v1beta1",  # <----- HERE
    'endpoint': "deployments",
    'kind': "Deployment"
})

first_deploy = list(d.objects(api, namespace="dev"))[0]

first_deploy.delete()

its dependent objects are orphaned.

If you change version to apps/v1 then everything is ok.

Now, Kubernetes API allow you to specify propagationPolicy with possible values “Orphan”, “Foreground”, or “Background”. Example:

$ curl -X DELETE localhost:8080/apis/apps/v1/namespaces/default/replicasets/my-repset \
-d '{"kind":"DeleteOptions","apiVersion":"v1","propagationPolicy":"Background"}' \
-H "Content-Type: application/json"

So, I added optional argument propagation_policy with default value None, so that if someone want to explicitly specify policy they can do that with this flag.

@hjacobs
Copy link
Owner

hjacobs commented Apr 14, 2019

Thanks!

@hjacobs hjacobs merged commit d5737be into hjacobs:master Apr 14, 2019
@hjacobs
Copy link
Owner

hjacobs commented Apr 14, 2019

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants