From 68ba4361db60a11c15b45a3fdf786bb95bce2752 Mon Sep 17 00:00:00 2001 From: rainzm Date: Mon, 27 Jul 2020 14:35:21 +0800 Subject: [PATCH] fix(region): Remove default secgroup for esxi guest 1. InitializeData remove all secgroup_id of esxi guest from database 2. Set input.SecgroupId as empty for guest whose GetMaxSecurityGroupCount return 0 --- pkg/compute/models/guests.go | 21 +++++++++++++++++++++ pkg/compute/models/initdb.go | 1 + 2 files changed, 22 insertions(+) diff --git a/pkg/compute/models/guests.go b/pkg/compute/models/guests.go index 471ae2da65..521ed98cf9 100644 --- a/pkg/compute/models/guests.go +++ b/pkg/compute/models/guests.go @@ -544,6 +544,26 @@ func (manager *SGuestManager) QueryDistinctExtraField(q *sqlchemy.SQuery, field return q, httperrors.ErrNotFound } +func (manager *SGuestManager) InitializeData() error { + guests := make([]SGuest, 0, 10) + q := manager.Query().Equals("hypervisor", "esxi") + err := db.FetchModelObjects(manager, q, &guests) + if err != nil { + return errors.Wrap(err, "db.FetchModelObjects") + } + // remove secgroup for esxi guest + for i := range guests { + if len(guests[i].SecgrpId) == 0 { + continue + } + db.Update(&guests[i], func() error { + guests[i].SecgrpId = "" + return nil + }) + } + return nil +} + func (guest *SGuest) GetHypervisor() string { if len(guest.Hypervisor) == 0 { return api.HYPERVISOR_DEFAULT @@ -1342,6 +1362,7 @@ func (manager *SGuestManager) validateCreateData( maxSecgrpCount := GetDriver(hypervisor).GetMaxSecurityGroupCount() if maxSecgrpCount == 0 { //esxi 不支持安全组 + input.SecgroupId = "" input.Secgroups = []string{} } else if len(input.Secgroups)+1 > maxSecgrpCount { return nil, httperrors.NewInputParameterError("%s shall bind up to %d security groups", hypervisor, maxSecgrpCount) diff --git a/pkg/compute/models/initdb.go b/pkg/compute/models/initdb.go index 2764873e8c..45501c9049 100644 --- a/pkg/compute/models/initdb.go +++ b/pkg/compute/models/initdb.go @@ -44,6 +44,7 @@ func InitDB() error { SecurityGroupManager, SecurityGroupCacheManager, NetworkManager, + GuestManager, LoadbalancerCertificateManager, LoadbalancerAclManager, LoadbalancerManager,