Documentation ¶
Index ¶
Constants ¶
const ( TargetStatusInitialize TargetStatus = "initialize" TargetStatusActive = "active" TargetStatusRunning = "running" TargetStatusSuspend = "suspend" TargetStatusDeleted = "deleted" TargetStatusErr = "error" )
TargetStatus variables
const ( RunnerStatusCreated RunnerStatus = "created" RunnerStatusCompleted = "completed" RunnerStatusReachHardLimit = "reach_hard_limit" )
RunnerStatus variables
Variables ¶
var (
ErrNotFound = errors.New("not found")
)
Error values
Functions ¶
func UpdateTargetStatus ¶ added in v1.4.2
func UpdateTargetStatus(ctx context.Context, ds Datastore, targetID uuid.UUID, newStatus TargetStatus, description string) error
UpdateTargetStatus update datastore
Types ¶
type Datastore ¶
type Datastore interface { CreateTarget(ctx context.Context, target Target) error GetTarget(ctx context.Context, id uuid.UUID) (*Target, error) GetTargetByScope(ctx context.Context, gheDomain, scope string) (*Target, error) ListTargets(ctx context.Context) ([]Target, error) DeleteTarget(ctx context.Context, id uuid.UUID) error // Deprecated: Use datastore.UpdateTargetStatus. UpdateTargetStatus(ctx context.Context, targetID uuid.UUID, newStatus TargetStatus, description string) error EnqueueJob(ctx context.Context, job Job) error ListJobs(ctx context.Context) ([]Job, error) DeleteJob(ctx context.Context, id uuid.UUID) error CreateRunner(ctx context.Context, runner Runner) error ListRunners(ctx context.Context) ([]Runner, error) GetRunner(ctx context.Context, id uuid.UUID) (*Runner, error) DeleteRunner(ctx context.Context, id uuid.UUID, deletedAt time.Time, reason RunnerStatus) error }
Datastore is persistent storage
type Job ¶
type Job struct { UUID uuid.UUID `db:"uuid"` GHEDomain sql.NullString `db:"ghe_domain"` Repository string `db:"repository"` // repo (:owner/:repo) CheckEventJSON string `db:"check_event"` TargetID uuid.UUID `db:"target_id"` CreatedAt time.Time `db:"created_at" json:"created_at"` UpdatedAt time.Time `db:"updated_at" json:"updated_at"` }
Job is a runner job
type ResourceType ¶
type ResourceType int
ResourceType is runner machine spec
const ( ResourceTypeUnknown ResourceType = iota ResourceTypeNano ResourceTypeMicro ResourceTypeSmall ResourceTypeMedium ResourceTypeLarge ResourceTypeXLarge ResourceType2XLarge ResourceType3XLarge ResourceType4XLarge )
ResourceTypes variables
func UnmarshalResourceType ¶ added in v1.2.1
func UnmarshalResourceType(src interface{}) ResourceType
UnmarshalResourceType cast type to ResourceType
func UnmarshalResourceTypePb ¶ added in v1.2.1
func UnmarshalResourceTypePb(in pb.ResourceType) ResourceType
UnmarshalResourceTypePb cast type from pb.ResourceType to ResourceType
func UnmarshalResourceTypeString ¶ added in v1.2.1
func UnmarshalResourceTypeString(in string) ResourceType
UnmarshalResourceTypeString cast type from string to ResourceType
func (ResourceType) MarshalJSON ¶ added in v1.4.1
func (r ResourceType) MarshalJSON() ([]byte, error)
MarshalJSON implements the encoding/json Marshaler interface
func (*ResourceType) Scan ¶ added in v1.2.1
func (r *ResourceType) Scan(src interface{}) error
Scan implements the database/sql Scanner interface
func (ResourceType) String ¶
func (r ResourceType) String() string
String implement interface for fmt.Stringer
func (ResourceType) ToPb ¶ added in v1.2.0
func (r ResourceType) ToPb() pb.ResourceType
ToPb convert type of protobuf
func (*ResourceType) UnmarshalJSON ¶ added in v1.4.1
func (r *ResourceType) UnmarshalJSON(data []byte) error
UnmarshalJSON implements the encoding/json Unmarshaler interface
type Runner ¶
type Runner struct { UUID uuid.UUID `db:"runner_id"` ShoesType string `db:"shoes_type"` IPAddress string `db:"ip_address"` TargetID uuid.UUID `db:"target_id"` CloudID string `db:"cloud_id"` Deleted bool `db:"deleted"` Status RunnerStatus `db:"status"` CreatedAt time.Time `db:"created_at"` UpdatedAt time.Time `db:"updated_at"` DeletedAt sql.NullTime `db:"deleted_at"` }
Runner is a runner
type Target ¶
type Target struct { UUID uuid.UUID `db:"uuid" json:"id"` Scope string `db:"scope" json:"scope"` // repo (:owner/:repo) or org (:organization) GitHubPersonalToken string `db:"github_personal_token" json:"github_personal_token"` // TODO: encrypt GHEDomain sql.NullString `db:"ghe_domain" json:"ghe_domain"` ResourceType ResourceType `db:"resource_type" json:"resource_type"` RunnerUser sql.NullString `db:"runner_user" json:"runner_user"` RunnerVersion sql.NullString `db:"runner_version" json:"runner_version"` ProviderURL sql.NullString `db:"provider_url" json:"provider_url"` Status TargetStatus `db:"status" json:"status"` StatusDescription sql.NullString `db:"status_description" json:"status_description"` CreatedAt time.Time `db:"created_at" json:"created_at"` UpdatedAt time.Time `db:"updated_at" json:"updated_at"` }
Target is a target repository that will add auto-scaling runner.
func (*Target) CanReceiveJob ¶ added in v1.4.0
CanReceiveJob check status in target