mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-19 02:37:24 +08:00
feat(mcclient): add bills dimension climc
This commit is contained in:
@@ -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{})
|
||||
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user