fix(edge): parse agent platform on every polling request to avoid endpoint misconfiguration (#7452)
parent
29f0daa7ea
commit
87accfce5d
|
@ -77,13 +77,13 @@ func (handler *Handler) endpointEdgeStatusInspect(w http.ResponseWriter, r *http
|
||||||
if endpoint.EdgeID == "" {
|
if endpoint.EdgeID == "" {
|
||||||
edgeIdentifier := r.Header.Get(portainer.PortainerAgentEdgeIDHeader)
|
edgeIdentifier := r.Header.Get(portainer.PortainerAgentEdgeIDHeader)
|
||||||
endpoint.EdgeID = edgeIdentifier
|
endpoint.EdgeID = edgeIdentifier
|
||||||
|
}
|
||||||
|
|
||||||
agentPlatform, agentPlatformErr := parseAgentPlatform(r)
|
agentPlatform, agentPlatformErr := parseAgentPlatform(r)
|
||||||
if agentPlatformErr != nil {
|
if agentPlatformErr != nil {
|
||||||
return httperror.BadRequest("agent platform header is not valid", err)
|
return httperror.BadRequest("agent platform header is not valid", err)
|
||||||
}
|
}
|
||||||
endpoint.Type = agentPlatform
|
endpoint.Type = agentPlatform
|
||||||
}
|
|
||||||
|
|
||||||
version := r.Header.Get(portainer.PortainerAgentHeader)
|
version := r.Header.Get(portainer.PortainerAgentHeader)
|
||||||
endpoint.Agent.Version = version
|
endpoint.Agent.Version = version
|
||||||
|
|
|
@ -57,7 +57,7 @@ var endpointTestCases = []endpointTestCase{
|
||||||
portainer.EndpointRelation{
|
portainer.EndpointRelation{
|
||||||
EndpointID: 2,
|
EndpointID: 2,
|
||||||
},
|
},
|
||||||
http.StatusBadRequest,
|
http.StatusForbidden,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
portainer.Endpoint{
|
portainer.Endpoint{
|
||||||
|
@ -194,7 +194,9 @@ func TestWithEndpoints(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("request error:", err)
|
t.Fatal("request error:", err)
|
||||||
}
|
}
|
||||||
req.Header.Set(portainer.PortainerAgentEdgeIDHeader, "edge-id")
|
|
||||||
|
req.Header.Set(portainer.PortainerAgentEdgeIDHeader, test.endpoint.EdgeID)
|
||||||
|
req.Header.Set(portainer.HTTPResponseAgentPlatform, "1")
|
||||||
|
|
||||||
rec := httptest.NewRecorder()
|
rec := httptest.NewRecorder()
|
||||||
handler.ServeHTTP(rec, req)
|
handler.ServeHTTP(rec, req)
|
||||||
|
@ -239,6 +241,7 @@ func TestLastCheckInDateIncreases(t *testing.T) {
|
||||||
t.Fatal("request error:", err)
|
t.Fatal("request error:", err)
|
||||||
}
|
}
|
||||||
req.Header.Set(portainer.PortainerAgentEdgeIDHeader, "edge-id")
|
req.Header.Set(portainer.PortainerAgentEdgeIDHeader, "edge-id")
|
||||||
|
req.Header.Set(portainer.HTTPResponseAgentPlatform, "1")
|
||||||
|
|
||||||
rec := httptest.NewRecorder()
|
rec := httptest.NewRecorder()
|
||||||
handler.ServeHTTP(rec, req)
|
handler.ServeHTTP(rec, req)
|
||||||
|
@ -355,6 +358,7 @@ func TestEdgeStackStatus(t *testing.T) {
|
||||||
t.Fatal("request error:", err)
|
t.Fatal("request error:", err)
|
||||||
}
|
}
|
||||||
req.Header.Set(portainer.PortainerAgentEdgeIDHeader, "edge-id")
|
req.Header.Set(portainer.PortainerAgentEdgeIDHeader, "edge-id")
|
||||||
|
req.Header.Set(portainer.HTTPResponseAgentPlatform, "1")
|
||||||
|
|
||||||
rec := httptest.NewRecorder()
|
rec := httptest.NewRecorder()
|
||||||
handler.ServeHTTP(rec, req)
|
handler.ServeHTTP(rec, req)
|
||||||
|
@ -424,6 +428,7 @@ func TestEdgeJobsResponse(t *testing.T) {
|
||||||
t.Fatal("request error:", err)
|
t.Fatal("request error:", err)
|
||||||
}
|
}
|
||||||
req.Header.Set(portainer.PortainerAgentEdgeIDHeader, "edge-id")
|
req.Header.Set(portainer.PortainerAgentEdgeIDHeader, "edge-id")
|
||||||
|
req.Header.Set(portainer.HTTPResponseAgentPlatform, "1")
|
||||||
|
|
||||||
rec := httptest.NewRecorder()
|
rec := httptest.NewRecorder()
|
||||||
handler.ServeHTTP(rec, req)
|
handler.ServeHTTP(rec, req)
|
||||||
|
|
Loading…
Reference in New Issue