Documentation ¶
Index ¶
- Constants
- Variables
- func AgentLastCommunicationTimeElapsed(currentTime time.Time) bson.M
- func AgentMonitorLastCommunicationTimeElapsed(currentTime time.Time) bson.M
- func ByDistroIDRunning(distroID string) db.Q
- func ByDistroId(distroId string) db.Q
- func ByDistroIdDoc(distroId string) bson.M
- func ByDynamicWithinTime(startTime, endTime time.Time) db.Q
- func ByExpiringBetween(lowerBound time.Time, upperBound time.Time) db.Q
- func ById(id string) db.Q
- func ByIds(ids []string) db.Q
- func ByNotMonitoredSince(threshold time.Time) db.Q
- func ByRunningTaskId(taskId string) db.Q
- func ByUnprovisionedSince(threshold time.Time) db.Q
- func ByUserWithRunningStatus(user string) db.Q
- func ByUserWithUnterminatedStatus(user string) db.Q
- func ChmodCommandWithSudo(ctx context.Context, script string, sudo bool) *exec.Cmd
- func Count(query db.Q) (int, error)
- func CountRunningHosts(distroID string) (int, error)
- func DecommissionHostsWithDistroId(distroId string) error
- func FindStaleRunningTasks(cutoff time.Duration) ([]task.Task, error)
- func InsertMany(hosts []Host) error
- func IsLive() bson.M
- func MarkInactiveStaticHosts(activeStaticHosts []string, distroID string) error
- func NeedsNewAgentFlagSet() db.Q
- func NumHostsByTaskSpec(group, buildVariant, project, version string) (int, error)
- func Provisioning() db.Q
- func RemoveStaleInitializing(distroID string) error
- func ShCommandWithSudo(ctx context.Context, script string, sudo bool) *exec.Cmd
- func StaleRunningTaskIDs(staleness time.Duration) ([]task.Task, error)
- func Starting() db.Q
- func TearDownCommandOverSSH() string
- func UpdateAll(query interface{}, update interface{}) error
- func UpdateOne(query interface{}, update interface{}) error
- func UpsertOne(query interface{}, update interface{}) (*adb.ChangeInfo, error)
- type ContainersOnParents
- type CreateOptions
- type DistroStats
- type DockerOptions
- type FinishTime
- type Host
- func AllHostsSpawnedByTasksToTerminate() ([]Host, error)
- func AllIdleEphemeral() ([]Host, error)
- func Find(query db.Q) ([]Host, error)
- func FindAllHostsSpawnedByTasks() ([]Host, error)
- func FindAllRunningContainers() ([]Host, error)
- func FindAllRunningParents() ([]Host, error)
- func FindAllRunningParentsByDistro(distroId string) ([]Host, error)
- func FindAllRunningParentsOrdered() ([]Host, error)
- func FindByExpiringJasperCredentials(cutoff time.Duration) ([]Host, error)
- func FindByFirstProvisioningAttempt() ([]Host, error)
- func FindByNeedsNewAgentMonitor() ([]Host, error)
- func FindHostsSpawnedByBuild(buildID string) ([]Host, error)
- func FindHostsSpawnedByTask(taskID string) ([]Host, error)
- func FindHostsToTerminate() ([]Host, error)
- func FindOne(query db.Q) (*Host, error)
- func FindOneByIdOrTag(id string) (*Host, error)
- func FindOneByJasperCredentialsID(id string) (*Host, error)
- func FindOneId(id string) (*Host, error)
- func FindRunningHosts(includeSpawnHosts bool) ([]Host, error)
- func FindTerminatedHostsRunningTasks() ([]Host, error)
- func FindUserDataSpawnHostsProvisioning() ([]Host, error)
- func GenerateContainerHostIntents(d distro.Distro, newContainersNeeded int, hostOptions CreateOptions) ([]Host, error)
- func GetHostsByFromIDWithStatus(id, status, user string, limit int) ([]Host, error)
- func InsertParentIntentsAndGetNumHostsToSpawn(pool *evergreen.ContainerPool, newHostsNeeded int, ignoreMaxHosts bool) ([]Host, int, error)
- func NewIntent(d distro.Distro, instanceName, provider string, options CreateOptions) *Host
- func (h *Host) AddTags(tags []Tag)
- func (h *Host) AgentMonitorOptions(settings *evergreen.Settings) *options.Create
- func (h *Host) BootstrapScript(settings *evergreen.Settings, creds *rpc.Credentials, ...) (string, error)
- func (h *Host) CacheHostData() error
- func (h *Host) ClearRunningAndSetLastTask(t *task.Task) error
- func (h *Host) ClearRunningTask() error
- func (h *Host) ClearRunningTeardownGroup() error
- func (h *Host) ClientURL(settings *evergreen.Settings) string
- func (h *Host) CountContainersRunningAtTime(timestamp time.Time) (int, error)
- func (h *Host) CreateSecret() error
- func (h *Host) CurlCommand(settings *evergreen.Settings) string
- func (h *Host) CurlCommandWithRetry(settings *evergreen.Settings, numRetries, maxRetrySecs int) string
- func (h *Host) DeleteJasperCredentials(ctx context.Context) error
- func (h *Host) DeleteTags(keys []string)
- func (h *Host) DisablePoisonedHost(logs string) error
- func (h *Host) EstimateNumContainersForDuration(start, end time.Time) (float64, error)
- func (h *Host) FetchAndReinstallJasperCommand(settings *evergreen.Settings) string
- func (h *Host) FetchJasperCommand(config evergreen.HostJasperConfig) string
- func (h *Host) FetchJasperCommandWithPath(config evergreen.HostJasperConfig, path string) string
- func (h *Host) ForceReinstallJasperCommand(settings *evergreen.Settings) string
- func (h *Host) GenerateJasperCredentials(ctx context.Context) (*rpc.Credentials, error)
- func (h *Host) GetContainers() ([]Host, error)
- func (h *Host) GetElapsedCommunicationTime() time.Duration
- func (h *Host) GetParent() (*Host, error)
- func (h *Host) GetSSHInfo() (*util.StaticHostInfo, error)
- func (h *Host) GetSSHOptions(keyPath string) ([]string, error)
- func (h *Host) GetTaskGroupString() string
- func (h *Host) IdleTime() time.Duration
- func (h *Host) IncContainerBuildAttempt() error
- func (h *Host) IncCost(amt float64) error
- func (h *Host) IncIdleTime(dur time.Duration) error
- func (h *Host) IncJasperDeployAttempts() error
- func (h *Host) IncProvisionAttempts() error
- func (h *Host) IncTaskCount() error
- func (h *Host) InitSystem(ctx context.Context, sshOptions []string) (string, error)
- func (h *Host) Insert() error
- func (h *Host) IsEphemeral() bool
- func (h *Host) IsIdleParent() (bool, error)
- func (h *Host) IsWaitingForAgent() bool
- func (h *Host) JasperClient(ctx context.Context, settings *evergreen.Settings) (jasper.RemoteClient, error)
- func (h *Host) JasperClientCredentials(ctx context.Context) (*rpc.Credentials, error)
- func (h *Host) JasperCommunication() bool
- func (h *Host) JasperCredentials(ctx context.Context) (*rpc.Credentials, error)
- func (h *Host) JasperCredentialsExpiration(ctx context.Context) (time.Time, error)
- func (h *Host) LegacyBootstrap() bool
- func (h *Host) LegacyCommunication() bool
- func (h *Host) MarkAsProvisioned() error
- func (h *Host) MarkReachable() error
- func (h *Host) MarkUserDataDoneCommand() (string, error)
- func (h *Host) MarshalBSON() ([]byte, error)
- func (h *Host) ModifySpawnHost(opts HostModifyOptions) error
- func (h *Host) Remove() error
- func (h *Host) ResetJasperDeployAttempts() error
- func (h *Host) ResetLastCommunicated() error
- func (h *Host) RestartJasperCommand(config evergreen.HostJasperConfig) string
- func (h *Host) RunJasperProcess(ctx context.Context, settings *evergreen.Settings, opts *options.Create) (string, error)
- func (h *Host) RunSSHCommand(ctx context.Context, cmd string, sshOptions []string) (string, error)
- func (h *Host) SaveJasperCredentials(ctx context.Context, creds *rpc.Credentials) error
- func (h *Host) SetAgentRevision(agentRevision string) error
- func (h *Host) SetAgentStartTime() error
- func (h *Host) SetDNSName(dnsName string) error
- func (h *Host) SetDecommissioned(user string, logs string) error
- func (h *Host) SetExpirationNotification(thresholdKey string) error
- func (h *Host) SetExpirationTime(expirationTime time.Time) error
- func (h *Host) SetExtId() error
- func (h *Host) SetIPv6Address(ipv6Address string) error
- func (h *Host) SetNeedsAgentDeploy(needsDeploy bool) error
- func (h *Host) SetNeedsNewAgent(needsAgent bool) error
- func (h *Host) SetNeedsNewAgentAtomically(needsAgent bool) error
- func (h *Host) SetNeedsNewAgentMonitor(needsAgentMonitor bool) error
- func (h *Host) SetNeedsNewAgentMonitorAtomically(needsAgentMonitor bool) error
- func (h *Host) SetProvisionedNotRunning() error
- func (h *Host) SetProvisioning() error
- func (h *Host) SetQuarantined(user string, logs string) error
- func (h *Host) SetRunning(user string) error
- func (h *Host) SetRunningTeardownGroup(taskID string) error
- func (h *Host) SetStatus(status, user string, logs string) error
- func (h *Host) SetTags() error
- func (h *Host) SetTerminated(user string) error
- func (h *Host) SetUnprovisioned() error
- func (h *Host) SetUserDataHostProvisioned() error
- func (h *Host) SetupCommand() string
- func (h *Host) SetupScriptCommands(settings *evergreen.Settings) (string, error)
- func (h *Host) SetupSpawnHostCommand(settings *evergreen.Settings) (string, error)
- func (h *Host) StartAgentMonitorRequest(settings *evergreen.Settings) (string, error)
- func (h *Host) StartJasperProcess(ctx context.Context, settings *evergreen.Settings, opts *options.Create) error
- func (h *Host) StopAgentMonitor(ctx context.Context, settings *evergreen.Settings) error
- func (h *Host) TearDownCommand() string
- func (h *Host) Terminate(user string) error
- func (h *Host) UnmarshalBSON(in []byte) error
- func (h *Host) UpdateDocumentID(newID string) (*Host, error)
- func (h *Host) UpdateJasperCredentialsID(id string) error
- func (h *Host) UpdateLastCommunicated() error
- func (h *Host) UpdateLastContainerFinishTime(t time.Time) error
- func (h *Host) UpdateProvisioningToRunning() error
- func (h *Host) UpdateRunningTask(t *task.Task) (bool, error)
- func (h *Host) Upsert() (*adb.ChangeInfo, error)
- func (h *Host) UserDataDoneFilePath() (string, error)
- func (h *Host) WriteJasperCredentialsFileCommand(creds *rpc.Credentials) (string, error)
- type HostGroup
- type HostGroupStats
- type HostModifyOptions
- type IdleHostsByDistroID
- type InactiveHostCounts
- type ProviderStats
- type ProvisionOptions
- type SpawnOptions
- type StatsByDistro
- type StatsByProvider
- type Tag
Constants ¶
const ( MaxLCTInterval = 5 * time.Minute // Potential init systems supported by a Linux host. InitSystemSystemd = "systemd" InitSystemSysV = "sysv" InitSystemUpstart = "upstart" )
const ( CurlDefaultNumRetries = 10 CurlDefaultMaxSecs = 100 )
Constants representing default curl retry arguments.
const (
// Collection is the name of the MongoDB collection that stores hosts.
Collection = "hosts"
)
Variables ¶
var ( IdKey = bsonutil.MustHaveTag(Host{}, "Id") DNSKey = bsonutil.MustHaveTag(Host{}, "Host") SecretKey = bsonutil.MustHaveTag(Host{}, "Secret") UserKey = bsonutil.MustHaveTag(Host{}, "User") TagKey = bsonutil.MustHaveTag(Host{}, "Tag") DistroKey = bsonutil.MustHaveTag(Host{}, "Distro") ProviderKey = bsonutil.MustHaveTag(Host{}, "Provider") IPKey = bsonutil.MustHaveTag(Host{}, "IP") ProvisionedKey = bsonutil.MustHaveTag(Host{}, "Provisioned") ProvisionTimeKey = bsonutil.MustHaveTag(Host{}, "ProvisionTime") ExtIdKey = bsonutil.MustHaveTag(Host{}, "ExternalIdentifier") RunningTaskKey = bsonutil.MustHaveTag(Host{}, "RunningTask") RunningTaskGroupKey = bsonutil.MustHaveTag(Host{}, "RunningTaskGroup") RunningTaskBuildVariantKey = bsonutil.MustHaveTag(Host{}, "RunningTaskBuildVariant") RunningTaskVersionKey = bsonutil.MustHaveTag(Host{}, "RunningTaskVersion") RunningTaskProjectKey = bsonutil.MustHaveTag(Host{}, "RunningTaskProject") TaskDispatchTimeKey = bsonutil.MustHaveTag(Host{}, "TaskDispatchTime") CreateTimeKey = bsonutil.MustHaveTag(Host{}, "CreationTime") ExpirationTimeKey = bsonutil.MustHaveTag(Host{}, "ExpirationTime") TerminationTimeKey = bsonutil.MustHaveTag(Host{}, "TerminationTime") LTCTimeKey = bsonutil.MustHaveTag(Host{}, "LastTaskCompletedTime") LTCTaskKey = bsonutil.MustHaveTag(Host{}, "LastTask") LTCGroupKey = bsonutil.MustHaveTag(Host{}, "LastGroup") LTCBVKey = bsonutil.MustHaveTag(Host{}, "LastBuildVariant") LTCVersionKey = bsonutil.MustHaveTag(Host{}, "LastVersion") LTCProjectKey = bsonutil.MustHaveTag(Host{}, "LastProject") StatusKey = bsonutil.MustHaveTag(Host{}, "Status") AgentRevisionKey = bsonutil.MustHaveTag(Host{}, "AgentRevision") NeedsNewAgentKey = bsonutil.MustHaveTag(Host{}, "NeedsNewAgent") NeedsNewAgentMonitorKey = bsonutil.MustHaveTag(Host{}, "NeedsNewAgentMonitor") JasperCredentialsIDKey = bsonutil.MustHaveTag(Host{}, "JasperCredentialsID") JasperDeployAttemptsKey = bsonutil.MustHaveTag(Host{}, "JasperDeployAttempts") StartedByKey = bsonutil.MustHaveTag(Host{}, "StartedBy") InstanceTypeKey = bsonutil.MustHaveTag(Host{}, "InstanceType") VolumeSizeKey = bsonutil.MustHaveTag(Host{}, "VolumeTotalSize") VolumeIDsKey = bsonutil.MustHaveTag(Host{}, "VolumeIDs") NotificationsKey = bsonutil.MustHaveTag(Host{}, "Notifications") LastCommunicationTimeKey = bsonutil.MustHaveTag(Host{}, "LastCommunicationTime") UserHostKey = bsonutil.MustHaveTag(Host{}, "UserHost") ZoneKey = bsonutil.MustHaveTag(Host{}, "Zone") ProjectKey = bsonutil.MustHaveTag(Host{}, "Project") ProvisionOptionsKey = bsonutil.MustHaveTag(Host{}, "ProvisionOptions") ProvisionAttemptsKey = bsonutil.MustHaveTag(Host{}, "ProvisionAttempts") TaskCountKey = bsonutil.MustHaveTag(Host{}, "TaskCount") StartTimeKey = bsonutil.MustHaveTag(Host{}, "StartTime") AgentStartTimeKey = bsonutil.MustHaveTag(Host{}, "AgentStartTime") ComputeCostPerHourKey = bsonutil.MustHaveTag(Host{}, "ComputeCostPerHour") TotalCostKey = bsonutil.MustHaveTag(Host{}, "TotalCost") TotalIdleTimeKey = bsonutil.MustHaveTag(Host{}, "TotalIdleTime") HasContainersKey = bsonutil.MustHaveTag(Host{}, "HasContainers") ParentIDKey = bsonutil.MustHaveTag(Host{}, "ParentID") ContainerImagesKey = bsonutil.MustHaveTag(Host{}, "ContainerImages") ContainerBuildAttempt = bsonutil.MustHaveTag(Host{}, "ContainerBuildAttempt") LastContainerFinishTimeKey = bsonutil.MustHaveTag(Host{}, "LastContainerFinishTime") SpawnOptionsKey = bsonutil.MustHaveTag(Host{}, "SpawnOptions") ContainerPoolSettingsKey = bsonutil.MustHaveTag(Host{}, "ContainerPoolSettings") RunningTeardownForTaskKey = bsonutil.MustHaveTag(Host{}, "RunningTeardownForTask") RunningTeardownSinceKey = bsonutil.MustHaveTag(Host{}, "RunningTeardownSince") InstanceTagsKey = bsonutil.MustHaveTag(Host{}, "InstanceTags") SpawnOptionsTaskIDKey = bsonutil.MustHaveTag(SpawnOptions{}, "TaskID") SpawnOptionsBuildIDKey = bsonutil.MustHaveTag(SpawnOptions{}, "BuildID") SpawnOptionsTimeoutKey = bsonutil.MustHaveTag(SpawnOptions{}, "TimeoutTeardown") SpawnOptionsSpawnedByTaskKey = bsonutil.MustHaveTag(SpawnOptions{}, "SpawnedByTask") )
var ( HostsByDistroDistroIDKey = bsonutil.MustHaveTag(IdleHostsByDistroID{}, "DistroID") HostsByDistroIdleHostsKey = bsonutil.MustHaveTag(IdleHostsByDistroID{}, "IdleHosts") HostsByDistroRunningHostsCountKey = bsonutil.MustHaveTag(IdleHostsByDistroID{}, "RunningHostsCount") )
var All = db.Query(struct{}{})
All is a query that returns all hosts
var AllStatic = db.Query( bson.M{ ProviderKey: evergreen.HostTypeStatic, })
var IsIdle = db.Query( bson.M{ RunningTaskKey: bson.M{"$exists": false}, StatusKey: evergreen.HostRunning, StartedByKey: evergreen.User, }, )
IsIdle is a query that returns all running Evergreen hosts with no task.
var IsRunningAndSpawned = db.Query( bson.M{ StartedByKey: bson.M{"$ne": evergreen.User}, StatusKey: bson.M{"$ne": evergreen.HostTerminated}, }, )
IsRunningAndSpawned is a query that returns all running hosts spawned by an Evergreen user.
var IsRunningTask = db.Query( bson.M{ RunningTaskKey: bson.M{"$exists": true}, StatusKey: bson.M{ "$ne": evergreen.HostTerminated, }, }, )
IsRunningTask is a query that returns all running hosts with a running task
var IsTerminated = db.Query( bson.M{ RunningTaskKey: bson.M{"$exists": false}, StatusKey: evergreen.HostTerminated}, )
IsTerminated is a query that returns all hosts that are terminated (and not running a task).
var IsUninitialized = db.Query( bson.M{StatusKey: evergreen.HostUninitialized}, )
IsUninitialized is a query that returns all unstarted + uninitialized Evergreen hosts.
Functions ¶
func AgentLastCommunicationTimeElapsed ¶
AgentLastCommunicationTimeElapsed finds legacy hosts which do not have an agent or whose agents have not communicated recently.
func AgentMonitorLastCommunicationTimeElapsed ¶
AgentMonitorLastCommunicationTimeElapsed finds hosts which do not have an agent monitor or which should have an agent monitor but their agent has not communicated recently.
func ByDistroIDRunning ¶
func ByDistroId ¶
ByDistroId produces a query that returns all working hosts (not terminated and not quarantined) of the given distro.
func ByDistroIdDoc ¶
func ByDynamicWithinTime ¶
ByDynamicWithinTime is a query that returns all dynamic hosts running between a certain time and another time.
func ByExpiringBetween ¶
ByExpiringBetween produces a query that returns any user-spawned hosts that will expire between the specified times.
func ByNotMonitoredSince ¶
ByNotMonitoredSince produces a query that returns all hosts whose last reachability check was before the specified threshold, filtering out user-spawned hosts and hosts currently running tasks.
func ByRunningTaskId ¶
ByRunningTaskId returns a host running the task with the given id.
func ByUnprovisionedSince ¶
ByUnprovisionedSince produces a query that returns all hosts Evergreen never finished setting up that were created before the given time.
func ByUserWithRunningStatus ¶
ByUserWithRunningStatus produces a query that returns all running hosts for the given user id.
func ByUserWithUnterminatedStatus ¶
ByUserWithUnterminatedStatus produces a query that returns all running hosts for the given user id.
func ChmodCommandWithSudo ¶
func CountRunningHosts ¶
func FindStaleRunningTasks ¶
StateRunningTasks returns tasks documents that are currently run by a host and stale
func InsertMany ¶
func MarkInactiveStaticHosts ¶
DecommissionInactiveStaticHosts marks static hosts in the database as terminated provided their ids aren't contained in the passed in activeStaticHosts slice. This is called in the scheduler, and marks any static host in the system that was removed from the distro as "terminated".
Previously this oepration marked these hosts as "decommissioned," which is not a state that makes sense for static hosts.
If the distro is the empty string ("") then this operation affects all distros.
func NeedsNewAgentFlagSet ¶
NeedsNewAgentFlagSet returns legacy hosts with NeedsNewAgent set to true.
func NumHostsByTaskSpec ¶
ByTaskSpec returns a query that finds all running hosts that are running a task with the given group, buildvariant, project, and version.
func Provisioning ¶
Provisioning returns a query used by the hostinit process to determine hosts that are started according to the cloud provider, but have not yet been provisioned by Evergreen.
func RemoveStaleInitializing ¶
Removes host intents that have been been uninitialized for more than 3 minutes or spawning (but not started) for more than 15 minutes for the specified distro.
If you pass the empty string as a distroID, it will remove stale host intents for *all* distros.
func ShCommandWithSudo ¶
func StaleRunningTaskIDs ¶
StaleRunningTaskIDs finds any running tasks whose last heartbeat was at least the specified threshold ago and whose host thinks it's still running that task. Projects out everything but the ID and execution
func TearDownCommandOverSSH ¶
func TearDownCommandOverSSH() string
TearDownCommandOverSSH returns a command for running a teardown script on a host. This command runs if there is a problem running host teardown with the agent and is intended only as a backstop if multiple agent deploys interfere with one another (https://jira.mongodb.org/browse/EVG-5972). It likely can be removed after work to improve amboy job locking or the SSH dependency.
func UpdateAll ¶
func UpdateAll(query interface{}, update interface{}) error
UpdateAll updates all hosts.
func UpdateOne ¶
func UpdateOne(query interface{}, update interface{}) error
UpdateOne updates one host.
func UpsertOne ¶
func UpsertOne(query interface{}, update interface{}) (*adb.ChangeInfo, error)
UpsertOne upserts a host.
Types ¶
type ContainersOnParents ¶
func GetNumContainersOnParents ¶
func GetNumContainersOnParents(d distro.Distro) ([]ContainersOnParents, error)
getNumContainersOnParents returns a slice of uphost parents and their respective number of current containers currently running in order of longest expected finish time
type CreateOptions ¶
type CreateOptions struct { ProvisionOptions *ProvisionOptions ExpirationDuration *time.Duration UserName string UserHost bool HasContainers bool ParentID string ContainerPoolSettings *evergreen.ContainerPool SpawnOptions SpawnOptions DockerOptions DockerOptions InstanceTags []Tag }
CreateOptions is a struct of options that are commonly passed around when creating a new cloud host.
type DistroStats ¶
type DistroStats []StatsByDistro
func GetStatsByDistro ¶
func GetStatsByDistro() (DistroStats, error)
GetStatsByDistro returns counts of up hosts broken down by distro
func (DistroStats) CountMap ¶
func (d DistroStats) CountMap() map[string]int
func (DistroStats) MaxHostsExceeded ¶
func (d DistroStats) MaxHostsExceeded() map[string]int
func (DistroStats) TasksMap ¶
func (d DistroStats) TasksMap() map[string]int
type DockerOptions ¶
type DockerOptions struct { // Optional parameters to define a registry name and authentication RegistryName string `mapstructure:"docker_registry_name" bson:"docker_registry_name,omitempty" json:"docker_registry_name,omitempty"` RegistryUsername string `mapstructure:"docker_registry_user" bson:"docker_registry_user,omitempty" json:"docker_registry_user,omitempty"` RegistryPassword string `mapstructure:"docker_registry_pw" bson:"docker_registry_pw,omitempty" json:"docker_registry_pw,omitempty"` // Image is required and specifies the image for the container. // This can be a URL or an image base, to be combined with a registry. Image string `mapstructure:"image_url" bson:"image_url,omitempty" json:"image_url,omitempty"` // Method is either "pull" or "import" and defines how to retrieve the image. Method string `mapstructure:"build_type" bson:"build_type,omitempty" json:"build_type,omitempty"` // Command is required and is the command to run on the docker. Command string `mapstructure:"command" bson:"command,omitempty" json:"command,omitempty"` // If the container is created from host create, we want to skip building the image with agent SkipImageBuild bool `mapstructure:"skip_build" bson:"skip_build,omitempty" json:"skip_build,omitempty"` }
DockerOptions contains options for starting a container
type FinishTime ¶
FinishTime is a struct for storing pairs of host IDs and last container finish times
func AggregateLastContainerFinishTimes ¶
func AggregateLastContainerFinishTimes() ([]FinishTime, error)
AggregateLastContainerFinishTimes returns the latest finish time for each host with containers
type Host ¶
type Host struct { Id string `bson:"_id" json:"id"` Host string `bson:"host_id" json:"host"` User string `bson:"user" json:"user"` Secret string `bson:"secret" json:"secret"` Tag string `bson:"tag" json:"tag"` Distro distro.Distro `bson:"distro" json:"distro"` Provider string `bson:"host_type" json:"host_type"` IP string `bson:"ip_address" json:"ip_address"` // secondary (external) identifier for the host ExternalIdentifier string `bson:"ext_identifier" json:"ext_identifier"` // physical location of host Project string `bson:"project" json:"project"` Zone string `bson:"zone" json:"zone"` // True if the app server has done all necessary host setup work (although // the host may need to do additional provisioning before it is running). Provisioned bool `bson:"provisioned" json:"provisioned"` ProvisionAttempts int `bson:"priv_attempts" json:"provision_attempts"` ProvisionTime time.Time `bson:"prov_time,omitempty" json:"prov_time,omitempty"` ProvisionOptions *ProvisionOptions `bson:"provision_options,omitempty" json:"provision_options,omitempty"` // the task that is currently running on the host RunningTask string `bson:"running_task,omitempty" json:"running_task,omitempty"` RunningTaskGroup string `bson:"running_task_group,omitempty" json:"running_task_group,omitempty"` RunningTaskBuildVariant string `bson:"running_task_bv,omitempty" json:"running_task_bv,omitempty"` RunningTaskVersion string `bson:"running_task_version,omitempty" json:"running_task_version,omitempty"` RunningTaskProject string `bson:"running_task_project,omitempty" json:"running_task_project,omitempty"` // the task the most recently finished running on the host LastTask string `bson:"last_task" json:"last_task"` LastGroup string `bson:"last_group,omitempty" json:"last_group,omitempty"` LastBuildVariant string `bson:"last_bv,omitempty" json:"last_bv,omitempty"` LastVersion string `bson:"last_version,omitempty" json:"last_version,omitempty"` LastProject string `bson:"last_project,omitempty" json:"last_project,omitempty"` RunningTeardownForTask string `bson:"running_teardown,omitempty" json:"running_teardown,omitempty"` RunningTeardownSince time.Time `bson:"running_teardown_since,omitempty" json:"running_teardown_since,omitempty"` // the full task struct that is running on the host (only populated by certain aggregations) RunningTaskFull *task.Task `bson:"task_full,omitempty" json:"task_full,omitempty"` // duplicate of the DispatchTime field in the above task TaskDispatchTime time.Time `bson:"task_dispatch_time" json:"task_dispatch_time"` ExpirationTime time.Time `bson:"expiration_time,omitempty" json:"expiration_time"` // creation is when the host document was inserted to the DB, start is when it was started on the cloud provider CreationTime time.Time `bson:"creation_time" json:"creation_time"` StartTime time.Time `bson:"start_time" json:"start_time"` // AgentStartTime is when the agent first initiates contact with the app // server. AgentStartTime time.Time `bson:"agent_start_time" json:"agent_start_time"` TerminationTime time.Time `bson:"termination_time" json:"termination_time"` TaskCount int `bson:"task_count" json:"task_count"` LastTaskCompletedTime time.Time `bson:"last_task_completed_time" json:"last_task_completed_time"` LastCommunicationTime time.Time `bson:"last_communication" json:"last_communication"` Status string `bson:"status" json:"status"` StartedBy string `bson:"started_by" json:"started_by"` // True if this host was created manually by a user (i.e. with spawnhost) UserHost bool `bson:"user_host" json:"user_host"` AgentRevision string `bson:"agent_revision" json:"agent_revision"` NeedsNewAgent bool `bson:"needs_agent" json:"needs_agent"` NeedsNewAgentMonitor bool `bson:"needs_agent_monitor" json:"needs_agent_monitor"` // JasperCredentialsID is used to match hosts to their Jasper credentials // for non-legacy hosts. JasperCredentialsID string `bson:"jasper_credentials_id" json:"jasper_credentials_id"` // JasperDeployAttempts is the current number of times the app server has // attempted to deploy a new Jasper service to the host. JasperDeployAttempts int `bson:"jasper_deploy_attempts" json:"jasper_deploy_attempts"` // for ec2 dynamic hosts, the instance type requested InstanceType string `bson:"instance_type" json:"instance_type,omitempty"` // for ec2 dynamic hosts, the total size of the volumes requested, in GiB VolumeTotalSize int64 `bson:"volume_total_size" json:"volume_total_size,omitempty"` VolumeIDs []string `bson:"volume_ids,omitempty" json:"volume_ids,omitempty"` // stores information on expiration notifications for spawn hosts Notifications map[string]bool `bson:"notifications,omitempty" json:"notifications,omitempty"` // ComputeCostPerHour is the compute (not storage) cost of one host for one hour. Cloud // managers can but are not required to cache this price. ComputeCostPerHour float64 `bson:"compute_cost_per_hour,omitempty" json:"compute_cost_per_hour,omitempty"` // incremented by task start and end stats collectors and // should reflect hosts total costs. Only populated for build-hosts // where host providers report costs. TotalCost float64 `bson:"total_cost,omitempty" json:"total_cost,omitempty"` // accrues the value of idle time. TotalIdleTime time.Duration `bson:"total_idle_time,omitempty" json:"total_idle_time,omitempty" yaml:"total_idle_time,omitempty"` // managed containers require different information based on host type // True if this host is a parent of containers HasContainers bool `bson:"has_containers,omitempty" json:"has_containers,omitempty"` // stores URLs of container images already downloaded on a parent ContainerImages map[string]bool `bson:"container_images,omitempty" json:"container_images,omitempty"` // stores the ID of the host a container is on ParentID string `bson:"parent_id,omitempty" json:"parent_id,omitempty"` // stores last expected finish time among all containers on the host LastContainerFinishTime time.Time `bson:"last_container_finish_time,omitempty" json:"last_container_finish_time,omitempty"` // ContainerPoolSettings ContainerPoolSettings *evergreen.ContainerPool `bson:"container_pool_settings,omitempty" json:"container_pool_settings,omitempty"` ContainerBuildAttempt int `bson:"container_build_attempt" json:"container_build_attempt"` // SpawnOptions holds data which the monitor uses to determine when to terminate hosts spawned by tasks. SpawnOptions SpawnOptions `bson:"spawn_options,omitempty" json:"spawn_options,omitempty"` // DockerOptions stores information for creating a container with a specific image and command DockerOptions DockerOptions `bson:"docker_options,omitempty" json:"docker_options,omitempty"` // InstanceTags stores user-specified tags for instances InstanceTags []Tag `bson:"instance_tags,omitempty" json:"instance_tags,omitempty"` }
func AllHostsSpawnedByTasksToTerminate ¶
AllHostsSpawnedByTasksToTerminate finds all hosts spawned by tasks that should be terminated.
func AllIdleEphemeral ¶
AllIdleEphemeral finds all running ephemeral hosts without containers that have no running tasks.
func FindAllHostsSpawnedByTasks ¶
FindAllHostsSpawnedByTasks finds all running hosts spawned by the `createhost` command.
func FindAllRunningContainers ¶
FindAllRunningContainers finds all the containers that are currently running
func FindAllRunningParents ¶
FindAllRunningParents finds all running hosts that have child containers
func FindAllRunningParentsByDistro ¶
FindAllRunningParentsOnDistro finds all running hosts of a given distro with child containers
func FindAllRunningParentsOrdered ¶
FindAllRunningParentsOrdered finds all running hosts with child containers, sorted in order of soonest to latest LastContainerFinishTime
func FindByExpiringJasperCredentials ¶
FindByExpiringJasperCredentials finds all hosts whose Jasper service credentials will expire within the given cutoff.
func FindByNeedsNewAgentMonitor ¶
FindByNeedsNewAgentMonitor returns running hosts that need a new agent monitor.
func FindHostsSpawnedByBuild ¶
FindHostsSpawnedByBuild finds hosts spawned by the `createhost` command scoped to a given build.
func FindHostsSpawnedByTask ¶
FindHostsSpawnedByTask finds hosts spawned by the `createhost` command scoped to a given task.
func FindHostsToTerminate ¶
func FindOneByIdOrTag ¶
FindOneByIdOrTag finds a host where the given id is stored in either the _id or tag field. (The tag field is used for the id from the host's original intent host.)
func FindOneByJasperCredentialsID ¶
FindByJasperCredentialsID finds a host with the given Jasper credentials ID.
func FindRunningHosts ¶
FindRunningHosts is the underlying query behind the hosts page's table
func FindTerminatedHostsRunningTasks ¶
FindTerminatedHostsRunningTasks finds all hosts that were running tasks when they were either terminated or needed to be re-provisioned.
func FindUserDataSpawnHostsProvisioning ¶
FindUserDataSpawnHostsProvisioning finds all spawn hosts that have been provisioned by the app server but are still being provisioned by user data.
func GenerateContainerHostIntents ¶
func GenerateContainerHostIntents(d distro.Distro, newContainersNeeded int, hostOptions CreateOptions) ([]Host, error)
GenerateContainerHostIntents generates container intent documents by going through available parents and packing on the parents with longest expected finish time
func NewIntent ¶
func NewIntent(d distro.Distro, instanceName, provider string, options CreateOptions) *Host
NewIntent creates an IntentHost using the given host settings. An IntentHost is a host that does not exist yet but is intended to be picked up by the hostinit package and started. This function takes distro information, the name of the instance, the provider of the instance and a CreateOptions and returns an IntentHost.
func (*Host) AddTags ¶
AddTags adds the specified tags to the host document, or modifies an existing tag if it can be modified.
func (*Host) AgentMonitorOptions ¶
AgentMonitorOptions assembles the input to a Jasper request to start the agent monitor.
func (*Host) BootstrapScript ¶
func (h *Host) BootstrapScript(settings *evergreen.Settings, creds *rpc.Credentials, preJasperSetup, postJasperSetup []string) (string, error)
BootstrapScript creates the user data script to bootstrap the host.
func (*Host) CacheHostData ¶
func (*Host) ClearRunningAndSetLastTask ¶
ClearRunningAndSetLastTask unsets the running task on the host and updates the last task fields.
func (*Host) ClearRunningTask ¶
ClearRunningTask unsets the running task on the host.
func (*Host) ClearRunningTeardownGroup ¶
func (*Host) CountContainersRunningAtTime ¶
CountContainersRunningAtTime counts how many containers were running on the given parent host at the specified time, using the host StartTime and TerminationTime fields.
func (*Host) CreateSecret ¶
CreateSecret generates a host secret and updates the host both locally and in the database.
func (*Host) CurlCommand ¶
CurlCommand returns the command to curl the evergreen client.
func (*Host) CurlCommandWithRetry ¶
func (h *Host) CurlCommandWithRetry(settings *evergreen.Settings, numRetries, maxRetrySecs int) string
CurlCommandWithRetry is the same as CurlCommand but retries the request if numRetries and maxRetrySecs are non-zero.
func (*Host) DeleteJasperCredentials ¶
DeleteJasperCredentials deletes the Jasper credentials for the host and updates the host both in memory and in the database.
func (*Host) DeleteTags ¶
DeleteTags removes tags specified by their keys, only if those keys are allowed to be deleted.
func (*Host) DisablePoisonedHost ¶
func (*Host) EstimateNumContainersForDuration ¶
EstimateNumberContainersForDuration estimates how many containers were running on a given host during the specified time interval by averaging the counts at the start and end. It is more accurate for shorter tasks.
func (*Host) FetchAndReinstallJasperCommand ¶
FetchAndReinstallJasperCommand returns the command to fetch Jasper and restart the service with the latest version.
func (*Host) FetchJasperCommand ¶
func (h *Host) FetchJasperCommand(config evergreen.HostJasperConfig) string
FetchJasperCommand builds the command to download and extract the Jasper binary into the distro-specific binary directory.
func (*Host) FetchJasperCommandWithPath ¶
func (h *Host) FetchJasperCommandWithPath(config evergreen.HostJasperConfig, path string) string
FetchJasperCommandWithPath is the same as FetchJasperCommand but sets the PATH variable to path for each command.
func (*Host) ForceReinstallJasperCommand ¶
ForceReinstallJasperCommand returns the command to stop the Jasper service, delete the current Jasper service configuration (if it exists), install the new configuration, and restart the service.
func (*Host) GenerateJasperCredentials ¶
GenerateJasperCredentials creates the Jasper credentials for the given host without saving them to the database. If credentials already exist in the database, they are deleted.
func (*Host) GetContainers ¶
GetContainers finds all the containers belonging to this host errors if this host is not a parent
func (*Host) GetElapsedCommunicationTime ¶
GetElapsedCommunicationTime returns how long since this host has communicated with evergreen or vice versa
func (*Host) GetParent ¶
GetParent finds the parent of this container errors if host is not a container or if parent cannot be found
func (*Host) GetSSHInfo ¶
func (h *Host) GetSSHInfo() (*util.StaticHostInfo, error)
GetSSHInfo returns the information necessary to SSH into this host.
func (*Host) GetSSHOptions ¶
GetSSHOptions returns the options to SSH into this host. EVG-6389: this currently relies on the fact that the EC2 provider has a single distro-level SSH key name corresponding to an existing SSH key file on the app servers. We should be able to handle multiple keys configured in admin settings rather than from a file name in distro settings.
func (*Host) GetTaskGroupString ¶
func (*Host) IncContainerBuildAttempt ¶
func (*Host) IncJasperDeployAttempts ¶
IncJasperDeployAttempts increments the number of times we have attempted to deploy Jasper to this host.
func (*Host) IncProvisionAttempts ¶
func (*Host) IncTaskCount ¶
func (*Host) InitSystem ¶
InitSystem determines the current Linux init system used by this host.
func (*Host) IsEphemeral ¶
func (*Host) IsIdleParent ¶
IsIdleParent determines whether a host with containers has exclusively terminated containers
func (*Host) IsWaitingForAgent ¶
IsWaitingForAgent provides a local predicate for the logic for whether the host needs either a new agent or agent monitor.
func (*Host) JasperClient ¶
func (h *Host) JasperClient(ctx context.Context, settings *evergreen.Settings) (jasper.RemoteClient, error)
JasperClient returns a remote client that communicates with this host's Jasper service.
func (*Host) JasperClientCredentials ¶
JasperClientCredentials gets the Jasper credentials for a client to communicate with the host's running Jasper service. These credentials should be used only to connect to the host's Jasper service.
func (*Host) JasperCommunication ¶
JasperCommunication returns whether or not the app server is communicating with this host's Jasper service.
func (*Host) JasperCredentials ¶
JasperCredentials gets the Jasper credentials for this host's running Jasper service from the database. These credentials should not be used to connect to the Jasper service - use JasperClientCredentials for this purpose.
func (*Host) JasperCredentialsExpiration ¶
JasperCredentialsExpiration returns the time at which the host's Jasper credentials will expire.
func (*Host) LegacyBootstrap ¶
LegacyBootstrap returns whether the host was bootstrapped using the legacy method.
func (*Host) LegacyCommunication ¶
LegacyCommunication returns whether the app server is communicating with this host using the legacy method.
func (*Host) MarkAsProvisioned ¶
func (*Host) MarkReachable ¶
func (*Host) MarkUserDataDoneCommand ¶
MarkUserDataDoneCommand creates the command to make the marker file indicating user data has finished executing.
func (*Host) MarshalBSON ¶
func (*Host) ModifySpawnHost ¶
func (h *Host) ModifySpawnHost(opts HostModifyOptions) error
ModifySpawnHost updates a spawnhost with the changes described in a HostModifyOptions struct.
func (*Host) ResetJasperDeployAttempts ¶
ResetJasperDeployAttempts resets the number of Jasper deploy attempts to zero.
func (*Host) ResetLastCommunicated ¶
ResetLastCommunicated sets the LastCommunicationTime to be zero.
func (*Host) RestartJasperCommand ¶
func (h *Host) RestartJasperCommand(config evergreen.HostJasperConfig) string
RestartJasperCommand returns the command to restart the Jasper service with the existing configuration.
func (*Host) RunJasperProcess ¶
func (h *Host) RunJasperProcess(ctx context.Context, settings *evergreen.Settings, opts *options.Create) (string, error)
RunJasperProcess makes a request to the host's Jasper service to create the process with the given options, wait for its completion, and returns the output from it.
func (*Host) RunSSHCommand ¶
RunSSHCommand runs an SSH command on a remote host.
func (*Host) SaveJasperCredentials ¶
SaveJasperCredentials saves the given Jasper credentials in the database for the host.
func (*Host) SetAgentRevision ¶
SetAgentRevision sets the updated agent revision for the host
func (*Host) SetAgentStartTime ¶
func (*Host) SetDNSName ¶
SetDNSName updates the DNS name for a given host once
func (*Host) SetExpirationNotification ¶
SetExpirationNotification updates the notification time for a spawn host
func (*Host) SetExpirationTime ¶
SetExpirationTime updates the expiration time of a spawn host
func (*Host) SetIPv6Address ¶
func (*Host) SetNeedsAgentDeploy ¶
SetNeedsAgentDeploy indicates that the host's agent or agent monitor needs to be deployed.
func (*Host) SetNeedsNewAgent ¶
SetNeedsNewAgent sets the "needs new agent" flag on the host. This is a no-op on non-legacy hosts.
func (*Host) SetNeedsNewAgentAtomically ¶
SetNeedsNewAgentAtomically sets the "needs new agent" flag on the host atomically.
func (*Host) SetNeedsNewAgentMonitor ¶
SetNeedsNewAgentMonitor sets the "needs new agent monitor" flag on the host to indicate that the host needs to have the agent monitor deployed.
func (*Host) SetNeedsNewAgentMonitorAtomically ¶
SetNeedsNewAgentMonitorAtomically is the same as SetNeedsNewAgentMonitor but performs an atomic update on the host in the database.
func (*Host) SetProvisionedNotRunning ¶
SetProvisionedNotRunning marks the host as having been provisioned by the app server but the host is not necessarily running yet.
func (*Host) SetProvisioning ¶
SetProvisioning marks the host as initializing. Only allow this if the host is uninitialized.
func (*Host) SetRunning ¶
func (*Host) SetRunningTeardownGroup ¶
SetRunningTeardownGroup marks the host as running teardown_group for a task group, no-oping if it's already set to the same task
func (*Host) SetTerminated ¶
func (*Host) SetUnprovisioned ¶
func (*Host) SetUserDataHostProvisioned ¶
SetUserDataHostProvisioned sets the host to running if it was bootstrapped with user data but has not yet been marked as done provisioning.
func (*Host) SetupCommand ¶
func (*Host) SetupScriptCommands ¶
SetupScriptCommands returns the commands contained in the setup script with the expansions applied from the settings.
func (*Host) SetupSpawnHostCommand ¶
SetupSpawnHostCommand returns the bash commands to handle setting up a spawn host.
func (*Host) StartAgentMonitorRequest ¶
StartAgentMonitorRequest builds the Jasper client request that starts the agent monitor on the host. The host secret is created if it doesn't exist yet.
func (*Host) StartJasperProcess ¶
func (h *Host) StartJasperProcess(ctx context.Context, settings *evergreen.Settings, opts *options.Create) error
StartJasperProcess makes a request to the host's Jasper service to start a process with the given options without waiting for its completion.
func (*Host) StopAgentMonitor ¶
StopAgentMonitor stops the agent monitor (if it is running) on the host via its Jasper service . On legacy hosts, this is a no-op.
func (*Host) TearDownCommand ¶
TearDownCommand returns a command for running a teardown script on a host.
func (*Host) UnmarshalBSON ¶
func (*Host) UpdateDocumentID ¶
UpdateDocumentID updates the host document corresponding to the current host to have a new ID by finding, deleting, and replacing the document with a new one.
func (*Host) UpdateJasperCredentialsID ¶
UpdateJasperCredentialsID sets the ID of the host's Jasper credentials.
func (*Host) UpdateLastCommunicated ¶
UpdateLastCommunicated sets the host's last communication time to the current time.
func (*Host) UpdateLastContainerFinishTime ¶
UpdateLastContainerFinishTime updates latest finish time for a host with containers
func (*Host) UpdateProvisioningToRunning ¶
UpdateProvisioningToRunning changes the host status from provisioning to running, as well as logging that the host has finished provisioning.
func (*Host) UpdateRunningTask ¶
UpdateRunningTask updates the running task in the host document, returns - true, nil on success - false, nil on duplicate key error, task is already assigned to another host - false, error on all other errors
func (*Host) UserDataDoneFilePath ¶
UserDataDoneFilePath returns the path to the user data done marker file.
func (*Host) WriteJasperCredentialsFileCommand ¶
func (h *Host) WriteJasperCredentialsFileCommand(creds *rpc.Credentials) (string, error)
WriteJasperCredentialsFileCommand builds the command to write the Jasper credentials to a file.
type HostGroup ¶
type HostGroup []Host
func AllActiveHosts ¶
AllActiveHosts produces a HostGroup for all hosts with UpHost status as well as quarantined hosts. These do not count spawn hosts.
func AllRunningHosts ¶
func (HostGroup) CountContainersOnParents ¶
CountContainersOnParents counts how many containers are children of the given group of hosts
func (HostGroup) FindUphostContainersOnParents ¶
FindUphostContainersOnParents returns the containers that are children of the given hosts
func (HostGroup) GetHostIds ¶
GetHostIds returns a slice of host IDs for the given group of hosts
func (HostGroup) Stats ¶
func (hosts HostGroup) Stats() HostGroupStats
type HostGroupStats ¶
type HostGroupStats struct { Quarantined int `bson:"quarantined" json:"quarantined" yaml:"quarantined"` Decommissioned int `bson:"decommissioned" json:"decommissioned" yaml:"decommissioned"` Idle int `bson:"idle" json:"idle" yaml:"idle"` Active int `bson:"active" json:"active" yaml:"active"` Provisioning int `bson:"provisioning" json:"provisioning" yaml:"provisioning"` Total int `bson:"total" json:"total" yaml:"total"` }
type HostModifyOptions ¶
type IdleHostsByDistroID ¶
type IdleHostsByDistroID struct { DistroID string `bson:"distro_id"` IdleHosts []Host `bson:"idle_hosts"` RunningHostsCount int `bson:"running_hosts_count"` }
func IdleEphemeralGroupedByDistroID ¶
func IdleEphemeralGroupedByDistroID() ([]IdleHostsByDistroID, error)
IdleEphemeralGroupedByDistroId groups and collates the following by distro.Id: - []host.Host of ephemeral hosts without containers which having no running task, ordered by {host.CreationTime: 1} - the total number of ephemeral hosts with status: evergreen.HostRunning
func (*IdleHostsByDistroID) MarshalBSON ¶
func (h *IdleHostsByDistroID) MarshalBSON() ([]byte, error)
func (*IdleHostsByDistroID) UnmarshalBSON ¶
func (h *IdleHostsByDistroID) UnmarshalBSON(in []byte) error
type InactiveHostCounts ¶
func CountInactiveHostsByProvider ¶
func CountInactiveHostsByProvider() ([]InactiveHostCounts, error)
type ProviderStats ¶
type ProviderStats []StatsByProvider
func GetProviderCounts ¶
func GetProviderCounts() (ProviderStats, error)
GetProvierCounts returns data on the number of hosts by different provider stats.
func (ProviderStats) Map ¶
func (p ProviderStats) Map() map[string]int
type ProvisionOptions ¶
type ProvisionOptions struct { // LoadCLI indicates (if set) that while provisioning the host, the CLI binary should // be placed onto the host after startup. LoadCLI bool `bson:"load_cli" json:"load_cli"` // TaskId if non-empty will trigger the CLI tool to fetch source and artifacts for the given task. // Ignored if LoadCLI is false. TaskId string `bson:"task_id" json:"task_id"` // Owner is the user associated with the host used to populate any necessary metadata. OwnerId string `bson:"owner_id" json:"owner_id"` }
ProvisionOptions is struct containing options about how a new host should be set up.
type SpawnOptions ¶
type SpawnOptions struct { // TimeoutTeardown is the time that this host should be torn down. In most cases, a host // should be torn down due to its task or build. TimeoutTeardown is a backstop to ensure that Evergreen // tears down a host if a task hangs or otherwise does not finish within an expected period of time. TimeoutTeardown time.Time `bson:"timeout_teardown" json:"timeout_teardown"` // TimeoutTeardown is the time after which Evergreen should give up trying to set up this host. TimeoutSetup time.Time `bson:"timeout_setup" json:"timeout_setup"` // TaskID is the task_id of the task to which this host is pinned. When the task finishes, // this host should be torn down. Only one of TaskID or BuildID should be set. TaskID string `bson:"task_id,omitempty" json:"task_id,omitempty"` // BuildID is the build_id of the build to which this host is pinned. When the build finishes, // this host should be torn down. Only one of TaskID or BuildID should be set. BuildID string `bson:"build_id,omitempty" json:"build_id,omitempty"` // Retries is the number of times Evergreen should try to spawn this host. Retries int `bson:"retries,omitempty" json:"retries,omitempty"` // SpawnedByTask indicates that this host has been spawned by a task. SpawnedByTask bool `bson:"spawned_by_task,omitempty" json:"spawned_by_task,omitempty"` }
SpawnOptions holds data which the monitor uses to determine when to terminate hosts spawned by tasks.
type StatsByDistro ¶
type StatsByDistro struct { // ID of the distro the below stats are for Distro string `bson:"distro" json:"distro,omitempty"` // Provider is the provider type of the distro Provider string `bson:"provider" json:"provider,omitempty"` // Host status that the below stats are for Status string `bson:"status" json:"status"` // Number of hosts in this status Count int `bson:"count" json:"count"` // Number of tasks running on hosts in the above group (should only be nonzero for running hosts) NumTasks int `bson:"num_tasks_running" json:"num_tasks_running"` // MaxHosts reports the pool size of the distro. MaxHosts int `bson:"max_hosts" json:"max_hosts"` }
func (*StatsByDistro) MarshalBSON ¶
func (d *StatsByDistro) MarshalBSON() ([]byte, error)
func (*StatsByDistro) UnmarshalBSON ¶
func (d *StatsByDistro) UnmarshalBSON(in []byte) error