github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/provider/lxd/export_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package lxd
     5  
     6  import (
     7  	"errors"
     8  
     9  	"github.com/juju/clock"
    10  
    11  	"github.com/juju/juju/container/lxd"
    12  	"github.com/juju/juju/environs"
    13  )
    14  
    15  var (
    16  	NewInstance           = newInstance
    17  	GetCertificates       = getCertificates
    18  	IsSupportedAPIVersion = isSupportedAPIVersion
    19  )
    20  
    21  func NewProviderWithMocks(
    22  	creds environs.ProviderCredentials,
    23  	credsRegister environs.ProviderCredentialsRegister,
    24  	serverFactory ServerFactory,
    25  	configReader LXCConfigReader,
    26  ) environs.EnvironProvider {
    27  	return &environProvider{
    28  		ProviderCredentials:         creds,
    29  		ProviderCredentialsRegister: credsRegister,
    30  		serverFactory:               serverFactory,
    31  		lxcConfigReader:             configReader,
    32  	}
    33  }
    34  
    35  func NewProviderCredentials(
    36  	certReadWriter CertificateReadWriter,
    37  	certGenerator CertificateGenerator,
    38  	lookup NetLookup,
    39  	serverFactory ServerFactory,
    40  	configReader LXCConfigReader,
    41  ) environs.ProviderCredentials {
    42  	return environProviderCredentials{
    43  		certReadWriter:  certReadWriter,
    44  		certGenerator:   certGenerator,
    45  		lookup:          lookup,
    46  		serverFactory:   serverFactory,
    47  		lxcConfigReader: configReader,
    48  	}
    49  }
    50  
    51  func NewServerFactoryWithMocks(localServerFunc func() (Server, error),
    52  	remoteServerFunc func(lxd.ServerSpec) (Server, error),
    53  	interfaceAddress InterfaceAddress,
    54  	clock clock.Clock,
    55  ) ServerFactory {
    56  	return &serverFactory{
    57  		newLocalServerFunc:  localServerFunc,
    58  		newRemoteServerFunc: remoteServerFunc,
    59  		interfaceAddress:    interfaceAddress,
    60  		clock:               clock,
    61  	}
    62  }
    63  
    64  func ExposeInstContainer(inst *environInstance) *lxd.Container {
    65  	return inst.container
    66  }
    67  
    68  func ExposeInstEnv(inst *environInstance) *environ {
    69  	return inst.env
    70  }
    71  
    72  func ExposeEnvConfig(env *environ) *environConfig {
    73  	return env.ecfg
    74  }
    75  
    76  func ExposeEnvServer(env *environ) Server {
    77  	return env.server
    78  }
    79  
    80  func GetImageSources(env environs.Environ) ([]lxd.ServerSpec, error) {
    81  	lxdEnv, ok := env.(*environ)
    82  	if !ok {
    83  		return nil, errors.New("not a LXD environ")
    84  	}
    85  	return lxdEnv.getImageSources()
    86  }