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 }