1package instance 2 3import ( 4 biblobstore "github.com/cloudfoundry/bosh-cli/blobstore" 5 biinstancestate "github.com/cloudfoundry/bosh-cli/deployment/instance/state" 6 bisshtunnel "github.com/cloudfoundry/bosh-cli/deployment/sshtunnel" 7 bivm "github.com/cloudfoundry/bosh-cli/deployment/vm" 8 boshlog "github.com/cloudfoundry/bosh-utils/logger" 9) 10 11type Factory interface { 12 NewInstance( 13 jobName string, 14 id int, 15 vm bivm.VM, 16 vmManager bivm.Manager, 17 sshTunnelFactory bisshtunnel.Factory, 18 blobstore biblobstore.Blobstore, 19 logger boshlog.Logger, 20 ) Instance 21} 22 23type factory struct { 24 stateBuilderFactory biinstancestate.BuilderFactory 25} 26 27func NewFactory( 28 stateBuilderFactory biinstancestate.BuilderFactory, 29) Factory { 30 return &factory{ 31 stateBuilderFactory: stateBuilderFactory, 32 } 33} 34 35func (f *factory) NewInstance( 36 jobName string, 37 id int, 38 vm bivm.VM, 39 vmManager bivm.Manager, 40 sshTunnelFactory bisshtunnel.Factory, 41 blobstore biblobstore.Blobstore, 42 logger boshlog.Logger, 43) Instance { 44 stateBuilder := f.stateBuilderFactory.NewBuilder(blobstore, vm.AgentClient()) 45 46 return NewInstance( 47 jobName, 48 id, 49 vm, 50 vmManager, 51 sshTunnelFactory, 52 stateBuilder, 53 logger, 54 ) 55} 56