fix: change-owner-candidate-domains not implemented for some resources

This commit is contained in:
Qiu Jian
2020-05-12 17:29:52 +08:00
parent 600226fc2e
commit 4a84beee0f
17 changed files with 149 additions and 2 deletions
+10
View File
@@ -291,4 +291,14 @@ func init() {
printObject(srv)
return nil
})
R(&DiskDetailOptions{}, "disk-change-owner-candidate-domains", "Get change owner candidate domain list", func(s *mcclient.ClientSession, args *DiskDetailOptions) error {
result, err := modules.Disks.GetSpecific(s, args.ID, "change-owner-candidate-domains", nil)
if err != nil {
return err
}
printObject(result)
return nil
})
}
+9
View File
@@ -99,4 +99,13 @@ func init() {
return nil
})
R(&options.LoadbalancerGetOptions{}, "lb-change-owner-candidate-domains", "Get change owner candidate domain list", func(s *mcclient.ClientSession, args *options.LoadbalancerGetOptions) error {
result, err := modules.Loadbalancers.GetSpecific(s, args.ID, "change-owner-candidate-domains", nil)
if err != nil {
return err
}
printObject(result)
return nil
})
}
+10
View File
@@ -1350,4 +1350,14 @@ func init() {
printObject(result)
return nil
})
R(&options.ServerShowOptions{}, "server-change-owner-candidate-domains", "Get change owner candidate domain list", func(s *mcclient.ClientSession, args *options.ServerShowOptions) error {
result, err := modules.Servers.GetSpecific(s, args.ID, "change-owner-candidate-domains", nil)
if err != nil {
return err
}
printObject(result)
return nil
})
}
+6 -2
View File
@@ -168,7 +168,9 @@ func SharableManagerValidateCreateData(
input.IsPublic = &isPublic
reqScope = rbacutils.ScopeDomain
} else if input.IsPublic != nil && *input.IsPublic {
return input, errors.Wrap(httperrors.ErrNotSupported, "domain level resource can be shared to system ONLY")
// return input, errors.Wrap(httperrors.ErrNotSupported, "project level resource can be shared to domain or system ONLY")
input.IsPublic = nil
input.PublicScope = string(rbacutils.ScopeNone)
} else {
input.IsPublic = nil
input.PublicScope = string(rbacutils.ScopeNone)
@@ -178,7 +180,9 @@ func SharableManagerValidateCreateData(
input.IsPublic = &isPublic
reqScope = rbacutils.ScopeSystem
} else if input.IsPublic != nil && *input.IsPublic {
return input, errors.Wrap(httperrors.ErrNotSupported, "domain level resource can be shared to system ONLY")
// return input, errors.Wrap(httperrors.ErrNotSupported, "domain level resource can be shared to system ONLY")
input.IsPublic = nil
input.PublicScope = string(rbacutils.ScopeNone)
} else {
input.IsPublic = nil
input.PublicScope = string(rbacutils.ScopeNone)
+4
View File
@@ -578,3 +578,7 @@ func (manager *SDBInstanceBackupManager) ListItemExportKeys(ctx context.Context,
}
return q, nil
}
func (self *SDBInstanceBackup) GetChangeOwnerCandidateDomainIds() []string {
return self.SManagedResourceBase.GetChangeOwnerCandidateDomainIds()
}
+8
View File
@@ -264,3 +264,11 @@ func (manager *SDBInstanceResourceBaseManager) GetExportKeys() []string {
keys = append(keys, manager.SVpcResourceBaseManager.GetExportKeys()...)
return keys
}
func (self *SDBInstanceResourceBase) GetChangeOwnerCandidateDomainIds() []string {
dbinst, _ := self.GetDBInstance()
if dbinst != nil {
return dbinst.GetChangeOwnerCandidateDomainIds()
}
return nil
}
+8
View File
@@ -252,3 +252,11 @@ func (manager *SDiskResourceBaseManager) GetExportKeys() []string {
keys = append(keys, manager.SStorageResourceBaseManager.GetExportKeys()...)
return keys
}
func (self *SDiskResourceBase) GetChangeOwnerCandidateDomainIds() []string {
disk := self.GetDisk()
if disk != nil {
return disk.GetChangeOwnerCandidateDomainIds()
}
return nil
}
@@ -302,3 +302,11 @@ func (manager *SElasticcacheResourceBaseManager) GetExportKeys() []string {
keys = append(keys, "zone")
return keys
}
func (self *SElasticcacheResourceBase) GetChangeOwnerCandidateDomainIds() []string {
cache, _ := self.GetElasticcache()
if cache != nil {
return cache.GetChangeOwnerCandidateDomainIds()
}
return nil
}
+8
View File
@@ -251,3 +251,11 @@ func (manager *SGuestResourceBaseManager) GetExportKeys() []string {
keys = append(keys, manager.SHostResourceBaseManager.GetExportKeys()...)
return keys
}
func (self *SGuestResourceBase) GetChangeOwnerCandidateDomainIds() []string {
guest := self.GetGuest()
if guest != nil {
return guest.GetChangeOwnerCandidateDomainIds()
}
return nil
}
+17
View File
@@ -54,6 +54,15 @@ func ValidateHostResourceInput(userCred mcclient.TokenCredential, input api.Host
return hostObj.(*SHost), input, nil
}
func (self *SHostResourceBase) GetHost() *SHost {
obj, err := HostManager.FetchById(self.HostId)
if err != nil {
log.Errorf("fail to get host by id %s: %s", self.HostId, err)
return nil
}
return obj.(*SHost)
}
func (manager *SHostResourceBaseManager) getHostIdFieldName() string {
if len(manager.hostIdFieldName) > 0 {
return manager.hostIdFieldName
@@ -279,3 +288,11 @@ func (manager *SHostResourceBaseManager) GetExportKeys() []string {
keys = append(keys, manager.SManagedResourceBaseManager.GetExportKeys()...)
return keys
}
func (model *SHostResourceBase) GetChangeOwnerCandidateDomainIds() []string {
host := model.GetHost()
if host != nil {
return host.GetChangeOwnerCandidateDomainIds()
}
return nil
}
@@ -344,3 +344,11 @@ func (manager *SLoadbalancerResourceBaseManager) GetExportKeys() []string {
keys = append(keys, "vpc")
return keys
}
func (self *SLoadbalancerResourceBase) GetChangeOwnerCandidateDomainIds() []string {
lb := self.GetLoadbalancer()
if lb != nil {
return lb.GetChangeOwnerCandidateDomainIds()
}
return nil
}
+4
View File
@@ -1137,3 +1137,7 @@ func (manager *SLoadbalancerManager) ListItemExportKeys(ctx context.Context,
}
return q, nil
}
func (self *SLoadbalancer) GetChangeOwnerCandidateDomainIds() []string {
return self.SManagedResourceBase.GetChangeOwnerCandidateDomainIds()
}
+8
View File
@@ -220,3 +220,11 @@ func (manager *SNatgatewayResourceBaseManager) FilterByParentId(q *sqlchemy.SQue
return q
}
*/
func (self *SNatgatewayResourceBase) GetChangeOwnerCandidateDomainIds() []string {
nat, _ := self.GetNatgateway()
if nat != nil {
return nat.GetChangeOwnerCandidateDomainIds()
}
return nil
}
+8
View File
@@ -260,3 +260,11 @@ func (manager *SNetworkResourceBaseManager) GetExportKeys() []string {
keys = append(keys, manager.SWireResourceBaseManager.GetExportKeys()...)
return keys
}
func (self *SNetworkResourceBase) GetChangeOwnerCandidateDomainIds() []string {
network := self.GetNetwork()
if network != nil {
return network.GetChangeOwnerCandidateDomainIds()
}
return nil
}
+17
View File
@@ -53,6 +53,15 @@ func ValidateStorageResourceInput(userCred mcclient.TokenCredential, query api.S
return storageObj.(*SStorage), query, nil
}
func (self *SStorageResourceBase) GetStorage() *SStorage {
obj, err := StorageManager.FetchById(self.StorageId)
if err != nil {
log.Errorf("fail to fetch storage by id: %s: %s", self.StorageId, err)
return nil
}
return obj.(*SStorage)
}
func (self *SStorageResourceBase) GetExtraDetails(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) api.StorageResourceInfo {
return api.StorageResourceInfo{}
}
@@ -268,3 +277,11 @@ func (manager *SStorageResourceBaseManager) GetExportKeys() []string {
keys = append(keys, manager.SManagedResourceBaseManager.GetExportKeys()...)
return keys
}
func (model *SStorageResourceBase) GetChangeOwnerCandidateDomainIds() []string {
storage := model.GetStorage()
if storage != nil {
return storage.GetChangeOwnerCandidateDomainIds()
}
return nil
}
+8
View File
@@ -310,3 +310,11 @@ func (manager *SVpcResourceBaseManager) GetExportKeys() []string {
keys = append(keys, manager.SCloudregionResourceBaseManager.GetExportKeys()...)
return keys
}
func (self *SVpcResourceBase) GetChangeOwnerCandidateDomainIds() []string {
vpc := self.GetVpc()
if vpc != nil {
return vpc.GetChangeOwnerCandidateDomainIds()
}
return nil
}
+8
View File
@@ -305,3 +305,11 @@ func (manager *SWireResourceBaseManager) GetExportKeys() []string {
keys = append(keys, manager.SVpcResourceBaseManager.GetExportKeys()...)
return keys
}
func (self *SWireResourceBase) GetChangeOwnerCandidateDomainIds() []string {
wire := self.GetWire()
if wire != nil {
return wire.GetChangeOwnerCandidateDomainIds()
}
return nil
}