github.com/demonoid81/moby@v0.0.0-20200517203328-62dd8e17c460/testutil/daemon/ops.go (about)

     1  package daemon
     2  
     3  import (
     4  	"os/user"
     5  
     6  	"github.com/demonoid81/moby/testutil/environment"
     7  )
     8  
     9  // Option is used to configure a daemon.
    10  type Option func(*Daemon)
    11  
    12  // WithContainerdSocket sets the --containerd option on the daemon.
    13  // Use an empty string to remove the option.
    14  //
    15  // If unset the --containerd option will be used with a default value.
    16  func WithContainerdSocket(socket string) Option {
    17  	return func(d *Daemon) {
    18  		d.containerdSocket = socket
    19  	}
    20  }
    21  
    22  // WithDefaultCgroupNamespaceMode sets the default cgroup namespace mode for the daemon
    23  func WithDefaultCgroupNamespaceMode(mode string) Option {
    24  	return func(d *Daemon) {
    25  		d.defaultCgroupNamespaceMode = mode
    26  	}
    27  }
    28  
    29  // WithTestLogger causes the daemon to log certain actions to the provided test.
    30  func WithTestLogger(t LogT) Option {
    31  	return func(d *Daemon) {
    32  		d.log = t
    33  	}
    34  }
    35  
    36  // WithExperimental sets the daemon in experimental mode
    37  func WithExperimental() Option {
    38  	return func(d *Daemon) {
    39  		d.experimental = true
    40  	}
    41  }
    42  
    43  // WithInit sets the daemon init
    44  func WithInit() Option {
    45  	return func(d *Daemon) {
    46  		d.init = true
    47  	}
    48  }
    49  
    50  // WithDockerdBinary sets the dockerd binary to the specified one
    51  func WithDockerdBinary(dockerdBinary string) Option {
    52  	return func(d *Daemon) {
    53  		d.dockerdBinary = dockerdBinary
    54  	}
    55  }
    56  
    57  // WithSwarmPort sets the swarm port to use for swarm mode
    58  func WithSwarmPort(port int) Option {
    59  	return func(d *Daemon) {
    60  		d.SwarmPort = port
    61  	}
    62  }
    63  
    64  // WithSwarmListenAddr sets the swarm listen addr to use for swarm mode
    65  func WithSwarmListenAddr(listenAddr string) Option {
    66  	return func(d *Daemon) {
    67  		d.swarmListenAddr = listenAddr
    68  	}
    69  }
    70  
    71  // WithSwarmDefaultAddrPool sets the swarm default address pool to use for swarm mode
    72  func WithSwarmDefaultAddrPool(defaultAddrPool []string) Option {
    73  	return func(d *Daemon) {
    74  		d.DefaultAddrPool = defaultAddrPool
    75  	}
    76  }
    77  
    78  // WithSwarmDefaultAddrPoolSubnetSize sets the subnet length mask of swarm default address pool to use for swarm mode
    79  func WithSwarmDefaultAddrPoolSubnetSize(subnetSize uint32) Option {
    80  	return func(d *Daemon) {
    81  		d.SubnetSize = subnetSize
    82  	}
    83  }
    84  
    85  // WithSwarmDataPathPort sets the  swarm datapath port to use for swarm mode
    86  func WithSwarmDataPathPort(datapathPort uint32) Option {
    87  	return func(d *Daemon) {
    88  		d.DataPathPort = datapathPort
    89  	}
    90  }
    91  
    92  // WithEnvironment sets options from testutil/environment.Execution struct
    93  func WithEnvironment(e environment.Execution) Option {
    94  	return func(d *Daemon) {
    95  		if e.DaemonInfo.ExperimentalBuild {
    96  			d.experimental = true
    97  		}
    98  	}
    99  }
   100  
   101  // WithStorageDriver sets store driver option
   102  func WithStorageDriver(driver string) Option {
   103  	return func(d *Daemon) {
   104  		d.storageDriver = driver
   105  	}
   106  }
   107  
   108  // WithRootlessUser sets the daemon to be rootless
   109  func WithRootlessUser(username string) Option {
   110  	return func(d *Daemon) {
   111  		u, err := user.Lookup(username)
   112  		if err != nil {
   113  			panic(err)
   114  		}
   115  		d.rootlessUser = u
   116  	}
   117  }