github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/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 }