From f71483035bc812216d77003017088fc8af7ee033 Mon Sep 17 00:00:00 2001 From: Jonathon Anderson Date: Mon, 10 Feb 2025 15:47:33 -0700 Subject: [PATCH] Updated overlay flags New flags: `wwctl [--runtime-overlays|--system-overlays]`. Previous flags retained hidden for backwards-compatibility. - Closes: #1495 Signed-off-by: Jonathon Anderson --- CHANGELOG.md | 1 + internal/app/wwctl/flags/flags.go | 16 ++++++++++++++++ internal/app/wwctl/node/add/root.go | 8 ++++++++ internal/app/wwctl/node/set/root.go | 8 ++++++++ internal/app/wwctl/profile/add/root.go | 8 ++++++++ internal/app/wwctl/profile/set/root.go | 8 ++++++++ internal/pkg/node/datastructure.go | 4 ++-- userdocs/contents/overlays.rst | 2 +- 8 files changed, 52 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ed0c725..2171867a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Changed - DHCP template generates as much of the subnet and range definition as possible. #1469 +- Updated overlay flags to `wwctl [--runtime-overlays|--system-overlays]`. #1495 ## v4.6.0rc2, 2025-02-07 diff --git a/internal/app/wwctl/flags/flags.go b/internal/app/wwctl/flags/flags.go index 30e2596b..e0440b81 100644 --- a/internal/app/wwctl/flags/flags.go +++ b/internal/app/wwctl/flags/flags.go @@ -8,3 +8,19 @@ func AddContainer(cmd *cobra.Command, dest *string) { cmd.Flags().StringVarP(dest, "container", "C", "", "Set image name (backwards-compatibility)") 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) + } +} diff --git a/internal/app/wwctl/node/add/root.go b/internal/app/wwctl/node/add/root.go index 681ee1ab..f7f90577 100644 --- a/internal/app/wwctl/node/add/root.go +++ b/internal/app/wwctl/node/add/root.go @@ -30,6 +30,8 @@ func GetCommand() *cobra.Command { vars.nodeConf.CreateFlags(baseCmd) vars.nodeAdd.CreateAddFlags(baseCmd) flags.AddContainer(baseCmd, &(vars.nodeConf.Profile.ImageName)) + flags.AddWwinit(baseCmd, &(vars.nodeConf.SystemOverlay)) + flags.AddRuntime(baseCmd, &(vars.nodeConf.RuntimeOverlay)) // register the command line completions if err := baseCmd.RegisterFlagCompletionFunc("image", completions.Images); err != nil { // no limit panic(err) @@ -37,9 +39,15 @@ func GetCommand() *cobra.Command { if err := baseCmd.RegisterFlagCompletionFunc("kernelversion", completions.NodeKernelVersion); err != nil { panic(err) } + if err := baseCmd.RegisterFlagCompletionFunc("runtime-overlays", completions.OverlayList); err != nil { + panic(err) + } if err := baseCmd.RegisterFlagCompletionFunc("runtime", completions.OverlayList); err != nil { panic(err) } + if err := baseCmd.RegisterFlagCompletionFunc("system-overlays", completions.OverlayList); err != nil { + panic(err) + } if err := baseCmd.RegisterFlagCompletionFunc("wwinit", completions.OverlayList); err != nil { panic(err) } diff --git a/internal/app/wwctl/node/set/root.go b/internal/app/wwctl/node/set/root.go index b5c3ab14..13280c4f 100644 --- a/internal/app/wwctl/node/set/root.go +++ b/internal/app/wwctl/node/set/root.go @@ -34,6 +34,8 @@ func GetCommand() *cobra.Command { vars.nodeAdd.CreateAddFlags(baseCmd) vars.nodeDel.CreateDelFlags(baseCmd) 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.setYes, "yes", "y", false, "Set 'yes' to all questions asked") 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 { panic(err) } + if err := baseCmd.RegisterFlagCompletionFunc("runtime-overlays", completions.OverlayList); err != nil { + panic(err) + } if err := baseCmd.RegisterFlagCompletionFunc("runtime", completions.OverlayList); err != nil { panic(err) } + if err := baseCmd.RegisterFlagCompletionFunc("system-overlays", completions.OverlayList); err != nil { + panic(err) + } if err := baseCmd.RegisterFlagCompletionFunc("wwinit", completions.OverlayList); err != nil { panic(err) } diff --git a/internal/app/wwctl/profile/add/root.go b/internal/app/wwctl/profile/add/root.go index 45399ec9..4994bc9e 100644 --- a/internal/app/wwctl/profile/add/root.go +++ b/internal/app/wwctl/profile/add/root.go @@ -28,6 +28,8 @@ func GetCommand() *cobra.Command { vars.profileConf.CreateFlags(baseCmd) vars.profileAdd.CreateAddFlags(baseCmd) flags.AddContainer(baseCmd, &(vars.profileConf.ImageName)) + flags.AddWwinit(baseCmd, &(vars.profileConf.SystemOverlay)) + flags.AddRuntime(baseCmd, &(vars.profileConf.RuntimeOverlay)) // register the command line completions if err := baseCmd.RegisterFlagCompletionFunc("image", completions.Images); err != nil { // no limit panic(err) @@ -35,9 +37,15 @@ func GetCommand() *cobra.Command { if err := baseCmd.RegisterFlagCompletionFunc("kernelversion", completions.ProfileKernelVersion); err != nil { panic(err) } + if err := baseCmd.RegisterFlagCompletionFunc("runtime-overlays", completions.OverlayList); err != nil { + panic(err) + } if err := baseCmd.RegisterFlagCompletionFunc("runtime", completions.OverlayList); err != nil { panic(err) } + if err := baseCmd.RegisterFlagCompletionFunc("system-overlays", completions.OverlayList); err != nil { + panic(err) + } if err := baseCmd.RegisterFlagCompletionFunc("wwinit", completions.OverlayList); err != nil { panic(err) } diff --git a/internal/app/wwctl/profile/set/root.go b/internal/app/wwctl/profile/set/root.go index 8fd8c262..0f3f8759 100644 --- a/internal/app/wwctl/profile/set/root.go +++ b/internal/app/wwctl/profile/set/root.go @@ -40,6 +40,8 @@ func GetCommand() *cobra.Command { vars.profileDel.CreateDelFlags(baseCmd) vars.profileAdd.CreateAddFlags(baseCmd) 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") // register the command line completions 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 { panic(err) } + if err := baseCmd.RegisterFlagCompletionFunc("runtime-overlays", completions.OverlayList); err != nil { + panic(err) + } if err := baseCmd.RegisterFlagCompletionFunc("runtime", completions.OverlayList); err != nil { panic(err) } + if err := baseCmd.RegisterFlagCompletionFunc("system-overlays", completions.OverlayList); err != nil { + panic(err) + } if err := baseCmd.RegisterFlagCompletionFunc("wwinit", completions.OverlayList); err != nil { panic(err) } diff --git a/internal/pkg/node/datastructure.go b/internal/pkg/node/datastructure.go index 87771c24..6dcc1485 100644 --- a/internal/pkg/node/datastructure.go +++ b/internal/pkg/node/datastructure.go @@ -42,8 +42,8 @@ type Profile struct { 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"` 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"` - SystemOverlay []string `yaml:"system overlay,omitempty" lopt:"wwinit" sopt:"O" comment:"Set the system overlay"` + RuntimeOverlay []string `yaml:"runtime overlay,omitempty" lopt:"runtime-overlays" sopt:"R" comment:"Set the runtime overlay"` + SystemOverlay []string `yaml:"system overlay,omitempty" lopt:"system-overlays" sopt:"O" comment:"Set the system overlay"` Kernel *KernelConf `yaml:"kernel,omitempty"` Ipmi *IpmiConf `yaml:"ipmi,omitempty"` Init string `yaml:"init,omitempty" lopt:"init" sopt:"i" comment:"Define the init process to boot the image"` diff --git a/userdocs/contents/overlays.rst b/userdocs/contents/overlays.rst index 32810e7f..edcc0cf9 100644 --- a/userdocs/contents/overlays.rst +++ b/userdocs/contents/overlays.rst @@ -211,7 +211,7 @@ from the host to it. This overlay is then combined with the existing overlays. # wwctl overlay create welcome # wwctl overlay mkdir welcome /etc # 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 # wwctl profile list default -a |grep welcome default SystemOverlay wwinit,wwclient,welcome