From f71b787abbf428a42567a77e3c4a85600dfde79c Mon Sep 17 00:00:00 2001 From: Jian Qiu Date: Tue, 18 Aug 2020 10:51:57 +0800 Subject: [PATCH] fix: dns record create ignore is_public field (#7589) Co-authored-by: Qiu Jian --- pkg/apis/compute/dnsrecord.go | 6 ++++++ pkg/apis/input.go | 21 +++++++++++++++++++++ pkg/cloudcommon/db/adminsharablevirtual.go | 17 ++++++++++++++++- pkg/compute/models/dnsrecords.go | 19 +++++++++++++++++-- 4 files changed, 60 insertions(+), 3 deletions(-) diff --git a/pkg/apis/compute/dnsrecord.go b/pkg/apis/compute/dnsrecord.go index 83abfc5cf3..e59b2435d7 100644 --- a/pkg/apis/compute/dnsrecord.go +++ b/pkg/apis/compute/dnsrecord.go @@ -14,5 +14,11 @@ package compute +import "yunion.io/x/onecloud/pkg/apis" + +type DnsRecordCreateInput struct { + apis.AdminSharableVirtualResourceBaseCreateInput +} + type DnsRecordUpdateInput struct { } diff --git a/pkg/apis/input.go b/pkg/apis/input.go index 59f3986b50..4de39e89da 100644 --- a/pkg/apis/input.go +++ b/pkg/apis/input.go @@ -75,6 +75,27 @@ type SharableVirtualResourceCreateInput struct { SharableResourceBaseCreateInput } +type AdminSharableVirtualResourceBaseCreateInput struct { + SharableVirtualResourceCreateInput + + // 记录 + Records string `json:"records"` +} + +type StatusDomainLevelUserResourceCreateInput struct { + StatusDomainLevelResourceCreateInput + + // 本地用户Id,若为空则使用当前用户Id作为此参数值 + OwnerId string `json:"owner_id"` +} + +type UserResourceCreateInput struct { + StandaloneResourceCreateInput + + // 本地用户Id,若为空则使用当前用户Id作为此参数值 + OwnerId string `json:"owner_id"` +} + type VirtualResourceCreateInput struct { StatusStandaloneResourceCreateInput ProjectizedResourceCreateInput diff --git a/pkg/cloudcommon/db/adminsharablevirtual.go b/pkg/cloudcommon/db/adminsharablevirtual.go index eb3a0e0a68..accd525af7 100644 --- a/pkg/cloudcommon/db/adminsharablevirtual.go +++ b/pkg/cloudcommon/db/adminsharablevirtual.go @@ -51,7 +51,22 @@ func (manager *SAdminSharableVirtualResourceBaseManager) GetIAdminSharableVirtua return manager.GetVirtualObject().(IAdminSharableVirtualModelManager) } -func (manager *SAdminSharableVirtualResourceBaseManager) ValidateCreateData(man IAdminSharableVirtualModelManager, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) { +func (manager *SAdminSharableVirtualResourceBaseManager) ValidateCreateData( + ctx context.Context, + userCred mcclient.TokenCredential, + ownerId mcclient.IIdentityProvider, + query jsonutils.JSONObject, + input apis.AdminSharableVirtualResourceBaseCreateInput, +) (apis.AdminSharableVirtualResourceBaseCreateInput, error) { + var err error + input.SharableVirtualResourceCreateInput, err = manager.SSharableVirtualResourceBaseManager.ValidateCreateData(ctx, userCred, ownerId, query, input.SharableVirtualResourceCreateInput) + if err != nil { + return input, errors.Wrap(err, "SSharableVirtualResourceBaseManager.ValidateCreateData") + } + return input, nil +} + +func (manager *SAdminSharableVirtualResourceBaseManager) ValidateRecordsData(man IAdminSharableVirtualModelManager, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) { records, err := man.ParseInputInfo(data) if err != nil { return nil, err diff --git a/pkg/compute/models/dnsrecords.go b/pkg/compute/models/dnsrecords.go index e501623e3f..d3f6863615 100644 --- a/pkg/compute/models/dnsrecords.go +++ b/pkg/compute/models/dnsrecords.go @@ -337,11 +337,26 @@ func (man *SDnsRecordManager) ValidateCreateData( query jsonutils.JSONObject, data *jsonutils.JSONDict, ) (*jsonutils.JSONDict, error) { - _, err := man.validateModelData(ctx, data, true) + var err error + + input := apis.AdminSharableVirtualResourceBaseCreateInput{} + err = data.Unmarshal(&input) + if err != nil { + return nil, errors.Wrap(err, "Unmarshal AdminSharableVirtualResourceBaseCreateInput") + } + + input, err = man.SAdminSharableVirtualResourceBaseManager.ValidateCreateData(ctx, userCred, ownerId, query, input) + if err != nil { + return nil, errors.Wrap(err, "SAdminSharableVirtualResourceBaseManager.ValidateCreateData") + } + + data.Update(jsonutils.Marshal(input)) + + _, err = man.validateModelData(ctx, data, true) if err != nil { return nil, err } - return man.SAdminSharableVirtualResourceBaseManager.ValidateCreateData(man, data) + return man.SAdminSharableVirtualResourceBaseManager.ValidateRecordsData(man, data) } func (man *SDnsRecordManager) QueryDns(projectId, name string) *SDnsRecord {