From 0c2762da7fb1c05a9c43efc018b24df151e4c5f1 Mon Sep 17 00:00:00 2001 From: Zexi Li Date: Wed, 15 Jun 2022 04:46:23 +0800 Subject: [PATCH] feat(climc): server-list --os-arch (#14465) --- pkg/mcclient/options/base.go | 26 +++++++++++++++++-------- pkg/mcclient/options/compute/servers.go | 1 + 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/pkg/mcclient/options/base.go b/pkg/mcclient/options/base.go index 9db743b0a5..1f6499ec1a 100644 --- a/pkg/mcclient/options/base.go +++ b/pkg/mcclient/options/base.go @@ -174,15 +174,17 @@ func ListStructToParams(v interface{}) (*jsonutils.JSONDict, error) { return nil, err } { - f := rv.FieldByName("BaseListOptions") - if f.IsValid() { - listOpts, ok := f.Addr().Interface().(*BaseListOptions) - if ok { - listParams, err := listOpts.Params() - if err != nil { - return nil, err + for _, oName := range []string{"BaseListOptions", "MultiArchListOptions"} { + f := rv.FieldByName(oName) + if f.IsValid() { + listOpts, ok := f.Addr().Interface().(IParamsOptions) + if ok { + listParams, err := listOpts.Params() + if err != nil { + return nil, err + } + params.Update(listParams) } - params.Update(listParams) } } } @@ -422,6 +424,14 @@ func (o *ScopedResourceListOptions) Params() (*jsonutils.JSONDict, error) { return optionsStructToParams(o) } +type MultiArchListOptions struct { + OsArch string `help:"Filter resource by arch" choices:"i386|x86|x86_32|x86_64|arm|aarch32|aarch64"` +} + +func (o *MultiArchListOptions) Params() (*jsonutils.JSONDict, error) { + return optionsStructToParams(o) +} + type BaseUpdateOptions struct { ID string `help:"ID or Name of resource to update"` Name string `help:"Name of resource to update"` diff --git a/pkg/mcclient/options/compute/servers.go b/pkg/mcclient/options/compute/servers.go index 1f3320d023..b713ba6b23 100644 --- a/pkg/mcclient/options/compute/servers.go +++ b/pkg/mcclient/options/compute/servers.go @@ -68,6 +68,7 @@ type ServerListOptions struct { ScalingGroup string `help:"ScalingGroup's id or name'"` options.BaseListOptions + options.MultiArchListOptions VpcProvider string `help:"filter by vpc's provider" json:"vpc_provider"`