From 6810bd8b5099dde967599ac7ec1fc63fda64a21c Mon Sep 17 00:00:00 2001 From: wanyaoqi Date: Wed, 16 Jan 2019 16:01:16 +0800 Subject: [PATCH] fix code --- pkg/cloudcommon/service/services.go | 1 + pkg/hostman/guestman/qemu-kvmhelper.go | 1 - pkg/hostman/hostinfo/hostinfo.go | 13 +++++++------ pkg/hostman/hostinfo/hostinfohelper.go | 5 +++-- pkg/hostman/options/options.go | 3 --- pkg/hostman/service/host_services.go | 6 ++++-- pkg/util/cgrouputils/cgrouputils.go | 4 +++- pkg/util/timeutils2/timeutils.go | 8 ++++++++ 8 files changed, 26 insertions(+), 15 deletions(-) diff --git a/pkg/cloudcommon/service/services.go b/pkg/cloudcommon/service/services.go index 4ffc1f9870..4fedef2413 100644 --- a/pkg/cloudcommon/service/services.go +++ b/pkg/cloudcommon/service/services.go @@ -25,6 +25,7 @@ func (s *SServiceBase) TrapSignals(quitHandler signalutils.Trap) { utils.DumpAllGoroutineStack(log.Logger().Out) } signalutils.RegisterSignal(dumpStack, syscall.SIGUSR1) + signalutils.StartTrap() } func (s *SServiceBase) StartService() { diff --git a/pkg/hostman/guestman/qemu-kvmhelper.go b/pkg/hostman/guestman/qemu-kvmhelper.go index b3618c890c..1f4fcab4f2 100644 --- a/pkg/hostman/guestman/qemu-kvmhelper.go +++ b/pkg/hostman/guestman/qemu-kvmhelper.go @@ -193,7 +193,6 @@ func (s *SKVMGuestInstance) getNetdevDesc(nic jsonutils.JSONObject) (string, err ifname, _ := nic.GetString("ifname") driver, _ := nic.GetString("driver") - // TODO if err := s.generateNicScripts(nic); err != nil { return "", err } diff --git a/pkg/hostman/hostinfo/hostinfo.go b/pkg/hostman/hostinfo/hostinfo.go index 8c2a4aaa79..10a94bddc4 100644 --- a/pkg/hostman/hostinfo/hostinfo.go +++ b/pkg/hostman/hostinfo/hostinfo.go @@ -112,9 +112,11 @@ func (h *SHostInfo) Init() error { if err := h.prepareEnv(); err != nil { return err } + log.Infof("Start parseConfig") if err := h.parseConfig(); err != nil { return err } + log.Infof("Start detectHostInfo") if err := h.detectHostInfo(); err != nil { return err } @@ -144,9 +146,9 @@ func (h *SHostInfo) parseConfig() error { h.Nics[i].SetupDhcpRelay() } - if err := storageman.Init(h); err != nil { - return err - } + // if err := storageman.Init(h); err != nil { + // return err + // } if man, err := isolated_device.NewManager(h); err != nil { return fmt.Errorf("NewIsolatedManager: %v", err) @@ -404,10 +406,9 @@ func (h *SHostInfo) TuneSystem() { func (h *SHostInfo) resetIptables() error { for _, tbl := range []string{"filter", "nat", "mangle"} { - _, err := exec.Command(fmt.Sprintf("iptables -t %s -F", tbl)).Output() + err := exec.Command("iptables", "-t", tbl, "-F").Run() if err != nil { - e := err.(*exec.ExitError) - return fmt.Errorf("Fail to clean NAT iptable: %s", e.Stderr) + return fmt.Errorf("Fail to clean NAT iptable: %s", err) } } return nil diff --git a/pkg/hostman/hostinfo/hostinfohelper.go b/pkg/hostman/hostinfo/hostinfohelper.go index e3b9e4e395..5506fe9e3f 100644 --- a/pkg/hostman/hostinfo/hostinfohelper.go +++ b/pkg/hostman/hostinfo/hostinfohelper.go @@ -46,12 +46,13 @@ func DetectCpuInfo() (*SCPUInfo, error) { return nil, err } strCpuFreq := spec["cpu_freq"] - freq, err := strconv.ParseInt(strCpuFreq, 10, 0) + freq, err := strconv.ParseFloat(strCpuFreq, 64) if err != nil { log.Errorln(err) return nil, err } - cpuinfo.cpuFreq = freq + cpuinfo.cpuFreq = int64(freq) + log.Infof("cpuinfo freq %d", cpuinfo.cpuFreq) // cpu.Percent(interval, false) ret, err := fileutils2.FileGetContents("/proc/cpuinfo") diff --git a/pkg/hostman/options/options.go b/pkg/hostman/options/options.go index e6662e5559..47ce2ca907 100644 --- a/pkg/hostman/options/options.go +++ b/pkg/hostman/options/options.go @@ -5,9 +5,6 @@ import "yunion.io/x/onecloud/pkg/cloudcommon" type SHostOptions struct { cloudcommon.CommonOptions - //host agent default disable rbac - EnableRbac bool `help:"Switch on Role-based Access Control" default:"false"` - HostType string `help:"Host server type, either hypervisor or kubelet" default:"hypervisor"` ListenInterface string `help:"Master address of host server"` BridgeDriver string `help:"Bridge driver, bridge or openvswitch" default: "openvswitch"` diff --git a/pkg/hostman/service/host_services.go b/pkg/hostman/service/host_services.go index b5f8b9f28f..cc19f99e0b 100644 --- a/pkg/hostman/service/host_services.go +++ b/pkg/hostman/service/host_services.go @@ -25,6 +25,9 @@ type SHostService struct { func (host *SHostService) StartService() { cloudcommon.ParseOptions(&options.HostOptions, os.Args, "host.conf", "host") + app := cloudcommon.InitApp(&options.HostOptions.CommonOptions, false) + host.TrapSignals(func() { host.quitSignalHandler(app) }) + // isolatedman.Init() hostInstance := hostinfo.Instance() @@ -48,8 +51,6 @@ func (host *SHostService) StartService() { close(c) }) - app := cloudcommon.InitApp(&options.HostOptions.CommonOptions, false) - host.TrapSignals(func() { host.quitSignalHandler(app) }) host.initHandlers(app) <-c // wait host and guest init @@ -58,6 +59,7 @@ func (host *SHostService) StartService() { } func (host *SHostService) quitSignalHandler(app *appsrv.Application) { + log.Infof("Received quit signal") err := app.ShowDown(context.Background()) if err != nil { log.Errorln(err.Error()) diff --git a/pkg/util/cgrouputils/cgrouputils.go b/pkg/util/cgrouputils/cgrouputils.go index a437e7fe7c..051e3d00f0 100644 --- a/pkg/util/cgrouputils/cgrouputils.go +++ b/pkg/util/cgrouputils/cgrouputils.go @@ -7,6 +7,7 @@ import ( "os" "os/exec" "path" + "path/filepath" "regexp" "strings" @@ -75,7 +76,7 @@ func ModuleIsMounted(module string) bool { return false } else if fi.Mode()&os.ModeSymlink == os.ModeSymlink { // is link - fullPath, err = os.Readlink(fullPath) + fullPath, err = filepath.EvalSymlinks(fullPath) if err != nil { log.Errorln(err) } @@ -330,6 +331,7 @@ func (c *CGroupTask) init() bool { return false } } + log.Errorln(module) if err := exec.Command("mount", "-t", "cgroup", "-o", module, module, moduleDir).Run(); err != nil { log.Errorln(err) diff --git a/pkg/util/timeutils2/timeutils.go b/pkg/util/timeutils2/timeutils.go index fb2e1b7d8c..dd228efb0d 100644 --- a/pkg/util/timeutils2/timeutils.go +++ b/pkg/util/timeutils2/timeutils.go @@ -4,10 +4,18 @@ import ( "fmt" "os/exec" "time" + + "yunion.io/x/log" ) func AddTimeout(second time.Duration, callback func()) { go func() { + defer func() { + if r := recover(); r != nil { + log.Errorln(r) + } + }() + <-time.NewTimer(second).C callback() }()