resource

package
v0.0.0-...-9ec3720 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 6, 2021 License: AGPL-3.0 Imports: 33 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DeployResources

func DeployResources(args DeployResourcesArgs) (ids map[string]string, err error)

DeployResources uploads the bytes for the given files to the server and creates pending resource metadata for the all resource mentioned in the metadata. It returns a map of resource name to pending resource IDs.

func FormatAppTabular

func FormatAppTabular(writer io.Writer, value interface{}) error

FormatAppTabular returns a tabular summary of resources.

func FormatCharmTabular

func FormatCharmTabular(writer io.Writer, value interface{}) error

FormatCharmTabular returns a tabular summary of charm resources.

func NewCharmResourcesCommand

func NewCharmResourcesCommand() modelcmd.ModelCommand

NewCharmResourcesCommand returns a new command that lists resources defined by a charm.

func NewCharmResourcesCommandWithClient

func NewCharmResourcesCommandWithClient(client ResourceLister) modelcmd.ModelCommand

NewCharmResourcesCommandWithClient returns a new command that lists resources defined by a charm.

func NewListCommand

func NewListCommand(deps ListDeps) modelcmd.ModelCommand

NewListCommand returns a new command that lists resources defined by a charm.

func NewUploadCommand

func NewUploadCommand(deps UploadDeps) modelcmd.ModelCommand

NewUploadCommand returns a new command that lists resources defined by a charm.

func OpenResource

func OpenResource(resValue string, resType charmresource.Type, osOpen osOpenFunc) (modelcmd.ReadSeekCloser, error)

Types

type APIRoot

type APIRoot = func() (api.Connection, error)

APIRoot defines a way to create a new API root.

type BakeryClient

type BakeryClient = func() (*httpbakery.Client, error)

BakeryClient defines a way to create a bakery client.

type CharmID

type CharmID struct {
	// URL is the url of the charm.
	URL *charm.URL

	// Channel is the channel in which the charm was published.
	Channel corecharm.Channel
}

CharmID represents the charm identifier.

type CharmResourceLister

type CharmResourceLister interface {
	ListCharmResources(curl *charm.URL, origin apicharm.Origin) ([]charmresource.Resource, error)
}

CharmResourceLister lists the resource of a charm.

type CharmResourcesCommand

type CharmResourcesCommand struct {
	// contains filtered or unexported fields
}

CharmResourcesCommand implements the "juju charm-resources" command.

func (*CharmResourcesCommand) Info

func (c *CharmResourcesCommand) Info() *cmd.Info

Info implements cmd.Command.

func (*CharmResourcesCommand) Init

func (c *CharmResourcesCommand) Init(args []string) error

Init implements cmd.Command.

func (*CharmResourcesCommand) Run

func (c *CharmResourcesCommand) Run(ctx *cmd.Context) error

Run implements cmd.Command.

func (*CharmResourcesCommand) SetFlags

func (c *CharmResourcesCommand) SetFlags(f *gnuflag.FlagSet)

SetFlags implements cmd.Command.

type CharmStoreResourceLister

type CharmStoreResourceLister struct {
	BakeryClientFn      BakeryClient
	ControllerAPIRootFn ControllerAPIRoot
}

CharmStoreResourceLister defines a charm store resource lister.

func (*CharmStoreResourceLister) ListResources

func (c *CharmStoreResourceLister) ListResources(ids []CharmID) ([][]charmresource.Resource, error)

ListResources implements CharmResourceLister.

type CharmhubResourceLister

type CharmhubResourceLister struct {
	APIRootFn APIRoot
}

CharmhubResourceLister defines a charm hub resource lister.

func (*CharmhubResourceLister) ListResources

func (c *CharmhubResourceLister) ListResources(ids []CharmID) ([][]charmresource.Resource, error)

ListResources implements CharmResourceLister.

type ControllerAPIRoot

type ControllerAPIRoot = func() (api.Connection, error)

ControllerAPIRoot defines a way to create a new controller API root.

type CreateResourceListener

type CreateResourceListener = func(string, ResourceListerDependencies) (ResourceLister, error)

CreateResourceListener defines a factory function to create a resource lister.

type DeployClient

type DeployClient interface {
	// AddPendingResources adds pending metadata for store-based resources.
	AddPendingResources(applicationID string, chID apiresources.CharmID, csMac *macaroon.Macaroon, resources []charmresource.Resource) (ids []string, err error)

	// UploadPendingResource uploads data and metadata for a pending resource for the given application.
	UploadPendingResource(applicationID string, resource charmresource.Resource, filename string, r io.ReadSeeker) (id string, err error)
}

DeployClient exposes the functionality of the resources API needed for deploy.

type DeployResourcesArgs

type DeployResourcesArgs struct {
	// ApplicationID identifies the application being deployed.
	ApplicationID string

	// CharmID identifies the application's charm.
	CharmID apiresources.CharmID

	// CharmStoreMacaroon is the macaroon to use for the charm when
	// interacting with the charm store.
	CharmStoreMacaroon *macaroon.Macaroon

	// ResourceValues is the set of resources for which a value
	// was provided at the command-line.
	ResourceValues map[string]string

	// Revisions is the set of resources for which a revision
	// was provided at the command-line.
	Revisions map[string]int

	// ResourcesMeta holds the charm metadata for each of the resources
	// that should be added/updated on the controller.
	ResourcesMeta map[string]charmresource.Meta

	// Client is the resources API client to use during deploy.
	Client DeployClient

	// Filesystem provides access to the filesystem.
	Filesystem modelcmd.Filesystem
}

DeployResourcesArgs holds the arguments to DeployResources().

type FormattedAppResource

type FormattedAppResource struct {
	// These fields are exported for the sake of serialization.
	ID            string    `json:"resourceid,omitempty" yaml:"resourceid,omitempty"`
	ApplicationID string    `json:"applicationId,omitempty" yaml:"applicationId,omitempty"`
	Name          string    `json:"name" yaml:"name"`
	Type          string    `json:"type" yaml:"type"`
	Path          string    `json:"path" yaml:"path"`
	Description   string    `json:"description,omitempty" yaml:"description,omitempty"`
	Revision      string    `json:"revision,omitempty" yaml:"revision,omitempty"`
	Fingerprint   string    `json:"fingerprint" yaml:"fingerprint"`
	Size          int64     `json:"size" yaml:"size"`
	Origin        string    `json:"origin" yaml:"origin"`
	Used          bool      `json:"used" yaml:"used"`
	Timestamp     time.Time `json:"timestamp,omitempty" yaml:"timestamp,omitempty"`
	Username      string    `json:"username,omitempty" yaml:"username,omitempty"`

	CombinedRevision string `json:"-"`
	UsedYesNo        string `json:"-"`
	CombinedOrigin   string `json:"-"`
}

FormattedAppResource holds the formatted representation of a resource's info.

func FormatAppResource

func FormatAppResource(res resource.Resource) FormattedAppResource

FormatAppResource converts the resource info into a FormattedAppResource.

type FormattedApplicationDetails

type FormattedApplicationDetails struct {
	Resources []FormattedDetailResource `json:"resources,omitempty" yaml:"resources,omitempty"`
	Updates   []FormattedCharmResource  `json:"updates,omitempty" yaml:"updates,omitempty"`
}

FormattedApplicationDetails is the data for the tabular output for juju resources <application> --details.

func FormatApplicationDetails

func FormatApplicationDetails(sr resource.ApplicationResources) (FormattedApplicationDetails, error)

FormatApplicationDetails converts a ApplicationResources value into a formatted value for display on the command line.

type FormattedApplicationInfo

type FormattedApplicationInfo struct {
	Resources []FormattedAppResource   `json:"resources,omitempty" yaml:"resources,omitempty"`
	Updates   []FormattedCharmResource `json:"updates,omitempty" yaml:"updates,omitempty"`
}

FormattedApplicationInfo holds the formatted representation of the information about an application's resources.

type FormattedCharmResource

type FormattedCharmResource struct {
	// These fields are exported for the sake of serialization.
	Name        string `json:"name" yaml:"name"`
	Type        string `json:"type" yaml:"type"`
	Path        string `json:"path" yaml:"path"`
	Description string `json:"description,omitempty" yaml:"description,omitempty"`
	Revision    int    `json:"revision,omitempty" yaml:"revision,omitempty"`
	Fingerprint string `json:"fingerprint" yaml:"fingerprint"`
	Size        int64  `json:"size" yaml:"size"`
	Origin      string `json:"origin" yaml:"origin"`
}

FormattedCharmResource holds the formatted representation of a resource's info.

func FormatCharmResource

func FormatCharmResource(res charmresource.Resource) FormattedCharmResource

FormatCharmResource converts the resource info into a FormattedCharmResource.

type FormattedDetailResource

type FormattedDetailResource struct {
	UnitID      string               `json:"unitID" yaml:"unitID"`
	Unit        FormattedAppResource `json:"unit" yaml:"unit"`
	Expected    FormattedAppResource `json:"expected" yaml:"expected"`
	Progress    int64                `json:"progress,omitempty" yaml:"progress,omitempty"`
	UnitNumber  int                  `json:"-"`
	RevProgress string               `json:"-"`
}

FormattedDetailResource is the data for a single line of tabular output for juju resources <application> --details.

func FormatDetailResource

func FormatDetailResource(tag names.UnitTag, svc, unit resource.Resource, progress int64) FormattedDetailResource

FormatDetailResource converts the arguments into a FormattedApplicationResource.

type FormattedUnitDetails

type FormattedUnitDetails []FormattedDetailResource

FormattedDetailResource is the data for the tabular output for juju resources <unit> --details.

type ListClient

type ListClient interface {
	// ListResources returns info about resources for applications in the model.
	ListResources(applications []string) ([]resource.ApplicationResources, error)
	// Close closes the connection.
	Close() error
}

ListClient has the API client methods needed by ListCommand.

type ListCommand

type ListCommand struct {
	modelcmd.ModelCommandBase
	// contains filtered or unexported fields
}

ListCommand discovers and lists application or unit resources.

func (*ListCommand) Info

func (c *ListCommand) Info() *cmd.Info

Info implements cmd.Command.Info.

func (*ListCommand) Init

func (c *ListCommand) Init(args []string) error

Init implements cmd.Command.Init. It will return an error satisfying errors.BadRequest if you give it an incorrect number of arguments.

func (*ListCommand) Run

func (c *ListCommand) Run(ctx *cmd.Context) error

Run implements cmd.Command.Run.

func (*ListCommand) SetFlags

func (c *ListCommand) SetFlags(f *gnuflag.FlagSet)

SetFlags implements cmd.Command.SetFlags.

type ListDeps

type ListDeps struct {
	// NewClient returns the value that wraps the API for showing
	// resources from the server.
	NewClient func(*ListCommand) (ListClient, error)
}

ListDeps is a type that contains external functions that List needs.

type ResourceLister

type ResourceLister interface {
	ListResources(ids []CharmID) ([][]charmresource.Resource, error)
}

ResourceLister lists resources for the given charm ids.

type ResourceListerDependencies

type ResourceListerDependencies interface {
	BakeryClient() (*httpbakery.Client, error)
	NewControllerAPIRoot() (api.Connection, error)
	NewAPIRoot() (api.Connection, error)
}

ResourceListerDependencies defines the dependencies to create a store dependant resource lister.

type UploadClient

type UploadClient interface {
	// Upload sends the resource to Juju.
	Upload(application, name, filename string, resource io.ReadSeeker) error

	// ListResources returns info about resources for applications in the model.
	ListResources(applications []string) ([]resource.ApplicationResources, error)

	// Close closes the client.
	Close() error
}

UploadClient has the API client methods needed by UploadCommand.

type UploadCommand

type UploadCommand struct {
	modelcmd.ModelCommandBase
	// contains filtered or unexported fields
}

UploadCommand implements the upload command.

func (*UploadCommand) Info

func (c *UploadCommand) Info() *cmd.Info

Info implements cmd.Command.Info

func (*UploadCommand) Init

func (c *UploadCommand) Init(args []string) error

Init implements cmd.Command.Init. It will return an error satisfying errors.BadRequest if you give it an incorrect number of arguments.

func (*UploadCommand) Run

func (c *UploadCommand) Run(*cmd.Context) error

Run implements cmd.Command.Run.

type UploadDeps

type UploadDeps struct {
	// NewClient returns the value that wraps the API for uploading to the server.
	NewClient func(*UploadCommand) (UploadClient, error)
}

UploadDeps is a type that contains external functions that Upload depends on to function.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL