Documentation
¶
Index ¶
- Constants
- type CreateInstanceParams
- type CreateInstanceV011Params
- type DeleteInstanceParams
- type DeleteInstanceV011Params
- type GetInstanceParams
- type GetInstanceV011Params
- type GithubClient
- type GithubEntityOperations
- type ListInstancesParams
- type ListInstancesV011Params
- type PoolManager
- type Provider
- type ProviderBaseParams
- type RateLimitClient
- type RemoveAllInstancesParams
- type RemoveAllInstancesV011Params
- type StartParams
- type StartV011Params
- type StopParams
- type StopV011Params
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) error
RateLimit(ctx context.Context) (*github.RateLimits, 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)
// GetEntity returns the GitHub entity for which the github client was instanciated.
GetEntity() params.ForgeEntity
// GithubBaseURL returns the base URL for the github or GHES API.
GithubBaseURL() *url.URL
}
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
// 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)
SetPoolRunningState(isRunning bool, failureReason string)
// 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 RateLimitClient ¶
type RateLimitClient interface {
RateLimit(ctx context.Context) (*github.RateLimits, error)
}
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
}
Click to show internal directories.
Click to hide internal directories.