resource

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: May 27, 2016 License: BSD-2-Clause Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	StateUnknown = "unknown"
	StatePresent = "present"
	StateAbsent  = "absent"
	StateRunning = "running"
	StateStopped = "stopped"
)

Resource states

Variables

View Source
var ErrNoPackageProviderFound = errors.New("No suitable package provider found")

ErrNoPackageProviderFound is returned when no suitable provider is found

View Source
var Registry = make(map[string]RegistryItem)

Registry contains all known resources

Functions

func Register

func Register(item RegistryItem) error

Register adds a resource type to the registry

Types

type BaseFileResource

type BaseFileResource struct {
	// Path to the file
	Path string `hcl:"path"`

	// Permission bits to set on the file
	Mode int `hcl:"mode"`

	// Owner of the file
	Owner string `hcl:"owner"`

	// Group of the file
	Group string `hcl:"group"`

	// Source file to use when creating/updating the file
	Source string `hcl:"source"`

	// The file type we manage
	FileType string `hcl:"filetype"`

	// Recursively manage the directory
	Recursive bool `hcl:"recursive"`

	// Purge extra files if found
	Purge bool `hcl:"purge"`
}

BaseFileResource is the base resource for managing files

type BasePackageResource

type BasePackageResource struct {
	// Name of the package
	Name string `hcl:"name"`

	// Version of the package
	Version string `hcl:"version"`

	// Provider to use
	Provider string `hcl:"provider"`
}

BasePackageResource is the base resource type for package management It's purpose is to be embeded into other package resource providers.

type BaseResource

type BaseResource struct {
	// Type of the resource
	Type string `hcl:"-"`

	// Title of the resource
	Title string `hcl:"-"`

	// Resource configuration settings
	Config *Config `hcl:"-"`

	// Desired state of the resource
	State string `hcl:"state"`

	// Resources before which this resource should be processed
	Before []string `hcl:"before"`

	// Resources after which this resource should be processed
	After []string `hcl:"require"`
}

BaseResource is the base resource type for all resources The purpose of this type is to be embedded into other resources Partially implements the Resource interface

func (*BaseResource) Printf

func (br *BaseResource) Printf(format string, a ...interface{}) (int, error)

Printf works just like fmt.Printf except that it writes to the given resource writer object and prepends the resource id to the output

func (*BaseResource) ResourceID

func (br *BaseResource) ResourceID() string

ResourceID returns the unique resource id

func (*BaseResource) SetType

func (br *BaseResource) SetType(t string)

SetType sets the type for the resource. This method is primarily being used by meta resources.

func (*BaseResource) WantAfter

func (br *BaseResource) WantAfter() []string

WantAfter returns the resources after which this resource should be processed

func (*BaseResource) WantBefore

func (br *BaseResource) WantBefore() []string

WantBefore returns the resources before which this resource should be processed

type Config

type Config struct {
	// The site repo which contains module and data files
	SiteRepo string

	// Writer used by the resources
	Writer io.Writer
}

Config type contains various settings used by the resources

type FileResource

type FileResource struct {
	BaseResource     `hcl:",squash"`
	BaseFileResource `hcl:",squash"`
	// contains filtered or unexported fields
}

FileResource is a resource which manages files and directories

func (*FileResource) Create

func (fr *FileResource) Create() error

Create creates the file managed by the resource

func (*FileResource) Delete

func (fr *FileResource) Delete() error

Delete deletes the file managed by the resource

func (*FileResource) Evaluate

func (fr *FileResource) Evaluate() (State, error)

Evaluate evaluates the file resource

func (*FileResource) Update

func (fr *FileResource) Update() error

Update updates the files managed by the resource

type PacmanResource

type PacmanResource struct {
	BaseResource        `hcl:",squash"`
	BasePackageResource `hcl:",squash"`
}

PacmanResource type represents the resource for package management on Arch Linux systems

func (*PacmanResource) Create

func (pr *PacmanResource) Create() error

Create installs packages

func (*PacmanResource) Delete

func (pr *PacmanResource) Delete() error

Delete deletes packages

func (*PacmanResource) Evaluate

func (pr *PacmanResource) Evaluate() (State, error)

Evaluate evaluates the state of the resource

func (*PacmanResource) Update

func (pr *PacmanResource) Update() error

Update updates packages

type Provider

type Provider func(title string, item *ast.ObjectItem, config *Config) (Resource, error)

Provider type creates new resources from an HCL AST object item

type RegistryItem

type RegistryItem struct {
	// Name of the resource type
	Name string

	// Short desription of the resource
	Description string

	// Resource provider
	Provider Provider
}

RegistryItem type represents an item from the registry

type Resource

type Resource interface {
	// SetType sets the type for the resource
	// Primary usage of this method is by meta resources
	SetType(string)

	// ResourceID returns the unique identifier of a resource
	ResourceID() string

	// Returns the resources before which this resource shoud be processed
	WantBefore() []string

	// Returns the resources after which this resource should be processed
	WantAfter() []string

	// Evaluates the resource
	Evaluate() (State, error)

	// Creates the resource
	Create() error

	// Deletes the resource
	Delete() error

	// Updates the resource
	Update() error
}

Resource is the interface type for resources

func NewFileResource

func NewFileResource(title string, obj *ast.ObjectItem, config *Config) (Resource, error)

NewFileResource creates a new resource for managing files

func NewPackageResource

func NewPackageResource(title string, obj *ast.ObjectItem, config *Config) (Resource, error)

NewPackageResource creates a new resource for managing packages

func NewPacmanResource

func NewPacmanResource(title string, obj *ast.ObjectItem, config *Config) (Resource, error)

NewPacmanResource creates a new resource for managing packages using the pacman package manager on an Arch Linux system

func NewServiceResource

func NewServiceResource(title string, obj *ast.ObjectItem, config *Config) (Resource, error)

NewServiceResource creates a new resource for managing services using systemd on a GNU/Linux system

func NewShellResource

func NewShellResource(title string, obj *ast.ObjectItem, config *Config) (Resource, error)

NewShellResource creates a new resource for executing shell commands

func NewYumResource

func NewYumResource(title string, obj *ast.ObjectItem, config *Config) (Resource, error)

NewYumResource creates a new resource for managing packages using the yum package manager on RHEL/CentOS systems

type ServiceResource

type ServiceResource struct {
	BaseResource `hcl:",squash"`

	// Name of the service
	Name string `hcl:"name"`

	// If true then enable service during boot-time
	Enable bool `hcl:"enable"`

	// Systemd unit name
	UnitName string `hcl:"-"`
}

ServiceResource type is a resource which manages services on a GNU/Linux system running systemd

func (*ServiceResource) Create

func (sr *ServiceResource) Create() error

Create starts the service unit

func (*ServiceResource) Delete

func (sr *ServiceResource) Delete() error

Delete stops the service unit

func (*ServiceResource) Evaluate

func (sr *ServiceResource) Evaluate() (State, error)

Evaluate evaluates the state of the resource

func (*ServiceResource) Update

func (sr *ServiceResource) Update() error

Update updates the service unit state

type ShellResource

type ShellResource struct {
	BaseResource `hcl:",squash"`

	Command string `hcl:"command"`

	Creates string `hcl:"creates"`
}

ShellResource type is a resource which executes shell commands

func (*ShellResource) Create

func (sr *ShellResource) Create() error

Create executes the shell command

func (*ShellResource) Delete

func (sr *ShellResource) Delete() error

Delete is a no-op

func (*ShellResource) Evaluate

func (sr *ShellResource) Evaluate() (State, error)

Evaluate evaluates the state of the resource

func (*ShellResource) Update

func (sr *ShellResource) Update() error

Update is a no-op

type State

type State struct {
	// Current state of the resource
	Current string

	// Wanted state of the resource
	Want string

	// Indicates that a resource is in the desired state, but is
	// out of date and needs to be updated, e.g. a file resource is
	// present, but its permissions need to be corrected.
	Update bool
}

State type represents the current and wanted states of a resource

type YumResource

type YumResource struct {
	BaseResource        `hcl:",squash"`
	BasePackageResource `hcl:",squash"`
}

YumResource type represents the resource for package management on RHEL/CentOS systems

func (*YumResource) Create

func (yr *YumResource) Create() error

Create installs the package managed by the resource

func (*YumResource) Delete

func (yr *YumResource) Delete() error

Delete deletes the package managed by the resource

func (*YumResource) Evaluate

func (yr *YumResource) Evaluate() (State, error)

Evaluate evaluates the state of the package resource

func (*YumResource) Update

func (yr *YumResource) Update() error

Update updates packages

Jump to

Keyboard shortcuts

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