From beec785040390b88bdb79c49fec4c9888629fbcb Mon Sep 17 00:00:00 2001 From: zhengjiajie Date: Tue, 11 Dec 2018 16:29:50 +0800 Subject: [PATCH] add bill-detail file --- cmd/climc/shell/bill_details.go | 47 ++++++++++++++++++++++++ pkg/mcclient/modules/mod_bill_details.go | 14 +++++++ 2 files changed, 61 insertions(+) create mode 100644 cmd/climc/shell/bill_details.go create mode 100644 pkg/mcclient/modules/mod_bill_details.go diff --git a/cmd/climc/shell/bill_details.go b/cmd/climc/shell/bill_details.go new file mode 100644 index 0000000000..60cdc11ae8 --- /dev/null +++ b/cmd/climc/shell/bill_details.go @@ -0,0 +1,47 @@ +package shell + +import ( + "yunion.io/x/jsonutils" + "yunion.io/x/onecloud/pkg/mcclient" + "yunion.io/x/onecloud/pkg/mcclient/modules" + "yunion.io/x/onecloud/pkg/mcclient/options" +) + +func init() { + + type BillDetailListOptions struct { + options.BaseListOptions + STARTDATE string `"help":"start date of the bill_detail"` + ENDDATE string `"help":"end date of the bill_detail"` + ProjectId string `"help":"project id of the bill_detail"` + } + R(&BillDetailListOptions{}, "billdetail-list", "List all bill details", func(s *mcclient.ClientSession, args *BillDetailListOptions) error { + var params *jsonutils.JSONDict + { + var err error + params, err = args.BaseListOptions.Params() + if err != nil { + return err + + } + } + if len(args.STARTDATE) > 0 { + params.Add(jsonutils.NewString(args.STARTDATE), "start_date") + } + if len(args.ENDDATE) > 0 { + params.Add(jsonutils.NewString(args.ENDDATE), "end_date") + } + + if len(args.ProjectId) > 0 { + params.Add(jsonutils.NewString(args.ProjectId), "project_id") + } + + result, err := modules.BillDetails.List(s, params) + if err != nil { + return err + } + + printList(result, modules.BillDetails.GetColumns(s)) + return nil + }) +} diff --git a/pkg/mcclient/modules/mod_bill_details.go b/pkg/mcclient/modules/mod_bill_details.go new file mode 100644 index 0000000000..4f588feb4b --- /dev/null +++ b/pkg/mcclient/modules/mod_bill_details.go @@ -0,0 +1,14 @@ +package modules + +var ( + BillDetails ResourceManager +) + +func init() { + BillDetails = NewMeterManager("bill_detail", "bill_details", + []string{"bill_id", "account", "platform", "region", "sub_account_project", "res_id", + "res_type", "res_name", "start_time", "end_time", "charge_type", "item_rate", "item_fee"}, + []string{}, + ) + register(&BillDetails) +}