From 67a9a1921db280d6e6caed560ca66f2968c25aa6 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Mon, 14 Jan 2019 09:44:05 +0000 Subject: [PATCH 1/4] =?UTF-8?q?lbagent:=20=E6=94=B9=E6=AD=A3isempty()?= =?UTF-8?q?=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/lbagent/models/reflect.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/lbagent/models/reflect.go b/pkg/lbagent/models/reflect.go index 34af04a0f9..0d129638ea 100644 --- a/pkg/lbagent/models/reflect.go +++ b/pkg/lbagent/models/reflect.go @@ -90,7 +90,7 @@ func GetModels(opts *GetModelsOptions) error { Details: options.Bool(true), Filter: []string{ minUpdatedAtFilter(minUpdatedAt), // order matters, filter.0 - "isempty(manager_id)", // len(manager_id) > 0 is for pubcloud objects + "manager_id.isnull()", // len(manager_id) > 0 is for pubcloud objects }, OrderBy: []string{"updated_at", "id"}, Order: "asc", From 082cff6acd0ee668297ce793d898b6d71ae51f91 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Mon, 14 Jan 2019 09:43:34 +0000 Subject: [PATCH 2/4] =?UTF-8?q?lbagent:=20=E6=94=B9=E6=AD=A3cloudcommon.Co?= =?UTF-8?q?mmonOptions=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/lbagent/main.go | 2 +- pkg/lbagent/api.go | 2 +- pkg/lbagent/options.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/lbagent/main.go b/cmd/lbagent/main.go index 9215a1ece1..1dce0f27f6 100644 --- a/cmd/lbagent/main.go +++ b/cmd/lbagent/main.go @@ -17,7 +17,7 @@ func main() { consts.SetServiceType("lbagent") opts := &lbagent.Options{} - commonOpts := &opts.CommonOpts + commonOpts := &opts.CommonOptions { cloudcommon.ParseOptions(opts, commonOpts, os.Args, "lbagent.conf") cloudcommon.InitAuth(commonOpts, func() { diff --git a/pkg/lbagent/api.go b/pkg/lbagent/api.go index 38866f24a2..d55468c429 100644 --- a/pkg/lbagent/api.go +++ b/pkg/lbagent/api.go @@ -63,7 +63,7 @@ func (h *ApiHelper) Run(ctx context.Context) { } func (h *ApiHelper) adminClientSession(ctx context.Context) *mcclient.ClientSession { - region := h.opts.CommonOpts.Region + region := h.opts.CommonOptions.Region apiVersion := "v2" s := auth.GetAdminSession(ctx, region, apiVersion) return s diff --git a/pkg/lbagent/options.go b/pkg/lbagent/options.go index 11dae1370c..8ac80d5f8e 100644 --- a/pkg/lbagent/options.go +++ b/pkg/lbagent/options.go @@ -31,7 +31,7 @@ type LbagentOptions struct { } type Options struct { - CommonOpts cloudcommon.CommonOptions + cloudcommon.CommonOptions LbagentOptions } From 10a388e6df0268c5a96a37230fab8d2e8e7e649b Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Tue, 15 Jan 2019 06:29:55 +0000 Subject: [PATCH 3/4] lbagent: use encoding/json for {,de}serialization --- pkg/lbagent/models/corpus.go | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/pkg/lbagent/models/corpus.go b/pkg/lbagent/models/corpus.go index b0c51f30e7..04f539ab03 100644 --- a/pkg/lbagent/models/corpus.go +++ b/pkg/lbagent/models/corpus.go @@ -1,6 +1,7 @@ package models import ( + "encoding/json" "fmt" "io/ioutil" "path/filepath" @@ -11,7 +12,12 @@ import ( "yunion.io/x/onecloud/pkg/mcclient" ) +const ( + CORPUS_VERSION = "v1" +) + type LoadbalancerCorpus struct { + CorpusVersion string *ModelSets ModelSetsMaxUpdatedAt *ModelSetsMaxUpdatedAt } @@ -50,10 +56,12 @@ func (b *LoadbalancerCorpus) MaxSeenUpdatedAtParams() *jsonutils.JSONDict { } func (b *LoadbalancerCorpus) SaveDir(dir string) error { - j := jsonutils.Marshal(b) - d := j.String() + d, err := json.Marshal(b) + if err != nil { + return err + } p := filepath.Join(dir, "corpus") - err := ioutil.WriteFile(p, []byte(d), agentutils.FileModeFileSensitive) + err = ioutil.WriteFile(p, d, agentutils.FileModeFileSensitive) return err } @@ -63,13 +71,14 @@ func (b *LoadbalancerCorpus) LoadDir(dir string) error { if err != nil { return err } - jd, err := jsonutils.Parse(d) + err = json.Unmarshal(d, b) if err != nil { - return fmt.Errorf("%s: json parse failed: %s", p, err) + return err } - err = jd.Unmarshal(b) - if err != nil { - return fmt.Errorf("%s: json unmarshal failed: %s", p, err) + // version for updating + if ver := b.CorpusVersion; ver != CORPUS_VERSION { + b.Reset() + return fmt.Errorf("%s: corpus version %s != %s", p, ver, CORPUS_VERSION) } correct := b.join() if !correct { @@ -77,3 +86,8 @@ func (b *LoadbalancerCorpus) LoadDir(dir string) error { } return nil } + +func (b *LoadbalancerCorpus) Reset() { + bb := NewEmptyLoadbalancerCorpus() + *b = *bb +} From 4adae9bd8867c9f0249cb91f9212574656650aa9 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Tue, 15 Jan 2019 07:18:06 +0000 Subject: [PATCH 4/4] lbagent: fix typo in log --- pkg/lbagent/models/modelset.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/lbagent/models/modelset.go b/pkg/lbagent/models/modelset.go index 5d86435713..0c94eb49a6 100644 --- a/pkg/lbagent/models/modelset.go +++ b/pkg/lbagent/models/modelset.go @@ -136,7 +136,7 @@ func (ms LoadbalancerListeners) JoinCertificates(subEntries LoadbalancerCertific if m.CertificateId != "" { subEntry, ok := subEntries[m.CertificateId] if !ok { - log.Warningf("loadbalancer m id %s: cannot find certificate id %s", + log.Warningf("loadbalancerlistener id %s: cannot find certificate id %s", m.Id, m.CertificateId) correct = false continue