mirror of
https://github.com/gravitl/netmaker.git
synced 2024-09-20 23:36:18 +08:00
added TODO comment and allowed using enrollment key more than once
This commit is contained in:
parent
e759637750
commit
0335e258ad
|
@ -152,9 +152,10 @@ func handleHostRegister(w http.ResponseWriter, r *http.Request) {
|
|||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
hostExists := false
|
||||
// check if host already exists
|
||||
if ok := logic.HostExists(&newHost); ok {
|
||||
logger.Log(0, "host", newHost.ID.String(), newHost.Name, "attempted to re-register")
|
||||
if hostExists = logic.HostExists(&newHost); hostExists && len(enrollmentKey.Networks) == 0 {
|
||||
logger.Log(0, "host", newHost.ID.String(), newHost.Name, "attempted to re-register with no networks")
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(fmt.Errorf("host already exists"), "badrequest"))
|
||||
return
|
||||
}
|
||||
|
@ -176,13 +177,27 @@ func handleHostRegister(w http.ResponseWriter, r *http.Request) {
|
|||
logic.ReturnErrorResponse(w, r, logic.FormatError(fmt.Errorf("invalid enrollment key"), "badrequest"))
|
||||
return
|
||||
}
|
||||
// register host
|
||||
logic.CheckHostPorts(&newHost)
|
||||
if err = logic.CreateHost(&newHost); err != nil {
|
||||
logger.Log(0, "host", newHost.ID.String(), newHost.Name, "failed registration -", err.Error())
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
if !hostExists {
|
||||
// register host
|
||||
logic.CheckHostPorts(&newHost)
|
||||
if err = logic.CreateHost(&newHost); err != nil {
|
||||
logger.Log(0, "host", newHost.ID.String(), newHost.Name, "failed registration -", err.Error())
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
} else {
|
||||
// need to revise the list of networks from key
|
||||
// based on the ones host currently has
|
||||
var networksToAdd = []string{}
|
||||
currentNets := logic.GetHostNetworks(newHost.ID.String())
|
||||
for _, newNet := range enrollmentKey.Networks {
|
||||
if !logic.StringSliceContains(currentNets, newNet) {
|
||||
networksToAdd = append(networksToAdd, newNet)
|
||||
}
|
||||
}
|
||||
enrollmentKey.Networks = networksToAdd
|
||||
}
|
||||
|
||||
// ready the response
|
||||
server := servercfg.GetServerInfo()
|
||||
server.TrafficKey = key
|
||||
|
|
|
@ -22,6 +22,7 @@ func AddAction(hu models.HostUpdate) {
|
|||
}
|
||||
|
||||
// GetAction - gets an action if exists
|
||||
// TODO: may need to move to DB rather than sync map for HA
|
||||
func GetAction(id string) *models.HostUpdate {
|
||||
currentRecords, ok := nodeActionHandler.Load(id)
|
||||
if !ok {
|
||||
|
@ -35,9 +36,3 @@ func GetAction(id string) *models.HostUpdate {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// [hostID][NodeAction1, NodeAction2]
|
||||
// host receives nodeaction1
|
||||
// host responds with ACK or something
|
||||
// mq then sends next action in list, NodeAction2
|
||||
// host responds, list is empty, finished
|
||||
|
|
Loading…
Reference in a new issue