mirror of
https://github.com/gravitl/netmaker.git
synced 2025-11-13 02:01:32 +08:00
added TODO comment and allowed using enrollment key more than once
This commit is contained in:
parent
e759637750
commit
0335e258ad
2 changed files with 24 additions and 14 deletions
|
|
@ -152,9 +152,10 @@ func handleHostRegister(w http.ResponseWriter, r *http.Request) {
|
||||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
hostExists := false
|
||||||
// check if host already exists
|
// check if host already exists
|
||||||
if ok := logic.HostExists(&newHost); ok {
|
if hostExists = logic.HostExists(&newHost); hostExists && len(enrollmentKey.Networks) == 0 {
|
||||||
logger.Log(0, "host", newHost.ID.String(), newHost.Name, "attempted to re-register")
|
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"))
|
logic.ReturnErrorResponse(w, r, logic.FormatError(fmt.Errorf("host already exists"), "badrequest"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -176,6 +177,7 @@ func handleHostRegister(w http.ResponseWriter, r *http.Request) {
|
||||||
logic.ReturnErrorResponse(w, r, logic.FormatError(fmt.Errorf("invalid enrollment key"), "badrequest"))
|
logic.ReturnErrorResponse(w, r, logic.FormatError(fmt.Errorf("invalid enrollment key"), "badrequest"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if !hostExists {
|
||||||
// register host
|
// register host
|
||||||
logic.CheckHostPorts(&newHost)
|
logic.CheckHostPorts(&newHost)
|
||||||
if err = logic.CreateHost(&newHost); err != nil {
|
if err = logic.CreateHost(&newHost); err != nil {
|
||||||
|
|
@ -183,6 +185,19 @@ func handleHostRegister(w http.ResponseWriter, r *http.Request) {
|
||||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||||
return
|
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
|
// ready the response
|
||||||
server := servercfg.GetServerInfo()
|
server := servercfg.GetServerInfo()
|
||||||
server.TrafficKey = key
|
server.TrafficKey = key
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ func AddAction(hu models.HostUpdate) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetAction - gets an action if exists
|
// 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 {
|
func GetAction(id string) *models.HostUpdate {
|
||||||
currentRecords, ok := nodeActionHandler.Load(id)
|
currentRecords, ok := nodeActionHandler.Load(id)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|
@ -35,9 +36,3 @@ func GetAction(id string) *models.HostUpdate {
|
||||||
}
|
}
|
||||||
return nil
|
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…
Add table
Reference in a new issue