MCPcopy Create free account
hub / github.com/containerd/nerdctl / CreateNetwork

Method CreateNetwork

pkg/netutil/netutil.go:329–361  ·  view source on GitHub ↗
(opts types.NetworkCreateOptions)

Source from the content-addressed store, hash-verified

327}
328
329func (e *CNIEnv) CreateNetwork(opts types.NetworkCreateOptions) (*NetworkConfig, error) { //nolint:revive
330 var netConf *NetworkConfig
331
332 netMap, err := e.NetworkMap()
333 if err != nil {
334 return nil, err
335 }
336
337 // See note in fsWrite. Just because it does not exist now does not guarantee it will still not exist later.
338 // This is more a perf optimization at this point than a true check.
339 if _, ok := netMap[opts.Name]; ok {
340 return nil, errdefs.ErrAlreadyExists
341 }
342 ipam, err := e.generateIPAM(opts.IPAMDriver, opts.Subnets, opts.Gateway, opts.IPRange, opts.IPAMOptions, opts.IPv6, opts.Internal)
343 if err != nil {
344 return nil, err
345 }
346 plugins, err := e.generateCNIPlugins(opts.Driver, opts.Name, ipam, opts.Options, opts.IPv6, opts.Internal)
347 if err != nil {
348 return nil, err
349 }
350 netConf, err = e.generateNetworkConfig(opts.Name, opts.Labels, plugins)
351 if err != nil {
352 return nil, err
353 }
354 err = fsWrite(e, netConf)
355
356 // See note above. If it exists, we got raced out by another process. Consider this to NOT be a hard error.
357 if err != nil && !errdefs.IsAlreadyExists(err) {
358 return nil, err
359 }
360 return netConf, nil
361}
362
363func (e *CNIEnv) RemoveNetwork(net *NetworkConfig) error {
364 return fsRemove(e, net)

Callers 2

CreateFunction · 0.95

Calls 5

NetworkMapMethod · 0.95
generateIPAMMethod · 0.95
generateCNIPluginsMethod · 0.95
generateNetworkConfigMethod · 0.95
fsWriteFunction · 0.85

Tested by

no test coverage detected