@@ -10,6 +10,7 @@ import (
10
10
cniversion "github.com/containernetworking/cni/pkg/version"
11
11
"github.com/containers/podman/v2/libpod/network"
12
12
. "github.com/containers/podman/v2/test/utils"
13
+ "github.com/containers/storage/pkg/stringid"
13
14
. "github.com/onsi/ginkgo"
14
15
. "github.com/onsi/gomega"
15
16
"github.com/pkg/errors"
@@ -116,40 +117,41 @@ var _ = Describe("Podman network create", func() {
116
117
results []network.NcList
117
118
)
118
119
119
- nc := podmanTest .Podman ([]string {"network" , "create" , "newname" })
120
+ netName := "inspectnet-" + stringid .GenerateNonCryptoID ()
121
+ nc := podmanTest .Podman ([]string {"network" , "create" , netName })
120
122
nc .WaitWithDefaultTimeout ()
123
+ defer podmanTest .removeCNINetwork (netName )
121
124
Expect (nc .ExitCode ()).To (BeZero ())
122
- defer podmanTest .removeCNINetwork ("newname" )
123
125
124
- inspect := podmanTest .Podman ([]string {"network" , "inspect" , "newname" })
126
+ inspect := podmanTest .Podman ([]string {"network" , "inspect" , netName })
125
127
inspect .WaitWithDefaultTimeout ()
126
128
127
129
err := json .Unmarshal ([]byte (inspect .OutputToString ()), & results )
128
130
Expect (err ).To (BeNil ())
129
131
result := results [0 ]
130
- Expect (result ["name" ]).To (Equal ("newname" ))
132
+ Expect (result ["name" ]).To (Equal (netName ))
131
133
132
134
})
133
135
134
136
It ("podman network create with name and subnet" , func () {
135
137
var (
136
138
results []network.NcList
137
139
)
138
- nc := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "10.11.12.0/24" , "newnetwork" })
140
+ netName := "subnet-" + stringid .GenerateNonCryptoID ()
141
+ nc := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "10.11.12.0/24" , netName })
139
142
nc .WaitWithDefaultTimeout ()
143
+ defer podmanTest .removeCNINetwork (netName )
140
144
Expect (nc .ExitCode ()).To (BeZero ())
141
145
142
- defer podmanTest .removeCNINetwork ("newnetwork" )
143
-
144
146
// Inspect the network configuration
145
- inspect := podmanTest .Podman ([]string {"network" , "inspect" , "newnetwork" })
147
+ inspect := podmanTest .Podman ([]string {"network" , "inspect" , netName })
146
148
inspect .WaitWithDefaultTimeout ()
147
149
148
150
// JSON the network configuration into something usable
149
151
err := json .Unmarshal ([]byte (inspect .OutputToString ()), & results )
150
152
Expect (err ).To (BeNil ())
151
153
result := results [0 ]
152
- Expect (result ["name" ]).To (Equal ("newnetwork" ))
154
+ Expect (result ["name" ]).To (Equal (netName ))
153
155
154
156
// JSON the bridge info
155
157
bridgePlugin , err := genericPluginsToBridge (result ["plugins" ], "bridge" )
@@ -161,7 +163,7 @@ var _ = Describe("Podman network create", func() {
161
163
// best we can
162
164
defer removeNetworkDevice (bridgePlugin .BrName )
163
165
164
- try := podmanTest .Podman ([]string {"run" , "-it" , "--rm" , "--network" , "newnetwork" , ALPINE , "sh" , "-c" , "ip addr show eth0 | awk ' /inet / {print $2}'" })
166
+ try := podmanTest .Podman ([]string {"run" , "-it" , "--rm" , "--network" , netName , ALPINE , "sh" , "-c" , "ip addr show eth0 | awk ' /inet / {print $2}'" })
165
167
try .WaitWithDefaultTimeout ()
166
168
167
169
_ , subnet , err := net .ParseCIDR ("10.11.12.0/24" )
@@ -178,21 +180,21 @@ var _ = Describe("Podman network create", func() {
178
180
var (
179
181
results []network.NcList
180
182
)
181
- nc := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "fd00:1:2:3:4::/64" , "newIPv6network" })
183
+ netName := "ipv6-" + stringid .GenerateNonCryptoID ()
184
+ nc := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "fd00:1:2:3:4::/64" , netName })
182
185
nc .WaitWithDefaultTimeout ()
186
+ defer podmanTest .removeCNINetwork (netName )
183
187
Expect (nc .ExitCode ()).To (BeZero ())
184
188
185
- defer podmanTest .removeCNINetwork ("newIPv6network" )
186
-
187
189
// Inspect the network configuration
188
- inspect := podmanTest .Podman ([]string {"network" , "inspect" , "newIPv6network" })
190
+ inspect := podmanTest .Podman ([]string {"network" , "inspect" , netName })
189
191
inspect .WaitWithDefaultTimeout ()
190
192
191
193
// JSON the network configuration into something usable
192
194
err := json .Unmarshal ([]byte (inspect .OutputToString ()), & results )
193
195
Expect (err ).To (BeNil ())
194
196
result := results [0 ]
195
- Expect (result ["name" ]).To (Equal ("newIPv6network" ))
197
+ Expect (result ["name" ]).To (Equal (netName ))
196
198
197
199
// JSON the bridge info
198
200
bridgePlugin , err := genericPluginsToBridge (result ["plugins" ], "bridge" )
@@ -203,7 +205,7 @@ var _ = Describe("Podman network create", func() {
203
205
// best we can
204
206
defer removeNetworkDevice (bridgePlugin .BrName )
205
207
206
- try := podmanTest .Podman ([]string {"run" , "-it" , "--rm" , "--network" , "newIPv6network" , ALPINE , "sh" , "-c" , "ip addr show eth0 | grep global | awk ' /inet6 / {print $2}'" })
208
+ try := podmanTest .Podman ([]string {"run" , "-it" , "--rm" , "--network" , netName , ALPINE , "sh" , "-c" , "ip addr show eth0 | grep global | awk ' /inet6 / {print $2}'" })
207
209
try .WaitWithDefaultTimeout ()
208
210
209
211
_ , subnet , err := net .ParseCIDR ("fd00:1:2:3:4::/64" )
@@ -219,21 +221,21 @@ var _ = Describe("Podman network create", func() {
219
221
var (
220
222
results []network.NcList
221
223
)
222
- nc := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "fd00:4:3:2:1::/64" , "--ipv6" , "newDualStacknetwork" })
224
+ netName := "dual-" + stringid .GenerateNonCryptoID ()
225
+ nc := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "fd00:4:3:2:1::/64" , "--ipv6" , netName })
223
226
nc .WaitWithDefaultTimeout ()
227
+ defer podmanTest .removeCNINetwork (netName )
224
228
Expect (nc .ExitCode ()).To (BeZero ())
225
229
226
- defer podmanTest .removeCNINetwork ("newDualStacknetwork" )
227
-
228
230
// Inspect the network configuration
229
- inspect := podmanTest .Podman ([]string {"network" , "inspect" , "newDualStacknetwork" })
231
+ inspect := podmanTest .Podman ([]string {"network" , "inspect" , netName })
230
232
inspect .WaitWithDefaultTimeout ()
231
233
232
234
// JSON the network configuration into something usable
233
235
err := json .Unmarshal ([]byte (inspect .OutputToString ()), & results )
234
236
Expect (err ).To (BeNil ())
235
237
result := results [0 ]
236
- Expect (result ["name" ]).To (Equal ("newDualStacknetwork" ))
238
+ Expect (result ["name" ]).To (Equal (netName ))
237
239
238
240
// JSON the bridge info
239
241
bridgePlugin , err := genericPluginsToBridge (result ["plugins" ], "bridge" )
@@ -245,7 +247,7 @@ var _ = Describe("Podman network create", func() {
245
247
// best we can
246
248
defer removeNetworkDevice (bridgePlugin .BrName )
247
249
248
- try := podmanTest .Podman ([]string {"run" , "-it" , "--rm" , "--network" , "newDualStacknetwork" , ALPINE , "sh" , "-c" , "ip addr show eth0 | grep global | awk ' /inet6 / {print $2}'" })
250
+ try := podmanTest .Podman ([]string {"run" , "-it" , "--rm" , "--network" , netName , ALPINE , "sh" , "-c" , "ip addr show eth0 | grep global | awk ' /inet6 / {print $2}'" })
249
251
try .WaitWithDefaultTimeout ()
250
252
251
253
_ , subnet , err := net .ParseCIDR ("fd00:4:3:2:1::/64" )
@@ -255,74 +257,81 @@ var _ = Describe("Podman network create", func() {
255
257
// Ensure that the IP the container got is within the subnet the user asked for
256
258
Expect (subnet .Contains (containerIP )).To (BeTrue ())
257
259
// verify the container has an IPv4 address too (the IPv4 subnet is autogenerated)
258
- try = podmanTest .Podman ([]string {"run" , "-it" , "--rm" , "--network" , "newDualStacknetwork" , ALPINE , "sh" , "-c" , "ip addr show eth0 | awk ' /inet / {print $2}'" })
260
+ try = podmanTest .Podman ([]string {"run" , "-it" , "--rm" , "--network" , netName , ALPINE , "sh" , "-c" , "ip addr show eth0 | awk ' /inet / {print $2}'" })
259
261
try .WaitWithDefaultTimeout ()
260
262
containerIP , _ , err = net .ParseCIDR (try .OutputToString ())
261
263
Expect (err ).To (BeNil ())
262
264
Expect (containerIP .To4 ()).To (Not (BeNil ()))
263
265
})
264
266
265
267
It ("podman network create with invalid subnet" , func () {
266
- nc := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "10.11.12.0/17000" , "fail" })
268
+ nc := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "10.11.12.0/17000" , stringid . GenerateNonCryptoID () })
267
269
nc .WaitWithDefaultTimeout ()
268
270
Expect (nc ).To (ExitWithError ())
269
271
})
270
272
271
273
It ("podman network create with ipv4 subnet and ipv6 flag" , func () {
272
- nc := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "10.11.12.0/24" , "--ipv6" , "fail" })
274
+ nc := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "10.11.12.0/24" , "--ipv6" , stringid . GenerateNonCryptoID () })
273
275
nc .WaitWithDefaultTimeout ()
274
276
Expect (nc ).To (ExitWithError ())
275
277
})
276
278
277
279
It ("podman network create with empty subnet and ipv6 flag" , func () {
278
- nc := podmanTest .Podman ([]string {"network" , "create" , "--ipv6" , "fail" })
280
+ nc := podmanTest .Podman ([]string {"network" , "create" , "--ipv6" , stringid . GenerateNonCryptoID () })
279
281
nc .WaitWithDefaultTimeout ()
280
282
Expect (nc ).To (ExitWithError ())
281
283
})
282
284
283
285
It ("podman network create with invalid IP" , func () {
284
- nc := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "10.11.0/17000" , "fail" })
286
+ nc := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "10.11.0/17000" , stringid . GenerateNonCryptoID () })
285
287
nc .WaitWithDefaultTimeout ()
286
288
Expect (nc ).To (ExitWithError ())
287
289
})
288
290
289
291
It ("podman network create with invalid gateway for subnet" , func () {
290
- nc := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "10.11.12.0/24" , "--gateway" , "192.168.1.1" , "fail" })
292
+ nc := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "10.11.12.0/24" , "--gateway" , "192.168.1.1" , stringid . GenerateNonCryptoID () })
291
293
nc .WaitWithDefaultTimeout ()
292
294
Expect (nc ).To (ExitWithError ())
293
295
})
294
296
295
297
It ("podman network create two networks with same name should fail" , func () {
296
- nc := podmanTest .Podman ([]string {"network" , "create" , "samename" })
298
+ netName := "same-" + stringid .GenerateNonCryptoID ()
299
+ nc := podmanTest .Podman ([]string {"network" , "create" , netName })
297
300
nc .WaitWithDefaultTimeout ()
301
+ defer podmanTest .removeCNINetwork (netName )
298
302
Expect (nc .ExitCode ()).To (BeZero ())
299
- defer podmanTest .removeCNINetwork ("samename" )
300
303
301
- ncFail := podmanTest .Podman ([]string {"network" , "create" , "samename" })
304
+ ncFail := podmanTest .Podman ([]string {"network" , "create" , netName })
302
305
ncFail .WaitWithDefaultTimeout ()
303
306
Expect (ncFail ).To (ExitWithError ())
304
307
})
305
308
306
309
It ("podman network create two networks with same subnet should fail" , func () {
307
- nc := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "10.11.13.0/24" , "subnet1" })
310
+ netName1 := "sub1-" + stringid .GenerateNonCryptoID ()
311
+ nc := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "10.11.13.0/24" , netName1 })
308
312
nc .WaitWithDefaultTimeout ()
313
+ defer podmanTest .removeCNINetwork (netName1 )
309
314
Expect (nc .ExitCode ()).To (BeZero ())
310
- defer podmanTest .removeCNINetwork ("subnet1" )
311
315
312
- ncFail := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "10.11.13.0/24" , "subnet2" })
316
+ netName2 := "sub2-" + stringid .GenerateNonCryptoID ()
317
+ ncFail := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "10.11.13.0/24" , netName2 })
313
318
ncFail .WaitWithDefaultTimeout ()
319
+ defer podmanTest .removeCNINetwork (netName2 )
314
320
Expect (ncFail ).To (ExitWithError ())
315
321
})
316
322
317
323
It ("podman network create two IPv6 networks with same subnet should fail" , func () {
318
324
SkipIfRootless ("FIXME It needs the ip6tables modules loaded" )
319
- nc := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "fd00:4:4:4:4::/64" , "--ipv6" , "subnet1v6" })
325
+ netName1 := "subipv61-" + stringid .GenerateNonCryptoID ()
326
+ nc := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "fd00:4:4:4:4::/64" , "--ipv6" , netName1 })
320
327
nc .WaitWithDefaultTimeout ()
328
+ defer podmanTest .removeCNINetwork (netName1 )
321
329
Expect (nc .ExitCode ()).To (BeZero ())
322
- defer podmanTest .removeCNINetwork ("subnet1v6" )
323
330
324
- ncFail := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "fd00:4:4:4:4::/64" , "--ipv6" , "subnet2v6" })
331
+ netName2 := "subipv62-" + stringid .GenerateNonCryptoID ()
332
+ ncFail := podmanTest .Podman ([]string {"network" , "create" , "--subnet" , "fd00:4:4:4:4::/64" , "--ipv6" , netName2 })
325
333
ncFail .WaitWithDefaultTimeout ()
334
+ defer podmanTest .removeCNINetwork (netName2 )
326
335
Expect (ncFail ).To (ExitWithError ())
327
336
})
328
337
@@ -333,11 +342,11 @@ var _ = Describe("Podman network create", func() {
333
342
})
334
343
335
344
It ("podman network create with mtu option" , func () {
336
- net := "mtu-test"
345
+ net := "mtu-test" + stringid . GenerateNonCryptoID ()
337
346
nc := podmanTest .Podman ([]string {"network" , "create" , "--opt" , "mtu=9000" , net })
338
347
nc .WaitWithDefaultTimeout ()
339
- Expect (nc .ExitCode ()).To (BeZero ())
340
348
defer podmanTest .removeCNINetwork (net )
349
+ Expect (nc .ExitCode ()).To (BeZero ())
341
350
342
351
nc = podmanTest .Podman ([]string {"network" , "inspect" , net })
343
352
nc .WaitWithDefaultTimeout ()
@@ -346,11 +355,11 @@ var _ = Describe("Podman network create", func() {
346
355
})
347
356
348
357
It ("podman network create with vlan option" , func () {
349
- net := "vlan-test"
358
+ net := "vlan-test" + stringid . GenerateNonCryptoID ()
350
359
nc := podmanTest .Podman ([]string {"network" , "create" , "--opt" , "vlan=9" , net })
351
360
nc .WaitWithDefaultTimeout ()
352
- Expect (nc .ExitCode ()).To (BeZero ())
353
361
defer podmanTest .removeCNINetwork (net )
362
+ Expect (nc .ExitCode ()).To (BeZero ())
354
363
355
364
nc = podmanTest .Podman ([]string {"network" , "inspect" , net })
356
365
nc .WaitWithDefaultTimeout ()
@@ -359,10 +368,28 @@ var _ = Describe("Podman network create", func() {
359
368
})
360
369
361
370
It ("podman network create with invalid option" , func () {
362
- net := "invalid-test"
371
+ net := "invalid-test" + stringid . GenerateNonCryptoID ()
363
372
nc := podmanTest .Podman ([]string {"network" , "create" , "--opt" , "foo=bar" , net })
364
373
nc .WaitWithDefaultTimeout ()
374
+ defer podmanTest .removeCNINetwork (net )
365
375
Expect (nc ).To (ExitWithError ())
366
376
})
367
377
378
+ It ("podman network create with internal should not have dnsname" , func () {
379
+ net := "internal-test" + stringid .GenerateNonCryptoID ()
380
+ nc := podmanTest .Podman ([]string {"network" , "create" , "--internal" , net })
381
+ nc .WaitWithDefaultTimeout ()
382
+ defer podmanTest .removeCNINetwork (net )
383
+ Expect (nc .ExitCode ()).To (BeZero ())
384
+ // Not performing this check on remote tests because it is a logrus error which does
385
+ // not come back via stderr on the remote client.
386
+ if ! IsRemote () {
387
+ Expect (nc .ErrorToString ()).To (ContainSubstring ("dnsname and --internal networks are incompatible" ))
388
+ }
389
+ nc = podmanTest .Podman ([]string {"network" , "inspect" , net })
390
+ nc .WaitWithDefaultTimeout ()
391
+ Expect (nc .ExitCode ()).To (BeZero ())
392
+ Expect (nc .OutputToString ()).ToNot (ContainSubstring ("dnsname" ))
393
+ })
394
+
368
395
})
0 commit comments