func (app *app) buildApplierAndCompiler( dirProvider boshdirs.Provider, blobstore boshblob.Blobstore, jobSupervisor boshjobsuper.JobSupervisor, ) (boshapplier.Applier, boshcomp.Compiler) { jobsBc := boshbc.NewFileBundleCollection( dirProvider.DataDir(), dirProvider.BaseDir(), "jobs", app.platform.GetFs(), app.logger, ) packageApplierProvider := boshap.NewCompiledPackageApplierProvider( dirProvider.DataDir(), dirProvider.BaseDir(), dirProvider.JobsDir(), "packages", blobstore, app.platform.GetCompressor(), app.platform.GetFs(), app.logger, ) jobApplier := boshaj.NewRenderedJobApplier( jobsBc, jobSupervisor, packageApplierProvider, blobstore, app.platform.GetCompressor(), app.platform.GetFs(), app.logger, ) applier := boshapplier.NewConcreteApplier( jobApplier, packageApplierProvider.Root(), app.platform, jobSupervisor, dirProvider, ) platformRunner := app.platform.GetRunner() fileSystem := app.platform.GetFs() cmdRunner := boshrunner.NewFileLoggingCmdRunner( fileSystem, platformRunner, dirProvider.LogsDir(), 10*1024, // 10 Kb ) compiler := boshcomp.NewConcreteCompiler( app.platform.GetCompressor(), blobstore, fileSystem, cmdRunner, dirProvider, packageApplierProvider.Root(), packageApplierProvider.RootBundleCollection(), ) return applier, compiler }
// JobSpecific provides package applier that operates on job-specific packages. // (e.g manages /var/vcap/jobs/job-name/packages/pkg-a -> /var/vcap/data/packages/pkg-a) func (p concretePackageApplierProvider) JobSpecific(jobName string) PackageApplier { enablePath := filepath.Join(p.jobSpecificEnablePath, jobName) packagesBc := boshbc.NewFileBundleCollection(p.installPath, enablePath, p.name, p.fs, p.logger) return NewConcretePackageApplier(packagesBc, false, p.blobstore, p.compressor, p.fs, p.logger) }
func (p concretePackageApplierProvider) RootBundleCollection() boshbc.BundleCollection { return boshbc.NewFileBundleCollection(p.installPath, p.rootEnablePath, p.name, p.fs, p.logger) }
"fake-job-specific-enable-path", "fake-name", blobstore, compressor, fs, logger, ) }) Describe("Root", func() { It("returns package applier that is configured to update system wide packages", func() { expected := NewConcretePackageApplier( boshbc.NewFileBundleCollection( "fake-install-path", "fake-root-enable-path", "fake-name", fs, logger, ), true, blobstore, compressor, fs, logger, ) Expect(provider.Root()).To(Equal(expected)) }) }) Describe("JobSpecific", func() { It("returns package applier that is configured to only update job specific packages", func() {