controlplane

package
v0.0.47 Latest Latest
Warning

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

Go to latest
Published: Apr 16, 2024 License: Apache-2.0 Imports: 91 Imported by: 0

Documentation

Overview

Package controlplane contains the gRPC server implementation for the control plane

Package controlplane contains the control plane API for the minder.

Index

Constants

View Source
const (
	WebhookActionEventDeleted     = "deleted"
	WebhookActionEventOpened      = "opened"
	WebhookActionEventClosed      = "closed"
	WebhookActionEventSynchronize = "synchronize"
	WebhookActionEventPublished   = "published"
)

WebhookActionEventDeleted is the action for a deleted event

View Source
const PaginationLimit = 10

PaginationLimit is the maximum number of items that can be returned in a single page

Variables

This section is empty.

Functions

func DeleteUser

func DeleteUser(
	ctx context.Context,
	store db.Store,
	authzClient authz.Client,
	providerService service.GitHubProviderService,
	userId string,
) error

DeleteUser deletes a user and all their associated data from the minder database

func EntityContextProjectInterceptor added in v0.0.27

func EntityContextProjectInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo,
	handler grpc.UnaryHandler) (any, error)

EntityContextProjectInterceptor is a server interceptor that sets up the entity context project

func HandleEvents

func HandleEvents(
	ctx context.Context,
	store db.Store,
	authzClient authz.Client,
	cfg *serverconfig.Config,
	providerService service.GitHubProviderService,
)

HandleEvents fetches events from the identity provider and performs any related changes to the minder database

func ProjectAuthorizationInterceptor added in v0.0.27

func ProjectAuthorizationInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo,
	handler grpc.UnaryHandler) (any, error)

ProjectAuthorizationInterceptor is a server interceptor that checks if a user is authorized on the requested project

func RegisterGRPCServices

func RegisterGRPCServices(s *Server)

RegisterGRPCServices registers the GRPC services

func RegisterGatewayHTTPHandlers

func RegisterGatewayHTTPHandlers(ctx context.Context, gwmux *runtime.ServeMux, grpcAddress string, opts []grpc.DialOption)

RegisterGatewayHTTPHandlers registers the gateway HTTP handlers

func SubscribeToIdentityEvents

func SubscribeToIdentityEvents(
	ctx context.Context,
	store db.Store,
	authzClient authz.Client,
	cfg *serverconfig.Config,
	providerService service.GitHubProviderService,
) error

SubscribeToIdentityEvents starts a cron job that periodically fetches events from the identity provider

func TokenValidationInterceptor added in v0.0.24

func TokenValidationInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo,
	handler grpc.UnaryHandler) (any, error)

TokenValidationInterceptor is a server interceptor that validates the bearer token

Types

type AccountEvent

type AccountEvent struct {
	Time     int64  `json:"time"`
	Type     string `json:"type"`
	RealmId  string `json:"realmId"`
	ClientId string `json:"clientId"`
	UserId   string `json:"userId"`
}

AccountEvent is an event returned by the identity provider

type HasProtoContext added in v0.0.21

type HasProtoContext interface {
	GetContext() *pb.Context
}

HasProtoContext is an interface that can be implemented by a request

type Server

Server represents the controlplane server

func NewServer

func NewServer(
	store db.Store,
	evt events.Publisher,
	cfg *serverconfig.Config,
	vldtr auth.JwtValidator,
	providerStore providers.ProviderStore,
	opts ...ServerOption,
) (*Server, error)

NewServer creates a new server instance

func (*Server) AssignRole added in v0.0.28

AssignRole assigns a role to a user on a project. Note that this assumes that the request has already been authorized.

func (*Server) CheckHealth

CheckHealth is a simple health check for monitoring

func (*Server) CreateEntityReconciliationTask added in v0.0.36

CreateEntityReconciliationTask creates a task to reconcile the state of an entity

func (*Server) CreateProfile

CreateProfile creates a profile for a project

func (*Server) CreateProject added in v0.0.35

CreateProject creates a new subproject

func (*Server) CreateRuleType

CreateRuleType is a method to create a rule type

func (*Server) CreateUser

func (s *Server) CreateUser(ctx context.Context,
	_ *pb.CreateUserRequest) (*pb.CreateUserResponse, error)

CreateUser is a service for user self registration

func (*Server) DeleteProfile

DeleteProfile is a method to delete a profile

func (*Server) DeleteProject added in v0.0.35

DeleteProject deletes a subproject

func (*Server) DeleteProvider added in v0.0.40

DeleteProvider deletes a provider by name from a specific project.

func (*Server) DeleteProviderByID added in v0.0.40

DeleteProviderByID deletes a provider by ID from a specific project.

func (*Server) DeleteRepositoryById

func (s *Server) DeleteRepositoryById(
	ctx context.Context,
	in *pb.DeleteRepositoryByIdRequest,
) (*pb.DeleteRepositoryByIdResponse, error)

DeleteRepositoryById deletes a repository by its UUID

func (*Server) DeleteRepositoryByName

func (s *Server) DeleteRepositoryByName(
	ctx context.Context,
	in *pb.DeleteRepositoryByNameRequest,
) (*pb.DeleteRepositoryByNameResponse, error)

DeleteRepositoryByName deletes a repository by name

func (*Server) DeleteRuleType

DeleteRuleType is a method to delete a rule type

func (*Server) DeleteUser

func (s *Server) DeleteUser(ctx context.Context,
	_ *pb.DeleteUserRequest) (*pb.DeleteUserResponse, error)

DeleteUser is a service for user self deletion

func (*Server) GetArtifactById

GetArtifactById gets an artifact by id nolint:gocyclo

func (*Server) GetArtifactByName added in v0.0.22

GetArtifactByName gets an artifact by name nolint:gocyclo

func (*Server) GetAuthorizationURL

GetAuthorizationURL returns the URL to redirect the user to for authorization and the state to be used for the callback. It accepts a provider string and a boolean indicating whether the client is a CLI or web client

func (*Server) GetAuthzClient added in v0.0.43

func (s *Server) GetAuthzClient() authz.Client

GetAuthzClient returns the authz client

func (*Server) GetProfileById

GetProfileById is a method to get a profile by id

func (*Server) GetProfileStatusByName

GetProfileStatusByName is a method to get profile status nolint:gocyclo // TODO: Refactor this to be more readable

func (*Server) GetProfileStatusByProject

GetProfileStatusByProject is a method to get profile status for a project

func (*Server) GetProvider added in v0.0.35

GetProvider gets a given provider available in a specific project.

func (*Server) GetProviderService added in v0.0.39

func (s *Server) GetProviderService() service.GitHubProviderService

GetProviderService returns the provider service

func (*Server) GetRepositoryById

GetRepositoryById returns a repository for a given repository id

func (*Server) GetRepositoryByName

GetRepositoryByName returns information about a repository. This function will typically be called by the client to get a repository which is already registered and present in the minder database The API is called with a project id

func (*Server) GetRuleTypeById

GetRuleTypeById is a method to get a rule type by id

func (*Server) GetRuleTypeByName

GetRuleTypeByName is a method to get a rule type by name

func (*Server) GetUser

func (s *Server) GetUser(ctx context.Context, _ *pb.GetUserRequest) (*pb.GetUserResponse, error)

GetUser is a service for getting personal user details

func (*Server) HandleGitHubAppCallback added in v0.0.38

func (s *Server) HandleGitHubAppCallback() runtime.HandlerFunc

HandleGitHubAppCallback handles the authorization callback from the GitHub App. This function validates the GitHub user has access to the installation. It also gathers the state from the database and compares it to the state passed in, if present. If they match a new GitHub App provider is created with the installation ID. note: this is an HTTP only (not RPC) handler

func (*Server) HandleGitHubAppWebhook added in v0.0.39

func (s *Server) HandleGitHubAppWebhook() http.HandlerFunc

HandleGitHubAppWebhook handles incoming GitHub App webhooks

func (*Server) HandleGitHubWebHook

func (s *Server) HandleGitHubWebHook() http.HandlerFunc

HandleGitHubWebHook handles incoming GitHub webhooks See https://docs.github.com/en/developers/webhooks-and-events/webhooks/about-webhooks for more information.

func (*Server) HandleOAuthCallback added in v0.0.38

func (s *Server) HandleOAuthCallback() runtime.HandlerFunc

HandleOAuthCallback handles the OAuth 2.0 authorization code callback from the enrolled provider. This function gathers the state from the database and compares it to the state passed in. If they match, the provider code is exchanged for a provider token. note: this is an HTTP only (not RPC) handler

func (*Server) ListArtifacts

func (s *Server) ListArtifacts(ctx context.Context, in *pb.ListArtifactsRequest) (*pb.ListArtifactsResponse, error)

ListArtifacts lists all artifacts for a given project and provider nolint:gocyclo

func (*Server) ListEvaluationResults added in v0.0.35

ListEvaluationResults lists the evaluation results for entities filtered b entity type, labels, profiles, and rule types.

func (*Server) ListProfiles

ListProfiles is a method to get all profiles for a project

func (*Server) ListProjects added in v0.0.35

ListProjects returns the list of projects for the current user

func (*Server) ListProviderClasses added in v0.0.38

ListProviderClasses lists the provider classes available in the system.

func (*Server) ListProviders added in v0.0.30

ListProviders lists the providers available in a specific project.

func (*Server) ListRemoteRepositoriesFromProvider

ListRemoteRepositoriesFromProvider returns a list of repositories from a provider

func (*Server) ListRepositories

ListRepositories returns a list of repositories for a given project This function will typically be called by the client to get a list of repositories that are registered present in the minder database

func (*Server) ListRoleAssignments added in v0.0.28

ListRoleAssignments returns the list of role assignments for the given project

func (*Server) ListRoles added in v0.0.28

ListRoles returns the list of available roles for the minder instance

func (*Server) ListRuleTypes

ListRuleTypes is a method to list all rule types for a given context

func (*Server) NoopWebhookHandler added in v0.0.45

func (s *Server) NoopWebhookHandler() http.HandlerFunc

NoopWebhookHandler is a no-op handler for webhooks

func (*Server) PatchProfile added in v0.0.35

PatchProfile updates a profile for a project with a partial request

func (*Server) PatchProject added in v0.0.36

PatchProject patches a project. Note that this does not reparent nor touches the project's metadata directly. There is only a subset of fields that can be updated.

func (*Server) RegisterRepository

func (s *Server) RegisterRepository(
	ctx context.Context,
	in *pb.RegisterRepositoryRequest,
) (*pb.RegisterRepositoryResponse, error)

RegisterRepository adds repositories to the database and registers a webhook Once a user had enrolled in a project (they have a valid token), they can register repositories to be monitored by the minder by provisioning a webhook on the repository(ies).

func (*Server) RemoveRole added in v0.0.28

RemoveRole removes a role from a user on a project Note that this assumes that the request has already been authorized.

func (*Server) StartGRPCServer

func (s *Server) StartGRPCServer(ctx context.Context) error

StartGRPCServer starts a gRPC server and blocks while serving.

func (*Server) StartHTTPServer

func (s *Server) StartHTTPServer(ctx context.Context) error

StartHTTPServer starts a HTTP server and registers the gRPC handler mux to it set store as a blank identifier for now as we will use it in the future

func (*Server) StoreProviderToken

StoreProviderToken stores the provider token for a project

func (*Server) UpdateProfile added in v0.0.16

UpdateProfile updates a profile for a project

func (*Server) UpdateProject added in v0.0.36

UpdateProject updates a project. Note that this does not reparent nor touches the project's metadata directly. There is only a subset of fields that can be updated.

func (*Server) UpdateRuleType

UpdateRuleType is a method to update a rule type

func (*Server) VerifyProviderCredential added in v0.0.39

VerifyProviderCredential verifies the provider credential has been created for the matching enrollment nonce

func (*Server) VerifyProviderTokenFrom

VerifyProviderTokenFrom verifies the provider token since a timestamp Deprecated: Use VerifyProviderCredential instead

type ServerOption

type ServerOption func(*Server)

ServerOption is a function that modifies a server

func WithAuthzClient added in v0.0.27

func WithAuthzClient(c authz.Client) ServerOption

WithAuthzClient sets the authz client for the server

func WithProviderMetrics

func WithProviderMetrics(mt provtelemetry.ProviderMetrics) ServerOption

WithProviderMetrics sets the provider metrics for the server

func WithRestClientCache added in v0.0.31

func WithRestClientCache(c ratecache.RestClientCache) ServerOption

WithRestClientCache sets the rest client cache for the server

func WithServerMetrics added in v0.0.35

func WithServerMetrics(mt metrics.Metrics) ServerOption

WithServerMetrics sets the server metrics for the server

Directories

Path Synopsis
Package metrics defines the primitives available for the controlplane metrics
Package metrics defines the primitives available for the controlplane metrics

Jump to

Keyboard shortcuts

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