Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit9422003

Browse files
committed
fix: skip connection if the DLE container is already connected to an internal network
1 parent5d503c7 commit9422003

File tree

2 files changed

+52
-8
lines changed

2 files changed

+52
-8
lines changed

‎pkg/util/networks/networks.go

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,19 @@ const (
2828
)
2929

3030
// Setup creates a new internal Docker network and connects container to it.
31-
funcSetup(ctx context.Context,dockerCLI*client.Client,instanceID,containerIDstring) (string,error) {
31+
funcSetup(ctx context.Context,dockerCLI*client.Client,instanceID,containerNamestring) (string,error) {
3232
networkName:=getNetworkName(instanceID)
3333

3434
log.Dbg("Discovering internal network:",networkName)
3535

3636
networkResource,err:=dockerCLI.NetworkInspect(ctx,networkName, types.NetworkInspectOptions{})
3737
iferr==nil {
38-
iferr:=dockerCLI.NetworkConnect(ctx,networkResource.ID,containerID,&network.EndpointSettings{});err!=nil {
39-
return"",err
38+
if!hasContainerConnected(networkResource,containerName) {
39+
iferr:=dockerCLI.NetworkConnect(ctx,networkResource.ID,containerName,&network.EndpointSettings{});err!=nil {
40+
return"",err
41+
}
42+
43+
log.Dbg(fmt.Sprintf("Container %s has been connected to %s",containerName,networkName))
4044
}
4145

4246
returnnetworkResource.ID,nil
@@ -61,7 +65,7 @@ func Setup(ctx context.Context, dockerCLI *client.Client, instanceID, containerI
6165

6266
log.Dbg("A new internal network has been created:",internalNetwork.ID)
6367

64-
iferr:=dockerCLI.NetworkConnect(ctx,internalNetwork.ID,containerID,&network.EndpointSettings{});err!=nil {
68+
iferr:=dockerCLI.NetworkConnect(ctx,internalNetwork.ID,containerName,&network.EndpointSettings{});err!=nil {
6569
return"",err
6670
}
6771

@@ -108,11 +112,13 @@ func Connect(ctx context.Context, dockerCLI *client.Client, instanceID, containe
108112
returnfmt.Errorf("internal network not found: %w",err)
109113
}
110114

111-
iferr:=dockerCLI.NetworkConnect(ctx,networkResource.ID,containerID,&network.EndpointSettings{});err!=nil {
112-
returnerr
113-
}
115+
if!hasContainerConnected(networkResource,containerID) {
116+
iferr:=dockerCLI.NetworkConnect(ctx,networkResource.ID,containerID,&network.EndpointSettings{});err!=nil {
117+
returnerr
118+
}
114119

115-
log.Dbg(fmt.Sprintf("Container %s has been connected to %s",instanceID,networkName))
120+
log.Dbg(fmt.Sprintf("Container %s has been connected to %s",instanceID,networkName))
121+
}
116122

117123
returnnil
118124
}
@@ -147,6 +153,16 @@ func Reconnect(ctx context.Context, dockerCLI *client.Client, instanceID, contai
147153
returnnil
148154
}
149155

156+
funchasContainerConnected(networkResource types.NetworkResource,containerIDstring)bool {
157+
for_,container:=rangenetworkResource.Containers {
158+
ifcontainer.Name==containerID {
159+
returntrue
160+
}
161+
}
162+
163+
returnfalse
164+
}
165+
150166
funcgetNetworkName(instanceIDstring)string {
151167
returnnetworkPrefix+instanceID
152168
}

‎pkg/util/networks/networks_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package networks
77
import (
88
"testing"
99

10+
"github.com/docker/docker/api/types"
1011
"github.com/stretchr/testify/assert"
1112
)
1213

@@ -17,3 +18,30 @@ func TestInternalNetworks(t *testing.T) {
1718
assert.Equal(t,"dle_network_testInstanceID",getNetworkName(instanceID))
1819
})
1920
}
21+
22+
funcTestIfContainerConnected(t*testing.T) {
23+
t.Run("test if container connected",func(t*testing.T) {
24+
resource:= types.NetworkResource{
25+
Containers:map[string]types.EndpointResource{
26+
"testID": {Name:"test_server"},
27+
},
28+
}
29+
testCases:= []struct {
30+
containerNamestring
31+
resultbool
32+
}{
33+
{
34+
containerName:"test_server",
35+
result:true,
36+
},
37+
{
38+
containerName:"not_connected_server",
39+
result:false,
40+
},
41+
}
42+
43+
for_,tc:=rangetestCases {
44+
assert.Equal(t,tc.result,hasContainerConnected(resource,tc.containerName))
45+
}
46+
})
47+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp