From 13bc224202a7b5269233eef507dfccd2cea52191 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Thu, 8 Nov 2018 10:31:32 +0000 Subject: [PATCH] mcclient: loadbalancers: allow updating names - loadbalanceracls: allow updating only name --- cmd/climc/shell/loadbalancerbackendgroups.go | 12 ++++++++++++ pkg/compute/models/loadbalanceracls.go | 9 ++++++--- pkg/mcclient/options/loadbalanceracls.go | 14 ++++++++++---- pkg/mcclient/options/loadbalanceragents.go | 3 ++- pkg/mcclient/options/loadbalancerbackendgroups.go | 8 ++++++++ pkg/mcclient/options/loadbalancerbackends.go | 3 ++- pkg/mcclient/options/loadbalancercertificates.go | 3 ++- pkg/mcclient/options/loadbalancerlistenerrules.go | 4 +++- pkg/mcclient/options/loadbalancerlisteners.go | 3 ++- pkg/mcclient/options/loadbalancers.go | 4 +++- 10 files changed, 50 insertions(+), 13 deletions(-) diff --git a/cmd/climc/shell/loadbalancerbackendgroups.go b/cmd/climc/shell/loadbalancerbackendgroups.go index 8cf38963fa..068ac36bc4 100644 --- a/cmd/climc/shell/loadbalancerbackendgroups.go +++ b/cmd/climc/shell/loadbalancerbackendgroups.go @@ -39,6 +39,18 @@ func init() { printList(result, modules.LoadbalancerBackendGroups.GetColumns(s)) return nil }) + R(&options.LoadbalancerBackendGroupUpdateOptions{}, "lbbackendgroup-update", "Update lbbackendgroup", func(s *mcclient.ClientSession, opts *options.LoadbalancerBackendGroupUpdateOptions) error { + params, err := options.StructToParams(opts) + if err != nil { + return err + } + lbbackendgroup, err := modules.LoadbalancerBackendGroups.Update(s, opts.ID, params) + if err != nil { + return err + } + printObject(lbbackendgroup) + return nil + }) R(&options.LoadbalancerBackendGroupDeleteOptions{}, "lbbackendgroup-delete", "Show lbbackendgroup", func(s *mcclient.ClientSession, opts *options.LoadbalancerBackendGroupDeleteOptions) error { lbbackendgroup, err := modules.LoadbalancerBackendGroups.Delete(s, opts.ID, nil) if err != nil { diff --git a/pkg/compute/models/loadbalanceracls.go b/pkg/compute/models/loadbalanceracls.go index 245ea94453..67dd190c6c 100644 --- a/pkg/compute/models/loadbalanceracls.go +++ b/pkg/compute/models/loadbalanceracls.go @@ -101,9 +101,12 @@ type SLoadbalancerAcl struct { AclEntries *SLoadbalancerAclEntries `list:"user" update:"user" create:"required"` } -func loadbalancerAclsValidateAclEntries(data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) { +func loadbalancerAclsValidateAclEntries(data *jsonutils.JSONDict, update bool) (*jsonutils.JSONDict, error) { aclEntries := SLoadbalancerAclEntries{} aclEntriesV := validators.NewStructValidator("acl_entries", &aclEntries) + if update { + aclEntriesV.Optional(true) + } err := aclEntriesV.Validate(data) if err != nil { return nil, err @@ -112,7 +115,7 @@ func loadbalancerAclsValidateAclEntries(data *jsonutils.JSONDict) (*jsonutils.JS } func (man *SLoadbalancerAclManager) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerProjId string, query jsonutils.JSONObject, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) { - data, err := loadbalancerAclsValidateAclEntries(data) + data, err := loadbalancerAclsValidateAclEntries(data, false) if err != nil { return nil, err } @@ -124,7 +127,7 @@ func (lbacl *SLoadbalancerAcl) AllowPerformStatus(ctx context.Context, userCred } func (lbacl *SLoadbalancerAcl) ValidateUpdateData(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) { - data, err := loadbalancerAclsValidateAclEntries(data) + data, err := loadbalancerAclsValidateAclEntries(data, true) if err != nil { return nil, err } diff --git a/pkg/mcclient/options/loadbalanceracls.go b/pkg/mcclient/options/loadbalanceracls.go index dce9a15b94..dc704c18fa 100644 --- a/pkg/mcclient/options/loadbalanceracls.go +++ b/pkg/mcclient/options/loadbalanceracls.go @@ -69,7 +69,9 @@ type LoadbalancerAclListOptions struct { } type LoadbalancerAclUpdateOptions struct { - ID string `json:"-"` + ID string `json:"-"` + Name string + AclEntry []string `help:"acl entry with cidr and comment separated by #, e.g. 10.9.0.0/16#no comment" json:"-"` } @@ -99,9 +101,13 @@ func (opts *LoadbalancerAclUpdateOptions) Params() (*jsonutils.JSONDict, error) if err != nil { return nil, err } - aclEntries := NewAclEntries(opts.AclEntry) - aclEntriesJson := jsonutils.Marshal(aclEntries) - params.Set("acl_entries", aclEntriesJson) + // - when it's nil, we leave it alone without updating + // - when it's non-nil, we update it as a whole + if opts.AclEntry != nil { + aclEntries := NewAclEntries(opts.AclEntry) + aclEntriesJson := jsonutils.Marshal(aclEntries) + params.Set("acl_entries", aclEntriesJson) + } return params, nil } diff --git a/pkg/mcclient/options/loadbalanceragents.go b/pkg/mcclient/options/loadbalanceragents.go index 5ea716efbc..ab3b230818 100644 --- a/pkg/mcclient/options/loadbalanceragents.go +++ b/pkg/mcclient/options/loadbalanceragents.go @@ -86,7 +86,8 @@ type LoadbalancerAgentGetOptions struct { } type LoadbalancerAgentUpdateOptions struct { - ID string + ID string + Name string HbTimeout *int diff --git a/pkg/mcclient/options/loadbalancerbackendgroups.go b/pkg/mcclient/options/loadbalancerbackendgroups.go index 58051415aa..495acf870b 100644 --- a/pkg/mcclient/options/loadbalancerbackendgroups.go +++ b/pkg/mcclient/options/loadbalancerbackendgroups.go @@ -4,12 +4,20 @@ type LoadbalancerBackendGroupCreateOptions struct { NAME string Loadbalancer string } + type LoadbalancerBackendGroupGetOptions struct { ID string } + +type LoadbalancerBackendGroupUpdateOptions struct { + ID string + Name string +} + type LoadbalancerBackendGroupDeleteOptions struct { ID string } + type LoadbalancerBackendGroupListOptions struct { BaseListOptions Loadbalancer string diff --git a/pkg/mcclient/options/loadbalancerbackends.go b/pkg/mcclient/options/loadbalancerbackends.go index 7b89b874d0..7e9f66527a 100644 --- a/pkg/mcclient/options/loadbalancerbackends.go +++ b/pkg/mcclient/options/loadbalancerbackends.go @@ -19,7 +19,8 @@ type LoadbalancerBackendListOptions struct { } type LoadbalancerBackendUpdateOptions struct { - ID string + ID string + Name string Weight *int Port *int diff --git a/pkg/mcclient/options/loadbalancercertificates.go b/pkg/mcclient/options/loadbalancercertificates.go index 70d920b657..b93dabedaa 100644 --- a/pkg/mcclient/options/loadbalancercertificates.go +++ b/pkg/mcclient/options/loadbalancercertificates.go @@ -70,7 +70,8 @@ type LoadbalancerCertificateListOptions struct { } type LoadbalancerCertificateUpdateOptions struct { - ID string + ID string + Name string Cert string `json:"-" help:"path to certificate file"` Pkey string `json:"-" help:"path to private key file"` diff --git a/pkg/mcclient/options/loadbalancerlistenerrules.go b/pkg/mcclient/options/loadbalancerlistenerrules.go index 5b85f67bac..352450dfd5 100644 --- a/pkg/mcclient/options/loadbalancerlistenerrules.go +++ b/pkg/mcclient/options/loadbalancerlistenerrules.go @@ -18,7 +18,9 @@ type LoadbalancerListenerRuleListOptions struct { } type LoadbalancerListenerRuleUpdateOptions struct { - ID string + ID string + Name string + BackendGroup string } diff --git a/pkg/mcclient/options/loadbalancerlisteners.go b/pkg/mcclient/options/loadbalancerlisteners.go index 1f5e8ff314..7b232ae365 100644 --- a/pkg/mcclient/options/loadbalancerlisteners.go +++ b/pkg/mcclient/options/loadbalancerlisteners.go @@ -97,7 +97,8 @@ type LoadbalancerListenerListOptions struct { } type LoadbalancerListenerUpdateOptions struct { - ID string + ID string + Name string BackendGroup string diff --git a/pkg/mcclient/options/loadbalancers.go b/pkg/mcclient/options/loadbalancers.go index 185c321dbd..e6ea70ca87 100644 --- a/pkg/mcclient/options/loadbalancers.go +++ b/pkg/mcclient/options/loadbalancers.go @@ -11,7 +11,9 @@ type LoadbalancerGetOptions struct { } type LoadbalancerUpdateOptions struct { - ID string + ID string + Name string + BackendGroup string }