projects

package
v0.0.75 Latest Latest
Warning

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

Go to latest
Published: Nov 22, 2024 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Overview

Package projects contains utilities for working with projects.

Index

Constants

View Source
const (
	// MinderMetadataVersion is the version of the metadata format.
	MinderMetadataVersion = "v1alpha1"
)

Variables

View Source
var (
	// ErrProjectAlreadyExists is returned when a project with the same name already exists
	ErrProjectAlreadyExists = errors.New("project already exists")
)
View Source
var (
	// ErrValidationFailed is returned when a project fails validation
	ErrValidationFailed = fmt.Errorf("validation failed")
)

Functions

func SerializeMetadata

func SerializeMetadata(meta *Metadata) ([]byte, error)

SerializeMetadata serializes the given Metadata object into JSON.

func ValidateName

func ValidateName(name string) error

ValidateName validates the given project name.

Types

type Metadata

type Metadata struct {
	Version      string `json:"version"`
	SelfEnrolled bool   `json:"self_enrolled"`

	// This will be deprecated in favor of PublicMetadataV1.
	Description string `json:"description"`

	// Public is a field that is meant to be read by other systems.
	// It will be exposed to the public, e.g. via a UI.
	Public PublicMetadataV1 `json:"public"`
}

Metadata contains metadata relevant for a project.

func NewSelfEnrolledMetadata

func NewSelfEnrolledMetadata(projectName string) Metadata

NewSelfEnrolledMetadata returns a new Metadata object with the SelfEnrolled field set to true.

func ParseMetadata

func ParseMetadata(proj *db.Project) (*Metadata, error)

ParseMetadata parses the given JSON data into a Metadata object.

type ProjectCreator

type ProjectCreator interface {

	// ProvisionSelfEnrolledProject creates the core default components of the project
	// (project, marketplace subscriptions, etc.) but *does not* create a project.
	ProvisionSelfEnrolledProject(
		ctx context.Context,
		qtx db.Querier,
		projectName string,
		userSub string,
	) (outproj *db.Project, projerr error)
}

ProjectCreator encapsulates operations for managing projects TODO: There are several follow-ups needed here: 1. Move the delete operations into this interface 2. The interface is very GitHub-specific. It needs to be made more generic.

func NewProjectCreator

func NewProjectCreator(authzClient authz.Client,
	marketplace marketplaces.Marketplace,
	profilesCfg *server.DefaultProfilesConfig,
	featuresCfg *server.FeaturesConfig,
) ProjectCreator

NewProjectCreator creates a new instance of the project creator

type ProjectDeleter

type ProjectDeleter interface {
	// CleanUpUnmanagedProjects deletes a project if it has no role assignments left
	CleanUpUnmanagedProjects(
		ctx context.Context,
		subject string,
		proj uuid.UUID,
		querier db.Querier,
	) error

	// DeleteProject deletes a project and authorization relationships
	DeleteProject(
		ctx context.Context,
		proj uuid.UUID,
		querier db.Querier,
	) error
}

ProjectDeleter encapsulates operations for deleting projects This is a separate interface/struct to ProjectCreator to avoid a circular dependency issue.

func NewProjectDeleter

func NewProjectDeleter(
	authzClient authz.Client,
	providerManager manager.ProviderManager,
) ProjectDeleter

NewProjectDeleter creates a new instance of the project deleter

type PublicMetadataV1

type PublicMetadataV1 struct {
	Description string `json:"description"`
	DisplayName string `json:"display_name"`
}

PublicMetadataV1 contains public metadata relevant for a project.

Directories

Path Synopsis
Package features provides the features checks for the projects
Package features provides the features checks for the projects

Jump to

Keyboard shortcuts

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