From 3a42c05133cb26c27bc5d36171166db83df0f7f8 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Wed, 22 Apr 2020 18:25:18 +0800 Subject: [PATCH] lbagent: fend off unexpected resources just in case As resource we do not know whether they are bad, but surely we know they are not what we expect --- pkg/lbagent/models/modelset.go | 26 ++++++++++++++++++++++++++ pkg/mcclient/models/loadbalancers.go | 7 +++++++ 2 files changed, 33 insertions(+) diff --git a/pkg/lbagent/models/modelset.go b/pkg/lbagent/models/modelset.go index f29d99df7e..18ef3627f0 100644 --- a/pkg/lbagent/models/modelset.go +++ b/pkg/lbagent/models/modelset.go @@ -50,6 +50,10 @@ func (set Loadbalancers) NewModel() models.IVirtualResource { func (set Loadbalancers) addModelCallback(i models.IVirtualResource) error { m, _ := i.(*models.Loadbalancer) + if m.ManagerId != "" || m.ExternalId != "" { + log.Errorf("unexpected lb: %#v", m) + return nil + } set[m.Id] = &Loadbalancer{ Loadbalancer: m, listeners: LoadbalancerListeners{}, @@ -114,6 +118,10 @@ func (set LoadbalancerListeners) NewModel() models.IVirtualResource { func (set LoadbalancerListeners) addModelCallback(i models.IVirtualResource) error { m, _ := i.(*models.LoadbalancerListener) + if m.ManagerId != "" || m.ExternalId != "" || m.LoadbalancerId == "" { + log.Errorf("unexpected lblistener: %#v", m) + return nil + } set[m.Id] = &LoadbalancerListener{ LoadbalancerListener: m, rules: LoadbalancerListenerRules{}, @@ -172,6 +180,10 @@ func (set LoadbalancerListenerRules) NewModel() models.IVirtualResource { func (set LoadbalancerListenerRules) addModelCallback(i models.IVirtualResource) error { m, _ := i.(*models.LoadbalancerListenerRule) + if m.ManagerId != "" || m.ExternalId != "" || m.ListenerId == "" { + log.Errorf("unexpected lblistenerrule: %#v", m) + return nil + } set[m.Id] = &LoadbalancerListenerRule{ LoadbalancerListenerRule: m, } @@ -225,6 +237,10 @@ func (set LoadbalancerBackendGroups) NewModel() models.IVirtualResource { func (set LoadbalancerBackendGroups) addModelCallback(i models.IVirtualResource) error { m, _ := i.(*models.LoadbalancerBackendGroup) + if m.ManagerId != "" || m.ExternalId != "" || m.LoadbalancerId == "" { + log.Errorf("unexpected lbbg: %#v", m) + return nil + } set[m.Id] = &LoadbalancerBackendGroup{ LoadbalancerBackendGroup: m, backends: LoadbalancerBackends{}, @@ -264,6 +280,10 @@ func (set LoadbalancerBackends) NewModel() models.IVirtualResource { func (set LoadbalancerBackends) addModelCallback(i models.IVirtualResource) error { m, _ := i.(*models.LoadbalancerBackend) + if m.ManagerId != "" || m.ExternalId != "" || m.BackendGroupId == "" { + log.Errorf("unexpected lbb: %#v", m) + return nil + } set[m.Id] = &LoadbalancerBackend{ LoadbalancerBackend: m, } @@ -280,6 +300,9 @@ func (set LoadbalancerAcls) NewModel() models.IVirtualResource { func (set LoadbalancerAcls) addModelCallback(i models.IVirtualResource) error { m, _ := i.(*models.LoadbalancerAcl) + if m.ManagerId != "" || m.ExternalId != "" { + return nil + } set[m.Id] = &LoadbalancerAcl{ LoadbalancerAcl: m, } @@ -296,6 +319,9 @@ func (set LoadbalancerCertificates) NewModel() models.IVirtualResource { func (set LoadbalancerCertificates) addModelCallback(i models.IVirtualResource) error { m, _ := i.(*models.LoadbalancerCertificate) + if m.ManagerId != "" || m.ExternalId != "" { + return nil + } set[m.Id] = &LoadbalancerCertificate{ LoadbalancerCertificate: m, } diff --git a/pkg/mcclient/models/loadbalancers.go b/pkg/mcclient/models/loadbalancers.go index 1452b1a968..043573a23a 100644 --- a/pkg/mcclient/models/loadbalancers.go +++ b/pkg/mcclient/models/loadbalancers.go @@ -21,6 +21,7 @@ import ( type Loadbalancer struct { VirtualResource ManagedResource + ExternalizedResource EgressMbps int Address string @@ -72,6 +73,7 @@ type LoadbalancerHTTPRedirect struct { type LoadbalancerListener struct { VirtualResource ManagedResource + ExternalizedResource CloudregionId string LoadbalancerId string @@ -122,6 +124,7 @@ type LoadbalancerListener struct { type LoadbalancerListenerRule struct { VirtualResource ManagedResource + ExternalizedResource CloudregionId string ListenerId string @@ -137,6 +140,7 @@ type LoadbalancerListenerRule struct { type LoadbalancerBackendGroup struct { VirtualResource ManagedResource + ExternalizedResource Type string LoadbalancerId string @@ -146,6 +150,7 @@ type LoadbalancerBackendGroup struct { type LoadbalancerBackend struct { VirtualResource ManagedResource + ExternalizedResource CloudregionId string BackendGroupId string @@ -168,6 +173,7 @@ type LoadbalancerAclEntries []*LoadbalancerAclEntry type LoadbalancerAcl struct { SharableVirtualResource ManagedResource + ExternalizedResource AclEntries *LoadbalancerAclEntries CloudregionId string @@ -176,6 +182,7 @@ type LoadbalancerAcl struct { type LoadbalancerCertificate struct { VirtualResource ManagedResource + ExternalizedResource Certificate string PrivateKey string