common

package
v0.1.6 Latest Latest
Warning

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

Go to latest
Published: Jul 20, 2025 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Version010 = "v0.1.0"
	Version011 = "v0.1.1"
)

Constants used for the provider interface version.

View Source
const (
	PoolScaleDownInterval     = 1 * time.Minute
	PoolConsilitationInterval = 5 * time.Second
	PoolReapTimeoutInterval   = 5 * time.Minute
	// Temporary tools download token is valid for 1 hour by default.
	// There is no point in making an API call to get available tools, for every runner
	// we spin up. We cache the tools for 5 minutes. This should save us a lot of API calls
	// in cases where we have a lot of runners spin up at the same time.
	PoolToolUpdateInterval = 5 * time.Minute

	// BackoffTimer is the time we wait before attempting to make another request
	// to the github API.
	BackoffTimer = 1 * time.Minute
)

Variables

This section is empty.

Functions

This section is empty.

Types

type CreateInstanceParams added in v0.1.6

type CreateInstanceParams struct {
	CreateInstanceV011 CreateInstanceV011Params
}

Each struct is a wrapper for the actual parameters struct for a specific version. Version 0.1.0 doesn't have any specific parameters, so there is no need for a struct for it.

type CreateInstanceV011Params added in v0.1.6

type CreateInstanceV011Params struct {
	ProviderBaseParams
}

Structs for version v0.1.1.

type DeleteInstanceParams added in v0.1.6

type DeleteInstanceParams struct {
	DeleteInstanceV011 DeleteInstanceV011Params
}

type DeleteInstanceV011Params added in v0.1.6

type DeleteInstanceV011Params struct {
	ProviderBaseParams
}

type GetInstanceParams added in v0.1.6

type GetInstanceParams struct {
	GetInstanceV011 GetInstanceV011Params
}

type GetInstanceV011Params added in v0.1.6

type GetInstanceV011Params struct {
	ProviderBaseParams
}

type GithubClient

type GithubClient interface {
	GithubEntityOperations

	// GetWorkflowJobByID gets details about a single workflow job.
	GetWorkflowJobByID(ctx context.Context, owner, repo string, jobID int64) (*github.WorkflowJob, *github.Response, error)
}

GithubClient that describes the minimum list of functions we need to interact with github. Allows for easier testing.

type GithubEntityOperations added in v0.1.5

type GithubEntityOperations interface {
	ListEntityHooks(ctx context.Context, opts *github.ListOptions) (ret []*github.Hook, response *github.Response, err error)
	GetEntityHook(ctx context.Context, id int64) (ret *github.Hook, err error)
	CreateEntityHook(ctx context.Context, hook *github.Hook) (ret *github.Hook, err error)
	DeleteEntityHook(ctx context.Context, id int64) (ret *github.Response, err error)
	PingEntityHook(ctx context.Context, id int64) (ret *github.Response, err error)
	ListEntityRunners(ctx context.Context, opts *github.ListRunnersOptions) (*github.Runners, *github.Response, error)
	ListEntityRunnerApplicationDownloads(ctx context.Context) ([]*github.RunnerApplicationDownload, *github.Response, error)
	RemoveEntityRunner(ctx context.Context, runnerID int64) (*github.Response, error)
	CreateEntityRegistrationToken(ctx context.Context) (*github.RegistrationToken, *github.Response, error)
	GetEntityJITConfig(ctx context.Context, instance string, pool params.Pool, labels []string) (jitConfigMap map[string]string, runner *github.Runner, err error)
}

type ListInstancesParams added in v0.1.6

type ListInstancesParams struct {
	ListInstancesV011 ListInstancesV011Params
}

type ListInstancesV011Params added in v0.1.6

type ListInstancesV011Params struct {
	ProviderBaseParams
}

type PoolManager

type PoolManager interface {
	// ID returns the ID of the entity (repo, org, enterprise)
	ID() string
	// WebhookSecret returns the unencrypted webhook secret associated with the webhook installed
	// in GitHub for GARM. For GARM to receive webhook events for an entity, either the operator or
	// GARM will have to create a webhook in GitHub which points to the GARM API server. To authenticate
	// the webhook, a webhook secret is used. This function returns that secret.
	WebhookSecret() string
	// GithubRunnerRegistrationToken returns a new registration token for a github runner. This is used
	// for GHES installations that have not yet upgraded to a version >= 3.10. Starting with 3.10, we use
	// just-in-time runners, which no longer require exposing a runner registration token.
	GithubRunnerRegistrationToken() (string, error)
	// HandleWorkflowJob handles a workflow job meant for a particular entity. When a webhook is fired for
	// a repo, org or enterprise, we determine the destination of that webhook, retrieve the pool manager
	// for it and call this function with the WorkflowJob as a parameter.
	HandleWorkflowJob(job params.WorkflowJob) error

	// DeleteRunner will attempt to remove a runner from the pool. If forceRemove is true, any error
	// received from the provider will be ignored and we will proceed to remove the runner from the database.
	// An error received while attempting to remove from GitHub (other than 404) will still stop the deletion
	// process. This can happen if the runner is already processing a job. At which point, you can simply cancel
	// the job in github. Doing so will prompt GARM to reap the runner automatically.
	DeleteRunner(runner params.Instance, forceRemove, bypassGHUnauthorizedError bool) error

	// InstallWebhook will create a webhook in github for the entity associated with this pool manager.
	InstallWebhook(ctx context.Context, param params.InstallWebhookParams) (params.HookInfo, error)
	// GetWebhookInfo will return information about the webhook installed in github for the entity associated
	GetWebhookInfo(ctx context.Context) (params.HookInfo, error)
	// UninstallWebhook will remove the webhook installed in github for the entity associated with this pool manager.
	UninstallWebhook(ctx context.Context) error

	// RootCABundle will return a CA bundle that must be installed on all runners in order to properly validate
	// x509 certificates used by various systems involved. This CA bundle is defined in the GARM config file and
	// can include multiple CA certificates for the GARM api server, GHES server and any provider API endpoint that
	// may use internal or self signed certificates.
	RootCABundle() (params.CertificateBundle, error)

	// Start will start the pool manager and all associated workers.
	Start() error
	// Stop will stop the pool manager and all associated workers.
	Stop() error
	// Status will return the current status of the pool manager.
	Status() params.PoolManagerStatus
	// Wait will block until the pool manager has stopped.
	Wait() error
}

type Provider

type Provider interface {
	// CreateInstance creates a new compute instance in the provider.
	CreateInstance(ctx context.Context, bootstrapParams commonParams.BootstrapInstance, createInstanceParams CreateInstanceParams) (commonParams.ProviderInstance, error)
	// Delete instance will delete the instance in a provider.
	DeleteInstance(ctx context.Context, instance string, deleteInstanceParams DeleteInstanceParams) error
	// GetInstance will return details about one instance.
	GetInstance(ctx context.Context, instance string, getInstanceParams GetInstanceParams) (commonParams.ProviderInstance, error)
	// ListInstances will list all instances for a provider.
	ListInstances(ctx context.Context, poolID string, listInstancesParams ListInstancesParams) ([]commonParams.ProviderInstance, error)
	// RemoveAllInstances will remove all instances created by this provider.
	RemoveAllInstances(ctx context.Context, removeAllInstancesParams RemoveAllInstancesParams) error
	// Stop shuts down the instance.
	Stop(ctx context.Context, instance string, stopParams StopParams) error
	// Start boots up an instance.
	Start(ctx context.Context, instance string, startParams StartParams) error
	// DisableJITConfig tells us if the provider explicitly disables JIT configuration and
	// forces runner registration tokens to be used. This may happen if a provider has not yet
	// been updated to support JIT configuration.
	DisableJITConfig() bool

	AsParams() params.Provider
}

type ProviderBaseParams added in v0.1.6

type ProviderBaseParams struct {
	PoolInfo       params.Pool
	ControllerInfo params.ControllerInfo
}

Struct for the base provider parameters.

type RemoveAllInstancesParams added in v0.1.6

type RemoveAllInstancesParams struct {
	RemoveAllInstancesV011 RemoveAllInstancesV011Params
}

type RemoveAllInstancesV011Params added in v0.1.6

type RemoveAllInstancesV011Params struct {
	ProviderBaseParams
}

type StartParams added in v0.1.6

type StartParams struct {
	StartV011 StartV011Params
}

type StartV011Params added in v0.1.6

type StartV011Params struct {
	ProviderBaseParams
}

type StopParams added in v0.1.6

type StopParams struct {
	StopV011 StopV011Params
}

type StopV011Params added in v0.1.6

type StopV011Params struct {
	ProviderBaseParams
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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