1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-25 08:19:40 +02:00

fix(snapshots): fix background snapshots on environment creation EE-7273 (#12021)

This commit is contained in:
andres-portainer 2024-07-09 15:18:13 -03:00 committed by GitHub
parent 7fd1a644a6
commit 220fe28830
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 30 additions and 11 deletions

View file

@ -15,8 +15,9 @@ import (
func TestPingAgentPanic(t *testing.T) {
endpoint := &portainer.Endpoint{
ID: 1,
Type: portainer.EdgeAgentOnDockerEnvironment,
ID: 1,
EdgeID: "test-edge-id",
Type: portainer.EdgeAgentOnDockerEnvironment,
}
_, store := datastore.MustNewTestStore(t, true, true)
@ -42,7 +43,8 @@ func TestPingAgentPanic(t *testing.T) {
errCh <- srv.Serve(ln)
}()
s.Open(endpoint)
err = s.Open(endpoint)
require.NoError(t, err)
s.activeTunnels[endpoint.ID].Port = ln.Addr().(*net.TCPAddr).Port
require.Error(t, s.pingAgent(endpoint.ID))

View file

@ -24,14 +24,24 @@ const (
maxAvailablePort = 65535
)
var (
ErrNonEdgeEnv = errors.New("cannot open a tunnel for non-edge environments")
ErrAsyncEnv = errors.New("cannot open a tunnel for async edge environments")
ErrInvalidEnv = errors.New("cannot open a tunnel for an invalid environment")
)
// Open will mark the tunnel as REQUIRED so the agent opens it
func (s *Service) Open(endpoint *portainer.Endpoint) error {
if !endpointutils.IsEdgeEndpoint(endpoint) {
return errors.New("cannot open a tunnel for non-edge environments")
return ErrNonEdgeEnv
}
if endpoint.Edge.AsyncMode {
return errors.New("cannot open a tunnel for async edge environments")
return ErrAsyncEnv
}
if endpoint.ID == 0 || endpoint.EdgeID == "" {
return ErrInvalidEnv
}
s.mu.Lock()