Documentation ¶
Index ¶
- Constants
- Variables
- func DBGetJobAcl(job_id string) (_acl acl.Acl, err error)
- func DbFindDistinct(q bson.M, d string) (results interface{}, err error)
- func DbUpdateJobField(job_id string, key string, value interface{}) (err error)
- func DeleteClientGroup(id string) (err error)
- func GetJobCount(q bson.M) (count int, err error)
- func GetJobIdByTaskId(taskid string) (jobid string, err error)
- func GetJobIdByWorkId(workid string) (jobid string, err error)
- func GetTaskIdByWorkId(workid string) (taskid string, err error)
- func HasInfoField(a string) bool
- func InitAwfMgr()
- func InitClientGroupDB()
- func InitJobDB()
- func InitProxyWorkChan()
- func InitReaper()
- func InitResMgr(service string)
- func IsFirstTask(taskid string) bool
- func NotifyWorkunitProcessed(work *Workunit, perf *WorkPerf) (err error)
- func PostNodeWithToken(io *IO, numParts int, token string) (nodeid string, err error)
- func PushOutputData(work *Workunit) (size int64, err error)
- func PutFileToShock(filename string, host string, nodeid string, rank int, token string, ...) (err error)
- func ReloadFromDisk(path string) (err error)
- func RemoveWorkFromClient(client *Client, clientid string, workid string) (err error)
- func SetClientProfile(profile *Client)
- func ShockPutIndex(host string, nodeid string, indexname string, token string) (err error)
- func UpdateJobState(jobid string, newstate string, oldstates []string) (err error)
- type CQMgr
- func (qm *CQMgr) AddClient(client *Client, lock bool) (err error)
- func (qm *CQMgr) CheckClient(client *Client) (ok bool, err error)
- func (qm *CQMgr) CheckoutWorkunits(req_policy string, client_id string, client *Client, available_bytes int64, ...) (workunits []*Workunit, err error)
- func (qm *CQMgr) ClientChecker()
- func (qm *CQMgr) ClientHandle()
- func (qm *CQMgr) ClientHeartBeat(id string, cg *ClientGroup) (hbmsg HBmsg, err error)
- func (qm *CQMgr) ClientIdStatusChange(id string, new_status string, client_write_lock bool) (err error)
- func (qm *CQMgr) ClientStatusChange(client *Client, new_status string, client_write_lock bool) (err error)
- func (qm *CQMgr) DeleteClient(client *Client) (err error)
- func (qm *CQMgr) DeleteClientById(id string) (err error)
- func (qm *CQMgr) DeleteClientByUser(id string, u *user.User) (err error)
- func (qm *CQMgr) DeleteClients(delete_clients []string)
- func (qm *CQMgr) EnqueueWorkunit(work *Workunit) (err error)
- func (qm *CQMgr) FetchDataToken(workid string, clientid string) (token string, err error)
- func (qm *CQMgr) GetAllClientsByUser(u *user.User) (clients []*Client, err error)
- func (qm *CQMgr) GetClient(id string, lock_clientmap bool) (client *Client, ok bool, err error)
- func (qm *CQMgr) GetClientByUser(id string, u *user.User) (client *Client, err error)
- func (qm *CQMgr) GetClientMap() *ClientMap
- func (qm *CQMgr) GetWorkById(id string) (workunit *Workunit, err error)
- func (qm *CQMgr) HasClient(id string, lock_clientmap bool) (has bool, err error)
- func (qm *CQMgr) ListClients() (ids []string, err error)
- func (qm *CQMgr) NotifyWorkStatus(notice Notice)
- func (qm *CQMgr) ReQueueWorkunitByClient(client *Client, client_write_lock bool) (err error)
- func (qm *CQMgr) RegisterNewClient(files FormFiles, cg *ClientGroup) (client *Client, err error)
- func (qm *CQMgr) RemoveClient(id string, lock bool) (err error)
- func (qm *CQMgr) ResumeClient(id string) (err error)
- func (qm *CQMgr) ResumeClientByUser(id string, u *user.User) (err error)
- func (qm *CQMgr) ResumeSuspendedClients() (count int, err error)
- func (qm *CQMgr) ResumeSuspendedClientsByUser(u *user.User) (count int)
- func (qm *CQMgr) ShowWorkQueue()
- func (qm *CQMgr) ShowWorkunits(status string) (workunits []*Workunit, err error)
- func (qm *CQMgr) ShowWorkunitsByUser(status string, u *user.User) (workunits []*Workunit)
- func (qm *CQMgr) SuspendAllClients() (count int, err error)
- func (qm *CQMgr) SuspendAllClientsByUser(u *user.User) (count int)
- func (qm *CQMgr) SuspendClient(id string, client *Client, client_write_lock bool) (err error)
- func (qm *CQMgr) SuspendClientByUser(id string, u *user.User) (err error)
- func (qm *CQMgr) UpdateSubClients(id string, count int) (err error)
- func (qm *CQMgr) UpdateSubClientsByUser(id string, count int, u *user.User)
- type CWL_workunit
- type Client
- func (cl *Client) Add_work(workid string) (err error)
- func (cl *Client) Append_Skip_work(workid string, write_lock bool) (err error)
- func (cl *Client) Contains_Skip_work_nolock(workid string) (c bool)
- func (cl *Client) Current_work_delete(workid string, write_lock bool) (err error)
- func (cl *Client) Current_work_has(workid string) (ok bool, err error)
- func (cl *Client) Current_work_length(lock bool) (clength int, err error)
- func (cl *Client) Get_Ack() (ack CoAck, err error)
- func (cl *Client) Get_Id(do_read_lock bool) (s string, err error)
- func (cl *Client) Get_Last_failed() (count int, err error)
- func (cl *Client) Get_Status(do_read_lock bool) (s string, err error)
- func (cl *Client) Get_Total_checkout() (count int, err error)
- func (cl *Client) Get_Total_completed() (count int, err error)
- func (cl *Client) Get_Total_failed() (count int, err error)
- func (cl *Client) Get_current_work(do_read_lock bool) (current_work_ids []string, err error)
- func (cl *Client) Increment_last_failed(write_lock bool) (value int, err error)
- func (cl *Client) Increment_total_checkout(err error)
- func (cl *Client) Increment_total_completed() (err error)
- func (cl *Client) Increment_total_failed(write_lock bool) (err error)
- func (client *Client) Init()
- func (cl *Client) IsBusy(lock bool) (busy bool, err error)
- func (cl *Client) Marshal() (result []byte, err error)
- func (cl *Client) Set_Status(s string, write_lock bool) (err error)
- func (cl *Client) Set_current_work(current_work_ids []string, do_write_lock bool) (err error)
- type ClientGroup
- func CreateClientGroup(name string, u *user.User) (cg *ClientGroup, err error)
- func LoadClientGroup(id string) (clientgroup *ClientGroup, err error)
- func LoadClientGroupByName(name string) (clientgroup *ClientGroup, err error)
- func LoadClientGroupByToken(token string) (clientgroup *ClientGroup, err error)
- type ClientGroups
- type ClientMap
- func (cl *ClientMap) Add(client *Client, lock bool) (err error)
- func (cl *ClientMap) Delete(client_id string, lock bool) (err error)
- func (cl *ClientMap) Get(client_id string, lock bool) (client *Client, ok bool, err error)
- func (cl *ClientMap) GetClientIds() (ids []string, err error)
- func (cl *ClientMap) GetClients() (clients []*Client, err error)
- func (cl *ClientMap) Has(client_id string, lock bool) (ok bool, err error)
- type ClientMgr
- type ClientWorkMgr
- type Clients
- type CoAck
- type CoReq
- type Command
- type Command_p
- type Environ_p
- type Envs
- type FormFile
- type FormFiles
- type HBmsg
- type Helper
- type IO
- func (io *IO) DataUrl() (dataurl string, err error)
- func (io *IO) DeleteNode() (err error)
- func (io *IO) GetFileSize() (size int64, modified bool, err error)
- func (io *IO) GetIndexInfo(indextype string) (idxInfo shock.IdxInfo, hasIndex bool, err error)
- func (io *IO) GetShockNode() (node *shock.ShockNode, err error)
- func (io *IO) HasFile() bool
- func (io *IO) TotalUnits(indextype string) (count int, err error)
- type IOmap
- type Info
- type Job
- func CreateJobImport(u *user.User, file FormFile) (job *Job, err error)
- func CreateJobUpload(u *user.User, files FormFiles) (job *Job, err error)
- func GetJob(id string) (job *Job, err error)
- func JobDepToJob(jobDep *JobDep) (job *Job, err error)
- func LoadJob(id string) (job *Job, err error)
- func NewJob() (job *Job)
- func ReadJobFile(filename string) (job *Job, err error)
- func (job *Job) Delete() (err error)
- func (job *Job) FilePath() (path string, err error)
- func (job *Job) GetDataToken() (token string)
- func (job *Job) GetJobLogs() (jlog *JobLog, err error)
- func (job *Job) GetPrivateEnv(taskid string) (env map[string]string)
- func (job *Job) GetRemainTasks() (remain_tasks int, err error)
- func (job *Job) GetState(do_lock bool) (state string, err error)
- func (job *Job) GetTasks() (tasks []*Task, err error)
- func (job *Job) IncrementRemainTasks(inc int) (err error)
- func (job *Job) IncrementResumed(inc int) (err error)
- func (job *Job) Init() (changed bool, err error)
- func (job *Job) Mkdir() (err error)
- func (job *Job) NumTask() int
- func (job *Job) Path() (path string, err error)
- func (job *Job) RLockRecursive()
- func (job *Job) RUnlockRecursive()
- func (job *Job) Rmdir() (err error)
- func (job *Job) Save() (err error)
- func (job *Job) SaveToDisk() (err error)
- func (job *Job) SetClientgroups(clientgroups string) (err error)
- func (job *Job) SetDataToken(token string) (err error)
- func (job *Job) SetError(newError *JobError) (err error)
- func (job *Job) SetExpiration(expire string) (err error)
- func (job *Job) SetFile(file FormFile) (err error)
- func (job *Job) SetPipeline(pipeline string) (err error)
- func (job *Job) SetPriority(priority int) (err error)
- func (job *Job) SetRemainTasks(remain_tasks int) (err error)
- func (job *Job) SetState(newState string) (err error)
- func (job *Job) TaskList() []*Task
- func (job *Job) UpdateFile(files FormFiles, field string) (err error)
- type JobDep
- type JobError
- type JobLog
- type JobMap
- type JobMgr
- type JobMin
- type JobPerf
- type JobRaw
- type JobReaper
- type Job_Acl
- type Job_p
- type Jobs
- func (n *Jobs) GetAll(q bson.M, order string, direction string) (err error)
- func (n *Jobs) GetAllLimitOffset(q bson.M, limit int, offset int) (err error)
- func (n *Jobs) GetAllRecent(q bson.M, recent int) (count int, err error)
- func (n *Jobs) GetAllUnsorted(q bson.M) (err error)
- func (n *Jobs) GetJobAt(index int) *Job
- func (n *Jobs) GetPaginated(q bson.M, limit int, offset int, order string, direction string) (count int, err error)
- func (n *Jobs) Init() (err error)
- func (n *Jobs) Length() int
- func (n *Jobs) RLockRecursive()
- func (n *Jobs) RUnlockRecursive()
- type Notice
- type Opts
- type PartInfo
- type Pipeline
- type ProxyMgr
- func (qm *ProxyMgr) ClientChecker()
- func (qm *ProxyMgr) ClientHandle()
- func (qm *ProxyMgr) DeleteJobByUser(jobid string, u *user.User, full bool) (err error)
- func (qm *ProxyMgr) DeleteSuspendedJobsByUser(u *user.User, full bool) (num int)
- func (qm *ProxyMgr) DeleteZombieJobsByUser(u *user.User, full bool) (num int)
- func (qm *ProxyMgr) EnqueueTasksByJobId(jobid string) (err error)
- func (qm *ProxyMgr) FetchDataToken(workid string, clientid string) (token string, err error)
- func (qm *ProxyMgr) FetchPrivateEnv(workid string, clientid string) (env map[string]string, err error)
- func (qm *ProxyMgr) FinalizeWorkPerf(string, string) (err error)
- func (qm *ProxyMgr) GetActiveJobs() map[string]bool
- func (qm *ProxyMgr) GetJsonStatus() (status map[string]map[string]int, err error)
- func (qm *ProxyMgr) GetQueue(name string) interface{}
- func (qm *ProxyMgr) GetReportMsg(string, string) (report string, err error)
- func (qm *ProxyMgr) GetSuspendJobs() map[string]bool
- func (qm *ProxyMgr) GetTextStatus() string
- func (qm *ProxyMgr) IsJobRegistered(id string) bool
- func (qm *ProxyMgr) JobRegister() (jid string, err error)
- func (qm *ProxyMgr) Lock()
- func (qm *ProxyMgr) NoticeHandle()
- func (qm *ProxyMgr) QueueStatus() string
- func (qm *ProxyMgr) RLock()
- func (qm *ProxyMgr) RUnlock()
- func (qm *ProxyMgr) RecomputeJob(jobid string, stage string) (err error)
- func (qm *ProxyMgr) RecoverJob(id string) (err error)
- func (qm *ProxyMgr) RecoverJobs() (err error)
- func (qm *ProxyMgr) RegisterNewClient(files FormFiles, cg *ClientGroup) (client *Client, err error)
- func (qm *ProxyMgr) ResubmitJob(id string) (err error)
- func (qm *ProxyMgr) ResumeQueue()
- func (qm *ProxyMgr) ResumeSuspendedJobByUser(id string, u *user.User) (err error)
- func (qm *ProxyMgr) ResumeSuspendedJobsByUser(u *user.User) (num int)
- func (qm *ProxyMgr) SaveStdLog(string, string, string) (err error)
- func (qm *ProxyMgr) SuspendJob(jobid string, jerror *JobError) (err error)
- func (qm *ProxyMgr) SuspendQueue()
- func (qm *ProxyMgr) TaskHandle()
- func (qm *ProxyMgr) Unlock()
- func (qm *ProxyMgr) UpdateQueueLoop()
- func (qm *ProxyMgr) UpdateQueueToken(job *Job) (err error)
- type RWMutex
- func (m *RWMutex) Init(name string)
- func (m *RWMutex) Lock() (err error)
- func (m *RWMutex) LockNamed(name string) (err error)
- func (m *RWMutex) RCount() (c int)
- func (m *RWMutex) RList() (list []string)
- func (m *RWMutex) RLock()
- func (m *RWMutex) RLockAnon()
- func (m *RWMutex) RLockNamed(name string) (rl ReadLock, err error)
- func (m *RWMutex) RUnlock()
- func (m *RWMutex) RUnlockAnon()
- func (m *RWMutex) RUnlockNamed(rl ReadLock)
- func (m *RWMutex) Unlock()
- type ReadLock
- type ResourceMgr
- type ServerMgr
- func (qm *ServerMgr) ClientHandle()
- func (qm *ServerMgr) CreateAndEnqueueWorkunits(task *Task) (err error)
- func (qm *ServerMgr) CreateJobPerf(jobid string)
- func (qm *ServerMgr) CreateTaskPerf(taskid string)
- func (qm *ServerMgr) CreateWorkPerf(workid string)
- func (qm *ServerMgr) DeleteJobByUser(jobid string, u *user.User, full bool) (err error)
- func (qm *ServerMgr) DeleteSuspendedJobsByUser(u *user.User, full bool) (num int)
- func (qm *ServerMgr) DeleteZombieJobsByUser(u *user.User, full bool) (num int)
- func (qm *ServerMgr) EnqueueTasksByJobId(jobid string) (err error)
- func (qm *ServerMgr) FetchDataToken(workid string, clientid string) (token string, err error)
- func (qm *ServerMgr) FetchPrivateEnv(workid string, clientid string) (env map[string]string, err error)
- func (qm *ServerMgr) FetchPrivateEnvs(workid string, clientid string) (envs map[string]string, err error)
- func (qm *ServerMgr) FinalizeJobPerf(jobid string)
- func (qm *ServerMgr) FinalizeTaskPerf(task *Task)
- func (qm *ServerMgr) FinalizeWorkPerf(workid string, reportfile string) (err error)
- func (qm *ServerMgr) GetActiveJobs() (ajobs map[string]bool)
- func (qm *ServerMgr) GetJsonStatus() (status map[string]map[string]int, err error)
- func (qm *ServerMgr) GetQueue(name string) interface{}
- func (qm *ServerMgr) GetReportMsg(workid string, logname string) (report string, err error)
- func (qm *ServerMgr) GetSuspendJobs() (sjobs map[string]bool)
- func (qm *ServerMgr) GetTextStatus() string
- func (qm *ServerMgr) IsJobRegistered(id string) bool
- func (qm *ServerMgr) Lock()
- func (qm *ServerMgr) LogJobPerf(jobid string)
- func (qm *ServerMgr) NoticeHandle()
- func (qm *ServerMgr) QueueStatus() string
- func (qm *ServerMgr) RLock()
- func (qm *ServerMgr) RUnlock()
- func (qm *ServerMgr) RecomputeJob(jobid string, stage string) (err error)
- func (qm *ServerMgr) RecoverJob(id string) (err error)
- func (qm *ServerMgr) RecoverJobs() (err error)
- func (qm *ServerMgr) ResubmitJob(jobid string) (err error)
- func (qm *ServerMgr) ResumeQueue()
- func (qm *ServerMgr) ResumeSuspendedJobByUser(id string, u *user.User) (err error)
- func (qm *ServerMgr) ResumeSuspendedJobsByUser(u *user.User) (num int)
- func (qm *ServerMgr) SaveStdLog(workid string, logname string, tmppath string) (err error)
- func (qm *ServerMgr) ShowTasks()
- func (qm *ServerMgr) SuspendJob(jobid string, jerror *JobError) (err error)
- func (qm *ServerMgr) SuspendQueue()
- func (qm *ServerMgr) TaskHandle()
- func (qm *ServerMgr) Unlock()
- func (qm *ServerMgr) UpdateJobPerfStartTime(jobid string)
- func (qm *ServerMgr) UpdateJobTaskToInProgress(works []*Workunit)
- func (qm *ServerMgr) UpdateQueueLoop()
- func (qm *ServerMgr) UpdateQueueToken(job *Job) (err error)
- func (qm *ServerMgr) UpdateTaskPerfStartTime(taskid string)
- type StandardResponse
- type StringLocked
- type StructContainer
- type Task
- func (task *Task) CreateIndex() (err error)
- func (task *Task) CreateWorkunits() (wus []*Workunit, err error)
- func (task *Task) DeleteInput() (modified int)
- func (task *Task) DeleteOutput() (modified int)
- func (task *Task) GetOutput(filename string) (output *IO, err error)
- func (task *Task) GetOutputs() (outputs []*IO, err error)
- func (task *Task) GetTaskLogs() (tlog *TaskLog)
- func (task *Task) IncrementComputeTime(inc int) (err error)
- func (task *Task) IncrementRemainWork(inc int, writelock bool) (remainwork int, err error)
- func (task *Task) Init(job *Job) (changed bool, err error)
- func (task *Task) InitPartIndex() (err error)
- func (task *Task) SetRemainWork(num int, writelock bool) (err error)
- func (task *Task) UpdateInputs() (err error)
- func (task *Task) UpdateOutputs() (err error)
- func (task *Task) UpdatePredata() (err error)
- type TaskDep
- type TaskLog
- type TaskMap
- type TaskPerf
- type TaskRaw
- func (task *TaskRaw) GetDependsOn() (dep []string, err error)
- func (task *TaskRaw) GetId() (id string, err error)
- func (task *TaskRaw) GetJobId() (id string, err error)
- func (task *TaskRaw) GetState() (state string, err error)
- func (task *TaskRaw) GetStateNamed(name string) (state string, err error)
- func (task *TaskRaw) InitRaw(job *Job) (changed bool, err error)
- func (task *TaskRaw) SetCompletedDate(t time.Time, lock bool) (err error)
- func (task *TaskRaw) SetCreatedDate(t time.Time) (err error)
- func (task *TaskRaw) SetStartedDate(t time.Time) (err error)
- func (task *TaskRaw) SetState(new_state string) (err error)
- type Task_p
- type WorkList
- type WorkLog
- type WorkMgr
- type WorkPerf
- type WorkQueue
- func (wq *WorkQueue) Add(workunit *Workunit) (err error)
- func (wq *WorkQueue) Clean() (workids []string)
- func (wq *WorkQueue) Delete(id string) (err error)
- func (wq *WorkQueue) Get(id string) (w *Workunit, ok bool, err error)
- func (wq *WorkQueue) GetAll() (worklist []*Workunit, err error)
- func (wq *WorkQueue) GetForJob(jobid string) (worklist []*Workunit, err error)
- func (wq *WorkQueue) Has(id string) (has bool, err error)
- func (wq *WorkQueue) Len() (int, error)
- func (wq *WorkQueue) StatusChange(id string, workunit *Workunit, new_status string) (err error)
- type Workflow
- type WorkflowMgr
- type Workunit
- func (work *Workunit) CDworkpath() (err error)
- func (work *Workunit) GetNotes() string
- func (work *Workunit) Mkdir() (err error)
- func (work *Workunit) Part() (part string)
- func (work *Workunit) Path() string
- func (work *Workunit) RemoveDir() (err error)
- func (work *Workunit) SetState(new_state string)
- type WorkunitMap
- func (wm *WorkunitMap) Delete(id string) (err error)
- func (wm *WorkunitMap) Get(id string) (workunit *Workunit, ok bool, err error)
- func (wm *WorkunitMap) GetWorkunits() (workunits []*Workunit, err error)
- func (wm *WorkunitMap) Len() (length int, err error)
- func (wm *WorkunitMap) Set(workunit *Workunit) (err error)
- type WorkunitsSortby
Constants ¶
const ( CLIENT_STAT_ACTIVE_BUSY = "active-busy" CLIENT_STAT_ACTIVE_IDLE = "active-idle" CLIENT_STAT_SUSPEND = "suspend" CLIENT_STAT_DELETED = "deleted" )
const ( JOB_STAT_INIT = "init" JOB_STAT_QUEUED = "queued" JOB_STAT_INPROGRESS = "in-progress" JOB_STAT_COMPLETED = "completed" JOB_STAT_SUSPEND = "suspend" JOB_STAT_FAILED_PERMANENT = "failed-permanent" // this sepcific error state can be trigger by the workflow software JOB_STAT_DELETED = "deleted" )
const ( TASK_STAT_INIT = "init" TASK_STAT_QUEUED = "queued" TASK_STAT_INPROGRESS = "in-progress" TASK_STAT_PENDING = "pending" TASK_STAT_SUSPEND = "suspend" TASK_STAT_FAILED = "failed" TASK_STAT_FAILED_PERMANENT = "failed-permanent" TASK_STAT_COMPLETED = "completed" TASK_STAT_SKIPPED = "user_skipped" TASK_STAT_FAIL_SKIP = "skipped" TASK_STAT_PASSED = "passed" )
const ( WORK_STAT_INIT = "init" //initial state WORK_STAT_QUEUED = "queued" // . also: after requeue ; after failures below max ; on WorkQueue.Add() WORK_STAT_RESERVED = "reserved" WORK_STAT_CHECKOUT = "checkout" // normal work checkout ; client registers that already has a workunit (e.g. after reboot of server) WORK_STAT_SUSPEND = "suspend" // on MAX_FAILURE ; on SuspendJob WORK_STAT_DONE = "done" // client-side, done. WORK_STAT_FAILED_PERMANENT = "failed-permanent" WORK_STAT_ERROR = "fail" // client-side, workunit computation or IO error (variable was renamed to ERROR but not the string fail, to maintain backwards compability) WORK_STAT_PREPARED = "prepared" // client-side, after argument parsing WORK_STAT_COMPUTED = "computed" // client-side, after computation is done, before upload WORK_STAT_DISCARDED = "discarded" WORK_STAT_PROXYQUEUED = "proxyqueued" )
Variables ¶
var ( QMgr ResourceMgr Service string = "unknown" Self *Client ProxyWorkChan chan bool Server_UUID string JM *JobMap )
var (
CGNameRegex = regexp.MustCompile(`^[A-Za-z0-9\_\-\.]+$`)
)
var DocumentMaxByte = 16777216
mongodb has hard limit of 16 MB docuemnt size
var JOB_STATS_ACTIVE = []string{JOB_STAT_QUEUED, JOB_STAT_INPROGRESS}
var JOB_STATS_REGISTERED = []string{JOB_STAT_QUEUED, JOB_STAT_INPROGRESS, JOB_STAT_SUSPEND}
var JOB_STATS_TO_RECOVER = []string{JOB_STAT_INIT, JOB_STAT_QUEUED, JOB_STAT_INPROGRESS, JOB_STAT_SUSPEND}
var JobInfoIndexes = []string{"name", "submittime", "completedtime", "pipeline", "clientgroups", "project", "service", "user", "priority", "userattr.submission"}
indexed info fields for search
Functions ¶
func DbFindDistinct ¶ added in v0.9.26
func DbUpdateJobField ¶ added in v0.9.33
func DeleteClientGroup ¶ added in v0.9.3
func GetJobIdByTaskId ¶
func GetJobIdByWorkId ¶
func GetTaskIdByWorkId ¶
func HasInfoField ¶ added in v0.9.26
func InitAwfMgr ¶
func InitAwfMgr()
func InitClientGroupDB ¶ added in v0.9.3
func InitClientGroupDB()
func InitProxyWorkChan ¶
func InitProxyWorkChan()
func InitReaper ¶ added in v0.9.26
func InitReaper()
func InitResMgr ¶
func InitResMgr(service string)
func IsFirstTask ¶
func NotifyWorkunitProcessed ¶
functions for REST API communication (=deprecated=) notify AWE server a workunit is finished with status either "failed" or "done", and with perf statistics if "done"
func PostNodeWithToken ¶
func PushOutputData ¶
deprecated, see cache.UploadOutputData
func PutFileToShock ¶
func ReloadFromDisk ¶
func RemoveWorkFromClient ¶ added in v0.9.45
func SetClientProfile ¶ added in v0.9.33
func SetClientProfile(profile *Client)
func ShockPutIndex ¶
Types ¶
type CQMgr ¶
type CQMgr struct {
// contains filtered or unexported fields
}
this struct is embedded in ServerMgr
func (*CQMgr) CheckClient ¶ added in v0.9.33
func (*CQMgr) CheckoutWorkunits ¶
func (*CQMgr) ClientChecker ¶
func (qm *CQMgr) ClientChecker()
func (*CQMgr) ClientHandle ¶ added in v0.9.16
func (qm *CQMgr) ClientHandle()
func (*CQMgr) ClientHeartBeat ¶
func (qm *CQMgr) ClientHeartBeat(id string, cg *ClientGroup) (hbmsg HBmsg, err error)
func (*CQMgr) ClientIdStatusChange ¶ added in v0.9.33
func (*CQMgr) ClientStatusChange ¶ added in v0.9.16
func (*CQMgr) DeleteClient ¶
func (*CQMgr) DeleteClientById ¶ added in v0.9.33
func (*CQMgr) DeleteClientByUser ¶ added in v0.9.3
func (*CQMgr) DeleteClients ¶ added in v0.9.33
func (*CQMgr) EnqueueWorkunit ¶
func (*CQMgr) FetchDataToken ¶
func (*CQMgr) GetAllClientsByUser ¶ added in v0.9.3
func (*CQMgr) GetClientByUser ¶ added in v0.9.3
func (*CQMgr) GetClientMap ¶ added in v0.9.33
func (*CQMgr) ListClients ¶ added in v0.9.16
func (*CQMgr) NotifyWorkStatus ¶
func (*CQMgr) ReQueueWorkunitByClient ¶
func (*CQMgr) RegisterNewClient ¶
func (qm *CQMgr) RegisterNewClient(files FormFiles, cg *ClientGroup) (client *Client, err error)
This can be a new client or an old client that re-registers
func (*CQMgr) RemoveClient ¶ added in v0.9.16
lock is for clientmap
func (*CQMgr) ResumeClient ¶
func (*CQMgr) ResumeClientByUser ¶ added in v0.9.3
func (*CQMgr) ResumeSuspendedClients ¶
func (*CQMgr) ResumeSuspendedClientsByUser ¶ added in v0.9.3
func (*CQMgr) ShowWorkunits ¶
func (*CQMgr) ShowWorkunitsByUser ¶ added in v0.9.3
func (*CQMgr) SuspendAllClients ¶
func (*CQMgr) SuspendAllClientsByUser ¶ added in v0.9.3
func (*CQMgr) SuspendClient ¶
use id OR client
func (*CQMgr) SuspendClientByUser ¶ added in v0.9.3
func (*CQMgr) UpdateSubClients ¶
type CWL_workunit ¶ added in v0.9.48
type CWL_workunit struct { CWL_job *cwl.Job_document CWL_tool *cwl.CommandLineTool CWL_tool_filename string CWL_job_filename string }
type Client ¶
type Client struct { RWMutex Id string `bson:"id" json:"id"` // this is a uuid (the only relevant identifier) Name string `bson:"name" json:"name"` // this can be anything you want Group string `bson:"group" json:"group"` User string `bson:"user" json:"user"` Domain string `bson:"domain" json:"domain"` InstanceId string `bson:"instance_id" json:"instance_id"` // Openstack specific InstanceType string `bson:"instance_type" json:"instance_type"` // Openstack specific Host string `bson:"host" json:"host"` // deprecated Hostname string `bson:"hostname" json:"hostname"` Host_ip string `bson:"host_ip" json:"host_ip"` // Host can be physical machine or VM, whatever is helpful for management CPUs int `bson:"cores" json:"cores"` Apps []string `bson:"apps" json:"apps"` RegTime time.Time `bson:"regtime" json:"regtime"` LastCompleted time.Time `bson:"lastcompleted" json:"lastcompleted"` // time of last time a job was completed (can be used to compute idle time) Serve_time string `bson:"serve_time" json:"serve_time"` //Idle_time int `bson:"idle_time" json:"idle_time"` Status string `bson:"Status" json:"Status"` Total_checkout int `bson:"total_checkout" json:"total_checkout"` Total_completed int `bson:"total_completed" json:"total_completed"` Total_failed int `bson:"total_failed" json:"total_failed"` Current_work map[string]bool `bson:"current_work" json:"current_work"` // the bool in the mapping is deprecated. It used to indicate completed work that could not be returned to server Skip_work []string `bson:"skip_work" json:"skip_work"` Last_failed int `bson:"-" json:"-"` Tag bool `bson:"-" json:"-"` Proxy bool `bson:"proxy" json:"proxy"` SubClients int `bson:"subclients" json:"subclients"` GitCommitHash string `bson:"git_commit_hash" json:"git_commit_hash"` Version string `bson:"version" json:"version"` // contains filtered or unexported fields }
this is the Worker
func NewProfileClient ¶
create Client object from json file
func (*Client) Append_Skip_work ¶ added in v0.9.33
func (*Client) Contains_Skip_work_nolock ¶ added in v0.9.33
func (*Client) Current_work_delete ¶ added in v0.9.33
func (*Client) Current_work_has ¶ added in v0.9.45
func (*Client) Current_work_length ¶ added in v0.9.33
func (*Client) Get_Last_failed ¶ added in v0.9.33
func (*Client) Get_Status ¶ added in v0.9.33
func (*Client) Get_Total_checkout ¶ added in v0.9.33
func (*Client) Get_Total_completed ¶ added in v0.9.33
func (*Client) Get_Total_failed ¶ added in v0.9.33
func (*Client) Get_current_work ¶ added in v0.9.33
func (*Client) Increment_last_failed ¶ added in v0.9.33
func (*Client) Increment_total_checkout ¶ added in v0.9.33
func (*Client) Increment_total_completed ¶ added in v0.9.33
func (*Client) Increment_total_failed ¶ added in v0.9.33
func (*Client) Init ¶ added in v0.9.33
func (client *Client) Init()
invoked by NewClient or manually after unmarshalling
func (*Client) Set_Status ¶ added in v0.9.33
type ClientGroup ¶ added in v0.9.3
type ClientGroup struct { Id string `bson:"id" json:"id"` IP_CIDR string `bson:"ip_cidr" json:"ip_cidr"` Name string `bson:"name" json:"name"` Token string `bson:"token" json:"token"` Acl clientGroupAcl.ClientGroupAcl `bson:"acl" json:"-"` CreatedOn time.Time `bson:"created_on" json:"created_on"` Expiration time.Time `bson:"expiration" json:"expiration"` LastModified time.Time `bson:"last_modified" json:"last_modified"` }
func CreateClientGroup ¶ added in v0.9.3
func CreateClientGroup(name string, u *user.User) (cg *ClientGroup, err error)
func LoadClientGroup ¶ added in v0.9.3
func LoadClientGroup(id string) (clientgroup *ClientGroup, err error)
func LoadClientGroupByName ¶ added in v0.9.3
func LoadClientGroupByName(name string) (clientgroup *ClientGroup, err error)
func LoadClientGroupByToken ¶ added in v0.9.3
func LoadClientGroupByToken(token string) (clientgroup *ClientGroup, err error)
func (*ClientGroup) Save ¶ added in v0.9.3
func (cg *ClientGroup) Save() (err error)
func (*ClientGroup) SetToken ¶ added in v0.9.3
func (cg *ClientGroup) SetToken()
type ClientMap ¶ added in v0.9.33
type ClientMap struct { RWMutex // contains filtered or unexported fields }
func NewClientMap ¶ added in v0.9.33
func NewClientMap() *ClientMap
func (*ClientMap) GetClientIds ¶ added in v0.9.33
func (*ClientMap) GetClients ¶ added in v0.9.33
type ClientMgr ¶
type ClientMgr interface { RegisterNewClient(FormFiles, *ClientGroup) (*Client, error) ClientHeartBeat(string, *ClientGroup) (HBmsg, error) GetClient(string, bool) (*Client, bool, error) GetClientByUser(string, *user.User) (*Client, error) //GetAllClients() []*Client GetClientMap() *ClientMap GetAllClientsByUser(*user.User) ([]*Client, error) DeleteClient(*Client) error DeleteClientById(string) error DeleteClientByUser(string, *user.User) error SuspendClient(string, *Client, bool) error SuspendClientByUser(string, *user.User) error ResumeClient(string) error ResumeClientByUser(string, *user.User) error ResumeSuspendedClients() (int, error) ResumeSuspendedClientsByUser(*user.User) int SuspendAllClients() (int, error) SuspendAllClientsByUser(*user.User) int ClientChecker() UpdateSubClients(string, int) error UpdateSubClientsByUser(string, int, *user.User) }
type ClientWorkMgr ¶
type Clients ¶ added in v0.9.33
type Clients []*Client
func (*Clients) RLockRecursive ¶ added in v0.9.33
func (cs *Clients) RLockRecursive()
func (*Clients) RUnlockRecursive ¶ added in v0.9.33
func (cs *Clients) RUnlockRecursive()
type Command ¶
type Command struct { Name string `bson:"name" json:"name"` Args string `bson:"args" json:"args"` ArgsArray []string `bson:"args_array" json:"args_array"` // use this instead of Args, which is just a string Dockerimage string `bson:"Dockerimage" json:"Dockerimage"` // for Shock (TODO rename this !) DockerPull string `bson:"dockerPull" json:"dockerPull"` // docker pull Cmd_script []string `bson:"cmd_script" json:"cmd_script"` Environ Envs `bson:"environ" json:"environ"` HasPrivateEnv bool `bson:"has_private_env" json:"has_private_env"` Description string `bson:"description" json:"description"` ParsedArgs []string `bson:"-" json:"-"` Local bool // indicates local execution, i.e. working directory is same as current working directory (do not delete !) }
func NewCommand ¶
type Environ_p ¶ added in v0.9.3
following special code is in order to unmarshal the private field Command.Environ.Private, so put them in to this file for less confusion
type HBmsg ¶
heartbeat response from awe-server to awe-worker used for issue operation request to client, e.g. discard suspended workunits
type IO ¶
type IO struct { FileName string `bson:"filename" json:"filename"` Name string `bson:"name" json:"name"` // specifies abstract name of output as defined by the app AppPosition int `bson:"appposition" json:"-"` // specifies position in app output array Directory string `bson:"directory" json:"directory"` Host string `bson:"host" json:"host"` Node string `bson:"node" json:"node"` Url string `bson:"url" json:"url"` // can be shock or any other url Size int64 `bson:"size" json:"size"` MD5 string `bson:"md5" json:"-"` Cache bool `bson:"cache" json:"cache"` // indicates that this files is "predata"" that needs to be cached Origin string `bson:"origin" json:"origin"` Path string `bson:"path" json:"-"` Optional bool `bson:"optional" json:"-"` Nonzero bool `bson:"nonzero" json:"nonzero"` DataToken string `bson:"datatoken" json:"-"` Intermediate bool `bson:"Intermediate" json:"-"` Temporary bool `bson:"temporary" json:"temporary"` ShockFilename string `bson:"shockfilename" json:"shockfilename"` ShockIndex string `bson:"shockindex" json:"shockindex"` // on input it indicates that Shock node has to be indexed by AWE server AttrFile string `bson:"attrfile" json:"attrfile"` NoFile bool `bson:"nofile" json:"nofile"` Delete bool `bson:"delete" json:"delete"` // speficies that this is a temorary node, to be deleted from shock on job completion Type string `bson:"type" json:"type"` NodeAttr map[string]interface{} `bson:"nodeattr" json:"nodeattr"` // specifies attribute data to be stored in shock node (output only) FormOptions map[string]string `bson:"formoptions" json:"formoptions"` Uncompress string `bson:"uncompress" json:"uncompress"` // tells AWE client to uncompress this file, e.g. "gzip" Indexes map[string]shock.IdxInfo `bson:"-" json:"-"` // copy of shock node.Indexes }
func (*IO) DeleteNode ¶ added in v0.9.3
func (*IO) GetIndexInfo ¶
type IOmap ¶
Deprecated JobDep struct uses deprecated TaskDep struct which uses the deprecated IOmap. Maintained for backwards compatibility. Jobs that cannot be parsed into the Job struct, but can be parsed into the JobDep struct will be translated to the new Job struct. (=deprecated=)
type Info ¶
type Info struct { Name string `bson:"name" json:"name"` Xref string `bson:"xref" json:"xref"` Service string `bson:"service" json:"service"` Project string `bson:"project" json:"project"` User string `bson:"user" json:"user"` Pipeline string `bson:"pipeline" json:"pipeline"` ClientGroups string `bson:"clientgroups" json:"clientgroups"` SubmitTime time.Time `bson:"submittime" json:"submittime"` StartedTme time.Time `bson:"startedtime" json:"startedtime"` CompletedTime time.Time `bson:"completedtime" json:"completedtime"` Priority int `bson:"priority" json:"priority"` Auth bool `bson:"auth" json:"auth"` DataToken string `bson:"datatoken" json:"-"` NoRetry bool `bson:"noretry" json:"noretry"` UserAttr map[string]string `bson:"userattr" json:"userattr"` Description string `bson:"description" json:"description"` Tracking bool `bson:"tracking" json:"tracking"` }
job info
type Job ¶
func CreateJobImport ¶ added in v0.9.26
func JobDepToJob ¶ added in v0.9.16
Takes the deprecated (version 1) Job struct and returns the version 2 Job struct or an error
func ReadJobFile ¶ added in v0.9.33
func (*Job) GetDataToken ¶
func (*Job) GetJobLogs ¶ added in v0.9.27
func (*Job) GetPrivateEnv ¶ added in v0.9.3
func (*Job) GetRemainTasks ¶ added in v0.9.33
func (*Job) IncrementRemainTasks ¶ added in v0.9.33
func (*Job) IncrementResumed ¶ added in v0.9.33
func (*Job) RLockRecursive ¶ added in v0.9.33
func (job *Job) RLockRecursive()
func (*Job) RUnlockRecursive ¶ added in v0.9.33
func (job *Job) RUnlockRecursive()
func (*Job) SaveToDisk ¶ added in v0.9.33
func (*Job) SetClientgroups ¶ added in v0.9.33
func (*Job) SetDataToken ¶
func (*Job) SetExpiration ¶ added in v0.9.26
func (*Job) SetPipeline ¶ added in v0.9.26
func (*Job) SetPriority ¶ added in v0.9.33
func (*Job) SetRemainTasks ¶ added in v0.9.33
type JobDep ¶ added in v0.9.16
Deprecated JobDep struct uses deprecated TaskDep struct which uses the deprecated IOmap. Maintained for backwards compatibility. Jobs that cannot be parsed into the Job struct, but can be parsed into the JobDep struct will be translated to the new Job struct. (=deprecated=)
type JobError ¶ added in v0.9.48
type JobError struct { ClientFailed string `bson:"clientfailed" json:"clientfailed"` WorkFailed string `bson:"workfailed" json:"workfailed"` TaskFailed string `bson:"taskfailed" json:"taskfailed"` ServerNotes string `bson:"servernotes" json:"servernotes"` WorkNotes string `bson:"worknotes" json:"worknotes"` AppError string `bson:"apperror" json:"apperror"` Status string `bson:"status" json:"status"` }
type JobMap ¶ added in v0.9.33
type JobMap struct { RWMutex // contains filtered or unexported fields }
type JobMgr ¶
type JobMgr interface { EnqueueTasksByJobId(string) error GetActiveJobs() map[string]bool IsJobRegistered(string) bool GetSuspendJobs() map[string]bool SuspendJob(string, *JobError) error ResumeSuspendedJobByUser(string, *user.User) error ResumeSuspendedJobsByUser(*user.User) int ResubmitJob(string) error DeleteJobByUser(string, *user.User, bool) error DeleteSuspendedJobsByUser(*user.User, bool) int DeleteZombieJobsByUser(*user.User, bool) int RecoverJob(string) error RecoverJobs() error FinalizeWorkPerf(string, string) error SaveStdLog(string, string, string) error GetReportMsg(string, string) (string, error) RecomputeJob(string, string) error UpdateQueueToken(*Job) error }
type JobMin ¶ added in v0.9.8
type JobMin struct { Id string `bson:"id" json:"id"` Name string `bson:"name" json:"name"` Size int64 `bson:"size" json:"size"` SubmitTime time.Time `bson:"submittime" json:"submittime"` CompletedTime time.Time `bson:"completedtime" json:"completedtime"` ComputeTime int `bson:"computetime" json:"computetime"` Task []int `bson:"task" json:"task"` State []string `bson:"state" json:"state"` UserAttr map[string]string `bson:"userattr" json:"userattr"` }
type JobPerf ¶
type JobPerf struct { Id string `bson:"id" json:"id"` Queued int64 `bson:"queued" json:"queued"` Start int64 `bson:"start" json:"start"` End int64 `bson:"end" json:"end"` Resp int64 `bson:"resp" json:"resp"` //End - Queued Ptasks map[string]*TaskPerf `bson:"task_stats" json:"task_stats"` Pworks map[string]*WorkPerf `bson:"work_stats" json:"work_stats"` }
func LoadJobPerf ¶
func NewJobPerf ¶
type JobRaw ¶ added in v0.9.33
type JobRaw struct { RWMutex Id string `bson:"id" json:"id"` //Tasks []*Task `bson:"tasks" json:"tasks"` Acl acl.Acl `bson:"acl" json:"-"` Info *Info `bson:"info" json:"info"` Script script `bson:"script" json:"-"` State string `bson:"state" json:"state"` Registered bool `bson:"registered" json:"registered"` RemainTasks int `bson:"remaintasks" json:"remaintasks"` Expiration time.Time `bson:"expiration" json:"expiration"` // 0 means no expiration UpdateTime time.Time `bson:"updatetime" json:"updatetime"` Error *JobError `bson:"error" json:"error"` // error struct exists when in suspended state Resumed int `bson:"resumed" json:"resumed"` // number of times the job has been resumed from suspension ShockHost string `bson:"shockhost" json:"shockhost"` // this is a fall-back default if not specified at a lower level }
type JobReaper ¶ added in v0.9.26
type JobReaper struct{}
var ( Ttl *JobReaper ExpireRegex = regexp.MustCompile(`^(\d+)(M|H|D)$`) )
func NewJobReaper ¶ added in v0.9.26
func NewJobReaper() *JobReaper
type Jobs ¶
type Jobs []*Job
Job array type
func (*Jobs) GetAllLimitOffset ¶
func (*Jobs) GetAllRecent ¶
func (*Jobs) GetPaginated ¶
func (*Jobs) RLockRecursive ¶ added in v0.9.33
func (n *Jobs) RLockRecursive()
func (*Jobs) RUnlockRecursive ¶ added in v0.9.33
func (n *Jobs) RUnlockRecursive()
type Pipeline ¶
type Pipeline struct { Info *Info `bson:"info" json:"info"` Tasks []Task `bson:"tasks" json:"tasks"` }
func NewPipeline ¶
func NewPipeline() *Pipeline
type ProxyMgr ¶
type ProxyMgr struct {
CQMgr
}
func NewProxyMgr ¶
func NewProxyMgr() *ProxyMgr
func (*ProxyMgr) ClientChecker ¶
func (qm *ProxyMgr) ClientChecker()
func (*ProxyMgr) ClientHandle ¶ added in v0.9.16
func (qm *ProxyMgr) ClientHandle()
func (*ProxyMgr) DeleteJobByUser ¶ added in v0.9.3
func (*ProxyMgr) DeleteSuspendedJobsByUser ¶ added in v0.9.3
func (*ProxyMgr) DeleteZombieJobsByUser ¶ added in v0.9.3
func (*ProxyMgr) EnqueueTasksByJobId ¶
func (*ProxyMgr) FetchDataToken ¶
func (*ProxyMgr) FetchPrivateEnv ¶ added in v0.9.3
func (*ProxyMgr) FinalizeWorkPerf ¶
func (*ProxyMgr) GetActiveJobs ¶
func (*ProxyMgr) GetJsonStatus ¶ added in v0.9.26
func (*ProxyMgr) GetReportMsg ¶
func (*ProxyMgr) GetSuspendJobs ¶
func (*ProxyMgr) GetTextStatus ¶ added in v0.9.26
func (*ProxyMgr) IsJobRegistered ¶
func (*ProxyMgr) JobRegister ¶
func (*ProxyMgr) NoticeHandle ¶ added in v0.9.33
func (qm *ProxyMgr) NoticeHandle()
func (*ProxyMgr) QueueStatus ¶ added in v0.9.23
func (*ProxyMgr) RecomputeJob ¶
recompute jobs from specified task stage
func (*ProxyMgr) RecoverJob ¶ added in v0.9.26
recover job not in queue
func (*ProxyMgr) RecoverJobs ¶
recover jobs not completed before awe-server restarts
func (*ProxyMgr) RegisterNewClient ¶
func (qm *ProxyMgr) RegisterNewClient(files FormFiles, cg *ClientGroup) (client *Client, err error)
func (*ProxyMgr) ResubmitJob ¶
re-submit a job in db but not in the queue (caused by server restarting)
func (*ProxyMgr) ResumeQueue ¶ added in v0.9.23
func (qm *ProxyMgr) ResumeQueue()
func (*ProxyMgr) ResumeSuspendedJobByUser ¶ added in v0.9.3
resubmit a suspended job if user has rights
func (*ProxyMgr) ResumeSuspendedJobsByUser ¶ added in v0.9.3
func (*ProxyMgr) SuspendJob ¶
func (*ProxyMgr) SuspendQueue ¶ added in v0.9.23
func (qm *ProxyMgr) SuspendQueue()
func (*ProxyMgr) TaskHandle ¶ added in v0.9.16
func (qm *ProxyMgr) TaskHandle()
func (*ProxyMgr) UpdateQueueLoop ¶ added in v0.9.33
func (qm *ProxyMgr) UpdateQueueLoop()
func (*ProxyMgr) UpdateQueueToken ¶ added in v0.9.48
type RWMutex ¶ added in v0.9.33
type RWMutex struct { Name string `bson:"-" json:"-"` // contains filtered or unexported fields }
func (*RWMutex) RLockNamed ¶ added in v0.9.33
func (*RWMutex) RUnlockAnon ¶ added in v0.9.33
func (m *RWMutex) RUnlockAnon()
func (*RWMutex) RUnlockNamed ¶ added in v0.9.33
type ResourceMgr ¶
type ServerMgr ¶
func NewServerMgr ¶
func NewServerMgr() *ServerMgr
func (*ServerMgr) ClientHandle ¶ added in v0.9.16
func (qm *ServerMgr) ClientHandle()
func (*ServerMgr) CreateAndEnqueueWorkunits ¶ added in v0.9.33
func (*ServerMgr) CreateJobPerf ¶
---perf related methods
func (*ServerMgr) CreateTaskPerf ¶
func (*ServerMgr) CreateWorkPerf ¶
func (*ServerMgr) DeleteJobByUser ¶ added in v0.9.3
func (*ServerMgr) DeleteSuspendedJobsByUser ¶ added in v0.9.3
func (*ServerMgr) DeleteZombieJobsByUser ¶ added in v0.9.3
delete jobs in db with "queued" or "in-progress" state but not in the queue (zombie jobs) that user has access to
func (*ServerMgr) EnqueueTasksByJobId ¶
func (*ServerMgr) FetchDataToken ¶
--workunit methds (servermgr implementation)
func (*ServerMgr) FetchPrivateEnv ¶ added in v0.9.3
func (*ServerMgr) FetchPrivateEnvs ¶ added in v0.9.3
func (*ServerMgr) FinalizeJobPerf ¶
func (*ServerMgr) FinalizeTaskPerf ¶
func (*ServerMgr) FinalizeWorkPerf ¶
func (*ServerMgr) GetActiveJobs ¶
func (*ServerMgr) GetJsonStatus ¶ added in v0.9.26
func (*ServerMgr) GetReportMsg ¶
func (*ServerMgr) GetSuspendJobs ¶
func (*ServerMgr) GetTextStatus ¶ added in v0.9.26
func (*ServerMgr) IsJobRegistered ¶
func (*ServerMgr) LogJobPerf ¶
func (*ServerMgr) NoticeHandle ¶ added in v0.9.33
func (qm *ServerMgr) NoticeHandle()
func (*ServerMgr) QueueStatus ¶ added in v0.9.23
func (*ServerMgr) RecomputeJob ¶
recompute job from specified task stage
func (*ServerMgr) RecoverJob ¶ added in v0.9.26
recover a job in db that is missing from queue (caused by server restarting)
func (*ServerMgr) RecoverJobs ¶
recover jobs not completed before awe-server restarts
func (*ServerMgr) ResubmitJob ¶
recompute job from beginning
func (*ServerMgr) ResumeQueue ¶ added in v0.9.23
func (qm *ServerMgr) ResumeQueue()
func (*ServerMgr) ResumeSuspendedJobByUser ¶ added in v0.9.3
resubmit a suspended job if the user is authorized
func (*ServerMgr) ResumeSuspendedJobsByUser ¶ added in v0.9.3
func (*ServerMgr) SaveStdLog ¶
func (*ServerMgr) SuspendJob ¶
use for JOB_STAT_SUSPEND and JOB_STAT_FAILED_PERMANENT
func (*ServerMgr) SuspendQueue ¶ added in v0.9.23
func (qm *ServerMgr) SuspendQueue()
func (*ServerMgr) TaskHandle ¶ added in v0.9.16
func (qm *ServerMgr) TaskHandle()
func (*ServerMgr) UpdateJobPerfStartTime ¶
func (*ServerMgr) UpdateJobTaskToInProgress ¶
update job/task states from "queued" to "in-progress" once the first workunit is checked out
func (*ServerMgr) UpdateQueueLoop ¶ added in v0.9.33
func (qm *ServerMgr) UpdateQueueLoop()
func (*ServerMgr) UpdateQueueToken ¶ added in v0.9.48
update tokens for in-memory data structures
func (*ServerMgr) UpdateTaskPerfStartTime ¶
type StandardResponse ¶ added in v0.9.33
type StandardResponse struct { S int `json:"status"` D interface{} `json:"data"` E []string `json:"error"` }
func NotifyWorkunitProcessedWithLogs ¶
func NotifyWorkunitProcessedWithLogs(work *Workunit, perf *WorkPerf, sendstdlogs bool) (response *StandardResponse, err error)
type StringLocked ¶ added in v0.9.33
func (*StringLocked) Get ¶ added in v0.9.33
func (s *StringLocked) Get() string
func (*StringLocked) Set ¶ added in v0.9.33
func (s *StringLocked) Set(value string)
type StructContainer ¶ added in v0.9.43
type StructContainer struct {
Data interface{} `json:"data"`
}
type Task ¶
type Task struct { TaskRaw `bson:",inline"` Inputs []*IO `bson:"inputs" json:"inputs"` Outputs []*IO `bson:"outputs" json:"outputs"` Predata []*IO `bson:"predata" json:"predata"` }
func (*Task) CreateIndex ¶ added in v0.9.4
checks and creates indices on shock node if needed
func (*Task) CreateWorkunits ¶ added in v0.9.33
func (*Task) DeleteInput ¶ added in v0.9.12
func (*Task) DeleteOutput ¶ added in v0.9.3
func (*Task) GetOutputs ¶ added in v0.9.33
func (*Task) GetTaskLogs ¶ added in v0.9.27
func (*Task) IncrementComputeTime ¶ added in v0.9.33
func (*Task) IncrementRemainWork ¶ added in v0.9.33
func (*Task) InitPartIndex ¶
get part size based on partition/index info this resets task.Partition when called only 1 task.Inputs allowed unless 'partinfo.input' specified on POST if fail to get index info, task.TotalWork set to 1 and task.Partition set to nil
func (*Task) SetRemainWork ¶ added in v0.9.33
func (*Task) UpdateInputs ¶ added in v0.9.36
func (*Task) UpdateOutputs ¶ added in v0.9.36
func (*Task) UpdatePredata ¶ added in v0.9.36
type TaskDep ¶ added in v0.9.16
type TaskDep struct { TaskRaw `bson:",inline"` Inputs IOmap `bson:"inputs" json:"inputs"` Outputs IOmap `bson:"outputs" json:"outputs"` Predata IOmap `bson:"predata" json:"predata"` }
Deprecated JobDep struct uses deprecated TaskDep struct which uses the deprecated IOmap. Maintained for backwards compatibility. Jobs that cannot be parsed into the Job struct, but can be parsed into the JobDep struct will be translated to the new Job struct. (=deprecated=)
type TaskMap ¶ added in v0.9.33
type TaskMap struct { RWMutex // contains filtered or unexported fields }
func NewTaskMap ¶ added in v0.9.33
func NewTaskMap() (t *TaskMap)
type TaskPerf ¶
type TaskPerf struct { Queued int64 `bson:"queued" json:"queued"` Start int64 `bson:"start" json:"start"` End int64 `bson:"end" json:"end"` Resp int64 `bson:"resp" json:"resp"` //End -Queued InFileSizes []int64 `bson:"size_infile" json:"size_infile"` OutFileSizes []int64 `bson:"size_outfile" json:"size_outfile"` }
func NewTaskPerf ¶
type TaskRaw ¶ added in v0.9.33
type TaskRaw struct { RWMutex Id string `bson:"taskid" json:"taskid"` JobId string `bson:"jobid" json:"jobid"` Info *Info `bson:"-" json:"-"` Cmd *Command `bson:"cmd" json:"cmd"` Partition *PartInfo `bson:"partinfo" json:"-"` DependsOn []string `bson:"dependsOn" json:"dependsOn"` // only needed if dependency cannot be inferred from Input.Origin TotalWork int `bson:"totalwork" json:"totalwork"` MaxWorkSize int `bson:"maxworksize" json:"maxworksize"` RemainWork int `bson:"remainwork" json:"remainwork"` //WorkStatus []string `bson:"workstatus" json:"-"` State string `bson:"state" json:"state"` //Skip int `bson:"skip" json:"-"` CreatedDate time.Time `bson:"createdDate" json:"createddate"` StartedDate time.Time `bson:"startedDate" json:"starteddate"` CompletedDate time.Time `bson:"completedDate" json:"completeddate"` ComputeTime int `bson:"computetime" json:"computetime"` UserAttr map[string]string `bson:"userattr" json:"userattr"` ClientGroups string `bson:"clientgroups" json:"clientgroups"` }
func NewTaskRaw ¶ added in v0.9.33
func (*TaskRaw) GetDependsOn ¶ added in v0.9.33
func (*TaskRaw) GetStateNamed ¶ added in v0.9.33
only for debugging purposes
func (*TaskRaw) SetCompletedDate ¶ added in v0.9.43
func (*TaskRaw) SetCreatedDate ¶ added in v0.9.33
func (*TaskRaw) SetStartedDate ¶ added in v0.9.33
type WorkLog ¶ added in v0.9.27
type WorkLog struct { Id string `bson:"wuid" json:"wuid"` Rank int `bson:"rank" json:"rank"` Logs map[string]string `bson:"logs" json:"logs"` }
func NewWorkLog ¶ added in v0.9.27
type WorkMgr ¶
type WorkMgr interface { GetWorkById(string) (*Workunit, error) ShowWorkunits(string) ([]*Workunit, error) ShowWorkunitsByUser(string, *user.User) []*Workunit CheckoutWorkunits(string, string, *Client, int64, int) ([]*Workunit, error) NotifyWorkStatus(Notice) EnqueueWorkunit(*Workunit) error FetchDataToken(string, string) (string, error) FetchPrivateEnv(string, string) (map[string]string, error) }
type WorkPerf ¶
type WorkPerf struct { Queued int64 `bson:"queued" json:"queued"` // WQ (queued at server or client, depending on who creates it) Done int64 `bson:"done" json:"done"` // WD (done at server) Resp int64 `bson:"resp" json:"resp"` // Done - Queued (server metric) Checkout int64 `bson:"checkout" json:"checkout"` // checkout at client Deliver int64 `bson:"deliver" json:"deliver"` // done at client ClientResp int64 `bson:"clientresp" json:"clientresp"` // Deliver - Checkout (client metric) PreDataIn float64 `bson:"time_predata_in" json:"time_predata_in"` // time in seconds for downloading prerequisite data at client DataIn float64 `bson:"time_data_in" json:"time_data_in"` // time in seconds for input data move-in at client DataOut float64 `bson:"time_data_out" json:"time_data_out"` // time in seconds for output data move-out at client Runtime int64 `bson:"runtime" json:"runtime"` // time in seconds for computation at client DockerPrep int64 `bson:"dockerprep" json:"dockerprep"` // time in seconds for docker preparation on client MaxMemUsage int64 `bson:"max_mem_usage" json:"max_mem_usage"` // maxium memory consumption MaxMemoryTotalRss int64 `bson:"max_memory_total_rss" json:"max_memory_total_rss"` MaxMemoryTotalSwap int64 `bson:"max_memory_total_swap" json:"max_memory_total_swap"` ClientId string `bson:"client_id" json:"client_id"` PreDataSize int64 `bson:"size_predata" json:"size_predata"` //predata moved over network InFileSize int64 `bson:"size_infile" json:"size_infile"` //input file moved over network OutFileSize int64 `bson:"size_outfile" json:"size_outfile"` //outpuf file moved over network }
func NewWorkPerf ¶
type WorkQueue ¶ added in v0.9.33
type WorkQueue struct { Queue WorkunitMap // WORK_STAT_QUEUED - waiting workunits Checkout WorkunitMap // WORK_STAT_CHECKOUT - workunits being checked out Suspend WorkunitMap // WORK_STAT_SUSPEND - suspended workunits // contains filtered or unexported fields }
func NewWorkQueue ¶ added in v0.9.33
func NewWorkQueue() *WorkQueue
type Workflow ¶
type Workflow struct { WfInfo awf_info `bson:"workflow_info" json:"workflow_info"` JobInfo awf_jobinfo `bson:"job_info" json:"job_info"` RawInputs map[string]string `bson:"raw_inputs" json:"raw_inputs"` Variables map[string]string `bson:"variables" json:"variables"` DataServer string `bson:"data_server" json:"data_server"` Tasks []*awf_task `bson:"tasks" json:"tasks"` }
type WorkflowMgr ¶
type WorkflowMgr struct {
// contains filtered or unexported fields
}
var (
AwfMgr *WorkflowMgr
)
func NewWorkflowMgr ¶
func NewWorkflowMgr() *WorkflowMgr
func (*WorkflowMgr) AddWorkflow ¶
func (wfm *WorkflowMgr) AddWorkflow(name string, awf *Workflow)
func (*WorkflowMgr) GetAllWorkflows ¶
func (wfm *WorkflowMgr) GetAllWorkflows() (workflows []*Workflow)
func (*WorkflowMgr) GetWorkflow ¶
func (wfm *WorkflowMgr) GetWorkflow(name string) (awf *Workflow, err error)
func (*WorkflowMgr) LoadWorkflows ¶
func (wfm *WorkflowMgr) LoadWorkflows() (err error)
type Workunit ¶
type Workunit struct { Id string `bson:"wuid" json:"wuid"` Info *Info `bson:"info" json:"info"` Inputs []*IO `bson:"inputs" json:"inputs"` Outputs []*IO `bson:"outputs" json:"outputs"` Predata []*IO `bson:"predata" json:"predata"` Cmd *Command `bson:"cmd" json:"cmd"` Rank int `bson:"rank" json:"rank"` TotalWork int `bson:"totalwork" json:"totalwork"` Partition *PartInfo `bson:"part" json:"part"` State string `bson:"state" json:"state"` Failed int `bson:"failed" json:"failed"` CheckoutTime time.Time `bson:"checkout_time" json:"checkout_time"` Client string `bson:"client" json:"client"` ComputeTime int `bson:"computetime" json:"computetime"` ExitStatus int `bson:"exitstatus" json:"exitstatus"` // Linux Exit Status Code (0 is success) Notes []string `bson:"notes" json:"notes"` UserAttr map[string]string `bson:"userattr" json:"userattr"` WorkPath string // this is the working directory. If empty, it will be computed. WorkPerf *WorkPerf CWL *CWL_workunit }
func NewWorkunit ¶
func (*Workunit) CDworkpath ¶
type WorkunitMap ¶ added in v0.9.33
func NewWorkunitMap ¶ added in v0.9.33
func NewWorkunitMap() *WorkunitMap
func (*WorkunitMap) Delete ¶ added in v0.9.33
func (wm *WorkunitMap) Delete(id string) (err error)
func (*WorkunitMap) Get ¶ added in v0.9.33
func (wm *WorkunitMap) Get(id string) (workunit *Workunit, ok bool, err error)
func (*WorkunitMap) GetWorkunits ¶ added in v0.9.33
func (wm *WorkunitMap) GetWorkunits() (workunits []*Workunit, err error)
func (*WorkunitMap) Len ¶ added in v0.9.33
func (wm *WorkunitMap) Len() (length int, err error)
func (*WorkunitMap) Set ¶ added in v0.9.33
func (wm *WorkunitMap) Set(workunit *Workunit) (err error)
type WorkunitsSortby ¶ added in v0.9.8
func (WorkunitsSortby) Len ¶ added in v0.9.8
func (w WorkunitsSortby) Len() int
func (WorkunitsSortby) Less ¶ added in v0.9.8
func (w WorkunitsSortby) Less(i, j int) bool
func (WorkunitsSortby) Swap ¶ added in v0.9.8
func (w WorkunitsSortby) Swap(i, j int)
Source Files ¶
- awfmgr.go
- client.go
- clientgroup.go
- clientgroups.go
- clientmap.go
- clients.go
- command.go
- core.go
- cqmgr.go
- cwl2awe.go
- db.go
- expire.go
- info.go
- io.go
- job.go
- jobmap.go
- jobs.go
- perf.go
- pipeline.go
- proxymgr.go
- resmgr.go
- rwmutex.go
- servermgr.go
- task.go
- taskmap.go
- utilproxy.go
- workflow.go
- workqueue.go
- workunit.go
- workunitmap.go