github.com/tonistiigi/docker@v0.10.1-0.20240229224939-974013b0dc6a/client/network_create.go (about)

     1  package client // import "github.com/docker/docker/client"
     2  
     3  import (
     4  	"context"
     5  	"encoding/json"
     6  
     7  	"github.com/docker/docker/api/types"
     8  	"github.com/docker/docker/api/types/versions"
     9  )
    10  
    11  // NetworkCreate creates a new network in the docker host.
    12  func (cli *Client) NetworkCreate(ctx context.Context, name string, options types.NetworkCreate) (types.NetworkCreateResponse, error) {
    13  	var response types.NetworkCreateResponse
    14  
    15  	// Make sure we negotiated (if the client is configured to do so),
    16  	// as code below contains API-version specific handling of options.
    17  	//
    18  	// Normally, version-negotiation (if enabled) would not happen until
    19  	// the API request is made.
    20  	if err := cli.checkVersion(ctx); err != nil {
    21  		return response, err
    22  	}
    23  
    24  	networkCreateRequest := types.NetworkCreateRequest{
    25  		NetworkCreate: options,
    26  		Name:          name,
    27  	}
    28  	if versions.LessThan(cli.version, "1.44") {
    29  		networkCreateRequest.CheckDuplicate = true //nolint:staticcheck // ignore SA1019: CheckDuplicate is deprecated since API v1.44.
    30  	}
    31  
    32  	serverResp, err := cli.post(ctx, "/networks/create", nil, networkCreateRequest, nil)
    33  	defer ensureReaderClosed(serverResp)
    34  	if err != nil {
    35  		return response, err
    36  	}
    37  
    38  	err = json.NewDecoder(serverResp.body).Decode(&response)
    39  	return response, err
    40  }