Skip to content

Instantly share code, notes, and snippets.

@arno01
Last active September 15, 2022 18:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save arno01/6384d4cb1a3b3a62011f854d2e52e283 to your computer and use it in GitHub Desktop.
Save arno01/6384d4cb1a3b3a62011f854d2e52e283 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
export AKASH_NODE="http://akash-node-1.akash-services.svc.cluster.local:26657"
export KUBECONFIG=/etc/kubernetes/admin.conf
## Clean dangling deployments
# The ones which have lease closed on the blockchain but remain
# active in the K8s cluster for some reason.
md_lid="akash.network/lease.id"
kubectl get ns -l akash.network,akash.network/lease.id.provider -o jsonpath='{.items[*].metadata.labels}' | \
jq --arg md_lid "$md_lid" -r '[."akash.network/namespace", .[$md_lid+".owner"], .[$md_lid+".dseq"], .[$md_lid+".gseq"], .[$md_lid+".oseq"], .[$md_lid+".provider"]] | @tsv' | \
while read ns owner dseq gseq oseq prov; do \
state=$(akash query market lease get --owner $owner --dseq $dseq --gseq $gseq --oseq $oseq --provider $prov -o json | jq -r '.lease.state'); \
if [[ "$state" == "closed" ]]; then \
kubectl delete ns "$ns" --wait=false; \
kubectl -n lease delete providerhosts --selector="$md_lid.owner=$owner,$md_lid.dseq=$dseq,$md_lid.gseq=$gseq,$md_lid.oseq=$oseq" --wait=false; \
fi; \
done
## Clean dangling provider hosts
DSEQ_NS=$(kubectl get ns -A -l akash.network,akash.network/lease.id.provider -o json | jq -r '.items[].metadata.labels | ."akash.network/lease.id.dseq" // empty' | sort -n | uniq)
DSEQ_PROVIDER_HOSTS=$(kubectl -n lease get providerhosts -l akash.network,akash.network/lease.id.provider -o json | jq -r '.items[].metadata.labels | ."akash.network/lease.id.dseq" // empty' | sort -n | uniq)
DSEQ_DANGLING="$(comm -13 <(echo "$DSEQ_NS") <(echo "$DSEQ_PROVIDER_HOSTS"))"
for i in $DSEQ_DANGLING; do \
kubectl -n lease delete providerhosts.akash.network -l akash.network/lease.id.dseq=$i --wait=false; \
done
@andy108369
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment