From 79f08937ab790762926a0b802c72788b63007643 Mon Sep 17 00:00:00 2001 From: zhaoxiangchun <1422928955@qq.com> Date: Tue, 8 Jun 2021 11:15:42 +0800 Subject: [PATCH] feat(mcclient): add bills dimension climc --- cmd/climc/shell/meter/bills_dimension.go | 20 +++++ pkg/mcclient/modules/mod_bills_dimension.go | 37 ++++++++ pkg/mcclient/options/meter/bills_dimension.go | 90 +++++++++++++++++++ 3 files changed, 147 insertions(+) create mode 100644 cmd/climc/shell/meter/bills_dimension.go create mode 100644 pkg/mcclient/modules/mod_bills_dimension.go create mode 100644 pkg/mcclient/options/meter/bills_dimension.go diff --git a/cmd/climc/shell/meter/bills_dimension.go b/cmd/climc/shell/meter/bills_dimension.go new file mode 100644 index 0000000000..27f5978755 --- /dev/null +++ b/cmd/climc/shell/meter/bills_dimension.go @@ -0,0 +1,20 @@ +package meter + +import ( + "yunion.io/x/onecloud/cmd/climc/shell" + "yunion.io/x/onecloud/pkg/mcclient/modules" + options "yunion.io/x/onecloud/pkg/mcclient/options/meter" +) + +func init() { + cmd := shell.NewResourceCmd(modules.BillingDimensionManager) + cmd.Create(&options.BillDimensionCreateOptions{}) + cmd.List(&options.BillDimensionListOptions{}) + cmd.Show(&options.BillDimensionShowOptions{}) + cmd.Delete(&options.BillDimensionDeleteOptions{}) + + cmdAnalysis := shell.NewResourceCmd(modules.BillingDimensionAnalysisManager) + cmdAnalysis.List(&options.BillDimensionAnalysisListOptions{}) + cmdAnalysis.Show(&options.BillDimensionAnalysisShowOptions{}) + +} diff --git a/pkg/mcclient/modules/mod_bills_dimension.go b/pkg/mcclient/modules/mod_bills_dimension.go new file mode 100644 index 0000000000..ab233eb6aa --- /dev/null +++ b/pkg/mcclient/modules/mod_bills_dimension.go @@ -0,0 +1,37 @@ +package modules + +import "yunion.io/x/onecloud/pkg/mcclient/modulebase" + +type SBillsDimensionManager struct { + *modulebase.ResourceManager +} + +var ( + BillingDimensionManager *SBillsDimensionManager + BillingDimensionAnalysisManager *SBillsDimensionManager +) + +func NewBillingDimensionManager() *SBillsDimensionManager { + man := NewMeterManager("billsdimension", "billsdimensions", + []string{"id", "name", "dimension_type", "dimension_items"}, + []string{}) + return &SBillsDimensionManager{ + ResourceManager: &man, + } +} + +func NewBillingDimensionAnalysisManager() *SBillsDimensionManager { + man := NewMeterManager("billsdimensionsanalysis", "billsdimensionsanalysis", + []string{"id", "name", "usage_type", "resource_type", "brand", "description"}, + []string{}) + return &SBillsDimensionManager{ + ResourceManager: &man, + } +} + +func init() { + BillingDimensionManager = NewBillingDimensionManager() + BillingDimensionAnalysisManager = NewBillingDimensionAnalysisManager() + register(BillingDimensionManager) + register(BillingDimensionAnalysisManager) +} diff --git a/pkg/mcclient/options/meter/bills_dimension.go b/pkg/mcclient/options/meter/bills_dimension.go new file mode 100644 index 0000000000..fdbbef4bfa --- /dev/null +++ b/pkg/mcclient/options/meter/bills_dimension.go @@ -0,0 +1,90 @@ +package meter + +import ( + "yunion.io/x/jsonutils" + + "yunion.io/x/onecloud/pkg/apis" + "yunion.io/x/onecloud/pkg/mcclient/options" +) + +type BillDimensionCreateOptions struct { + apis.StatusStandaloneResourceCreateInput + + DimensionAnalysisIds []string `json:"dimension_analysis_ids" help:"ids of DimensionAnalysis"` + DimensionItemName string `json:"dimension_item_name" help:"name of dimension item" required:"true"` + DimensionType string `json:"dimension_type" choices:"bill|resource_type"` +} + +func (o *BillDimensionCreateOptions) Params() (jsonutils.JSONObject, error) { + data := jsonutils.NewDict() + data.Add(jsonutils.NewString(o.Name), "name") + data.Add(jsonutils.NewString(o.DimensionType), "dimension_type") + + dimensionItem := jsonutils.NewDict() + dimensionItem.Add(jsonutils.NewString(o.DimensionItemName)) + dimensionItem.Add(jsonutils.NewStringArray(o.DimensionAnalysisIds), "dimension_analysis_ids") + + data.Add(jsonutils.NewArray(dimensionItem), "dimension_items") + return data, nil + +} + +type BillDimensionListOptions struct { + options.BaseListOptions + apis.EnabledResourceBaseListInput + + DimensionType string `json:"dimension_type"` +} + +func (o *BillDimensionListOptions) Params() (jsonutils.JSONObject, error) { + return options.ListStructToParams(o) +} + +type BillDimensionShowOptions struct { + ID string `help:"ID of bill dimension " json:"-"` +} + +func (o *BillDimensionShowOptions) Params() (jsonutils.JSONObject, error) { + return options.StructToParams(o) +} + +func (o *BillDimensionShowOptions) GetId() string { + return o.ID +} + +type BillDimensionDeleteOptions struct { + ID string `json:"-"` +} + +func (o *BillDimensionDeleteOptions) GetId() string { + return o.ID +} + +func (o *BillDimensionDeleteOptions) Params() (jsonutils.JSONObject, error) { + return options.StructToParams(o) +} + +type BillDimensionAnalysisListOptions struct { + options.BaseListOptions + apis.EnabledResourceBaseListInput + + UsageType string `json:"usage_type"` + ResourceType string `json:"resource_type"` + Description string `json:"description"` +} + +func (o *BillDimensionAnalysisListOptions) Params() (jsonutils.JSONObject, error) { + return options.ListStructToParams(o) +} + +type BillDimensionAnalysisShowOptions struct { + ID string `help:"ID of bill dimension " json:"-"` +} + +func (o *BillDimensionAnalysisShowOptions) Params() (jsonutils.JSONObject, error) { + return options.StructToParams(o) +} + +func (o *BillDimensionAnalysisShowOptions) GetId() string { + return o.ID +}