Documentation ¶
Index ¶
- Constants
- Variables
- func IsContainerMachine(id string) bool
- func IsValidAction(id string) bool
- func IsValidCharm(url string) bool
- func IsValidDisplayName(name string) bool
- func IsValidEnvironment(id string) bool
- func IsValidFilesystem(id string) bool
- func IsValidIPAddress(id string) bool
- func IsValidMachine(id string) bool
- func IsValidModel(id string) bool
- func IsValidModelName(name string) bool
- func IsValidPayload(id string) bool
- func IsValidRelation(key string) bool
- func IsValidService(name string) bool
- func IsValidSpace(name string) bool
- func IsValidStorage(id string) bool
- func IsValidSubnet(cidr string) bool
- func IsValidUnit(name string) bool
- func IsValidUser(id string) bool
- func IsValidUserDomain(domain string) bool
- func IsValidUserName(name string) bool
- func IsValidVolume(id string) bool
- func ReadableString(tag Tag) string
- func StorageName(id string) (string, error)
- func TagKind(tag string) (string, error)
- func UnitService(unitName string) (string, error)
- type ActionTag
- type CharmTag
- type EnvironTag
- type FilesystemTag
- type IPAddressTag
- type MachineTag
- type ModelTag
- type PayloadTag
- type RelationTag
- type ServiceTag
- type SpaceTag
- type StorageTag
- type SubnetTag
- type Tag
- type UnitTag
- type UserTag
- type VolumeTag
Examples ¶
Constants ¶
const ( ContainerTypeSnippet = "[a-z]+" ContainerSnippet = "/" + ContainerTypeSnippet + "/" + NumberSnippet + "" MachineSnippet = NumberSnippet + "(?:" + ContainerSnippet + ")*" )
const ( ServiceSnippet = "(?:[a-z][a-z0-9]*(?:-[a-z0-9]*[a-z][a-z0-9]*)*)" NumberSnippet = "(?:0|[1-9][0-9]*)" )
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 ActionTagKind = "action"
const CharmTagKind = "charm"
CharmTagKind specifies charm tag kind
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 ServiceTagKind = "service"
const SubnetTagKind = "subnet"
const UnitTagKind = "unit"
const VolumeTagKind = "volume"
Variables ¶
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]*)*" // DisplayNameSnippet is a regular expression representing a valid // display-name for the charm and bundle metadata. DisplayNameSnippet = `^[A-Za-z0-9]+( [-A-Za-z0-9_]|[-A-Za-z0-9_])*$` )
Functions ¶
func IsContainerMachine ¶
IsContainerMachine returns whether id is a valid container machine id.
func IsValidAction ¶
IsValidAction returns whether id is a valid action id (UUID).
func IsValidCharm ¶
IsValidCharm returns whether name is a valid charm url.
func IsValidDisplayName ¶
IsValidDisplayName returns whether a display-name is valid.
func IsValidEnvironment ¶
IsValidEnvironment returns whether id is a valid environment UUID.
func IsValidFilesystem ¶
IsValidFilesystem returns whether id is a valid filesystem id.
func IsValidIPAddress ¶
IsValidIPAddress returns whether id is a valid IP address ID. Here it simply is checked if it is a valid UUID.
func IsValidMachine ¶
IsValidMachine returns whether id is a valid machine id.
func IsValidModel ¶
IsValidModel returns whether id is a valid model UUID.
func IsValidModelName ¶
IsValidModelName returns whether name is a valid string safe for a model name.
func IsValidPayload ¶
IsValidPayload returns whether id is a valid Juju ID for a charm payload. The ID must be a valid alpha-numeric (plus hyphens).
func IsValidRelation ¶
IsValidRelation returns whether key is a valid relation key.
func IsValidService ¶
IsValidService returns whether name is a valid service name.
func IsValidSpace ¶
IsValidSpace reports whether name is a valid space name.
func IsValidStorage ¶
IsValidStorage returns whether id is a valid storage instance ID.
func IsValidSubnet ¶
IsValidSubnet returns whether cidr is a valid subnet CIDR.
func IsValidUnit ¶
IsValidUnit returns whether name is a valid unit name.
func IsValidUser ¶
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.
func IsValidUserDomain ¶
IsValidUserDomain returns whether the given user domain is valid.
func IsValidUserName ¶
IsValidUserName returns whether the given name is a valid name part of a user. That is, usernames with a domain suffix will return false.
func IsValidVolume ¶
IsValidVolume returns whether id is a valid volume ID.
func ReadableString ¶
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.
func StorageName ¶
StorageName returns the storage name from a storage instance ID. StorageName returns an error if "id" is not a valid storage instance ID.
func TagKind ¶
TagKind returns one of the *TagKind constants for the given tag, or an error if none matches.
func UnitService ¶
UnitService returns the name of the service that the unit is associated with. It returns an error if unitName is not a valid unit name.
Types ¶
type ActionTag ¶
func NewActionTag ¶
NewActionTag returns the tag of an action with the given id (UUID).
func ParseActionTag ¶
ParseActionTag parses an action tag string.
type CharmTag ¶
type CharmTag struct {
// contains filtered or unexported fields
}
CharmTag represents tag for charm using charm's URL
func NewCharmTag ¶
NewCharmTag returns the tag for the charm with the given url. It will panic if the given charm url is not valid.
func ParseCharmTag ¶
ParseCharmTag parses a charm tag string.
type EnvironTag ¶
type EnvironTag struct {
// contains filtered or unexported fields
}
func NewEnvironTag ¶
func NewEnvironTag(uuid string) EnvironTag
NewEnvironTag returns the tag of an environment with the given environment UUID.
func ParseEnvironTag ¶
func ParseEnvironTag(environTag string) (EnvironTag, error)
ParseEnvironTag parses an environ tag string.
func (EnvironTag) Id ¶
func (t EnvironTag) Id() string
func (EnvironTag) Kind ¶
func (t EnvironTag) Kind() string
func (EnvironTag) String ¶
func (t EnvironTag) String() string
type FilesystemTag ¶
type FilesystemTag struct {
// contains filtered or unexported fields
}
func NewFilesystemTag ¶
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 ¶
func ParseFilesystemTag(filesystemTag string) (FilesystemTag, error)
ParseFilesystemTag parses a filesystem tag string.
func (FilesystemTag) Id ¶
func (t FilesystemTag) Id() string
func (FilesystemTag) Kind ¶
func (t FilesystemTag) Kind() string
func (FilesystemTag) String ¶
func (t FilesystemTag) String() string
type IPAddressTag ¶
type IPAddressTag struct {
// contains filtered or unexported fields
}
func NewIPAddressTag ¶
func NewIPAddressTag(id string) IPAddressTag
NewIPAddressTag returns the tag for the IP address with the given ID (UUID).
func ParseIPAddressTag ¶
func ParseIPAddressTag(ipAddressTag string) (IPAddressTag, error)
ParseIPAddressTag parses an IP address tag string.
func (IPAddressTag) Id ¶
func (t IPAddressTag) Id() string
func (IPAddressTag) Kind ¶
func (t IPAddressTag) Kind() string
func (IPAddressTag) String ¶
func (t IPAddressTag) String() string
type MachineTag ¶
type MachineTag struct {
// contains filtered or unexported fields
}
func FilesystemMachine ¶
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 ¶
func NewMachineTag(id string) MachineTag
NewMachineTag returns the tag for the machine with the given id.
func ParseMachineTag ¶
func ParseMachineTag(machineTag string) (MachineTag, error)
ParseMachineTag parses a machine tag string.
func VolumeMachine ¶
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 (MachineTag) Id ¶
func (t MachineTag) Id() string
func (MachineTag) Kind ¶
func (t MachineTag) Kind() string
func (MachineTag) String ¶
func (t MachineTag) String() string
type ModelTag ¶
type ModelTag struct {
// contains filtered or unexported fields
}
ModelTag represents a tag used to describe a model.
func NewModelTag ¶
NewModelTag returns the tag of an model with the given model UUID.
func ParseModelTag ¶
ParseModelTag parses an environ tag string.
type PayloadTag ¶
type PayloadTag struct {
// contains filtered or unexported fields
}
PayloadTag represents a charm payload.
func NewPayloadTag ¶
func NewPayloadTag(id string) PayloadTag
NewPayloadTag returns the tag for a charm's payload with the given id.
func ParsePayloadTag ¶
func ParsePayloadTag(tag string) (PayloadTag, error)
ParsePayloadTag parses a payload tag string. So ParsePayloadTag(tag.String()) === tag.
func (PayloadTag) Id ¶
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.
type RelationTag ¶
type RelationTag struct {
// contains filtered or unexported fields
}
func NewRelationTag ¶
func NewRelationTag(relationKey string) RelationTag
NewRelationTag returns the tag for the relation with the given key.
func ParseRelationTag ¶
func ParseRelationTag(relationTag string) (RelationTag, error)
ParseRelationTag parses a relation tag string.
func (RelationTag) Id ¶
func (t RelationTag) Id() string
func (RelationTag) Kind ¶
func (t RelationTag) Kind() string
func (RelationTag) String ¶
func (t RelationTag) String() string
type ServiceTag ¶
type ServiceTag struct {
Name string
}
func NewServiceTag ¶
func NewServiceTag(serviceName string) ServiceTag
NewServiceTag returns the tag for the service with the given name.
func ParseServiceTag ¶
func ParseServiceTag(serviceTag string) (ServiceTag, error)
ParseServiceTag parses a service tag string.
func (ServiceTag) Id ¶
func (t ServiceTag) Id() string
func (ServiceTag) Kind ¶
func (t ServiceTag) Kind() string
func (ServiceTag) String ¶
func (t ServiceTag) String() string
type SpaceTag ¶
type SpaceTag struct {
// contains filtered or unexported fields
}
func NewSpaceTag ¶
NewSpaceTag returns the tag of a space with the given name.
func ParseSpaceTag ¶
ParseSpaceTag parses a space tag string.
type StorageTag ¶
type StorageTag struct {
// contains filtered or unexported fields
}
func NewStorageTag ¶
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 ¶
func ParseStorageTag(s string) (StorageTag, error)
ParseStorageTag parses a storage tag string.
func (StorageTag) Id ¶
func (t StorageTag) Id() string
func (StorageTag) Kind ¶
func (t StorageTag) Kind() string
func (StorageTag) String ¶
func (t StorageTag) String() string
type SubnetTag ¶
type SubnetTag struct {
// contains filtered or unexported fields
}
func NewSubnetTag ¶
NewSubnetTag returns the tag for subnet with the given CIDR.
func ParseSubnetTag ¶
ParseSubnetTag parses a subnet tag string.
type Tag ¶
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.
func ActionReceiverFromTag ¶
ActionReceiverFrom Tag returns an ActionReceiver tag from a machine or unit tag.
func ActionReceiverTag ¶
ActionReceiverTag returns an ActionReceiver Tag from a machine or unit name.
type UnitTag ¶
type UnitTag struct {
// contains filtered or unexported fields
}
func NewUnitTag ¶
NewUnitTag returns the tag for the unit with the given name. It will panic if the given unit name is not valid.
In almost all cases it is more desirable to call NewUnitTagFromName which returns errors instead of panicing.
func NewUnitTagFromName ¶
NewUnitTag returns the tag for the unit with the given name. It will return an error if the given unit name is not valid.
func ParseUnitTag ¶
ParseUnitTag parses a unit tag string.
type UserTag ¶
type UserTag struct {
// contains filtered or unexported fields
}
UserTag represents a user that may be stored locally or associated with some external domain.
func NewLocalUserTag ¶
NewLocalUserTag returns the tag for a local user with the given name.
func NewUserTag ¶
NewUserTag returns the tag for the user with the given name. It panics if the user name does not satisfy IsValidUser.
func ParseUserTag ¶
ParseUserTag parses a user tag string.
func (UserTag) Canonical ¶
Canonical returns the user name and its domain in canonical form. Specifically, user tags in the local domain will always return an @local prefix, regardless of the id the user was created with. This is the only difference from the Id method.
func (UserTag) Domain ¶
Domain returns the user domain. Users in the local database are from the LocalDomain. Other users are considered 'remote' users.
func (UserTag) Id ¶
Id implements Tag.Id. It always returns the same id that it was created with, so NewUserTag(x).Id() == x for all valid users x. This means that local users might or might not have an @local domain in their id.
func (UserTag) WithDomain ¶
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 ¶
type VolumeTag struct {
// contains filtered or unexported fields
}
func NewVolumeTag ¶
NewVolumeTag returns the tag for the volume with the given ID. It will panic if the given volume ID is not valid.
func ParseVolumeTag ¶
ParseVolumeTag parses a volume tag string.