module

package
v0.0.43 Latest Latest
Warning

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

Go to latest
Published: Apr 17, 2023 License: MPL-2.0 Imports: 32 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 added in v0.0.32

func NewService(opts Options) *service

func StartPublisher added in v0.0.32

func StartPublisher(ctx context.Context, opts PublisherOptions) error

StartPublisher starts handling VCS events and publishing modules accordingly

Types

type CreateModuleVersionOptions added in v0.0.32

type CreateModuleVersionOptions struct {
	ModuleID string
	Version  string
}

type CreateOptions added in v0.0.32

type CreateOptions struct {
	Name         string
	Provider     string
	Organization string
}

type GetModuleOptions added in v0.0.32

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

type ListModulesOptions added in v0.0.32

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

type Module added in v0.0.32

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 added in v0.0.32

func NewModule(opts CreateOptions) *Module

func (*Module) AvailableVersions added in v0.0.32

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

func (*Module) Latest added in v0.0.32

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) MarshalLog added in v0.0.32

func (m *Module) MarshalLog() any

func (*Module) Version added in v0.0.32

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

type ModuleList added in v0.0.32

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

type ModuleService added in v0.0.32

type ModuleService = Service

type ModuleStatus added in v0.0.32

type ModuleStatus string

type ModuleVersion added in v0.0.32

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

func NewModuleVersion added in v0.0.32

func NewModuleVersion(opts CreateModuleVersionOptions) *ModuleVersion

type ModuleVersionStatus added in v0.0.32

type ModuleVersionStatus string

type PublishOptions added in v0.0.32

type PublishOptions struct {
	Repo          Repo
	VCSProviderID string
}

type PublishVersionOptions added in v0.0.32

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

type PublisherOptions added in v0.0.32

type Repo added in v0.0.32

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 added in v0.0.32

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

type Service added in v0.0.32

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 added in v0.0.32

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

TerraformModule is a module of terraform configuration

type UpdateModuleVersionStatusOptions added in v0.0.32

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