Files
netmaker/serverctl/serverctl.go
T
Abhishek Kondur c3c3ed1fb8 NM-254: add bulk delete apis, rm old acl code (#3937)
* NM-254: add bulk delete apis for users, hosts, nodes and optimise postgres connection settings

* NM-254: rm debug logs

* NM-254: add bulk delete apis, remove old acl code

* NM-254: rm unused flag

* NM-254: fix bulk delete bugs, add security and performance improvements

- Fix host delete notifying peers before confirming deletion from DB
- Fix self-delete vulnerability in bulk user delete
- Fix DissasociateNodeFromHost failing when host.Nodes is empty
- Fix AssociateNodeToHost/DissasociateNodeFromHost stale read race
- Hoist GetAllExtClients outside loop in bulk user delete/status
- Move initializeUUID outside master-pod guard for HA correctness

* NM-254: return 202 Accepted for async bulk APIs, fix relay allowedIPs and host association error handling

- Change all bulk endpoints (hosts, nodes, users, ext clients) from
  200 OK to 202 Accepted to correctly signal async processing
- Add ReturnAcceptedResponse helper in logic/errors.go
- Fix GetAllowedIpsForRelayed returning empty allowedIPs slice,
  restoring relay connectivity
- Make AssociateNodeToHost and DissasociateNodeFromHost return an
  error when the host DB re-fetch fails instead of silently using
  stale data
- Add bulk-apis.md documenting all five bulk endpoints

* NM-254: rm coredns container

* NM-254: add bulk apis for node,extclient status, add activity logs to bulk apis

* NM-254: add bulk api for connection toggle

* NM-254: add network check

* Update controllers/hosts.go

Co-authored-by: tenki-reviewer[bot] <262613592+tenki-reviewer[bot]@users.noreply.github.com>

* NM-254: optimise bulk extclient deletion

---------

Co-authored-by: tenki-reviewer[bot] <262613592+tenki-reviewer[bot]@users.noreply.github.com>
2026-03-26 10:15:07 +05:30

62 lines
1.3 KiB
Go

package serverctl
import (
"context"
"github.com/gravitl/netmaker/db"
"github.com/gravitl/netmaker/logic"
"github.com/gravitl/netmaker/schema"
"golang.org/x/exp/slog"
)
const (
// NETMAKER_BINARY_NAME - name of netmaker binary
NETMAKER_BINARY_NAME = "netmaker"
)
func SetDefaults() error {
if err := setNodeDefaults(); err != nil {
return err
}
if err := setUserDefaults(); err != nil {
return err
}
return nil
}
// setNodeDefaults - runs through each node and set defaults
func setNodeDefaults() error {
// upgraded systems will not have ACL's set, which is why we need this function
nodes, err := logic.GetAllNodes()
if err != nil {
return err
}
for i := range nodes {
logic.SetNodeDefaults(&nodes[i], false)
logic.UpsertNode(&nodes[i])
}
return nil
}
func setUserDefaults() error {
users, err := logic.GetUsers()
if err != nil {
return err
}
for _, user := range users {
updateUser := &schema.User{Username: user.UserName}
err = updateUser.Get(db.WithContext(context.TODO()))
if err != nil {
slog.Error("could not get user", "user", updateUser.Username, "error", err.Error())
}
logic.SetUserDefaults(updateUser)
err = logic.UpsertUser(*updateUser)
if err != nil {
slog.Error("could not update user", "user", updateUser.Username, "error", err.Error())
}
}
return nil
}