diff --git a/pkg/mcclient/modules/mod_parameters.go b/pkg/mcclient/modules/mod_parameters.go index ccbdb236b3..792ed18275 100644 --- a/pkg/mcclient/modules/mod_parameters.go +++ b/pkg/mcclient/modules/mod_parameters.go @@ -14,6 +14,15 @@ package modules +import ( + "context" + + "yunion.io/x/jsonutils" + "yunion.io/x/onecloud/pkg/mcclient" + "yunion.io/x/onecloud/pkg/mcclient/auth" + "yunion.io/x/onecloud/pkg/httperrors" +) + type ParametersManager struct { ResourceManager } @@ -29,3 +38,20 @@ func init() { )} register(&Parameters) } + +func (this *ParametersManager) GetGlobalSettings(s *mcclient.ClientSession, params jsonutils.JSONObject) (jsonutils.JSONObject, error) { + adminSession := auth.GetAdminSession(context.Background(), "", "") + p := jsonutils.NewDict() + p.Add(jsonutils.NewString("system"), "scope") + p.Add(jsonutils.NewString("name"), "global-settings") + parameters, err := this.ListInContext(adminSession, p, &ServicesV3, "yunionagent") + if err != nil { + return nil, err + } + + if parameters.Total == 0 { + return nil, httperrors.NewNotFoundError("global-settings not found") + } + + return parameters.Data[0], nil +} \ No newline at end of file