Updated overlay flags
New flags: `wwctl <node|profile> <add|set> [--runtime-overlays|--system-overlays]`. Previous flags retained hidden for backwards-compatibility. - Closes: #1495 Signed-off-by: Jonathon Anderson <janderson@ciq.com>
This commit is contained in:
@@ -26,6 +26,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- DHCP template generates as much of the subnet and range definition as possible. #1469
|
- DHCP template generates as much of the subnet and range definition as possible. #1469
|
||||||
|
- Updated overlay flags to `wwctl <node|profile> <add|set> [--runtime-overlays|--system-overlays]`. #1495
|
||||||
|
|
||||||
## v4.6.0rc2, 2025-02-07
|
## v4.6.0rc2, 2025-02-07
|
||||||
|
|
||||||
|
|||||||
@@ -8,3 +8,19 @@ func AddContainer(cmd *cobra.Command, dest *string) {
|
|||||||
cmd.Flags().StringVarP(dest, "container", "C", "", "Set image name (backwards-compatibility)")
|
cmd.Flags().StringVarP(dest, "container", "C", "", "Set image name (backwards-compatibility)")
|
||||||
cmd.Flags().Lookup("container").Hidden = true
|
cmd.Flags().Lookup("container").Hidden = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func AddWwinit(cmd *cobra.Command, dest *[]string) {
|
||||||
|
cmd.Flags().StringSliceVar(dest, "wwinit", []string{}, "Set the system overlay")
|
||||||
|
cmd.Flags().Lookup("wwinit").Hidden = true
|
||||||
|
if err := cmd.Flags().MarkDeprecated("wwinit", "use --system-overlays instead"); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func AddRuntime(cmd *cobra.Command, dest *[]string) {
|
||||||
|
cmd.Flags().StringSliceVar(dest, "runtime", []string{}, "Set the runtime overlay")
|
||||||
|
cmd.Flags().Lookup("runtime").Hidden = true
|
||||||
|
if err := cmd.Flags().MarkDeprecated("runtime", "use --runtime-overlays instead"); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ func GetCommand() *cobra.Command {
|
|||||||
vars.nodeConf.CreateFlags(baseCmd)
|
vars.nodeConf.CreateFlags(baseCmd)
|
||||||
vars.nodeAdd.CreateAddFlags(baseCmd)
|
vars.nodeAdd.CreateAddFlags(baseCmd)
|
||||||
flags.AddContainer(baseCmd, &(vars.nodeConf.Profile.ImageName))
|
flags.AddContainer(baseCmd, &(vars.nodeConf.Profile.ImageName))
|
||||||
|
flags.AddWwinit(baseCmd, &(vars.nodeConf.SystemOverlay))
|
||||||
|
flags.AddRuntime(baseCmd, &(vars.nodeConf.RuntimeOverlay))
|
||||||
// register the command line completions
|
// register the command line completions
|
||||||
if err := baseCmd.RegisterFlagCompletionFunc("image", completions.Images); err != nil { // no limit
|
if err := baseCmd.RegisterFlagCompletionFunc("image", completions.Images); err != nil { // no limit
|
||||||
panic(err)
|
panic(err)
|
||||||
@@ -37,9 +39,15 @@ func GetCommand() *cobra.Command {
|
|||||||
if err := baseCmd.RegisterFlagCompletionFunc("kernelversion", completions.NodeKernelVersion); err != nil {
|
if err := baseCmd.RegisterFlagCompletionFunc("kernelversion", completions.NodeKernelVersion); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
if err := baseCmd.RegisterFlagCompletionFunc("runtime-overlays", completions.OverlayList); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
if err := baseCmd.RegisterFlagCompletionFunc("runtime", completions.OverlayList); err != nil {
|
if err := baseCmd.RegisterFlagCompletionFunc("runtime", completions.OverlayList); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
if err := baseCmd.RegisterFlagCompletionFunc("system-overlays", completions.OverlayList); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
if err := baseCmd.RegisterFlagCompletionFunc("wwinit", completions.OverlayList); err != nil {
|
if err := baseCmd.RegisterFlagCompletionFunc("wwinit", completions.OverlayList); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ func GetCommand() *cobra.Command {
|
|||||||
vars.nodeAdd.CreateAddFlags(baseCmd)
|
vars.nodeAdd.CreateAddFlags(baseCmd)
|
||||||
vars.nodeDel.CreateDelFlags(baseCmd)
|
vars.nodeDel.CreateDelFlags(baseCmd)
|
||||||
flags.AddContainer(baseCmd, &(vars.nodeConf.Profile.ImageName))
|
flags.AddContainer(baseCmd, &(vars.nodeConf.Profile.ImageName))
|
||||||
|
flags.AddWwinit(baseCmd, &(vars.nodeConf.SystemOverlay))
|
||||||
|
flags.AddRuntime(baseCmd, &(vars.nodeConf.RuntimeOverlay))
|
||||||
baseCmd.PersistentFlags().BoolVarP(&vars.setNodeAll, "all", "a", false, "Set all nodes")
|
baseCmd.PersistentFlags().BoolVarP(&vars.setNodeAll, "all", "a", false, "Set all nodes")
|
||||||
baseCmd.PersistentFlags().BoolVarP(&vars.setYes, "yes", "y", false, "Set 'yes' to all questions asked")
|
baseCmd.PersistentFlags().BoolVarP(&vars.setYes, "yes", "y", false, "Set 'yes' to all questions asked")
|
||||||
baseCmd.PersistentFlags().BoolVarP(&vars.setForce, "force", "f", false, "Force configuration (even on error)")
|
baseCmd.PersistentFlags().BoolVarP(&vars.setForce, "force", "f", false, "Force configuration (even on error)")
|
||||||
@@ -44,9 +46,15 @@ func GetCommand() *cobra.Command {
|
|||||||
if err := baseCmd.RegisterFlagCompletionFunc("kernelversion", completions.NodeKernelVersion); err != nil {
|
if err := baseCmd.RegisterFlagCompletionFunc("kernelversion", completions.NodeKernelVersion); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
if err := baseCmd.RegisterFlagCompletionFunc("runtime-overlays", completions.OverlayList); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
if err := baseCmd.RegisterFlagCompletionFunc("runtime", completions.OverlayList); err != nil {
|
if err := baseCmd.RegisterFlagCompletionFunc("runtime", completions.OverlayList); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
if err := baseCmd.RegisterFlagCompletionFunc("system-overlays", completions.OverlayList); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
if err := baseCmd.RegisterFlagCompletionFunc("wwinit", completions.OverlayList); err != nil {
|
if err := baseCmd.RegisterFlagCompletionFunc("wwinit", completions.OverlayList); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ func GetCommand() *cobra.Command {
|
|||||||
vars.profileConf.CreateFlags(baseCmd)
|
vars.profileConf.CreateFlags(baseCmd)
|
||||||
vars.profileAdd.CreateAddFlags(baseCmd)
|
vars.profileAdd.CreateAddFlags(baseCmd)
|
||||||
flags.AddContainer(baseCmd, &(vars.profileConf.ImageName))
|
flags.AddContainer(baseCmd, &(vars.profileConf.ImageName))
|
||||||
|
flags.AddWwinit(baseCmd, &(vars.profileConf.SystemOverlay))
|
||||||
|
flags.AddRuntime(baseCmd, &(vars.profileConf.RuntimeOverlay))
|
||||||
// register the command line completions
|
// register the command line completions
|
||||||
if err := baseCmd.RegisterFlagCompletionFunc("image", completions.Images); err != nil { // no limit
|
if err := baseCmd.RegisterFlagCompletionFunc("image", completions.Images); err != nil { // no limit
|
||||||
panic(err)
|
panic(err)
|
||||||
@@ -35,9 +37,15 @@ func GetCommand() *cobra.Command {
|
|||||||
if err := baseCmd.RegisterFlagCompletionFunc("kernelversion", completions.ProfileKernelVersion); err != nil {
|
if err := baseCmd.RegisterFlagCompletionFunc("kernelversion", completions.ProfileKernelVersion); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
if err := baseCmd.RegisterFlagCompletionFunc("runtime-overlays", completions.OverlayList); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
if err := baseCmd.RegisterFlagCompletionFunc("runtime", completions.OverlayList); err != nil {
|
if err := baseCmd.RegisterFlagCompletionFunc("runtime", completions.OverlayList); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
if err := baseCmd.RegisterFlagCompletionFunc("system-overlays", completions.OverlayList); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
if err := baseCmd.RegisterFlagCompletionFunc("wwinit", completions.OverlayList); err != nil {
|
if err := baseCmd.RegisterFlagCompletionFunc("wwinit", completions.OverlayList); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,8 @@ func GetCommand() *cobra.Command {
|
|||||||
vars.profileDel.CreateDelFlags(baseCmd)
|
vars.profileDel.CreateDelFlags(baseCmd)
|
||||||
vars.profileAdd.CreateAddFlags(baseCmd)
|
vars.profileAdd.CreateAddFlags(baseCmd)
|
||||||
flags.AddContainer(baseCmd, &(vars.profileConf.ImageName))
|
flags.AddContainer(baseCmd, &(vars.profileConf.ImageName))
|
||||||
|
flags.AddWwinit(baseCmd, &(vars.profileConf.SystemOverlay))
|
||||||
|
flags.AddRuntime(baseCmd, &(vars.profileConf.RuntimeOverlay))
|
||||||
baseCmd.PersistentFlags().BoolVarP(&vars.setYes, "yes", "y", false, "Set 'yes' to all questions asked")
|
baseCmd.PersistentFlags().BoolVarP(&vars.setYes, "yes", "y", false, "Set 'yes' to all questions asked")
|
||||||
// register the command line completions
|
// register the command line completions
|
||||||
if err := baseCmd.RegisterFlagCompletionFunc("image", completions.Images); err != nil { // no limit
|
if err := baseCmd.RegisterFlagCompletionFunc("image", completions.Images); err != nil { // no limit
|
||||||
@@ -48,9 +50,15 @@ func GetCommand() *cobra.Command {
|
|||||||
if err := baseCmd.RegisterFlagCompletionFunc("kernelversion", completions.ProfileKernelVersion); err != nil {
|
if err := baseCmd.RegisterFlagCompletionFunc("kernelversion", completions.ProfileKernelVersion); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
if err := baseCmd.RegisterFlagCompletionFunc("runtime-overlays", completions.OverlayList); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
if err := baseCmd.RegisterFlagCompletionFunc("runtime", completions.OverlayList); err != nil {
|
if err := baseCmd.RegisterFlagCompletionFunc("runtime", completions.OverlayList); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
if err := baseCmd.RegisterFlagCompletionFunc("system-overlays", completions.OverlayList); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
if err := baseCmd.RegisterFlagCompletionFunc("wwinit", completions.OverlayList); err != nil {
|
if err := baseCmd.RegisterFlagCompletionFunc("wwinit", completions.OverlayList); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,8 +42,8 @@ type Profile struct {
|
|||||||
ClusterName string `yaml:"cluster name,omitempty" lopt:"cluster" sopt:"c" comment:"Set cluster group"`
|
ClusterName string `yaml:"cluster name,omitempty" lopt:"cluster" sopt:"c" comment:"Set cluster group"`
|
||||||
ImageName string `yaml:"image name,omitempty" lopt:"image" comment:"Set image name"`
|
ImageName string `yaml:"image name,omitempty" lopt:"image" comment:"Set image name"`
|
||||||
Ipxe string `yaml:"ipxe template,omitempty" lopt:"ipxe" comment:"Set the iPXE template name"`
|
Ipxe string `yaml:"ipxe template,omitempty" lopt:"ipxe" comment:"Set the iPXE template name"`
|
||||||
RuntimeOverlay []string `yaml:"runtime overlay,omitempty" lopt:"runtime" sopt:"R" comment:"Set the runtime overlay"`
|
RuntimeOverlay []string `yaml:"runtime overlay,omitempty" lopt:"runtime-overlays" sopt:"R" comment:"Set the runtime overlay"`
|
||||||
SystemOverlay []string `yaml:"system overlay,omitempty" lopt:"wwinit" sopt:"O" comment:"Set the system overlay"`
|
SystemOverlay []string `yaml:"system overlay,omitempty" lopt:"system-overlays" sopt:"O" comment:"Set the system overlay"`
|
||||||
Kernel *KernelConf `yaml:"kernel,omitempty"`
|
Kernel *KernelConf `yaml:"kernel,omitempty"`
|
||||||
Ipmi *IpmiConf `yaml:"ipmi,omitempty"`
|
Ipmi *IpmiConf `yaml:"ipmi,omitempty"`
|
||||||
Init string `yaml:"init,omitempty" lopt:"init" sopt:"i" comment:"Define the init process to boot the image"`
|
Init string `yaml:"init,omitempty" lopt:"init" sopt:"i" comment:"Define the init process to boot the image"`
|
||||||
|
|||||||
@@ -211,7 +211,7 @@ from the host to it. This overlay is then combined with the existing overlays.
|
|||||||
# wwctl overlay create welcome
|
# wwctl overlay create welcome
|
||||||
# wwctl overlay mkdir welcome /etc
|
# wwctl overlay mkdir welcome /etc
|
||||||
# wwctl overlay import welcome /etc/issue
|
# wwctl overlay import welcome /etc/issue
|
||||||
# wwctl profile set default --wwinit=wwinit,wwclient,welcome
|
# wwctl profile set default --system-overlay=wwinit,wwclient,welcome
|
||||||
? Are you sure you want to modify 1 profile(s)? [y/N] y
|
? Are you sure you want to modify 1 profile(s)? [y/N] y
|
||||||
# wwctl profile list default -a |grep welcome
|
# wwctl profile list default -a |grep welcome
|
||||||
default SystemOverlay wwinit,wwclient,welcome
|
default SystemOverlay wwinit,wwclient,welcome
|
||||||
|
|||||||
Reference in New Issue
Block a user