mirror of https://github.com/k3d-io/k3d
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.4 KiB
59 lines
1.4 KiB
package run
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
|
|
"github.com/docker/docker/api/types/filters"
|
|
|
|
"github.com/docker/docker/api/types"
|
|
"github.com/docker/docker/client"
|
|
)
|
|
|
|
func createClusterNetwork(clusterName string) (string, error) {
|
|
ctx := context.Background()
|
|
docker, err := client.NewEnvClient()
|
|
if err != nil {
|
|
return "", fmt.Errorf("ERROR: couldn't create docker client\n%+v", err)
|
|
}
|
|
|
|
resp, err := docker.NetworkCreate(ctx, clusterName, types.NetworkCreate{
|
|
Labels: map[string]string{
|
|
"app": "k3d",
|
|
"cluster": clusterName,
|
|
},
|
|
})
|
|
if err != nil {
|
|
return "", fmt.Errorf("ERROR: couldn't create network\n%+v", err)
|
|
}
|
|
|
|
return resp.ID, nil
|
|
}
|
|
|
|
func deleteClusterNetwork(clusterName string) error {
|
|
ctx := context.Background()
|
|
docker, err := client.NewEnvClient()
|
|
if err != nil {
|
|
return fmt.Errorf("ERROR: couldn't create docker client\n%+v", err)
|
|
}
|
|
|
|
filters := filters.NewArgs()
|
|
filters.Add("label", "app=k3d")
|
|
filters.Add("label", fmt.Sprintf("cluster=%s", clusterName))
|
|
|
|
networks, err := docker.NetworkList(ctx, types.NetworkListOptions{
|
|
Filters: filters,
|
|
})
|
|
if err != nil {
|
|
return fmt.Errorf("ERROR: couldn't find network for cluster %s\n%+v", clusterName, err)
|
|
}
|
|
|
|
for _, network := range networks {
|
|
if err := docker.NetworkRemove(ctx, network.ID); err != nil {
|
|
log.Printf("WARNING: couldn't remove network for cluster %s\n%+v", clusterName, err)
|
|
continue
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|