From 39277c52359019daf9366a492a2d2cc98d44d013 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=94=90?= Date: Tue, 17 Jan 2023 18:26:59 +0800 Subject: [PATCH] =?UTF-8?q?feat(bingocloud)=EF=BC=9Achanged=20some=20abili?= =?UTF-8?q?ties=20of=20bingocloud?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/guestdrivers/bingocloud.go | 46 +++++++++++++++++++++++++ pkg/compute/regiondrivers/bingocloud.go | 9 +++-- 2 files changed, 50 insertions(+), 5 deletions(-) diff --git a/pkg/compute/guestdrivers/bingocloud.go b/pkg/compute/guestdrivers/bingocloud.go index 8993286bda..d164bc126e 100644 --- a/pkg/compute/guestdrivers/bingocloud.go +++ b/pkg/compute/guestdrivers/bingocloud.go @@ -15,10 +15,16 @@ package guestdrivers import ( + "context" + "yunion.io/x/cloudmux/pkg/cloudprovider" + "yunion.io/x/log" + "yunion.io/x/pkg/util/billing" "yunion.io/x/pkg/util/rbacscope" + "yunion.io/x/sqlchemy" api "yunion.io/x/onecloud/pkg/apis/compute" + "yunion.io/x/onecloud/pkg/cloudcommon/db" "yunion.io/x/onecloud/pkg/cloudcommon/db/quotas" "yunion.io/x/onecloud/pkg/compute/models" "yunion.io/x/onecloud/pkg/compute/options" @@ -34,6 +40,14 @@ func init() { models.RegisterGuestDriver(&driver) } +func (self *SBingoCloudGuestDriver) DoScheduleCPUFilter() bool { return false } + +func (self *SBingoCloudGuestDriver) DoScheduleMemoryFilter() bool { return false } + +func (self *SBingoCloudGuestDriver) DoScheduleSKUFilter() bool { return false } + +func (self *SBingoCloudGuestDriver) DoScheduleStorageFilter() bool { return false } + func (self *SBingoCloudGuestDriver) GetHypervisor() string { return api.HYPERVISOR_BINGO_CLOUD } @@ -73,6 +87,38 @@ func (self *SBingoCloudGuestDriver) GetComputeQuotaKeys(scope rbacscope.TRbacSco return keys } +func (self *SBingoCloudGuestDriver) GetDeployStatus() ([]string, error) { + return []string{api.VM_READY, api.VM_RUNNING}, nil +} + func (self *SBingoCloudGuestDriver) GetDefaultSysDiskBackend() string { return "" } + +func (self *SBingoCloudGuestDriver) GetGuestInitialStateAfterCreate() string { + return api.VM_RUNNING +} + +func (self *SBingoCloudGuestDriver) GetGuestInitialStateAfterRebuild() string { + return api.VM_READY +} + +func (self *SBingoCloudGuestDriver) IsSupportedBillingCycle(bc billing.SBillingCycle) bool { + return false +} + +func (self *SBingoCloudGuestDriver) RemoteDeployGuestSyncHost(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, host *models.SHost, iVM cloudprovider.ICloudVM) (cloudprovider.ICloudHost, error) { + if hostId := iVM.GetIHostId(); len(hostId) > 0 { + nh, err := db.FetchByExternalIdAndManagerId(models.HostManager, hostId, func(q *sqlchemy.SQuery) *sqlchemy.SQuery { + return q.Equals("manager_id", host.ManagerId) + }) + if err != nil { + log.Warningf("failed to found new hostId(%s) for ivm %s(%s) error: %v", hostId, guest.Name, guest.Id, err) + } else if nh.GetId() != guest.HostId { + guest.OnScheduleToHost(ctx, userCred, nh.GetId()) + host = nh.(*models.SHost) + } + } + + return host.GetIHost(ctx) +} diff --git a/pkg/compute/regiondrivers/bingocloud.go b/pkg/compute/regiondrivers/bingocloud.go index 5d54be78da..4a2f6088c1 100644 --- a/pkg/compute/regiondrivers/bingocloud.go +++ b/pkg/compute/regiondrivers/bingocloud.go @@ -16,7 +16,6 @@ package regiondrivers import ( "context" - "fmt" "strings" "yunion.io/x/cloudmux/pkg/cloudprovider" @@ -46,7 +45,7 @@ func (self *SBingoCloudRegionDriver) IsAllowSecurityGroupNameRepeat() bool { func (self *SBingoCloudRegionDriver) GenerateSecurityGroupName(name string) string { if strings.ToLower(name) == "default" { - return "DefaultGroup" + return "default" } return name } @@ -56,13 +55,13 @@ func (self *SBingoCloudRegionDriver) IsSecurityGroupBelongVpc() bool { } func (self *SBingoCloudRegionDriver) GetDefaultSecurityGroupInRule() cloudprovider.SecurityRule { - return cloudprovider.SecurityRule{SecurityRule: *secrules.MustParseSecurityRule("in:deny any")} + return cloudprovider.SecurityRule{SecurityRule: *secrules.MustParseSecurityRule("in:allow any")} } func (self *SBingoCloudRegionDriver) GetDefaultSecurityGroupOutRule() cloudprovider.SecurityRule { - return cloudprovider.SecurityRule{SecurityRule: *secrules.MustParseSecurityRule("out:deny any")} + return cloudprovider.SecurityRule{SecurityRule: *secrules.MustParseSecurityRule("out:allow any")} } func (self *SBingoCloudRegionDriver) ValidateCreateSnapshotData(ctx context.Context, userCred mcclient.TokenCredential, disk *models.SDisk, storage *models.SStorage, input *api.SnapshotCreateInput) error { - return fmt.Errorf("%s does not support creating snapshot", self.GetProvider()) + return nil }