Skip to content

Commit c5deab3

Browse files
committed
maintenance: deregister any client
1 parent 9aededc commit c5deab3

5 files changed

Lines changed: 17 additions & 10 deletions

File tree

cmd/service/deregister.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,12 @@ import (
1212
"github.com/tschaefer/finchctl/cmd/errors"
1313
"github.com/tschaefer/finchctl/cmd/format"
1414
"github.com/tschaefer/finchctl/internal/service"
15+
"github.com/tschaefer/finchctl/internal/version"
1516
)
1617

1718
var deregisterCmd = &cobra.Command{
1819
Use: "deregister [user@]host[:port]",
19-
Short: "Deregister the client from a service on a remote host",
20+
Short: "Deregister a client from a service on a remote host",
2021
Args: cobra.ExactArgs(1),
2122
Run: runDeregisterCmd,
2223
ValidArgsFunction: completion.CompleteHostName,
@@ -25,6 +26,7 @@ var deregisterCmd = &cobra.Command{
2526
func init() {
2627
deregisterCmd.Flags().String("run.format", "progress", "output format")
2728
deregisterCmd.Flags().Bool("run.dry-run", false, "do not deregister, just print the commands that would be run")
29+
deregisterCmd.Flags().String("client.rid", version.ResourceID(), "client resource ID (default: local client rid)")
2830

2931
_ = deregisterCmd.RegisterFlagCompletionFunc("run.format", completion.CompleteRunFormat)
3032
}
@@ -46,6 +48,8 @@ func runDeregisterCmd(cmd *cobra.Command, args []string) {
4648
})
4749
errors.CheckErr(err, formatType)
4850

49-
err = s.Deregister()
51+
clientID, _ := cmd.Flags().GetString("client.rid")
52+
keepCfg := cmd.Flags().Lookup("client.rid").Changed
53+
err = s.Deregister(clientID, keepCfg)
5054
errors.CheckErr(err, formatType)
5155
}

cmd/service/info.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ var infoCmd = &cobra.Command{
2626
}
2727

2828
func init() {
29-
infoCmd.Flags().Bool("output.json", false, "output in JSON format (not implemented yet)")
29+
infoCmd.Flags().Bool("output.json", false, "output in JSON format")
3030
}
3131

3232
func runInfoCmd(cmd *cobra.Command, args []string) {

internal/service/deregister.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@ import (
88
"path"
99

1010
"github.com/tschaefer/finchctl/internal/config"
11-
"github.com/tschaefer/finchctl/internal/version"
1211
)
1312

14-
func (s *Service) deregisterService() error {
13+
func (s *Service) deregisterService(clientID string, keepCfg bool) error {
1514
if err := s.__updateSetTargetConfiguration(); err != nil {
1615
return convertError(err, &DeregisterServiceError{})
1716
}
@@ -20,7 +19,7 @@ func (s *Service) deregisterService() error {
2019
return &DeregisterServiceError{Message: err.Error(), Reason: ""}
2120
}
2221

23-
caCertPath := path.Join(s.libDir(), "traefik/etc/certs.d", version.ResourceID()+".pem")
22+
caCertPath := path.Join(s.libDir(), "traefik/etc/certs.d", clientID+".pem")
2423
out, err := s.target.Run(s.ctx, "rm -f "+caCertPath)
2524
if err != nil {
2625
return &DeregisterServiceError{Message: err.Error(), Reason: string(out)}
@@ -30,5 +29,9 @@ func (s *Service) deregisterService() error {
3029
return nil
3130
}
3231

32+
if !keepCfg {
33+
return nil
34+
}
35+
3336
return config.RemoveStack(s.config.Hostname)
3437
}

internal/service/service.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ func (s *Service) Register() error {
181181
return nil
182182
}
183183

184-
func (s *Service) Deregister() error {
184+
func (s *Service) Deregister(clientID string, keepCfg bool) error {
185185
defer func() {
186186
if s.format == target.FormatProgress {
187187
println()
@@ -192,7 +192,7 @@ func (s *Service) Deregister() error {
192192
return convertError(err, &DeregisterServiceError{})
193193
}
194194

195-
if err := s.deregisterService(); err != nil {
195+
if err := s.deregisterService(clientID, keepCfg); err != nil {
196196
return err
197197
}
198198

internal/service/service_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ func Test_Deregister(t *testing.T) {
338338
assert.NoError(t, err, "create service")
339339

340340
record := capture(func() {
341-
err = s.Deregister()
341+
err = s.Deregister("rid:finchctl:1234567890abcdef", false)
342342
})
343343
assert.NoError(t, err, "deregister service")
344344

@@ -360,7 +360,7 @@ func Test_Deregister(t *testing.T) {
360360
assert.NoError(t, err, "create service")
361361

362362
record = capture(func() {
363-
err = s.Deregister()
363+
err = s.Deregister("rid:finchctl:1234567890abcdef", false)
364364
})
365365
assert.NoError(t, err, "deregister service")
366366

0 commit comments

Comments
 (0)