github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/api/imagemanager/client.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package imagemanager
     5  
     6  import (
     7  	"github.com/juju/juju/api/base"
     8  	"github.com/juju/juju/apiserver/params"
     9  )
    10  
    11  // Client provides access to the imagemanager, used to list/delete images.
    12  type Client struct {
    13  	base.ClientFacade
    14  	facade base.FacadeCaller
    15  }
    16  
    17  // NewClient returns a new imagemanager client.
    18  func NewClient(st base.APICallCloser) *Client {
    19  	frontend, backend := base.NewClientFacade(st, "ImageManager")
    20  	return &Client{ClientFacade: frontend, facade: backend}
    21  }
    22  
    23  // ListImages returns the images.
    24  func (c *Client) ListImages(kind, series, arch string) ([]params.ImageMetadata, error) {
    25  	p := params.ImageFilterParams{
    26  		Images: []params.ImageSpec{
    27  			{Kind: kind, Series: series, Arch: arch},
    28  		},
    29  	}
    30  	var result params.ListImageResult
    31  	err := c.facade.FacadeCall("ListImages", p, &result)
    32  	return result.Result, err
    33  }
    34  
    35  // DeleteImage deletes the specified image.
    36  func (c *Client) DeleteImage(kind, series, arch string) error {
    37  	p := params.ImageFilterParams{
    38  		Images: []params.ImageSpec{
    39  			{Kind: kind, Series: series, Arch: arch},
    40  		},
    41  	}
    42  	results := new(params.ErrorResults)
    43  	err := c.facade.FacadeCall("DeleteImages", p, results)
    44  	if err != nil {
    45  		return err
    46  	}
    47  	return results.OneError()
    48  }