github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/api/machinemanager/machinemanager.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package machinemanager 5 6 import ( 7 "github.com/juju/errors" 8 9 "github.com/juju/juju/api/base" 10 "github.com/juju/juju/apiserver/params" 11 ) 12 13 const machineManagerFacade = "MachineManager" 14 15 // Client provides access to the machinemanager, used to add machines to state. 16 type Client struct { 17 base.ClientFacade 18 facade base.FacadeCaller 19 } 20 21 // NewClient returns a new machinemanager client. 22 func NewClient(st base.APICallCloser) *Client { 23 frontend, backend := base.NewClientFacade(st, machineManagerFacade) 24 return &Client{ClientFacade: frontend, facade: backend} 25 } 26 27 // AddMachines adds new machines with the supplied parameters, creating any requested disks. 28 func (client *Client) AddMachines(machineParams []params.AddMachineParams) ([]params.AddMachinesResult, error) { 29 args := params.AddMachines{ 30 MachineParams: machineParams, 31 } 32 results := new(params.AddMachinesResults) 33 err := client.facade.FacadeCall("AddMachines", args, results) 34 if len(results.Machines) != len(machineParams) { 35 return nil, errors.Errorf("expected %d result, got %d", len(machineParams), len(results.Machines)) 36 } 37 return results.Machines, err 38 }