func (f *factory) loadCompressor() boshcmd.Compressor { if f.compressor != nil { return f.compressor } f.compressor = boshcmd.NewTarballCompressor(f.loadCMDRunner(), f.fs) return f.compressor }
func NewDummyPlatform( collector boshstats.Collector, fs boshsys.FileSystem, cmdRunner boshsys.CmdRunner, dirProvider boshdirs.Provider, devicePathResolver boshdpresolv.DevicePathResolver, logger boshlog.Logger, ) Platform { return &dummyPlatform{ fs: fs, cmdRunner: cmdRunner, collector: collector, compressor: boshcmd.NewTarballCompressor(cmdRunner, fs), copier: boshcmd.NewCpCopier(cmdRunner, fs, logger), dirProvider: dirProvider, devicePathResolver: devicePathResolver, vitalsService: boshvitals.NewService(collector, dirProvider), certManager: boshcert.NewDummyCertManager(fs, cmdRunner, logger), } }
func NewProvider(logger boshlog.Logger, dirProvider boshdirs.Provider, statsCollector boshstats.Collector, options Options) Provider { runner := boshsys.NewExecCmdRunner(logger) fs := boshsys.NewOsFileSystem(logger) linuxDiskManager := boshdisk.NewLinuxDiskManager(logger, runner, fs, options.Linux.BindMountPersistentDisk) udev := boshudev.NewConcreteUdevDevice(runner, logger) linuxCdrom := boshcdrom.NewLinuxCdrom("/dev/sr0", udev, runner) linuxCdutil := boshcdrom.NewCdUtil(dirProvider.SettingsDir(), fs, linuxCdrom, logger) compressor := boshcmd.NewTarballCompressor(runner, fs) copier := boshcmd.NewCpCopier(runner, fs, logger) // Kick of stats collection as soon as possible go statsCollector.StartCollecting(SigarStatsCollectionInterval, nil) vitalsService := boshvitals.NewService(statsCollector, dirProvider) ipResolver := boship.NewResolver(boship.NetworkInterfaceToAddrsFunc) arping := bosharp.NewArping(runner, fs, logger, ArpIterations, ArpIterationDelay, ArpInterfaceCheckDelay) interfaceConfigurationCreator := boshnet.NewInterfaceConfigurationCreator(logger) centosNetManager := boshnet.NewCentosNetManager(fs, runner, ipResolver, interfaceConfigurationCreator, arping, logger) ubuntuNetManager := boshnet.NewUbuntuNetManager(fs, runner, ipResolver, interfaceConfigurationCreator, arping, logger) centosCertManager := boshcert.NewCentOSCertManager(fs, runner, logger) ubuntuCertManager := boshcert.NewUbuntuCertManager(fs, runner, logger) routesSearcher := boshnet.NewCmdRoutesSearcher(runner) linuxDefaultNetworkResolver := boshnet.NewDefaultNetworkResolver(routesSearcher, ipResolver) monitRetryable := NewMonitRetryable(runner) monitRetryStrategy := boshretry.NewAttemptRetryStrategy(10, 1*time.Second, monitRetryable, logger) var devicePathResolver devicepathresolver.DevicePathResolver switch options.Linux.DevicePathResolutionType { case "virtio": udev := boshudev.NewConcreteUdevDevice(runner, logger) idDevicePathResolver := devicepathresolver.NewIDDevicePathResolver(500*time.Millisecond, udev, fs) mappedDevicePathResolver := devicepathresolver.NewMappedDevicePathResolver(500*time.Millisecond, fs) devicePathResolver = devicepathresolver.NewVirtioDevicePathResolver(idDevicePathResolver, mappedDevicePathResolver, logger) case "scsi": devicePathResolver = devicepathresolver.NewScsiDevicePathResolver(500*time.Millisecond, fs) default: devicePathResolver = devicepathresolver.NewIdentityDevicePathResolver() } centos := NewLinuxPlatform( fs, runner, statsCollector, compressor, copier, dirProvider, vitalsService, linuxCdutil, linuxDiskManager, centosNetManager, centosCertManager, monitRetryStrategy, devicePathResolver, 500*time.Millisecond, options.Linux, logger, linuxDefaultNetworkResolver, ) ubuntu := NewLinuxPlatform( fs, runner, statsCollector, compressor, copier, dirProvider, vitalsService, linuxCdutil, linuxDiskManager, ubuntuNetManager, ubuntuCertManager, monitRetryStrategy, devicePathResolver, 500*time.Millisecond, options.Linux, logger, linuxDefaultNetworkResolver, ) return provider{ platforms: map[string]Platform{ "ubuntu": ubuntu, "centos": centos, "dummy": NewDummyPlatform(statsCollector, fs, runner, dirProvider, devicePathResolver, logger), }, } }
}) Describe("Compress", func() { Context("with a real fs & compressor", func() { var ( fs boshsys.FileSystem cmdRunner boshsys.CmdRunner compressor boshcmd.Compressor ) BeforeEach(func() { fs = boshsys.NewOsFileSystem(logger) cmdRunner = boshsys.NewExecCmdRunner(logger) compressor = boshcmd.NewTarballCompressor(cmdRunner, fs) renderedJobListCompressor = NewRenderedJobListCompressor(fs, compressor, fakeSHA1Calculator, logger) }) It("copies rendered jobs into a new temp dir, compresses the temp dir, and wraps it in a RenderedJobListArchive", func() { // create rendered job with 2 rendered scripts renderedJobDir0, err := fs.TempDir("RenderedJobListCompressorTest") Expect(err).ToNot(HaveOccurred()) renderedJob0 := NewRenderedJob(bireljob.Job{Name: "fake-job-name-0"}, renderedJobDir0, fs, logger) defer func() { err := renderedJob0.Delete(); Expect(err).ToNot(HaveOccurred()) }() err = fs.WriteFileString(filepath.Join(renderedJobDir0, "script-0"), "fake-rendered-job-0-script-0-content") Expect(err).ToNot(HaveOccurred()) err = fs.WriteFileString(filepath.Join(renderedJobDir0, "script-1"), "fake-rendered-job-0-script-1-content") Expect(err).ToNot(HaveOccurred()) renderedJobList.Add(renderedJob0)