All checks were successful
Vulncheck / Vulncheck (push) Successful in 1m17s
Pre-commit hooks / Pre-commit (push) Successful in 1m34s
Build / Build Components (push) Successful in 1m50s
Tests and linters / Run gofumpt (push) Successful in 4m5s
Tests and linters / Staticcheck (push) Successful in 5m7s
Tests and linters / Lint (push) Successful in 5m11s
Tests and linters / Tests (push) Successful in 5m12s
Tests and linters / gopls check (push) Successful in 5m40s
Tests and linters / Tests with -race (push) Successful in 8m43s
OCI image / Build container images (push) Successful in 4m20s
Morph addresses from config are used. Change-Id: Id99f91defbbff442c308f30d219b9824b4c871de Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
123 lines
4.4 KiB
Go
123 lines
4.4 KiB
Go
package zombie
|
|
|
|
import (
|
|
"git.frostfs.info/TrueCloudLab/frostfs-node/cmd/frostfs-adm/internal/commonflags"
|
|
"github.com/spf13/cobra"
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
const (
|
|
flagBatchSize = "batch-size"
|
|
flagBatchSizeUsage = "Objects iteration batch size"
|
|
cidFlag = "cid"
|
|
cidFlagUsage = "Container ID"
|
|
oidFlag = "oid"
|
|
oidFlagUsage = "Object ID"
|
|
walletFlag = "wallet"
|
|
walletFlagShorthand = "w"
|
|
walletFlagUsage = "Path to the wallet or binary key"
|
|
addressFlag = "address"
|
|
addressFlagUsage = "Address of wallet account"
|
|
moveFlag = "move"
|
|
moveFlagUsage = "Move objects from storage engine to quarantine"
|
|
)
|
|
|
|
var (
|
|
Cmd = &cobra.Command{
|
|
Use: "zombie",
|
|
Short: "Zombie objects related commands",
|
|
}
|
|
scanCmd = &cobra.Command{
|
|
Use: "scan",
|
|
Short: "Scan storage engine for zombie objects and move them to quarantine",
|
|
Long: "",
|
|
PreRun: func(cmd *cobra.Command, _ []string) {
|
|
_ = viper.BindPFlag(commonflags.ConfigFlag, cmd.Flags().Lookup(commonflags.ConfigFlag))
|
|
_ = viper.BindPFlag(commonflags.ConfigDirFlag, cmd.Flags().Lookup(commonflags.ConfigDirFlag))
|
|
_ = viper.BindPFlag(walletFlag, cmd.Flags().Lookup(walletFlag))
|
|
_ = viper.BindPFlag(addressFlag, cmd.Flags().Lookup(addressFlag))
|
|
_ = viper.BindPFlag(flagBatchSize, cmd.Flags().Lookup(flagBatchSize))
|
|
_ = viper.BindPFlag(moveFlag, cmd.Flags().Lookup(moveFlag))
|
|
},
|
|
Run: scan,
|
|
}
|
|
listCmd = &cobra.Command{
|
|
Use: "list",
|
|
Short: "List zombie objects from quarantine",
|
|
Long: "",
|
|
PreRun: func(cmd *cobra.Command, _ []string) {
|
|
_ = viper.BindPFlag(commonflags.ConfigFlag, cmd.Flags().Lookup(commonflags.ConfigFlag))
|
|
_ = viper.BindPFlag(commonflags.ConfigDirFlag, cmd.Flags().Lookup(commonflags.ConfigDirFlag))
|
|
_ = viper.BindPFlag(cidFlag, cmd.Flags().Lookup(cidFlag))
|
|
},
|
|
Run: list,
|
|
}
|
|
restoreCmd = &cobra.Command{
|
|
Use: "restore",
|
|
Short: "Restore zombie objects from quarantine",
|
|
Long: "",
|
|
PreRun: func(cmd *cobra.Command, _ []string) {
|
|
_ = viper.BindPFlag(commonflags.ConfigFlag, cmd.Flags().Lookup(commonflags.ConfigFlag))
|
|
_ = viper.BindPFlag(commonflags.ConfigDirFlag, cmd.Flags().Lookup(commonflags.ConfigDirFlag))
|
|
_ = viper.BindPFlag(cidFlag, cmd.Flags().Lookup(cidFlag))
|
|
_ = viper.BindPFlag(oidFlag, cmd.Flags().Lookup(oidFlag))
|
|
},
|
|
Run: restore,
|
|
}
|
|
removeCmd = &cobra.Command{
|
|
Use: "remove",
|
|
Short: "Remove zombie objects from quarantine",
|
|
Long: "",
|
|
PreRun: func(cmd *cobra.Command, _ []string) {
|
|
_ = viper.BindPFlag(commonflags.ConfigFlag, cmd.Flags().Lookup(commonflags.ConfigFlag))
|
|
_ = viper.BindPFlag(commonflags.ConfigDirFlag, cmd.Flags().Lookup(commonflags.ConfigDirFlag))
|
|
_ = viper.BindPFlag(cidFlag, cmd.Flags().Lookup(cidFlag))
|
|
_ = viper.BindPFlag(oidFlag, cmd.Flags().Lookup(oidFlag))
|
|
},
|
|
Run: remove,
|
|
}
|
|
)
|
|
|
|
func init() {
|
|
initScanCmd()
|
|
initListCmd()
|
|
initRestoreCmd()
|
|
initRemoveCmd()
|
|
}
|
|
|
|
func initScanCmd() {
|
|
Cmd.AddCommand(scanCmd)
|
|
|
|
scanCmd.Flags().StringP(commonflags.ConfigFlag, commonflags.ConfigFlagShorthand, "", commonflags.ConfigFlagUsage)
|
|
scanCmd.Flags().String(commonflags.ConfigDirFlag, "", commonflags.ConfigDirFlagUsage)
|
|
scanCmd.Flags().Uint32(flagBatchSize, 1000, flagBatchSizeUsage)
|
|
scanCmd.Flags().StringP(walletFlag, walletFlagShorthand, "", walletFlagUsage)
|
|
scanCmd.Flags().String(addressFlag, "", addressFlagUsage)
|
|
scanCmd.Flags().Bool(moveFlag, false, moveFlagUsage)
|
|
}
|
|
|
|
func initListCmd() {
|
|
Cmd.AddCommand(listCmd)
|
|
|
|
listCmd.Flags().StringP(commonflags.ConfigFlag, commonflags.ConfigFlagShorthand, "", commonflags.ConfigFlagUsage)
|
|
listCmd.Flags().String(commonflags.ConfigDirFlag, "", commonflags.ConfigDirFlagUsage)
|
|
listCmd.Flags().String(cidFlag, "", cidFlagUsage)
|
|
}
|
|
|
|
func initRestoreCmd() {
|
|
Cmd.AddCommand(restoreCmd)
|
|
|
|
restoreCmd.Flags().StringP(commonflags.ConfigFlag, commonflags.ConfigFlagShorthand, "", commonflags.ConfigFlagUsage)
|
|
restoreCmd.Flags().String(commonflags.ConfigDirFlag, "", commonflags.ConfigDirFlagUsage)
|
|
restoreCmd.Flags().String(cidFlag, "", cidFlagUsage)
|
|
restoreCmd.Flags().String(oidFlag, "", oidFlagUsage)
|
|
}
|
|
|
|
func initRemoveCmd() {
|
|
Cmd.AddCommand(removeCmd)
|
|
|
|
removeCmd.Flags().StringP(commonflags.ConfigFlag, commonflags.ConfigFlagShorthand, "", commonflags.ConfigFlagUsage)
|
|
removeCmd.Flags().String(commonflags.ConfigDirFlag, "", commonflags.ConfigDirFlagUsage)
|
|
removeCmd.Flags().String(cidFlag, "", cidFlagUsage)
|
|
removeCmd.Flags().String(oidFlag, "", oidFlagUsage)
|
|
}
|