init --port flag implementation
This commit is contained in:
parent
389e67f4dd
commit
77ed3d3669
@ -59,7 +59,8 @@ func NewCmdCreateCluster() *cobra.Command {
|
||||
cmd.Flags().String("image", k3d.DefaultK3sImageRepo, "Specify k3s image that you want to use for the nodes") // TODO: get image version
|
||||
cmd.Flags().String("network", "", "Join an existing network")
|
||||
cmd.Flags().String("secret", "", "Specify a cluster secret. By default, we generate one.")
|
||||
cmd.Flags().StringArrayP("volume", "v", nil, "Mount volumes into the nodes (Format: `--volume [SOURCE:]DEST[@SELECTOR[;SELECTOR...]]`")
|
||||
cmd.Flags().StringArrayP("volume", "v", nil, "Mount volumes into the nodes (Format: `--volume [SOURCE:]DEST[@NODEFILTER[;NODEFILTER...]]`")
|
||||
cmd.Flags().StringArrayP("port", "p", nil, "Map ports from the node containers to the host (Format: `[IP:][HOSTPORT:]CONTAINERPORT[/PROTOCOL][@NODEFILTER]`)")
|
||||
|
||||
// add subcommands
|
||||
|
||||
@ -155,6 +156,33 @@ func parseCreateClusterCmd(cmd *cobra.Command, args []string) (runtimes.Runtime,
|
||||
}
|
||||
}
|
||||
|
||||
// --port
|
||||
portFlags, err := cmd.Flags().GetStringArray("port")
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
portFilterMap := make(map[string]string, 1)
|
||||
for _, portFlag := range portFlags {
|
||||
// split node filter from the specified volume
|
||||
volume, filter, err := cliutil.SplitFilterFromFlag(portFlag)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
// validate the specified volume mount and return it in SRC:DEST format
|
||||
volume, err = cliutil.ValidateVolumeMount(volume)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
// create new entry or append filter to existing entry
|
||||
if _, exists := volumeFilterMap[volume]; exists {
|
||||
volumeFilterMap[volume] = fmt.Sprintf("%s;%s", volumeFilterMap[volume], filter)
|
||||
} else {
|
||||
volumeFilterMap[volume] = filter
|
||||
}
|
||||
}
|
||||
|
||||
/* generate cluster */
|
||||
cluster := &k3d.Cluster{
|
||||
Name: args[0], // TODO: validate name0
|
||||
|
@ -67,3 +67,8 @@ func ParseAPIPort(portString string) (k3d.ExposeAPI, error) {
|
||||
return exposeAPI, nil
|
||||
|
||||
}
|
||||
|
||||
// ValidatePortMap validates a port mapping
|
||||
func ValidatePortMap(portmap string) (string, error) {
|
||||
return "", nil // TODO:
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user