import "gopkg.in/juju/names.v3"
action.go application.go applicationoffer.go caasmodel.go charm.go cloud.go cloudcredential.go controller.go controlleragent.go environ.go filesystem.go ipaddress.go machine.go model.go payload.go relation.go set.go space.go storage.go subnet.go tag.go unit.go user.go volume.go
const ( ApplicationSnippet = "(?:[a-z][a-z0-9]*(?:-[a-z0-9]*[a-z][a-z0-9]*)*)" NumberSnippet = "(?:0|[1-9][0-9]*)" )
const ( ContainerTypeSnippet = "[a-z]+" ContainerSnippet = "/" + ContainerTypeSnippet + "/" + NumberSnippet + "" MachineSnippet = NumberSnippet + "(?:" + ContainerSnippet + ")*" )
const ( SpaceTagKind = "space" SpaceSnippet = "(?:[a-z0-9]+(?:-[a-z0-9]+)*)" )
const ( StorageTagKind = "storage" // StorageNameSnippet is the regular expression that describes valid // storage names (without the storage instance sequence number). StorageNameSnippet = "(?:[a-z][a-z0-9]*(?:-[a-z0-9]*[a-z][a-z0-9]*)*)" )
const ( UserTagKind = "user" LocalUserDomain = "local" )
const ActionSnippet = NumberSnippet
ActionSnippet defines the regexp for a valid Action Id. Actions are identified by a unique, incrementing number.
const ActionTagKind = "action"
const (
ApplicationOfferSnippet = "(?:[a-z][a-z0-9]*(?:-[a-z0-9]*[a-z][a-z0-9]*)*)"
)
const ApplicationOfferTagKind = "applicationoffer"
const ApplicationTagKind = "application"
const CAASModelTagKind = "caasmodel"
const CharmTagKind = "charm"
CharmTagKind specifies charm tag kind
const CloudCredentialTagKind = "cloudcred"
const CloudTagKind = "cloud"
const ControllerAgentTagKind = "controller"
ControllerAgentTagKind indicates that a tag belongs to a controller agent.
const ControllerTagKind = "controller"
ControllerTagKind indicates that a tag belongs to a controller.
const EnvironTagKind = "environment"
EnvironTagKind is DEPRECATED: model tags are used instead.
const FilesystemTagKind = "filesystem"
const IPAddressTagKind = "ipaddress"
const MachineTagKind = "machine"
const ModelTagKind = "model"
const ( // PayloadTagKind is used as the prefix for the string // representation of payload tags. PayloadTagKind = "payload" )
const RelationSnippet = "[a-z][a-z0-9]*(?:[_-][a-z0-9]+)*"
const RelationTagKind = "relation"
const SubnetTagKind = "subnet"
const UnitSnippet = "(" + ApplicationSnippet + ")/(" + NumberSnippet + ")"
UnitSnippet defines the regexp for a valid Unit Id.
const UnitTagKind = "unit"
const VolumeTagKind = "volume"
var ( // SeriesSnippet is a regular expression representing series SeriesSnippet = "[a-z]+([a-z0-9]+)?" // CharmNameSnippet is a regular expression representing charm name CharmNameSnippet = "[a-z][a-z0-9]*(-[a-z0-9]*[a-z][a-z0-9]*)*" )
IsContainerMachine returns whether id is a valid container machine id.
IsValidAction returns whether id is a valid action id.
IsValidApplication returns whether name is a valid application name.
IsValidApplicationOffer returns whether name is a valid application offer name.
IsValidCAASModel returns whether id is a valid CAAS model UUID.
IsValidCAASModelName returns whether name is a valid string safe for a CAAS model name.
IsValidCharm returns whether name is a valid charm url.
IsValidCloud returns whether id is a valid cloud ID.
IsValidCloudCredential returns whether id is a valid cloud credential ID.
IsValidCloudCredentialName returns whether name is a valid cloud credential name.
IsValidController returns whether id is a valid controller UUID.
IsValidControllerAgent returns whether id is a valid controller agent id.
IsValidControllerName returns whether name is a valid string safe for a controller name.
IsValidEnvironment returns whether id is a valid environment UUID.
IsValidFilesystem returns whether id is a valid filesystem id.
IsValidIPAddress returns whether id is a valid IP address ID. Here it simply is checked if it is a valid UUID.
IsValidMachine returns whether id is a valid machine id.
IsValidModel returns whether id is a valid model UUID.
IsValidModelName returns whether name is a valid string safe for a model name.
IsValidPayload returns whether id is a valid Juju ID for a charm payload. The ID must be a valid alpha-numeric (plus hyphens).
IsValidRelation returns whether key is a valid relation key.
IsValidSpace reports whether name is a valid space name.
IsValidStorage returns whether id is a valid storage instance ID.
IsValidSubnet returns whether id is a valid subnet id.
IsValidUnit returns whether name is a valid unit name.
IsValidUser returns whether id is a valid user id. Valid users may or may not be qualified with an @domain suffix. Examples of valid users include bob, bob@local, bob@somewhere-else, 0-a-f@123.
IsValidUserDomain returns whether the given user domain is valid.
IsValidUserName returns whether the given name is a valid name part of a user. That is, usernames with a domain suffix will return false.
IsValidVolume returns whether id is a valid volume ID.
ReadableString returns a human-readable string from the tag passed in. It currently supports unit and machine tags. Support for additional types can be added in as needed.
StorageName returns the storage name from a storage instance ID. StorageName returns an error if "id" is not a valid storage instance ID.
TagKind returns one of the *TagKind constants for the given tag, or an error if none matches.
UnitApplication returns the name of the application that the unit is associated with. It returns an error if unitName is not a valid unit name.
UnitNumber returns the number of the unit within the application. It returns an error if unitName is not a valid unit name.
NewActionTag returns the tag of an action with the given id (UUID).
ParseActionTag parses an action tag string.
func NewApplicationOfferTag(applicationOfferName string) ApplicationOfferTag
NewApplicationOfferTag returns the tag for the application with the given name.
func ParseApplicationOfferTag(applicationOfferTag string) (ApplicationOfferTag, error)
ParseApplicationOfferTag parses a application tag string.
func (t ApplicationOfferTag) Id() string
func (t ApplicationOfferTag) Kind() string
func (t ApplicationOfferTag) String() string
func NewApplicationTag(applicationName string) ApplicationTag
NewApplicationTag returns the tag for the application with the given name.
func ParseApplicationTag(applicationTag string) (ApplicationTag, error)
ParseApplicationTag parses a application tag string.
func (t ApplicationTag) Id() string
func (t ApplicationTag) Kind() string
func (t ApplicationTag) String() string
type CAASModelTag struct {
// contains filtered or unexported fields
}
CAASModelTag represents a tag used to describe a model.
func NewCAASModelTag(uuid string) CAASModelTag
NewCAASModelTag returns the tag of a CAAS model with the given CAAS model UUID.
func ParseCAASModelTag(caasModelTag string) (CAASModelTag, error)
ParseCAASModelTag parses a CAAS model tag string.
func (t CAASModelTag) Id() string
func (t CAASModelTag) Kind() string
func (t CAASModelTag) String() string
type CharmTag struct {
// contains filtered or unexported fields
}
CharmTag represents tag for charm using charm's URL
NewCharmTag returns the tag for the charm with the given url. It will panic if the given charm url is not valid.
ParseCharmTag parses a charm tag string.
Id satisfies Tag interface. Returns charm URL.
Kind satisfies Tag interface. Returns Charm tag kind.
String satisfies Tag interface. Produces string representation of charm tag.
type CloudCredentialTag struct {
// contains filtered or unexported fields
}
func NewCloudCredentialTag(id string) CloudCredentialTag
NewCloudCredentialTag returns the tag for the cloud with the given ID. It will panic if the given cloud ID is not valid.
func ParseCloudCredentialTag(s string) (CloudCredentialTag, error)
ParseCloudCredentialTag parses a cloud tag string.
func (t CloudCredentialTag) Cloud() CloudTag
Cloud returns the tag of the cloud to which the credential pertains.
func (t CloudCredentialTag) Id() string
Id implements Tag.Id. It returns the empty string if t is zero.
func (t CloudCredentialTag) IsZero() bool
IsZero reports whether t is zero.
func (t CloudCredentialTag) Kind() string
Kind is part of the Tag interface.
func (t CloudCredentialTag) Name() string
Name returns the cloud credential name, excluding the cloud and owner qualifiers.
func (t CloudCredentialTag) Owner() UserTag
Owner returns the tag of the user that owns the credential.
func (t CloudCredentialTag) String() string
String implements Tag.String. It returns the empty string if t is zero.
type CloudTag struct {
// contains filtered or unexported fields
}
NewCloudTag returns the tag for the cloud with the given ID. It will panic if the given cloud ID is not valid.
ParseCloudTag parses a cloud tag string.
type ControllerAgentTag struct {
// contains filtered or unexported fields
}
ControllerAgentTag represents a tag used to describe a controller.
func NewControllerAgentTag(id string) ControllerAgentTag
NewControllerAgentTag returns the tag of an controller agent with the given id.
func ParseControllerAgentTag(controllerAgentTag string) (ControllerAgentTag, error)
ParseControllerAgentTag parses a controller agent tag string.
func (t ControllerAgentTag) Id() string
Id implements Tag.
func (t ControllerAgentTag) Kind() string
Kind implements Tag.
func (t ControllerAgentTag) Number() int
Number returns the controller agent number.
func (t ControllerAgentTag) String() string
String implements Tag.
type ControllerTag struct {
// contains filtered or unexported fields
}
ControllerTag represents a tag used to describe a controller.
func NewControllerTag(uuid string) ControllerTag
NewControllerTag returns the tag of an controller with the given controller UUID.
func ParseControllerTag(controllerTag string) (ControllerTag, error)
ParseControllerTag parses an environ tag string.
func (t ControllerTag) Id() string
Id implements Tag.
func (t ControllerTag) Kind() string
Kind implements Tag.
func (t ControllerTag) String() string
String implements Tag.
type EnvironTag struct {
// contains filtered or unexported fields
}
func NewEnvironTag(uuid string) EnvironTag
NewEnvironTag returns the tag of an environment with the given environment UUID.
func ParseEnvironTag(environTag string) (EnvironTag, error)
ParseEnvironTag parses an environ tag string.
func (t EnvironTag) Id() string
func (t EnvironTag) Kind() string
func (t EnvironTag) String() string
type FilesystemTag struct {
// contains filtered or unexported fields
}
func NewFilesystemTag(id string) FilesystemTag
NewFilesystemTag returns the tag for the filesystem with the given name. It will panic if the given filesystem name is not valid.
func ParseFilesystemTag(filesystemTag string) (FilesystemTag, error)
ParseFilesystemTag parses a filesystem tag string.
func (t FilesystemTag) Id() string
func (t FilesystemTag) Kind() string
func (t FilesystemTag) String() string
type IPAddressTag struct {
// contains filtered or unexported fields
}
func NewIPAddressTag(id string) IPAddressTag
NewIPAddressTag returns the tag for the IP address with the given ID (UUID).
func ParseIPAddressTag(ipAddressTag string) (IPAddressTag, error)
ParseIPAddressTag parses an IP address tag string.
func (t IPAddressTag) Id() string
func (t IPAddressTag) Kind() string
func (t IPAddressTag) String() string
type MachineTag struct {
// contains filtered or unexported fields
}
func FilesystemMachine(tag FilesystemTag) (MachineTag, bool)
FilesystemMachine returns the machine component of the filesystem tag, and a boolean indicating whether or not there is a machine component.
func NewMachineTag(id string) MachineTag
NewMachineTag returns the tag for the machine with the given id.
func ParseMachineTag(machineTag string) (MachineTag, error)
ParseMachineTag parses a machine tag string.
func VolumeMachine(tag VolumeTag) (MachineTag, bool)
VolumeMachine returns the machine component of the volume tag, and a boolean indicating whether or not there is a machine component.
func (t MachineTag) ChildId() string
ChildId returns just the last segment of the ID.
func (t MachineTag) ContainerType() string
ContainerType returns the type of container for this machine. If the machine isn't a container, then the empty string is returned.
func (t MachineTag) Id() string
func (t MachineTag) Kind() string
func (t MachineTag) Parent() Tag
Parent returns the machineTag for the host of the container if the machineTag is a container, otherwise it returns nil.
func (t MachineTag) String() string
type ModelTag struct {
// contains filtered or unexported fields
}
ModelTag represents a tag used to describe a model.
NewModelTag returns the tag of an model with the given model UUID.
ParseModelTag parses an environ tag string.
type PayloadTag struct {
// contains filtered or unexported fields
}
PayloadTag represents a charm payload.
func NewPayloadTag(id string) PayloadTag
NewPayloadTag returns the tag for a charm's payload with the given id.
func ParsePayloadTag(tag string) (PayloadTag, error)
ParsePayloadTag parses a payload tag string. So ParsePayloadTag(tag.String()) === tag.
func (t PayloadTag) Id() string
Id implements Tag.Id. It always returns the same ID with which it was created. So NewPayloadTag(x).Id() == x for all valid x.
func (t PayloadTag) Kind() string
Kind implements Tag.
func (t PayloadTag) String() string
String implements Tag.
type RelationTag struct {
// contains filtered or unexported fields
}
func NewRelationTag(relationKey string) RelationTag
NewRelationTag returns the tag for the relation with the given key.
func ParseRelationTag(relationTag string) (RelationTag, error)
ParseRelationTag parses a relation tag string.
func (t RelationTag) Id() string
func (t RelationTag) Kind() string
func (t RelationTag) String() string
Set represents the Set data structure, and contains Tags.
NewSet creates and initializes a Set and populates it with inital values as specified in the parameters.
NewSetFromStrings creates and initializes a Set and populates it by using names.ParseTag on the initial values specified in the parameters.
Add puts a value into the set.
Contains returns true if the value is in the set, and false otherwise.
Difference returns a new Tags representing all the values in the target that are not in the parameter.
Intersection returns a new Set representing a intersection of the elments in the method target and the parameter.
IsEmpty is true for empty or uninitialized sets.
Remove takes a value out of the set. If value wasn't in the set to start with, this method silently succeeds.
Size returns the number of elements in the set.
SortedValues returns an ordered slice containing all the values in the set.
Union returns a new Set representing a union of the elments in the method target and the parameter.
Values returns an unordered slice containing all the values in the set.
type SpaceTag struct {
// contains filtered or unexported fields
}
NewSpaceTag returns the tag of a space with the given name.
ParseSpaceTag parses a space tag string.
type StorageTag struct {
// contains filtered or unexported fields
}
func NewStorageTag(id string) StorageTag
NewStorageTag returns the tag for the storage instance with the given ID. It will panic if the given string is not a valid storage instance Id.
func ParseStorageTag(s string) (StorageTag, error)
ParseStorageTag parses a storage tag string.
func (t StorageTag) Id() string
func (t StorageTag) Kind() string
func (t StorageTag) String() string
type SubnetTag struct {
// contains filtered or unexported fields
}
NewSubnetTag returns the tag for subnet with the given ID.
ParseSubnetTag parses a subnet tag string.
type Tag interface { // Kind returns the kind of the tag. // This method is for legacy compatibility, callers should // use equality or type assertions to verify the Kind, or type // of a Tag. Kind() string // Id returns an identifier for this Tag. // The contents and format of the identifier are specific // to the implementer of the Tag. Id() string fmt.Stringer // all Tags should be able to print themselves }
A Tag tags things that are taggable. Its purpose is to uniquely identify some resource and provide a consistent representation of that identity in both a human-readable and a machine-friendly format. The latter benefits use of the tag in over-the-wire transmission (e.g. in HTTP RPC calls) and in filename paths. The human-readable tag "name" is available through the Id method. The machine-friendly representation is provided by the String method.
The ParseTag function may be used to build a tag from the machine- formatted string. As well each kind of tag has its own Parse* method. Each kind also has a New* method (e.g. NewMachineTag) which produces a tag from the human-readable tag "ID".
In the context of juju, the API *must* use tags to represent the various juju entities. This contrasts with user-facing code, where tags *must not* be used. Internal to juju the use of tags is a judgement call based on the situation.
ActionReceiverFrom Tag returns an ActionReceiver tag from a machine or unit tag.
ActionReceiverTag returns an ActionReceiver Tag from a machine or unit name.
ParseTag parses a string representation into a Tag.
Code:
tag, err := ParseTag("user-100") if err != nil { panic(err) } switch tag := tag.(type) { case UserTag: fmt.Printf("User tag, id: %s\n", tag.Id()) default: fmt.Printf("Unknown tag, type %T\n", tag) }
type UnitTag struct {
// contains filtered or unexported fields
}
func FilesystemUnit(tag FilesystemTag) (UnitTag, bool)
FilesystemUnit returns the unit component of the filesystem tag, and a boolean indicating whether or not there is a unit component.
NewUnitTag returns the tag for the unit with the given name. It will panic if the given unit name is not valid.
ParseUnitTag parses a unit tag string.
VolumeUnit returns the unit component of the volume tag, and a boolean indicating whether or not there is a unit component.
Number returns the unit number from the tag, effectively the NumberSnippet from the validUnit regular expression.
ShortenedString returns the length-limited string for the tag. It can be used in places where there are strict length requirements, e.g. for a service name. It uses a hash so the resulting name should be unique. It will panic if maxLength is less than minShortenedLength.
type UserTag struct {
// contains filtered or unexported fields
}
UserTag represents a user that may be stored locally or associated with some external domain.
NewLocalUserTag returns the tag for a local user with the given name.
NewUserTag returns the tag for the user with the given name. It panics if the user name does not satisfy IsValidUser.
ParseUserTag parses a user tag string.
Domain returns the user domain. Users in the local database are from the LocalDomain. Other users are considered 'remote' users.
Id implements Tag.Id. Local users will always have an Id value without any domain.
IsLocal returns true if the tag represents a local user. Users without an explicit domain are considered local.
Name returns the name part of the user name without its associated domain.
WithDomain returns a copy of the user tag with the domain changed to the given argument. The domain must satisfy IsValidUserDomain or this function will panic.
type VolumeTag struct {
// contains filtered or unexported fields
}
NewVolumeTag returns the tag for the volume with the given ID. It will panic if the given volume ID is not valid.
ParseVolumeTag parses a volume tag string.
Package names imports 9 packages (graph) and is imported by 544 packages. Updated 2019-12-10. Refresh now. Tools for package owners.