mirror of
https://github.com/photoprism/photoprism.git
synced 2025-12-12 00:34:13 +01:00
Auth: Refactor cluster configuration and provisioning API endpoints #98
Signed-off-by: Michael Mayer <michael@photoprism.app>
This commit is contained in:
@@ -18,6 +18,7 @@ var ClusterNodesRemoveCommand = &cli.Command{
|
||||
ArgsUsage: "<id|name>",
|
||||
Flags: []cli.Flag{
|
||||
&cli.BoolFlag{Name: "yes", Aliases: []string{"y"}, Usage: "runs the command non-interactively"},
|
||||
&cli.BoolFlag{Name: "all-ids", Usage: "delete all records that share the same UUID (admin cleanup)"},
|
||||
},
|
||||
Action: clusterNodesRemoveAction,
|
||||
}
|
||||
@@ -39,29 +40,36 @@ func clusterNodesRemoveAction(ctx *cli.Context) error {
|
||||
}
|
||||
|
||||
// Resolve to id for deletion, but also support name.
|
||||
id := key
|
||||
if _, getErr := r.Get(id); getErr != nil {
|
||||
if n, err2 := r.FindByName(clean.TypeLowerDash(key)); err2 == nil && n != nil {
|
||||
id = n.ID
|
||||
} else {
|
||||
return cli.Exit(fmt.Errorf("node not found"), 3)
|
||||
}
|
||||
// Resolve UUID to delete: accept uuid → clientId → name.
|
||||
uuid := key
|
||||
if n, err2 := r.FindByNodeUUID(uuid); err2 == nil && n != nil {
|
||||
uuid = n.UUID
|
||||
} else if n, err2 := r.FindByClientID(uuid); err2 == nil && n != nil {
|
||||
uuid = n.UUID
|
||||
} else if n, err2 := r.FindByName(clean.DNSLabel(key)); err2 == nil && n != nil {
|
||||
uuid = n.UUID
|
||||
} else {
|
||||
return cli.Exit(fmt.Errorf("node not found"), 3)
|
||||
}
|
||||
|
||||
confirmed := RunNonInteractively(ctx.Bool("yes"))
|
||||
if !confirmed {
|
||||
prompt := promptui.Prompt{Label: fmt.Sprintf("Delete node %s?", clean.Log(id)), IsConfirm: true}
|
||||
prompt := promptui.Prompt{Label: fmt.Sprintf("Delete node %s?", clean.Log(uuid)), IsConfirm: true}
|
||||
if _, err := prompt.Run(); err != nil {
|
||||
log.Infof("node %s was not deleted", clean.Log(id))
|
||||
log.Infof("node %s was not deleted", clean.Log(uuid))
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
if err := r.Delete(id); err != nil {
|
||||
if ctx.Bool("all-ids") {
|
||||
if err := r.DeleteAllByUUID(uuid); err != nil {
|
||||
return cli.Exit(err, 1)
|
||||
}
|
||||
} else if err := r.Delete(uuid); err != nil {
|
||||
return cli.Exit(err, 1)
|
||||
}
|
||||
|
||||
log.Infof("node %s has been deleted", clean.Log(id))
|
||||
log.Infof("node %s has been deleted", clean.Log(uuid))
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user