project

package
v0.4.0-alfa5 Latest Latest
Warning

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

Go to latest
Published: Jan 3, 2021 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const OutputMarkerCatName = "outputMarkers"

Variables

View Source
var BackendsFactories = map[string]BackendsFactory{}

BackendsFactories map of backend providers factories. Use BackendsFactories["prov_name"].New() to create backend of provider 'prov_name'

View Source
var ModuleDriverFactories = map[string]ModuleDriverFactory{}

ModuleDriverFactories map of module drivers factories. Use ModulesFactories["type"].New() to create module driver of type 'type'

Functions

func BuildDep

func BuildDep(m Module, dep *Dependency) error

func ConvertToShellVar

func ConvertToShellVar(name string) string

func ConvertToShellVarName

func ConvertToShellVarName(name string) string

func ConvertToTfVarName

func ConvertToTfVarName(name string) string

func RegisterBackendFactory

func RegisterBackendFactory(f BackendsFactory, provider string) error

RegisterBackendFactory - register factory of some provider (like s3) in map.

func RegisterModuleDriverFactory

func RegisterModuleDriverFactory(modDrv ModuleDriverFactory, driverType string) error

RegisterModuleDriverFactory - register factory of some driver type (like terraform) in map.

func ScanMarkers

func ScanMarkers(data interface{}, procFunc MarkerScanner, module Module) error

ScanMarkers use marker scanner function to replace templated markers.

Types

type Backend

type Backend interface {
	Name() string
	Provider() string
	GetBackendHCL(Module) ([]byte, error)
	GetRemoteStateHCL(Module) ([]byte, error)
}

Backend interface for backend provider.

type BackendsFactory

type BackendsFactory interface {
	New([]byte, string) (Backend, error)
}

BackendsFactory - interface for backend provider factory. New() creates backend.

type Dependency

type Dependency struct {
	Module     Module
	ModuleName string
	InfraName  string
	Output     string
}

Dependency describe module dependency.

type Infrastructure

type Infrastructure struct {
	ProjectPtr  *Project
	Backend     Backend
	Name        string
	BackendName string
	Template    []byte
	Variables   map[string]interface{}
}

type MarkerScanner

type MarkerScanner func(data reflect.Value, module Module) (reflect.Value, error)

MarkerScanner type witch describe function for scaning markers in templated and unmarshaled yaml data.

type Module

type Module interface {
	CreateCodeDir(string) error
	Name() string
	InfraPtr() *Infrastructure
	ProjectPtr() *Project
	InfraName() string
	ReplaceMarkers() error
	GetApplyShellCmd() string
	GetDestroyShellCmd() string
	Dependencies() []*Dependency
	Self() interface{}
	// ExpectedOutputs return expected outputs.
	ExpectedOutputs() *map[string]bool
	// BuildDeps - check string dependencies, finds the corresponding module and add module ptr to dependency.
	BuildDeps() error
	PreHook() *Dependency
}

Module interface for module drivers.

func NewModule

func NewModule(spec map[string]interface{}, infra *Infrastructure) (Module, error)

NewModule creates and return module with needed driver.

type ModuleDriver

type ModuleDriver interface {
	GetTemplateFunctions() map[string]interface{}
	GetScanners() []MarkerScanner
	NewModule(map[string]interface{}, *Infrastructure) (Module, error)
}

type ModuleDriverFactory

type ModuleDriverFactory interface {
	New(*Project) ModuleDriver
}

ModuleDriverFactory - interface for module driver factory. New() creates module driver.

type ModulesPack

type ModulesPack []Module

ModulesPack that can be running in parallel.

type Project

type Project struct {
	Modules          map[string]Module
	ModuleDrivers    map[string]ModuleDriver
	Infrastructures  map[string]*Infrastructure
	TmplFunctionsMap template.FuncMap
	Backends         map[string]Backend
	DeploySequence   []ModulesPack
	Markers          map[string]interface{}
	// contains filtered or unexported fields
}

Project describes main config with user-defined variables.

func NewProject

func NewProject(configs [][]byte) (*Project, error)

NewProject creates init and check new project.

func (*Project) CheckContainsMarkers

func (p *Project) CheckContainsMarkers(data string, kinds ...string) bool

CheckContainsMarkers - check if string contains any template markers.

func (*Project) CreateMarker

func (p *Project) CreateMarker(markerType string) string

CreateMarker generate hash string for template markers.

func (*Project) GenCode

func (p *Project) GenCode(codeStructName string) error

GenCode generate all terraform code for project.

Jump to

Keyboard shortcuts

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