github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/worker/storageprovisioner/config.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package storageprovisioner
     5  
     6  import (
     7  	"github.com/juju/errors"
     8  	"github.com/juju/names"
     9  	"github.com/juju/utils/clock"
    10  )
    11  
    12  // Config holds configuration and dependencies for a storageprovisioner worker.
    13  type Config struct {
    14  	Scope       names.Tag
    15  	StorageDir  string
    16  	Volumes     VolumeAccessor
    17  	Filesystems FilesystemAccessor
    18  	Life        LifecycleManager
    19  	Environ     ModelAccessor
    20  	Machines    MachineAccessor
    21  	Status      StatusSetter
    22  	Clock       clock.Clock
    23  }
    24  
    25  // Validate returns an error if the config cannot be relied upon to start a worker.
    26  func (config Config) Validate() error {
    27  	switch config.Scope.(type) {
    28  	case nil:
    29  		return errors.NotValidf("nil Scope")
    30  	case names.ModelTag:
    31  		if config.StorageDir != "" {
    32  			return errors.NotValidf("environ Scope with non-empty StorageDir")
    33  		}
    34  	case names.MachineTag:
    35  		if config.StorageDir == "" {
    36  			return errors.NotValidf("machine Scope with empty StorageDir")
    37  		}
    38  	default:
    39  		return errors.NotValidf("%T Scope", config.Scope)
    40  	}
    41  	if config.Volumes == nil {
    42  		return errors.NotValidf("nil Volumes")
    43  	}
    44  	if config.Filesystems == nil {
    45  		return errors.NotValidf("nil Filesystems")
    46  	}
    47  	if config.Life == nil {
    48  		return errors.NotValidf("nil Life")
    49  	}
    50  	if config.Environ == nil {
    51  		return errors.NotValidf("nil Environ")
    52  	}
    53  	if config.Machines == nil {
    54  		return errors.NotValidf("nil Machines")
    55  	}
    56  	if config.Status == nil {
    57  		return errors.NotValidf("nil Status")
    58  	}
    59  	if config.Clock == nil {
    60  		return errors.NotValidf("nil Clock")
    61  	}
    62  	return nil
    63  }