From 707e2e969bb3e1e744c19f79e3b26153bd9cc810 Mon Sep 17 00:00:00 2001 From: BLasan Date: Wed, 10 Feb 2021 16:51:42 +0530 Subject: [PATCH] Move DeletePossibleKicLeftOver function to profile pkg --- cmd/minikube/cmd/delete.go | 1 + cmd/minikube/cmd/node_delete.go | 1 + pkg/minikube/profile/profile.go | 81 +++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 pkg/minikube/profile/profile.go diff --git a/cmd/minikube/cmd/delete.go b/cmd/minikube/cmd/delete.go index 0728d2c253..2eec42ca30 100644 --- a/cmd/minikube/cmd/delete.go +++ b/cmd/minikube/cmd/delete.go @@ -47,6 +47,7 @@ import ( "k8s.io/minikube/pkg/minikube/machine" "k8s.io/minikube/pkg/minikube/out" "k8s.io/minikube/pkg/minikube/out/register" + pkgProfile "k8s.io/minikube/pkg/minikube/profile" "k8s.io/minikube/pkg/minikube/reason" "k8s.io/minikube/pkg/minikube/style" ) diff --git a/cmd/minikube/cmd/node_delete.go b/cmd/minikube/cmd/node_delete.go index 8701bb236f..9dd95d7e5c 100644 --- a/cmd/minikube/cmd/node_delete.go +++ b/cmd/minikube/cmd/node_delete.go @@ -27,6 +27,7 @@ import ( "k8s.io/minikube/pkg/minikube/mustload" "k8s.io/minikube/pkg/minikube/node" "k8s.io/minikube/pkg/minikube/out" + pkgProfile "k8s.io/minikube/pkg/minikube/profile" "k8s.io/minikube/pkg/minikube/reason" "k8s.io/minikube/pkg/minikube/style" ) diff --git a/pkg/minikube/profile/profile.go b/pkg/minikube/profile/profile.go new file mode 100644 index 0000000000..020ecf847d --- /dev/null +++ b/pkg/minikube/profile/profile.go @@ -0,0 +1,81 @@ +/* +Copyright 2021 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package profile + +import ( + "fmt" + "os/exec" + + "k8s.io/klog" + "k8s.io/minikube/pkg/drivers/kic/oci" + "k8s.io/minikube/pkg/minikube/driver" + "k8s.io/minikube/pkg/minikube/out" + "k8s.io/minikube/pkg/minikube/style" +) + +//DeletePossibleLeftOvers ... +func DeletePossibleLeftOvers(cname string, driverName string) { + bin := "" + switch driverName { + case driver.Docker: + bin = oci.Docker + case driver.Podman: + bin = oci.Podman + default: + return + } + + if _, err := exec.LookPath(bin); err != nil { + klog.Infof("skipping delete.PossibleKicLeftOver for %s: %v", bin, err) + return + } + + klog.Infof("deleting possible KIC leftovers for %s (driver=%s) ...", cname, driverName) + + delLabel := fmt.Sprintf("%s=%s", oci.ProfileLabelKey, cname) + cs, err := oci.ListContainersByLabel(bin, delLabel) + if err == nil && len(cs) > 0 { + for _, c := range cs { + out.Step(style.DeletingHost, `Deleting container "{{.name}}" ...`, out.V{"name": cname}) + err := oci.DeleteContainer(bin, c) + if err != nil { // it will error if there is no container to delete + klog.Errorf("error deleting container %q. You may want to delete it manually :\n%v", cname, err) + } + + } + } + + errs := oci.DeleteAllVolumesByLabel(bin, delLabel) + if errs != nil { // it will not error if there is nothing to delete + klog.Warningf("error deleting volumes (might be okay).\nTo see the list of volumes run: 'docker volume ls'\n:%v", errs) + } + + errs = oci.DeleteKICNetworks(bin) + if errs != nil { + klog.Warningf("error deleting leftover networks (might be okay).\nTo see the list of networks: 'docker network ls'\n:%v", errs) + } + + if bin == oci.Podman { + // podman prune does not support --filter + return + } + + errs = oci.PruneAllVolumesByLabel(bin, delLabel) + if len(errs) > 0 { // it will not error if there is nothing to delete + klog.Warningf("error pruning volume (might be okay):\n%v", errs) + } +}