organization

package
v0.9.1 Latest Latest
Warning

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

Go to latest
Published: Apr 4, 2024 License: MPL-2.0 Imports: 24 Imported by: 0

Documentation

Overview

Package organization is responsible for OTF organizations

Index

Constants

View Source
const (
	DefaultSessionTimeout    = 20160
	DefaultSessionExpiration = 20160
)
View Source
const OrganizationTokenKind tokens.Kind = "organization_token"

Variables

This section is empty.

Functions

func NewCommand

func NewCommand(client *otfapi.Client) *cobra.Command

Types

type Authorizer

type Authorizer struct {
	logr.Logger
}

Authorizer authorizes access to an organization

func (*Authorizer) CanAccess

func (a *Authorizer) CanAccess(ctx context.Context, action rbac.Action, name string) (internal.Subject, error)

type CLI

type CLI struct {
	// contains filtered or unexported fields
}

type Client

type Client struct {
	*otfapi.Client

	Service
}

func (*Client) CreateOrganization

func (c *Client) CreateOrganization(ctx context.Context, options CreateOptions) (*Organization, error)

CreateOrganization creates a new organization with the given options.

func (*Client) DeleteOrganization

func (c *Client) DeleteOrganization(ctx context.Context, organization string) error

DeleteOrganization deletes an organization via http.

type CreateOptions

type CreateOptions struct {
	Name *string

	// TFE fields that OTF does not support but persists merely to pass the
	// go-tfe integration tests
	Email                      *string
	CollaboratorAuthPolicy     *string
	CostEstimationEnabled      *bool
	SessionRemember            *int
	SessionTimeout             *int
	AllowForceDeleteWorkspaces *bool
}

CreateOptions represents the options for creating an organization. See types.CreateOptions for more details.

type CreateOrganizationTokenOptions

type CreateOrganizationTokenOptions struct {
	Organization string `schema:"organization_name,required"`
	Expiry       *time.Time
}

CreateOrganizationTokenOptions are options for creating an organization token via the service endpoint

type Entitlements

type Entitlements struct {
	ID                    string
	Agents                bool
	AuditLogging          bool
	CostEstimation        bool
	Operations            bool
	PrivateModuleRegistry bool
	SSO                   bool
	Sentinel              bool
	StateStorage          bool
	Teams                 bool
	VCSIntegrations       bool
}

OTF is free and therefore the user is entitled to all currently supported services.

type ListOptions

type ListOptions struct {
	resource.PageOptions
}

ListOptions represents the options for listing organizations.

type Options

type Options struct {
	RestrictOrganizationCreation bool
	TokensService                *tokens.Service

	*sql.DB
	*tfeapi.Responder
	*sql.Listener
	html.Renderer
	logr.Logger
}

type Organization

type Organization struct {
	ID        string    `jsonapi:"primary,organizations"`
	CreatedAt time.Time `jsonapi:"attribute" json:"created-at"`
	UpdatedAt time.Time `jsonapi:"attribute" json:"updated-at"`
	Name      string    `jsonapi:"attribute" json:"name"`

	// TFE fields that OTF does not support but persists merely to pass the
	// go-tfe integration tests
	Email                      *string
	CollaboratorAuthPolicy     *string
	SessionRemember            *int
	SessionTimeout             *int
	AllowForceDeleteWorkspaces bool
	CostEstimationEnabled      bool
}

Organization is an OTF organization, comprising workspaces, users, etc.

func NewOrganization

func NewOrganization(opts CreateOptions) (*Organization, error)

func (*Organization) String

func (org *Organization) String() string

func (*Organization) Update

func (org *Organization) Update(opts UpdateOptions) error

type OrganizationPage

type OrganizationPage struct {
	html.SitePage

	Organization string
}

OrganizationPage contains data shared by all organization-based pages.

func NewPage

func NewPage(r *http.Request, title, organization string) OrganizationPage

type OrganizationToken

type OrganizationToken struct {
	ID        string
	CreatedAt time.Time
	// Token belongs to an organization
	Organization string
	// Optional expiry.
	Expiry *time.Time
}

OrganizationToken provides information about an API token for an organization

func (*OrganizationToken) CanAccessOrganization

func (u *OrganizationToken) CanAccessOrganization(action rbac.Action, org string) bool

func (*OrganizationToken) CanAccessSite

func (u *OrganizationToken) CanAccessSite(action rbac.Action) bool

func (*OrganizationToken) CanAccessTeam

func (u *OrganizationToken) CanAccessTeam(rbac.Action, string) bool

func (*OrganizationToken) CanAccessWorkspace

func (u *OrganizationToken) CanAccessWorkspace(action rbac.Action, policy internal.WorkspacePolicy) bool

func (*OrganizationToken) IsOwner

func (u *OrganizationToken) IsOwner(organization string) bool

func (*OrganizationToken) IsSiteAdmin

func (u *OrganizationToken) IsSiteAdmin() bool

func (*OrganizationToken) Organizations

func (u *OrganizationToken) Organizations() []string

func (*OrganizationToken) String

func (u *OrganizationToken) String() string

type Service

type Service struct {
	RestrictOrganizationCreation bool

	internal.Authorizer // authorize access to org
	logr.Logger
	// contains filtered or unexported fields
}

func NewService

func NewService(opts Options) *Service

func (*Service) AddHandlers

func (s *Service) AddHandlers(r *mux.Router)

func (*Service) AfterCreateOrganization

func (s *Service) AfterCreateOrganization(hook func(context.Context, *Organization) error)

func (*Service) BeforeDeleteOrganization

func (s *Service) BeforeDeleteOrganization(hook func(context.Context, *Organization) error)

func (*Service) Create

func (s *Service) Create(ctx context.Context, opts CreateOptions) (*Organization, error)

Create creates an organization. Only users can create organizations, or, if RestrictOrganizationCreation is true, then only the site admin can create organizations. Creating an organization automatically creates an owners team and adds creator as an owner.

func (*Service) CreateToken

CreateToken creates an organization token. If an organization token already exists it is replaced.

func (*Service) Delete

func (s *Service) Delete(ctx context.Context, name string) error

func (*Service) DeleteToken

func (s *Service) DeleteToken(ctx context.Context, organization string) error

func (*Service) Get

func (s *Service) Get(ctx context.Context, name string) (*Organization, error)

func (*Service) GetEntitlements

func (s *Service) GetEntitlements(ctx context.Context, organization string) (Entitlements, error)

func (*Service) GetOrganizationToken

func (s *Service) GetOrganizationToken(ctx context.Context, organization string) (*OrganizationToken, error)

func (*Service) List

func (s *Service) List(ctx context.Context, opts ListOptions) (*resource.Page[*Organization], error)

List lists organizations according to the subject. If the subject has site-wide permission to list organizations then all organizations are listed. Otherwise: Subject is a user: list their organization memberships Subject is an agent: return its organization Subject is an organization token: return its organization Subject is a team: return its organization

func (*Service) ListTokens

func (s *Service) ListTokens(ctx context.Context, organization string) ([]*OrganizationToken, error)

func (*Service) Update

func (s *Service) Update(ctx context.Context, name string, opts UpdateOptions) (*Organization, error)

func (*Service) WatchOrganizations

func (s *Service) WatchOrganizations(ctx context.Context) (<-chan pubsub.Event[*Organization], func())

type UpdateOptions

type UpdateOptions struct {
	Name            *string
	SessionRemember *int
	SessionTimeout  *int

	// TFE fields that OTF does not support but persists merely to pass the
	// go-tfe integration tests
	Email                      *string
	CollaboratorAuthPolicy     *string
	CostEstimationEnabled      *bool
	AllowForceDeleteWorkspaces *bool
}

UpdateOptions represents the options for updating an organization.

Jump to

Keyboard shortcuts

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