Documentation ¶
Index ¶
Constants ¶
const (
// Version is the version number of the current Facade.
Version = 1
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CharmStore ¶
type CharmStore interface { // ListResources composes, for each of the identified charms, the // list of details for each of the charm's resources. Those details // are those associated with the specific charm revision. They // include the resource's metadata and revision. ListResources([]charmstore.CharmID) ([][]charmresource.Resource, error) // ResourceInfo returns the metadata for the given resource. ResourceInfo(charmstore.ResourceRequest) (charmresource.Resource, error) }
CharmStore exposes the functionality of the charm store as needed here.
type DataStore ¶
type DataStore interface { UploadDataStore // contains filtered or unexported methods }
DataStore is the functionality of Juju's state needed for the resources API.
type Facade ¶
type Facade struct {
// contains filtered or unexported fields
}
Facade is the public API facade for resources.
func NewFacade ¶
func NewFacade(store DataStore, newClient func() (CharmStore, error)) (*Facade, error)
NewFacade returns a new resoures facade for the given Juju state.
func (Facade) AddPendingResources ¶
func (f Facade) AddPendingResources(args api.AddPendingResourcesArgs) (api.AddPendingResourcesResult, error)
AddPendingResources adds the provided resources (info) to the Juju model in a pending state, meaning they are not available until resolved.
func (Facade) ListResources ¶
func (f Facade) ListResources(args api.ListResourcesArgs) (api.ResourcesResults, error)
ListResources returns the list of resources for the given service.
type LegacyHTTPHandler ¶
type LegacyHTTPHandler struct { // Connect opens a connection to state resources. Connect func(*http.Request) (DataStore, names.Tag, error) // HandleUpload provides the upload functionality. HandleUpload func(username string, st DataStore, req *http.Request) (*api.UploadResult, error) }
LegacyHTTPHandler is the HTTP handler for the resources endpoint. We use it rather having a separate handler for each HTTP method since registered API handlers must handle *all* HTTP methods currently.
func NewLegacyHTTPHandler ¶
func NewLegacyHTTPHandler(connect func(*http.Request) (DataStore, names.Tag, error)) *LegacyHTTPHandler
NewLegacyHTTPHandler creates a new http.Handler for the resources endpoint.
func (*LegacyHTTPHandler) ServeHTTP ¶
func (h *LegacyHTTPHandler) ServeHTTP(resp http.ResponseWriter, req *http.Request)
ServeHTTP implements http.Handler.
type UploadDataStore ¶
type UploadDataStore interface { // GetResource returns the identified resource. GetResource(serviceID, name string) (resource.Resource, error) // GetPendingResource returns the identified resource. GetPendingResource(serviceID, name, pendingID string) (resource.Resource, error) // SetResource adds the resource to blob storage and updates the metadata. SetResource(serviceID, userID string, res charmresource.Resource, r io.Reader) (resource.Resource, error) // UpdatePendingResource adds the resource to blob storage and updates the metadata. UpdatePendingResource(serviceID, pendingID, userID string, res charmresource.Resource, r io.Reader) (resource.Resource, error) }
UploadDataStore describes the the portion of Juju's "state" needed for handling upload requests.
type UploadHandler ¶
type UploadHandler struct { // Username is the ID of the user making the upload request. Username string // Store is the data store into which the resource will be stored. Store UploadDataStore }
UploadHandler provides the functionality to handle upload requests.
func (UploadHandler) HandleRequest ¶
func (uh UploadHandler) HandleRequest(req *http.Request) (*api.UploadResult, error)
HandleRequest handles a resource upload request.
func (UploadHandler) ReadResource ¶
func (uh UploadHandler) ReadResource(req *http.Request) (*UploadedResource, error)
ReadResource extracts the relevant info from the request.
type UploadedResource ¶
type UploadedResource struct { // Service is the name of the service associated with the resource. Service string // PendingID is the resource-specific sub-ID for a pending resource. PendingID string // Resource is the information about the resource. Resource charmresource.Resource // Data holds the resource blob. Data io.ReadCloser }
UploadedResource holds both the information about an uploaded resource and the reader containing its data.