(opts types.NetworkCreateOptions)
| 327 | } |
| 328 | |
| 329 | func (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 | |
| 363 | func (e *CNIEnv) RemoveNetwork(net *NetworkConfig) error { |
| 364 | return fsRemove(e, net) |
no test coverage detected