Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions cmd/remote/subcmd/check.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@ INFO[2024-07-16T17:17:42+08:00] Completed preflight checker`,
},
}

cmd.AddCommand(newCmdCheckPreflightStop(globalOpts))

utils.SetGlobalOptionsRemote(cmd, globalOpts)

cmd.Flags().BoolVar(&preflightChecker.EnableSpdk, consts.CmdOptEnableSpdk, false, "Enable checking of SPDK required packages, modules, and setup.")
Expand All @@ -105,3 +107,45 @@ INFO[2024-07-16T17:17:42+08:00] Completed preflight checker`,

return cmd
}

func newCmdCheckPreflightStop(globalOpts *types.GlobalCmdOptions) *cobra.Command {
var preflightChecker = preflight.Checker{}

cmd := &cobra.Command{
Use: consts.SubCmdStop,
Short: "Stop Longhorn preflight checker",
Long: `This command terminates the preflight checker.`,
Example: `$ longhornctl check preflight stop
INFO[2024-07-16T17:21:32+08:00] Stopping preflight checker
INFO[2024-07-16T17:21:32+08:00] Successfully stopped preflight checker`,

PreRun: func(cmd *cobra.Command, args []string) {
preflightChecker.KubeConfigPath = globalOpts.KubeConfigPath
preflightChecker.Namespace = globalOpts.Namespace

if err := preflightChecker.Init(); err != nil {
utils.CheckErr(errors.Wrap(err, "Failed to initialize preflight checker"))
}
},

Run: func(cmd *cobra.Command, args []string) {
logrus.Info("Stopping preflight checker")

err := preflightChecker.Cleanup()
if err != nil {
utils.CheckErr(errors.Wrap(err, "Failed to stop preflight checker"))
}

logrus.Info("Successfully stopped preflight checker")
},
}

utils.SetGlobalOptionsRemote(cmd, globalOpts)

// Hidden, not removed, so `stop` can be appended to the parent command as-is.
utils.SetFlagHidden(cmd, consts.CmdOptEnableSpdk)
utils.SetFlagHidden(cmd, consts.CmdOptHugePageSize)
utils.SetFlagHidden(cmd, consts.CmdOptUserspaceDriver)

return cmd
}
44 changes: 44 additions & 0 deletions cmd/remote/subcmd/get.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,8 @@ INFO[2024-07-16T17:23:51+08:00] Completed replica getter`,
},
}

cmd.AddCommand(newCmdGetReplicaStop(globalOpts))

utils.SetGlobalOptionsRemote(cmd, globalOpts)

cmd.Flags().StringVar(&replicaGetter.ReplicaName, consts.CmdOptName, "", "Specify the name of the replica to retrieve information.")
Expand All @@ -109,3 +111,45 @@ INFO[2024-07-16T17:23:51+08:00] Completed replica getter`,

return cmd
}

func newCmdGetReplicaStop(globalOpts *types.GlobalCmdOptions) *cobra.Command {
var replicaGetter = replica.Getter{}

cmd := &cobra.Command{
Use: consts.SubCmdStop,
Short: "Stop the replica getter",
Long: `This command terminates the ongoing replica information retrieval and stops the replica getter.`,
Example: `$ longhornctl get replica stop
INFO[2024-07-16T17:29:14+08:00] Stopping replica getter
INFO[2024-07-16T17:29:14+08:00] Successfully stopped replica getter`,

PreRun: func(cmd *cobra.Command, args []string) {
replicaGetter.KubeConfigPath = globalOpts.KubeConfigPath
replicaGetter.Namespace = globalOpts.Namespace

if err := replicaGetter.Init(); err != nil {
utils.CheckErr(errors.Wrap(err, "Failed to initialize replica getter"))
}
},

Run: func(cmd *cobra.Command, args []string) {
logrus.Info("Stopping replica getter")

err := replicaGetter.Cleanup()
if err != nil {
utils.CheckErr(errors.Wrap(err, "Failed to stop replica getter"))
}

logrus.Info("Successfully stopped replica getter")
},
}

utils.SetGlobalOptionsRemote(cmd, globalOpts)

// Hidden, not removed, so `stop` can be appended to the parent command as-is.
utils.SetFlagHidden(cmd, consts.CmdOptName)
utils.SetFlagHidden(cmd, consts.CmdOptLonghornVolumeName)
utils.SetFlagHidden(cmd, consts.CmdOptLonghornDataDirectory)

return cmd
}
42 changes: 42 additions & 0 deletions cmd/remote/subcmd/trim.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,51 @@ INFO[2024-07-16T17:32:01+08:00] Completed volume trimmer vo
},
}

cmd.AddCommand(newCmdTrimVolumeStop(globalOpts))

utils.SetGlobalOptionsRemote(cmd, globalOpts)

cmd.Flags().StringVar(&volumeTrimmer.VolumeName, consts.CmdOptName, "", "Name of the Longhorn volum to be trimmed.")

return cmd
}

func newCmdTrimVolumeStop(globalOpts *types.GlobalCmdOptions) *cobra.Command {
var volumeTrimmer = volume.Trimmer{}

cmd := &cobra.Command{
Use: consts.SubCmdStop,
Short: "Stop the volume trimmer",
Long: `This command terminates the ongoing volume trim process and stops the volume trimmer.`,
Example: `$ longhornctl trim volume --name="pvc-48a6457d-585e-423b-b530-bbc68a5f948a" stop
INFO[2024-07-16T17:29:14+08:00] Stopping volume trimmer
INFO[2024-07-16T17:29:14+08:00] Successfully stopped volume trimmer`,

PreRun: func(cmd *cobra.Command, args []string) {
volumeTrimmer.KubeConfigPath = globalOpts.KubeConfigPath
volumeTrimmer.Namespace = globalOpts.Namespace

if err := volumeTrimmer.Init(); err != nil {
utils.CheckErr(errors.Wrap(err, "Failed to initialize volume trimmer"))
}
},

Run: func(cmd *cobra.Command, args []string) {
logrus.Info("Stopping volume trimmer")

err := volumeTrimmer.Cleanup()
if err != nil {
utils.CheckErr(errors.Wrap(err, "Failed to stop volume trimmer"))
}

logrus.Info("Successfully stopped volume trimmer")
},
}

utils.SetGlobalOptionsRemote(cmd, globalOpts)

// Hidden, not removed, so `stop` can be appended to the parent command as-is.
utils.SetFlagHidden(cmd, consts.CmdOptName)

return cmd
}