//Temporary hack to create an assembly from its id. //This is used by SetStatus. //We need add a Notifier interface duck typed by Box and Carton ? func NewBalances(id string, m map[string]string) (*Balances, error) { // Here skips balances fetching for the VMs which is launched on opennebula, // that does not have records on vertice database if id == "" { return nil, fmt.Errorf("account_id should not be empty") } args := api.NewArgs(m) args.Path = GETBALANCE + id cl := api.NewClient(args) response, err := cl.Get() if err != nil { return nil, err } htmlData, err := ioutil.ReadAll(response.Body) if err != nil { return nil, err } ac := &ApiBalances{} err = json.Unmarshal(htmlData, ac) if err != nil { return nil, err } b := &ac.Results[0] return b, nil }
func (bt *BillTransaction) Transact(m map[string]string) error { args := api.NewArgs(m) args.Path = NEWTRANSACTION cl := api.NewClient(args) _, err := cl.Post(bt) if err != nil { log.Debugf(err.Error()) return err } return nil }
func AccountsOrg(email string, m map[string]string) (*Organization, error) { args := api.NewArgs(m) args.Path = ACCOUNTS_GET + args.Email cl := api.NewClient(args) response, err := cl.Get() if err != nil { return nil, err } htmlData, err := ioutil.ReadAll(response.Body) if err != nil { return nil, err } o := &ApiOrganizations{} err = json.Unmarshal(htmlData, o) if err != nil { return nil, err } org := &o.Results return org, nil }
func NewAccounts(m map[string]string) (*Accounts, error) { args := api.NewArgs(m) args.Path = ACCOUNTS_GET + args.Email cl := api.NewClient(args) response, err := cl.Get() if err != nil { return nil, err } htmlData, err := ioutil.ReadAll(response.Body) if err != nil { return nil, err } ac := &ApiAccounts{} err = json.Unmarshal(htmlData, ac) if err != nil { return nil, err } a := &ac.Results return a, nil }
func (b *Balances) Deduct(bopts *BalanceOpts, m map[string]string) error { avail, err := strconv.ParseFloat(b.Credit, 64) if err != nil { return err } consume, cerr := strconv.ParseFloat(bopts.Consumed, 64) if cerr != nil { return cerr } b.UpdatedAt = time.Now() b.Credit = strconv.FormatFloat(avail-consume, 'f', 2, 64) args := api.NewArgs(m) args.Path = UPDATEBALANCES cl := api.NewClient(args) _, err = cl.Post(b) if err != nil { return err } return nil }