Add nodes and cluster settings support (#9)

This commit is contained in:
T. von Dein
2026-05-05 12:06:34 +02:00
parent a169d23b90
commit fcfeaf66a9
7 changed files with 265 additions and 335 deletions

View File

@@ -33,21 +33,22 @@ func Cluster(conf *cfg.Config) *cli.Command {
Usage: "manage cluster[s]",
Commands: []*cli.Command{
Compare(conf),
Status(conf),
List(conf),
ClusterCompare(conf),
ClusterStatus(conf),
ClusterList(conf),
ClusterSettings(conf),
},
}
}
func List(conf *cfg.Config) *cli.Command {
func ClusterList(conf *cfg.Config) *cli.Command {
return &cli.Command{
Name: "list",
Usage: "list configured clusters",
Aliases: []string{"ls"},
Action: func(ctx context.Context, cmd *cli.Command) error {
if err := es.List(conf); err != nil {
if err := es.ClusterList(conf); err != nil {
return err
}
@@ -56,7 +57,7 @@ func List(conf *cfg.Config) *cli.Command {
}
}
func Status(conf *cfg.Config) *cli.Command {
func ClusterStatus(conf *cfg.Config) *cli.Command {
return &cli.Command{
Name: "status",
Usage: "show cluster status",
@@ -72,7 +73,7 @@ func Status(conf *cfg.Config) *cli.Command {
},
Action: func(ctx context.Context, cmd *cli.Command) error {
if err := es.Status(conf); err != nil {
if err := es.ClusterStatus(conf); err != nil {
return err
}
@@ -81,7 +82,7 @@ func Status(conf *cfg.Config) *cli.Command {
}
}
func Compare(conf *cfg.Config) *cli.Command {
func ClusterCompare(conf *cfg.Config) *cli.Command {
return &cli.Command{
Name: "compare",
Aliases: []string{"c"},
@@ -119,3 +120,64 @@ func Compare(conf *cfg.Config) *cli.Command {
},
}
}
func ClusterSettings(conf *cfg.Config) *cli.Command {
return &cli.Command{
Name: "settings",
Usage: "cluster settings management",
Aliases: []string{"config"},
Commands: []*cli.Command{
ClusterSettingsList(conf),
ClusterSettingsSet(conf),
},
}
}
func ClusterSettingsList(conf *cfg.Config) *cli.Command {
return &cli.Command{
Name: "list",
Usage: "show cluster settings",
Aliases: []string{"ls", "get"},
Action: func(ctx context.Context, cmd *cli.Command) error {
if err := es.ClusterSettingsList(conf); err != nil {
return err
}
return nil
},
}
}
func ClusterSettingsSet(conf *cfg.Config) *cli.Command {
return &cli.Command{
Name: "set",
Usage: "set|update cluster settings",
Aliases: []string{"set", "update"},
UsageText: "set [options] setting:value [setting:value ...]",
Flags: []cli.Flag{
&cli.BoolFlag{
Name: "persistent",
Usage: "add persistent setting[s] (default)",
Destination: &conf.Persistent,
Aliases: []string{"p"},
},
&cli.BoolFlag{
Name: "transient",
Usage: "add transient setting[s]",
Destination: &conf.Transient,
Aliases: []string{"t"},
},
},
Action: func(ctx context.Context, cmd *cli.Command) error {
if err := es.ClusterSettingsSet(conf, cmd.Args()); err != nil {
return err
}
return nil
},
}
}

72
cmd/node.go Normal file
View File

@@ -0,0 +1,72 @@
/*
Copyright © 2026 Thomas von Dein
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package cmd
import (
"context"
"codeberg.org/scip/esctl/pkg/cfg"
"codeberg.org/scip/esctl/pkg/es"
"github.com/urfave/cli/v3"
)
func Node(conf *cfg.Config) *cli.Command {
return &cli.Command{
Name: "node",
Aliases: []string{"snap"},
Usage: "manage nodes",
Commands: []*cli.Command{
NodeList(conf),
NodeShow(conf),
},
}
}
func NodeList(conf *cfg.Config) *cli.Command {
return &cli.Command{
Name: "list",
Aliases: []string{"ls"},
Usage: "list nodes",
Action: func(ctx context.Context, cmd *cli.Command) error {
if err := es.NodeList(conf); err != nil {
return err
}
return nil
},
}
}
func NodeShow(conf *cfg.Config) *cli.Command {
return &cli.Command{
Name: "show",
Aliases: []string{"sh"},
Usage: "show details about a node",
UsageText: "show [options] <node>",
Action: func(ctx context.Context, cmd *cli.Command) error {
// if err := es.NodeShow(conf, cmd.Args().Get(0)); err != nil {
// return err
// }
return nil
},
}
}

View File

@@ -76,6 +76,7 @@ func Main() int {
Index(conf),
Snapshot(conf),
Cluster(conf),
Node(conf),
},
Before: func(ctx context.Context, cmd *cli.Command) (context.Context, error) {