diff --git a/pkg/cloudcommon/db/statusstandalone.go b/pkg/cloudcommon/db/statusstandalone.go index 453634246d..ea000295bf 100644 --- a/pkg/cloudcommon/db/statusstandalone.go +++ b/pkg/cloudcommon/db/statusstandalone.go @@ -77,3 +77,13 @@ func (model *SStatusStandaloneResourceBase) PerformStatus(ctx context.Context, u func (model *SStatusStandaloneResourceBase) IsInStatus(status ...string) bool { return utils.IsInStringArray(model.Status, status) } + +func (model *SStatusStandaloneResourceBase) AllowGetDetailsStatus(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) bool { + return IsAdminAllowGetSpec(userCred, model, "status") +} + +func (model *SStatusStandaloneResourceBase) GetDetailsStatus(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) (jsonutils.JSONObject, error) { + ret := jsonutils.NewDict() + ret.Add(jsonutils.NewString(model.Status), "status") + return ret, nil +} diff --git a/pkg/cloudcommon/db/virtualresource.go b/pkg/cloudcommon/db/virtualresource.go index 1bf6f249f6..e03c44dd8d 100644 --- a/pkg/cloudcommon/db/virtualresource.go +++ b/pkg/cloudcommon/db/virtualresource.go @@ -183,6 +183,10 @@ func (model *SVirtualResourceBase) AllowPerformMetadata(ctx context.Context, use return model.IsOwner(userCred) || IsAdminAllowPerform(userCred, model, "metadata") } +func (model *SVirtualResourceBase) AllowGetDetailsStatus(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) bool { + return model.IsOwner(userCred) || IsAdminAllowGetSpec(userCred, model, "status") +} + func (model *SVirtualResourceBase) GetTenantCache(ctx context.Context) (*STenant, error) { // log.Debugf("Get tenant by Id %s", model.ProjectId) return TenantCacheManager.FetchTenantById(ctx, model.ProjectId)