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  }