func newSignalableFileLogger(logPath string, level boshlog.LogLevel) boshlog.Logger { // Log file logger errors to the STDERR logger logger := boshlog.NewLogger(boshlog.LevelError) fileSystem := boshsys.NewOsFileSystem(logger) // log file will be closed by process exit // log file readable by all logfileLogger, _, err := boshlogfile.New(level, logPath, boshlogfile.DefaultLogFileMode, fileSystem) if err != nil { logger := boshlog.NewLogger(boshlog.LevelError) ui := biui.NewConsoleUI(logger) fail(err, ui, logger, nil) } return newSignalableLogger(logfileLogger) }
generatedJSON, err := jobEvaluationContext.MarshalJSON() Expect(err).ToNot(HaveOccurred()) err = json.Unmarshal(generatedJSON, &generatedContext) Expect(err).ToNot(HaveOccurred()) }) It("it has a network context section with empty IP", func() { Expect(generatedContext.NetworkContexts["default"].IP).To(Equal("")) }) var erbRenderer erbrenderer.ERBRenderer getValueFor := func(key string) string { logger := boshlog.NewLogger(boshlog.LevelNone) fs := boshsys.NewOsFileSystem(logger) commandRunner := boshsys.NewExecCmdRunner(logger) erbRenderer = erbrenderer.NewERBRenderer(fs, commandRunner, logger) srcFile, err := ioutil.TempFile("", "source.txt.erb") Expect(err).ToNot(HaveOccurred()) defer os.Remove(srcFile.Name()) erbContents := fmt.Sprintf("<%%= p('%s') %%>", key) _, err = srcFile.WriteString(erbContents) Expect(err).ToNot(HaveOccurred()) destFile, err := fs.TempFile("dest.txt") Expect(err).ToNot(HaveOccurred()) err = destFile.Close() Expect(err).ToNot(HaveOccurred())
"github.com/cloudfoundry/bosh-init/installation" "github.com/cloudfoundry/bosh-init/internal/github.com/cloudfoundry/bosh-utils/logger" "github.com/cloudfoundry/bosh-init/internal/github.com/cloudfoundry/bosh-utils/system" "github.com/cloudfoundry/bosh-init/internal/github.com/cloudfoundry/bosh-utils/system/fakes" "github.com/cloudfoundry/bosh-init/internal/github.com/onsi/gomega/gbytes" ) var _ = Describe("Uninstaller", func() { Describe("Uninstall", func() { It("deletes the installation target directory", func() { logBuffer := gbytes.NewBuffer() goLogger := log.New(logBuffer, "", log.LstdFlags) boshlogger := logger.New(logger.LevelInfo, goLogger, goLogger) fs := system.NewOsFileSystem(boshlogger) installationPath, err := fs.TempDir("some-installation-dir") Expect(err).ToNot(HaveOccurred()) err = fs.WriteFileString(filepath.Join(installationPath, "some-installation-artifact"), "something-blah") Expect(err).ToNot(HaveOccurred()) installationTarget := installation.NewTarget(installationPath) uninstaller := installation.NewUninstaller(fs, boshlogger) Expect(fs.FileExists(installationPath)).To(BeTrue()) err = uninstaller.Uninstall(installationTarget) Expect(err).ToNot(HaveOccurred())
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), }, } }
import ( "github.com/cloudfoundry/bosh-init/common/util" boshlog "github.com/cloudfoundry/bosh-init/internal/github.com/cloudfoundry/bosh-utils/logger" boshsys "github.com/cloudfoundry/bosh-init/internal/github.com/cloudfoundry/bosh-utils/system" . "github.com/cloudfoundry/bosh-init/internal/github.com/onsi/ginkgo" . "github.com/cloudfoundry/bosh-init/internal/github.com/onsi/gomega" ) var _ = Describe("AbsolutifyPath", func() { var realfs boshsys.FileSystem var fakeManifestPath, fakeFilePath string BeforeEach(func() { logger := boshlog.NewLogger(boshlog.LevelNone) realfs = boshsys.NewOsFileSystem(logger) fakeManifestPath = "/fake/manifest/path/manifest.yml" }) Context("File path is not a url", func() { Context("File path is relative", func() { Context("File path begins with a series of ../", func() { It("joins file path to the manifest directory", func() { fakeFilePath = "../fake/relative/path/file.tgz" Expect(util.AbsolutifyPath(fakeManifestPath, fakeFilePath, realfs)).To( Equal("/fake/manifest/fake/relative/path/file.tgz")) }) }) Context("File is located in same directory as manifest or subdirectory", func() { It("makes the file path relative to the manifest directory", func() { fakeFilePath = "fake/relative/path/file.tgz"