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 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) (*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
}
Click to show internal directories.
Click to hide internal directories.