func main() { if reexec.Init() { return } cf_debug_server.AddFlags(flag.CommandLine) cf_lager.AddFlags(flag.CommandLine) flag.Parse() logger, _ := cf_lager.New("guardian") if *depotPath == "" { missing("-depot") } if *iodaemonBin == "" { missing("-iodaemonBin") } if *nstarBin == "" { missing("-nstarBin") } if *tarBin == "" { missing("-tarBin") } resolvedRootFSPath, err := filepath.EvalSymlinks(*rootFSPath) if err != nil { panic(err) } _, networkPoolCIDR, err := net.ParseCIDR(*networkPool) if err != nil { panic(err) } interfacePrefix := fmt.Sprintf("w%s", *tag) chainPrefix := fmt.Sprintf("w-%s-instance", *tag) iptablesMgr := wireIptables(logger, *tag, *allowHostAccess, interfacePrefix, chainPrefix) externalIPAddr, err := parseExternalIP(*externalIP) if err != nil { panic(err) } sysInfoProvider := sysinfo.NewProvider(*depotPath) propManager := properties.NewManager() backend := &gardener.Gardener{ SysInfoProvider: sysInfoProvider, UidGenerator: wireUidGenerator(), Starter: wireStarter(logger, iptablesMgr), Networker: wireNetworker(logger, *tag, networkPoolCIDR, externalIPAddr, iptablesMgr, interfacePrefix, chainPrefix, propManager, *networkModulePath), VolumeCreator: wireVolumeCreator(logger, *graphRoot), Containerizer: wireContainerizer(logger, *depotPath, *iodaemonBin, *nstarBin, *tarBin, resolvedRootFSPath), Logger: logger, PropertyManager: propManager, } gardenServer := server.New(*listenNetwork, *listenAddr, *graceTime, backend, logger.Session("api")) err = gardenServer.Start() if err != nil { logger.Fatal("failed-to-start-server", err) } signals := make(chan os.Signal, 1) go func() { <-signals gardenServer.Stop() os.Exit(0) }() signal.Notify(signals, syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP) logger.Info("started", lager.Data{ "network": *listenNetwork, "addr": *listenAddr, }) select {} }
package sysinfo_test import ( "github.com/cloudfoundry-incubator/guardian/sysinfo" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("SystemInfo", func() { var provider sysinfo.Provider Describe("TotalMemory", func() { BeforeEach(func() { provider = sysinfo.NewProvider("/") }) It("provides nonzero memory information", func() { totalMemory, err := provider.TotalMemory() Expect(err).ToNot(HaveOccurred()) Expect(totalMemory).To(BeNumerically(">", 0)) }) }) Describe("TotalDisk", func() { BeforeEach(func() { provider = sysinfo.NewProvider("/") }) It("provides nonzero disk information", func() {