module

package
v0.0.47 Latest Latest
Warning

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

Go to latest
Published: Jun 25, 2023 License: MPL-2.0 Imports: 34 Imported by: 0

Documentation

Overview

Package module is reponsible for registry modules

Index

Constants

View Source
const (
	ModuleStatusPending       ModuleStatus = "pending"
	ModuleStatusNoVersionTags ModuleStatus = "no_version_tags"
	ModuleStatusSetupFailed   ModuleStatus = "setup_failed"
	ModuleStatusSetupComplete ModuleStatus = "setup_complete"

	ModuleVersionStatusPending             ModuleVersionStatus = "pending"
	ModuleVersionStatusCloning             ModuleVersionStatus = "cloning"
	ModuleVersionStatusCloneFailed         ModuleVersionStatus = "clone_failed"
	ModuleVersionStatusRegIngressReqFailed ModuleVersionStatus = "reg_ingress_req_failed"
	ModuleVersionStatusRegIngressing       ModuleVersionStatus = "reg_ingressing"
	ModuleVersionStatusRegIngressFailed    ModuleVersionStatus = "reg_ingress_failed"
	ModuleVersionStatusOK                  ModuleVersionStatus = "ok"
)

Variables

View Source
var ErrInvalidModuleRepo = errors.New("invalid repository name for module")

Functions

func NewService

func NewService(opts Options) *service

Types

type CreateModuleVersionOptions

type CreateModuleVersionOptions struct {
	ModuleID string
	Version  string
}

type CreateOptions

type CreateOptions struct {
	Name         string
	Provider     string
	Organization string
}

type GetModuleOptions

type GetModuleOptions struct {
	Name         string `schema:"name,required"`
	Provider     string `schema:"provider,required"`
	Organization string `schema:"organization,required"`
}

type ListModulesOptions

type ListModulesOptions struct {
	Organization string `schema:"organization_name,required"` // filter by organization name
}

type Module

type Module struct {
	ID           string
	CreatedAt    time.Time
	UpdatedAt    time.Time
	Name         string
	Provider     string
	Organization string // Module belongs to an organization
	Status       ModuleStatus
	Versions     []ModuleVersion  // versions sorted in descending order
	Connection   *repo.Connection // optional vcs repo connection
}

func NewModule

func NewModule(opts CreateOptions) *Module

func (*Module) AvailableVersions

func (m *Module) AvailableVersions() (avail []ModuleVersion)

func (*Module) Latest

func (m *Module) Latest() *ModuleVersion

Latest retrieves the latest version, which is the greatest version with an ok status. If there is such version, nil is returned.

func (*Module) LogValue

func (m *Module) LogValue() slog.Value

func (*Module) Version

func (m *Module) Version(v string) *ModuleVersion

type ModuleList

type ModuleList struct {
	*internal.Pagination
	Items []*Module
}

type ModuleService

type ModuleService = Service

type ModuleStatus

type ModuleStatus string

type ModuleVersion

type ModuleVersion struct {
	ID          string
	ModuleID    string
	Version     string
	CreatedAt   time.Time
	UpdatedAt   time.Time
	Status      ModuleVersionStatus
	StatusError string
}

func NewModuleVersion

func NewModuleVersion(opts CreateModuleVersionOptions) *ModuleVersion

type ModuleVersionStatus

type ModuleVersionStatus string

type PublishOptions

type PublishOptions struct {
	Repo          Repo
	VCSProviderID string
}

type PublishVersionOptions

type PublishVersionOptions struct {
	ModuleID string
	Version  string
	Ref      string
	Repo     Repo
	Client   cloud.Client
}

type Publisher

Publisher publishes new versions of terraform modules from VCS tags

func (*Publisher) Start

func (p *Publisher) Start(ctx context.Context) error

Start starts handling VCS events and publishing modules accordingly

type Repo

type Repo string

Repo is the path of repository for a module. It is expected to follow a certain format, which varies according to the cloud providing the Repo, but it should always end with '/<identifier>-<name>-<provider>', with name and provider being used to set the name and provider of the module.

func (Repo) Split

func (r Repo) Split() (name, provider string, err error)

type Service

type Service interface {
	// PublishModule publishes a module from a VCS repository.
	PublishModule(context.Context, PublishOptions) (*Module, error)
	PublishVersion(context.Context, PublishVersionOptions) error
	// CreateModule creates a module without a connection to a VCS repository.
	CreateModule(context.Context, CreateOptions) (*Module, error)
	ListModules(context.Context, ListModulesOptions) ([]*Module, error)
	GetModule(ctx context.Context, opts GetModuleOptions) (*Module, error)
	GetModuleByID(ctx context.Context, id string) (*Module, error)
	GetModuleByRepoID(ctx context.Context, repoID uuid.UUID) (*Module, error)
	DeleteModule(ctx context.Context, id string) (*Module, error)
	GetModuleInfo(ctx context.Context, versionID string) (*TerraformModule, error)

	CreateVersion(context.Context, CreateModuleVersionOptions) (*ModuleVersion, error)
	// contains filtered or unexported methods
}

type TerraformModule

type TerraformModule struct {
	*tfconfig.Module
	// contains filtered or unexported fields
}

TerraformModule is a module of terraform configuration

type UpdateModuleVersionStatusOptions

type UpdateModuleVersionStatusOptions struct {
	ID     string
	Status ModuleVersionStatus
	Error  string
}

Jump to

Keyboard shortcuts

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