Documentation
¶
Index ¶
- func IsValidName(name string) bool
- type Dependency
- type File
- type ID
- type Metadata
- type MetadataApp
- type MetadataIntegration
- type MetadataPack
- type Pack
- func (p *Pack) AddDependencies(packs ...*Pack)
- func (p *Pack) AddDependency(alias ID, pack *Pack)
- func (p *Pack) Alias() string
- func (p *Pack) AliasOrName() string
- func (p *Pack) Dependencies() []*Pack
- func (p *Pack) HasParent() bool
- func (p *Pack) ID() ID
- func (p *Pack) Name() string
- func (p *Pack) RootVariableFiles() map[ID]*File
- func (p *Pack) Validate() error
- func (p *Pack) VariablesPath() ID
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func IsValidName ¶
Types ¶
type Dependency ¶
type Dependency struct {
// Name on the pack dependency which must match the MetadataPack.Name
// value if the source is empty. Otherwise, the source dictates where the
// pack is loaded from, allowing the same pack to be used multiple times as
// a dependency with different variables.
Name string `hcl:"name,label"`
// Alias overrides the dependency pack's Name in references when set,
// allowing the same pack source to be used multiple times as with different
// variable values.
Alias string `hcl:"alias,optional"`
// Ref is the git reference of the pack at which to add. Ignored if not
// specifying a git source. Defaults to latest.
Ref string `hcl:"ref,optional"`
// Source is the remote source where the pack can be fetched. This string
// can follow any format as supported by go-getter or be a local path
// indicating the pack has already been downloaded.
Source string `hcl:"source,optional"`
// Enabled is a boolean flag to determine whether the dependency is
// available for loading. This allows easy administrative control.
Enabled *bool `hcl:"enabled,optional"`
}
Dependency is a single dependency of a pack. A pack can have multiple and each dependency represents an individual pack. A pack can be used as a dependency multiple times. This allows helper pack to define jobspec blocks which are used multiple times, with different variable substitutions.
func (*Dependency) AliasOrName ¶
func (d *Dependency) AliasOrName() string
AliasOrName returns the pack's Alias or the pack's Name, preferring the Alias when set.
func (*Dependency) ID ¶
func (d *Dependency) ID() ID
ID returns the identifier for the pack. The function returns a ID which implements the Stringer interface
func (*Dependency) IsLatest ¶
func (d *Dependency) IsLatest() bool
IsLatest works out if the user requested the HEAD of the dependency
type File ¶
type File struct {
// Name represents the name of the file as a reference from the pack
// directory.
Name string
// Path is the absolute path of the file in question.
Path string
// Content is the file contents as a byte array.
Content []byte
}
File is an individual file component of a Pack.
type ID ¶
type ID string
func (ID) AsPath ¶
AsPath returns a string with the dot delimiters converted to `/` for use with file system paths.
type Metadata ¶
type Metadata struct {
App *MetadataApp `hcl:"app,block"`
Pack *MetadataPack `hcl:"pack,block"`
Integration *MetadataIntegration `hcl:"integration,block"`
Dependencies []*Dependency `hcl:"dependency,block"`
}
Metadata is the contents of the Pack metadata.hcl file. It contains high-level information about the pack which is useful for operators and is also exposed as template variables during rendering.
func (*Metadata) AddToInterfaceMap ¶
AddToInterfaceMap adds the metadata information to the provided map as a new entry under the "nomad_pack" key. This is useful for adding this information to the template rendering data. Used in the deprecated V1 Renderer
func (*Metadata) ConvertToMapInterface ¶
ConvertToMapInterface returns a map[string]any representation of the metadata object. The conversion doesn't take into account empty values and will add them.
type MetadataApp ¶
type MetadataApp struct {
// URL is the HTTP(S) url to the homepage of the application to provide a
// quick reference to the documentation and help pages.
URL string `hcl:"url"`
// Author is an identifier to the author and maintainer of the pack such as
// HashiCorp or James Rasell
//
// Deprecated: Nomad Pack tech preview 4 removes this field, we keep it here for
// backwards compatibility only.
Author string `hcl:"author,optional"`
}
MetadataApp contains information regarding the application that the pack is focussed around.
type MetadataIntegration ¶
type MetadataIntegration struct {
// Identifier is a unique identifier that points to a specific integration
// registered in the HashiCorp Developer Integrations Library.
Identifier string `hcl:"identifier"`
// Flags is an array of strings referencing various booleans you
// can enable for your pack as it will display in the integrations
// library. All flag options are specified within this file:
// https://github.com/hashicorp/integrations/blob/main/flags.hcl
Flags []string `hcl:"flags,optional"`
// You can optionally override the pack.name value here to adjust
// the name that will be displayed in HashiCorp Developer. For example,
// your pack name may be "hello_world", whereas on HashiCorp Developer
// you would like the name to render as "Hello World".
Name string `hcl:"name,optional"`
}
MetadataIntegration contains information pertaining to the HashiCorp Developer (https://developer.hashicorp.com/) Integrations Library. This block is only needed for packs that are to be displayed in the integrations library.
Note: Currently, the integrations library is in closed beta, so you will not be able to register an integration without support from a HashiCorp team member. Furthermore, you may not be able to access some of the links specified below in this structs documentation.
type MetadataPack ¶
type MetadataPack struct {
// Name of the pack which acts as a convenience for use within template
// rendering.
Name string `hcl:"name"`
// Alias will optionally override the provided Pack name value when set
Alias string `hcl:"alias,optional"`
// Description is a small overview of the application that is deployed by
// the pack.
Description string `hcl:"description,optional"`
// URL is the HTTP(S) url of the pack which is acts as a convenience when
// managing packs within a registry.
//
// Deprecated: Nomad Pack tech preview 4 removes this field, we keep it here for
// backwards compatibility only.
URL string `hcl:"url,optional"`
// Version is the version of the pack which is acts as a convenience when
// managing packs within a registry.
Version string `hcl:"version"`
}
MetadataPack contains information regarding the pack itself.
type Pack ¶
type Pack struct {
// Metadata is the contents of the Pack metadata.hcl file. It contains
// high-level information about the pack which is useful for operators and
// is also exposed as template variables during rendering.
Metadata *Metadata
// TemplateFiles are the templated files which constitute this Pack. The
// list includes both helper templates and Nomad resource templates and all
// files within the list will be processed by the rendering engine.
TemplateFiles []*File
// AuxiliaryFiles are the files included in the "templates" directory of the
// Pack that will also be rendered, but not run.
AuxiliaryFiles []*File
// RootVariableFile is the file which contains the root variables that can
// include a description, type, and default value. This is parsed along
// with any override variables and stored within Variables.
RootVariableFile *File
// OutputTemplateFile contains the optional output template file. If this
// string is empty, it is assumed there is no output template to render and
// print.
OutputTemplateFile *File
// contains filtered or unexported fields
}
Pack is a single nomad-pack package and contains all the required information to successfully interrogate and render the pack.
func (*Pack) AddDependencies ¶
AddDependencies to the pack, correctly setting their parent pack identifier.
func (*Pack) AddDependency ¶
AddDependency to the pack, correctly setting their parent pack identifier and alias.
func (*Pack) Alias ¶
Alias returns the alias assigned to the pack. The canonical value for this comes from the alias on a running pack with a fallback to the Pack.Alias Metadata struct field.
func (*Pack) AliasOrName ¶
AliasOrName returns the pack's Alias or the pack's Name, preferring the Alias when set.
func (*Pack) Dependencies ¶
Dependencies returns the list of dependencies the Pack has.
func (*Pack) HasParent ¶
HasParent reports whether this pack has a parent or can be considered the top level pack.
func (*Pack) ID ¶
ID returns the identifier for the pack. The function returns a ID which implements the Stringer interface
func (*Pack) Name ¶
Name returns the name of the pack. The canonical value for this comes from the Pack.Name Metadata struct field.
func (*Pack) RootVariableFiles ¶
RootVariableFiles generates a mapping of all root variable files for the pack and all dependencies.
func (*Pack) Validate ¶
Validate the pack for terminal problems that can easily be detected at this stage. Anything that has potential to cause a panic should ideally be caught here.