mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			141 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// +build !windows
 | 
						|
 | 
						|
package libcontainerd
 | 
						|
 | 
						|
import "fmt"
 | 
						|
 | 
						|
// WithRemoteAddr sets the external containerd socket to connect to.
 | 
						|
func WithRemoteAddr(addr string) RemoteOption {
 | 
						|
	return rpcAddr(addr)
 | 
						|
}
 | 
						|
 | 
						|
type rpcAddr string
 | 
						|
 | 
						|
func (a rpcAddr) Apply(r Remote) error {
 | 
						|
	if remote, ok := r.(*remote); ok {
 | 
						|
		remote.GRPC.Address = string(a)
 | 
						|
		return nil
 | 
						|
	}
 | 
						|
	return fmt.Errorf("WithRemoteAddr option not supported for this remote")
 | 
						|
}
 | 
						|
 | 
						|
// WithRemoteAddrUser sets the uid and gid to create the RPC address with
 | 
						|
func WithRemoteAddrUser(uid, gid int) RemoteOption {
 | 
						|
	return rpcUser{uid, gid}
 | 
						|
}
 | 
						|
 | 
						|
type rpcUser struct {
 | 
						|
	uid int
 | 
						|
	gid int
 | 
						|
}
 | 
						|
 | 
						|
func (u rpcUser) Apply(r Remote) error {
 | 
						|
	if remote, ok := r.(*remote); ok {
 | 
						|
		remote.GRPC.Uid = u.uid
 | 
						|
		remote.GRPC.Gid = u.gid
 | 
						|
		return nil
 | 
						|
	}
 | 
						|
	return fmt.Errorf("WithRemoteAddr option not supported for this remote")
 | 
						|
}
 | 
						|
 | 
						|
// WithStartDaemon defines if libcontainerd should also run containerd daemon.
 | 
						|
func WithStartDaemon(start bool) RemoteOption {
 | 
						|
	return startDaemon(start)
 | 
						|
}
 | 
						|
 | 
						|
type startDaemon bool
 | 
						|
 | 
						|
func (s startDaemon) Apply(r Remote) error {
 | 
						|
	if remote, ok := r.(*remote); ok {
 | 
						|
		remote.startDaemon = bool(s)
 | 
						|
		return nil
 | 
						|
	}
 | 
						|
	return fmt.Errorf("WithStartDaemon option not supported for this remote")
 | 
						|
}
 | 
						|
 | 
						|
// WithLogLevel defines which log level to starts containerd with.
 | 
						|
// This only makes sense if WithStartDaemon() was set to true.
 | 
						|
func WithLogLevel(lvl string) RemoteOption {
 | 
						|
	return logLevel(lvl)
 | 
						|
}
 | 
						|
 | 
						|
type logLevel string
 | 
						|
 | 
						|
func (l logLevel) Apply(r Remote) error {
 | 
						|
	if remote, ok := r.(*remote); ok {
 | 
						|
		remote.Debug.Level = string(l)
 | 
						|
		return nil
 | 
						|
	}
 | 
						|
	return fmt.Errorf("WithDebugLog option not supported for this remote")
 | 
						|
}
 | 
						|
 | 
						|
// WithDebugAddress defines at which location the debug GRPC connection
 | 
						|
// should be made
 | 
						|
func WithDebugAddress(addr string) RemoteOption {
 | 
						|
	return debugAddress(addr)
 | 
						|
}
 | 
						|
 | 
						|
type debugAddress string
 | 
						|
 | 
						|
func (d debugAddress) Apply(r Remote) error {
 | 
						|
	if remote, ok := r.(*remote); ok {
 | 
						|
		remote.Debug.Address = string(d)
 | 
						|
		return nil
 | 
						|
	}
 | 
						|
	return fmt.Errorf("WithDebugAddress option not supported for this remote")
 | 
						|
}
 | 
						|
 | 
						|
// WithMetricsAddress defines at which location the debug GRPC connection
 | 
						|
// should be made
 | 
						|
func WithMetricsAddress(addr string) RemoteOption {
 | 
						|
	return metricsAddress(addr)
 | 
						|
}
 | 
						|
 | 
						|
type metricsAddress string
 | 
						|
 | 
						|
func (m metricsAddress) Apply(r Remote) error {
 | 
						|
	if remote, ok := r.(*remote); ok {
 | 
						|
		remote.Metrics.Address = string(m)
 | 
						|
		return nil
 | 
						|
	}
 | 
						|
	return fmt.Errorf("WithMetricsAddress option not supported for this remote")
 | 
						|
}
 | 
						|
 | 
						|
// WithSnapshotter defines snapshotter driver should be used
 | 
						|
func WithSnapshotter(name string) RemoteOption {
 | 
						|
	return snapshotter(name)
 | 
						|
}
 | 
						|
 | 
						|
type snapshotter string
 | 
						|
 | 
						|
func (s snapshotter) Apply(r Remote) error {
 | 
						|
	if remote, ok := r.(*remote); ok {
 | 
						|
		remote.snapshotter = string(s)
 | 
						|
		return nil
 | 
						|
	}
 | 
						|
	return fmt.Errorf("WithSnapshotter option not supported for this remote")
 | 
						|
}
 | 
						|
 | 
						|
// WithPlugin allow configuring a containerd plugin
 | 
						|
// configuration values passed needs to be quoted if quotes are needed in
 | 
						|
// the toml format.
 | 
						|
func WithPlugin(name string, conf interface{}) RemoteOption {
 | 
						|
	return pluginConf{
 | 
						|
		name: name,
 | 
						|
		conf: conf,
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
type pluginConf struct {
 | 
						|
	// Name is the name of the plugin
 | 
						|
	name string
 | 
						|
	conf interface{}
 | 
						|
}
 | 
						|
 | 
						|
func (p pluginConf) Apply(r Remote) error {
 | 
						|
	if remote, ok := r.(*remote); ok {
 | 
						|
		remote.pluginConfs.Plugins[p.name] = p.conf
 | 
						|
		return nil
 | 
						|
	}
 | 
						|
	return fmt.Errorf("WithPlugin option not supported for this remote")
 | 
						|
}
 |