This is an automated email from the ASF dual-hosted git repository.

dahn pushed a commit to branch pr90
in repository https://gitbox.apache.org/repos/asf/cloudstack-go.git

commit ad466b06f9e7cd4b44a3da33aa449d75068e62c9
Author: tonymmm1 <[email protected]>
AuthorDate: Mon Jul 22 04:21:31 2024 -0500

    implement QuotaCredits
---
 cloudstack/QuotaService.go | 175 ++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 173 insertions(+), 2 deletions(-)

diff --git a/cloudstack/QuotaService.go b/cloudstack/QuotaService.go
index d242291..c3b0509 100644
--- a/cloudstack/QuotaService.go
+++ b/cloudstack/QuotaService.go
@@ -26,8 +26,9 @@ import (
 
 type QuotaServiceIface interface {
        QuotaBalance(p *QuotaBalanceParams) (*QuotaBalanceResponse, error)
-       NewQuotaBalanceParams(account string, domainid string) 
*QuotaBalanceParams
-       //CreateCredit(p *CreateCreditParams) (*CreateCreditResponse, error)
+       NewQuotaBalanceParams(account, domainid string) *QuotaBalanceParams
+       QuotaCredits(p *QuotaCreditsParams) (*QuotaCreditsParams, error)
+       NewQuotaCreditsParams(account, domainid, value string) 
*QuotaCreditsParams
        QuotaIsEnabled(p *QuotaIsEnabledParams) (*QuotaIsEnabledResponse, error)
        NewQuotaIsEnabledParams() *QuotaIsEnabledParams
        //CreateStatement(p *CreateStatementParams) (*CreateStatementResponse, 
error)
@@ -210,6 +211,176 @@ type QuotaBalanceResponse struct {
        Unit      string `json:"unit"`
 }
 
+type QuotaCreditsParams struct {
+       p map[string]interface{}
+}
+
+func (p *QuotaCreditsParams) toURLValues() url.Values {
+       u := url.Values{}
+       if p.p == nil {
+               return u
+       }
+       if v, found := p.p["account"]; found {
+               u.Set("account", v.(string))
+       }
+       if v, found := p.p["domainid"]; found {
+               u.Set("domainid", v.(string))
+       }
+       if v, found := p.p["value"]; found {
+               u.Set("value", v.(string))
+       }
+       if v, found := p.p["min_balance"]; found {
+               u.Set("min_balance", v.(string))
+
+       }
+       if v, found := p.p["quota_enforce"]; found {
+               u.Set("quota_enforce", v.(string))
+       }
+       return u
+}
+
+func (p *QuotaCreditsParams) SetAccount(v string) {
+       if p.p == nil {
+               p.p = make(map[string]interface{})
+       }
+       p.p["account"] = v
+}
+
+func (p *QuotaCreditsParams) ResetAccount() {
+       if p.p == nil {
+               p.p = make(map[string]interface{})
+       }
+       delete(p.p, "account")
+}
+
+func (p *QuotaCreditsParams) GetAccount() (string, bool) {
+       if p.p == nil {
+               p.p = make(map[string]interface{})
+       }
+       value, ok := p.p["account"].(string)
+       return value, ok
+}
+
+func (p *QuotaCreditsParams) SetDomainid(v string) {
+       if p.p == nil {
+               p.p = make(map[string]interface{})
+       }
+       p.p["domainid"] = v
+}
+
+func (p *QuotaCreditsParams) ResetDomainid() {
+       if p.p == nil {
+               p.p = make(map[string]interface{})
+       }
+       delete(p.p, "domainid")
+}
+
+func (p *QuotaCreditsParams) GetDomainid() (string, bool) {
+       if p.p == nil {
+               p.p = make(map[string]interface{})
+       }
+       value, ok := p.p["domainid"].(string)
+       return value, ok
+}
+
+func (p *QuotaCreditsParams) SetValue(v string) {
+       if p.p == nil {
+               p.p = make(map[string]interface{})
+       }
+       p.p["value"] = v
+}
+
+func (p *QuotaCreditsParams) ResetValue() {
+       if p.p == nil {
+               p.p = make(map[string]interface{})
+       }
+       delete(p.p, "value")
+}
+
+func (p *QuotaCreditsParams) GetValue() (string, bool) {
+       if p.p == nil {
+               p.p = make(map[string]interface{})
+       }
+       value, ok := p.p["value"].(string)
+       return value, ok
+}
+
+func (p *QuotaCreditsParams) SetMinBalance(v string) {
+       if p.p == nil {
+               p.p = make(map[string]interface{})
+       }
+       p.p["min_balance"] = v
+}
+
+func (p *QuotaCreditsParams) ResetMinBalance() {
+       if p.p == nil {
+               p.p = make(map[string]interface{})
+       }
+       delete(p.p, "min_balance")
+}
+
+func (p *QuotaCreditsParams) GetMinBalance() (string, bool) {
+       if p.p == nil {
+               p.p = make(map[string]interface{})
+       }
+       value, ok := p.p["min_balance"].(string)
+       return value, ok
+}
+
+func (p *QuotaCreditsParams) SetQuotaEnforce(v string) {
+       if p.p == nil {
+               p.p = make(map[string]interface{})
+       }
+       p.p["quota_enforce"] = v
+}
+
+func (p *QuotaCreditsParams) ResetQuotaEnforce() {
+       if p.p == nil {
+               p.p = make(map[string]interface{})
+       }
+       delete(p.p, "quota_enforce")
+}
+
+func (p *QuotaCreditsParams) GetQuotaEnforce() (string, bool) {
+       if p.p == nil {
+               p.p = make(map[string]interface{})
+       }
+       value, ok := p.p["quota_enforce"].(string)
+       return value, ok
+}
+
+// You should always use this function to get a new QuotaCreditsParams 
instance,
+// as then you are sure you have configured all required params
+func (s *QuotaService) NewQuotaCreditsParams(account, domainid, value string) 
*QuotaCreditsParams {
+       p := &QuotaCreditsParams{}
+       p.p = make(map[string]interface{})
+       p.p["account"] = account
+       p.p["domainid"] = domainid
+       p.p["value"] = value
+       return p
+}
+
+func (s *QuotaService) QuotaCredits(p *QuotaCreditsParams) 
(*QuotaCreditsResponse, error) {
+       resp, err := s.cs.newRequest("quotaCredits", p.toURLValues())
+       if err != nil {
+               return nil, err
+       }
+
+       var r QuotaCreditsResponse
+       if err := json.Unmarshal(resp, &r); err != nil {
+               return nil, err
+       }
+
+       return &r, nil
+}
+
+type QuotaCreditsResponse struct {
+       Credits    string `json:"credits"`
+       Currency   string `json:"currency"`
+       Updated_by string `json:"updated_by"`
+       Updated_on string `json:"updated_on"`
+}
+
 type QuotaIsEnabledParams struct {
        p map[string]interface{}
 }

Reply via email to