Documentation ¶
Overview ¶
Package resources provides core functionality for the "resources" feature in Juju.
Index ¶
- func AsMap(resources []Resource) map[string]Resource
- func DeserializeFingerprint(fpSum []byte) (resource.Fingerprint, error)
- func Sort(resources []Resource)
- type ApplicationResources
- type BasicAuthConfig
- type Content
- type DockerImageDetails
- type ImageRepoDetails
- type Opened
- type Opener
- type Resource
- type State
- type Token
- type TokenAuthConfig
- type UUID
- type UnitResources
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DeserializeFingerprint ¶
func DeserializeFingerprint(fpSum []byte) (resource.Fingerprint, error)
DeserializeFingerprint converts the serialized fingerprint back into a Fingerprint. "zero" values are treated appropriately.
Types ¶
type ApplicationResources ¶
type ApplicationResources struct { // Resources are the current version of the resource for the application that // resource-get will retrieve. Resources []Resource // CharmStoreResources provides the resource info from the charm // store for each of the application's resources. The information from // the charm store is current as of the last time the charm store // was polled. Each entry here corresponds to the same indexed entry // in the Resources field. CharmStoreResources []resource.Resource // UnitResources reports the currently-in-use version of resources for each // unit. UnitResources []UnitResources }
ApplicationResources contains the list of resources for the application and all its units.
func (ApplicationResources) Updates ¶
func (sr ApplicationResources) Updates() ([]resource.Resource, error)
Updates returns the list of charm store resources corresponding to the application's resources that are out of date. Note that there must be a charm store resource for each of the application resources and vice-versa. If they are out of sync then an error is returned.
type BasicAuthConfig ¶
type BasicAuthConfig struct { // Auth is the base64 encoded "username:password" string. Auth *Token // Username holds the username used to gain access to a non-public image. Username string // Password holds the password used to gain access to a non-public image. Password string }
BasicAuthConfig contains authorization information for basic auth.
func (BasicAuthConfig) Empty ¶
func (ba BasicAuthConfig) Empty() bool
Empty checks if the auth information is empty.
type Content ¶
type Content struct { // Data holds the resource content, ready to be read (once). Data io.Reader // Size is the byte count of the data. Size int64 // Fingerprint holds the checksum of the data. Fingerprint charmresource.Fingerprint }
Content holds a reader for the content of a resource along with details about that content.
func GenerateContent ¶
func GenerateContent(reader io.ReadSeeker) (Content, error)
GenerateContent returns a new Content for the given data stream.
type DockerImageDetails ¶
type DockerImageDetails struct { // RegistryPath holds the path of the Docker image (including host and sha256) in a docker registry. RegistryPath string ImageRepoDetails }
DockerImageDetails holds the details for a Docker resource type.
func (DockerImageDetails) IsPrivate ¶
func (did DockerImageDetails) IsPrivate() bool
IsPrivate shows if the image repo is private or not.
type ImageRepoDetails ¶
type ImageRepoDetails struct { BasicAuthConfig TokenAuthConfig // Repository is the namespace of the image repo. Repository string // ServerAddress is the auth server address. ServerAddress string // Region is the cloud region. Region string }
ImageRepoDetails contains authorization information for connecting to a Registry.
func (ImageRepoDetails) IsPrivate ¶
func (rid ImageRepoDetails) IsPrivate() bool
IsPrivate checks if the repository detail is private.
type Opened ¶
type Opened struct { Resource io.ReadCloser }
Opened provides both the resource info and content.
type Opener ¶
type Opener interface { // OpenResource returns an opened resource with a reader that will // stream the resource content. OpenResource(ctx context.Context, name string) (Opened, error) }
Opener exposes the functionality for opening a resource.
type Resource ¶
type Resource struct { resource.Resource // ID uniquely identifies a resource-application pair within the model. // Note that the model ignores pending resources (those with a // pending ID) except for in a few clearly pending-related places. // ID may be empty if the ID (assigned by the model) is not known. ID string // PendingID identifies that this resource is pending and // distinguishes it from other pending resources with the same model // ID (and from the active resource). The active resource for the // applications will not have PendingID set. // Deprecated. PendingID string // ApplicationID identifies the application for the resource. ApplicationID string // Username is the ID of who added the resource to the controller. // The ID is a username if the resource is uploaded from the cli // by a specific user. If the resources is downloaded from a repository, // the ID of the unit which triggered the download, or the name of // the application in the case of oci-images. Username string // Timestamp indicates when the resource was added to the model. Timestamp time.Time }
Resource defines a single resource within a Juju model.
Each application will have have exactly the same resources associated with it as are defined in the charm's metadata, no more, no less. When associated with the application the resource may have additional information associated with it.
A resource may be a "placeholder", meaning it is only partially populated before an upload (whether local or from the charm store). In that case the following fields are not set:
Timestamp Username
For "upload" placeholders, the following additional fields are not set:
Fingerprint Size
A resource may also be added to the model as "pending", meaning it is queued up to be used as a resource for the application. Until it is "activated", a pending resources is virtually invisible. There may be more that one pending resource for a given resource UUID.
func (Resource) IsPlaceholder ¶
IsPlaceholder indicates whether or not the resource is a "placeholder" (partially populated pending an upload).
func (Resource) RevisionString ¶
RevisionString returns the human-readable revision for the resource.
func (Resource) TimestampGranular ¶
TimestampGranular returns the timestamp at a resolution of 1 second.
type State ¶
type State string
State identifies the resource state in an application
const ( // StateAvailable represents a resource which will be used by any units at // this point in time StateAvailable State = "available" // StatePotential indicates there is a different revision of the resource // available in a repository. Used to let users know a resource can be // upgraded. StatePotential State = "potential" )
These are the valid resource states.
func ParseState ¶
ParseState converts the provided string into an State. If it is not a known state then an error is returned.
type Token ¶
type Token struct { // Value is the value of the token. Value string // ExpiresAt is the unix time in seconds and milliseconds when the authorization token expires. ExpiresAt *time.Time }
Token defines a token value with expiration time.
type TokenAuthConfig ¶
type TokenAuthConfig struct { Email string // IdentityToken is used to authenticate the user and get // an access token for the registry. IdentityToken *Token // RegistryToken is a bearer token to be sent to a registry RegistryToken *Token }
TokenAuthConfig contains authorization information for token auth. Juju does not support the docker credential helper because k8s does not support it either. https://kubernetes.io/docs/concepts/containers/images/#configuring-nodes-to-authenticate-to-a-private-registry
func (TokenAuthConfig) Empty ¶
func (ac TokenAuthConfig) Empty() bool
Empty checks if the auth information is empty.
type UUID ¶
type UUID string
UUID represents a resource unique identifier.
func ParseUUID ¶
ParseUUID returns a new UUID from the given string. If the string is not a valid uuid an error satisfying errors.NotValid will be returned.
func (UUID) Validate ¶
Validate ensures the consistency of the UUID. If the uuid is invalid an error satisfying errors.NotValid will be returned.
type UnitResources ¶
type UnitResources struct { // Tag is the tag of the unit. Tag names.UnitTag // Resources are the resource versions currently in use by this unit. Resources []Resource // DownloadProgress indicates the number of bytes of the unit's // resources, identified by name, that have been downloaded so far // by the uniter. This only applies to resources that are currently // being downloaded to the unit. All other resources for the unit // will not be found in the map. DownloadProgress map[string]int64 }
UnitResources conains the list of resources used by a unit.