1package vm 2 3import ( 4 "code.cloudfoundry.org/clock" 5 biagentclient "github.com/cloudfoundry/bosh-agent/agentclient" 6 bicloud "github.com/cloudfoundry/bosh-cli/cloud" 7 biconfig "github.com/cloudfoundry/bosh-cli/config" 8 boshlog "github.com/cloudfoundry/bosh-utils/logger" 9 boshsys "github.com/cloudfoundry/bosh-utils/system" 10 boshuuid "github.com/cloudfoundry/bosh-utils/uuid" 11) 12 13type ManagerFactory interface { 14 NewManager(cloud bicloud.Cloud, agentClient biagentclient.AgentClient) Manager 15} 16 17type managerFactory struct { 18 vmRepo biconfig.VMRepo 19 stemcellRepo biconfig.StemcellRepo 20 diskDeployer DiskDeployer 21 uuidGenerator boshuuid.Generator 22 fs boshsys.FileSystem 23 logger boshlog.Logger 24} 25 26func NewManagerFactory( 27 vmRepo biconfig.VMRepo, 28 stemcellRepo biconfig.StemcellRepo, 29 diskDeployer DiskDeployer, 30 uuidGenerator boshuuid.Generator, 31 fs boshsys.FileSystem, 32 logger boshlog.Logger, 33) ManagerFactory { 34 return &managerFactory{ 35 vmRepo: vmRepo, 36 stemcellRepo: stemcellRepo, 37 diskDeployer: diskDeployer, 38 uuidGenerator: uuidGenerator, 39 fs: fs, 40 logger: logger, 41 } 42} 43 44func (f *managerFactory) NewManager(cloud bicloud.Cloud, agentClient biagentclient.AgentClient) Manager { 45 return NewManager( 46 f.vmRepo, 47 f.stemcellRepo, 48 f.diskDeployer, 49 agentClient, 50 cloud, 51 f.uuidGenerator, 52 f.fs, 53 f.logger, 54 clock.NewClock(), 55 ) 56} 57