Class: OodCore::Job::Info

Inherits:
Object
  • Object
show all
Defined in:
lib/ood_core/job/info.rb

Overview

An object that describes a submitted job

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id:, status:, allocated_nodes: [], submit_host: nil, job_name: nil, job_owner: nil, accounting_id: nil, procs: nil, queue_name: nil, wallclock_time: nil, wallclock_limit: nil, cpu_time: nil, submission_time: nil, dispatch_time: nil, native: nil, **_) ⇒ Info

Returns a new instance of Info

Parameters:

  • id (#to_s)

    job id

  • status (#to_sym)

    job state

  • allocated_nodes (Array<#to_h>)

    allocated nodes

  • submit_host (#to_s, nil)

    submit host

  • job_name (#to_s, nil)

    job name

  • job_owner (#to_s, nil)

    job owner

  • accounting_id (#to_s, nil)

    accounting id

  • procs (#to_i, nil)

    allocated total number of procs

  • queue_name (#to_s, nil)

    queue name

  • wallclock_time (#to_i, nil)

    wallclock time

  • wallclock_limit (#to_i, nil)

    wallclock time limit

  • cpu_time (#to_i, nil)

    cpu time

  • submission_time (#to_i, nil)

    submission time

  • dispatch_time (#to_i, nil)

    dispatch time

  • native (Object)

    native info



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/ood_core/job/info.rb', line 83

def initialize(id:, status:, allocated_nodes: [], submit_host: nil,
               job_name: nil, job_owner: nil, accounting_id: nil,
               procs: nil, queue_name: nil, wallclock_time: nil,
               wallclock_limit: nil, cpu_time: nil, submission_time: nil,
               dispatch_time: nil, native: nil, **_)
  @id              = id.to_s
  @status          = Status.new(state: status.to_sym)
  @allocated_nodes = allocated_nodes.map { |n| NodeInfo.new(n.to_h) }
  @submit_host     = submit_host     && submit_host.to_s
  @job_name        = job_name        && job_name.to_s
  @job_owner       = job_owner       && job_owner.to_s
  @accounting_id   = accounting_id   && accounting_id.to_s
  @procs           = procs           && procs.to_i
  @queue_name      = queue_name      && queue_name.to_s
  @wallclock_time  = wallclock_time  && wallclock_time.to_i
  @wallclock_limit = wallclock_limit && wallclock_limit.to_i
  @cpu_time        = cpu_time        && cpu_time.to_i
  @submission_time = submission_time && Time.at(submission_time.to_i)
  @dispatch_time   = dispatch_time   && Time.at(dispatch_time.to_i)
  @native          = native
end

Instance Attribute Details

#accounting_idString? (readonly)

The account the job is charged against

Returns:

  • (String, nil)

    accounting id



33
34
35
# File 'lib/ood_core/job/info.rb', line 33

def accounting_id
  @accounting_id
end

#allocated_nodesArray<NodeInfo> (readonly)

Set of machines that is utilized for job execution

Returns:



17
18
19
# File 'lib/ood_core/job/info.rb', line 17

def allocated_nodes
  @allocated_nodes
end

#cpu_timeFixnum? (readonly)

The accumulated CPU time in seconds

Returns:

  • (Fixnum, nil)

    cpu time



53
54
55
# File 'lib/ood_core/job/info.rb', line 53

def cpu_time
  @cpu_time
end

#dispatch_timeTime? (readonly)

The time the job first entered a “Started” state

Returns:

  • (Time, nil)

    dispatch time



61
62
63
# File 'lib/ood_core/job/info.rb', line 61

def dispatch_time
  @dispatch_time
end

#idString (readonly)

The identifier of the job

Returns:

  • (String)

    job id



9
10
11
# File 'lib/ood_core/job/info.rb', line 9

def id
  @id
end

#job_nameString? (readonly)

Name of the job

Returns:

  • (String, nil)

    job name



25
26
27
# File 'lib/ood_core/job/info.rb', line 25

def job_name
  @job_name
end

#job_ownerString? (readonly)

Owner of job

Returns:

  • (String, nil)

    job owner



29
30
31
# File 'lib/ood_core/job/info.rb', line 29

def job_owner
  @job_owner
end

#nativeObject (readonly)

Note:

Should not be used by generic apps

Native resource manager output for job info

Returns:

  • (Object)

    native info



66
67
68
# File 'lib/ood_core/job/info.rb', line 66

def native
  @native
end

#procsFixnum? (readonly)

Number of procs allocated for job

Returns:

  • (Fixnum, nil)

    allocated total number of procs



37
38
39
# File 'lib/ood_core/job/info.rb', line 37

def procs
  @procs
end

#queue_nameString? (readonly)

Name of the queue in which the job was queued or started

Returns:

  • (String, nil)

    queue name



41
42
43
# File 'lib/ood_core/job/info.rb', line 41

def queue_name
  @queue_name
end

#statusStatus (readonly)

The status of the job

Returns:



13
14
15
# File 'lib/ood_core/job/info.rb', line 13

def status
  @status
end

#submission_timeTime? (readonly)

The time at which the job was submitted

Returns:

  • (Time, nil)

    submission time



57
58
59
# File 'lib/ood_core/job/info.rb', line 57

def submission_time
  @submission_time
end

#submit_hostString? (readonly)

Name of the submission host for this job

Returns:

  • (String, nil)

    submit host



21
22
23
# File 'lib/ood_core/job/info.rb', line 21

def submit_host
  @submit_host
end

#wallclock_limitFixnum? (readonly)

The total wall clock time limit in seconds

Returns:

  • (Fixnum, nil)

    wallclock time limit



49
50
51
# File 'lib/ood_core/job/info.rb', line 49

def wallclock_limit
  @wallclock_limit
end

#wallclock_timeFixnum? (readonly)

The accumulated wall clock time in seconds

Returns:

  • (Fixnum, nil)

    wallclock time



45
46
47
# File 'lib/ood_core/job/info.rb', line 45

def wallclock_time
  @wallclock_time
end

Instance Method Details

#==(other) ⇒ Boolean

The comparison operator

Parameters:

  • other (#to_h)

    object to compare against

Returns:

  • (Boolean)

    whether objects are equivalent



130
131
132
# File 'lib/ood_core/job/info.rb', line 130

def ==(other)
  to_h == other.to_h
end

#eql?(other) ⇒ Boolean

Whether objects are identical to each other

Parameters:

  • other (#to_h)

    object to compare against

Returns:

  • (Boolean)

    whether objects are identical



137
138
139
# File 'lib/ood_core/job/info.rb', line 137

def eql?(other)
  self.class == other.class && self == other
end

#hashFixnum

Generate a hash value for this object

Returns:

  • (Fixnum)

    hash value of object



143
144
145
# File 'lib/ood_core/job/info.rb', line 143

def hash
  [self.class, to_h].hash
end

#to_hHash

Convert object to hash

Returns:

  • (Hash)

    object as hash



107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/ood_core/job/info.rb', line 107

def to_h
  {
    id:              id,
    status:          status,
    allocated_nodes: allocated_nodes,
    submit_host:     submit_host,
    job_name:        job_name,
    job_owner:       job_owner,
    accounting_id:   accounting_id,
    procs:           procs,
    queue_name:      queue_name,
    wallclock_time:  wallclock_time,
    wallclock_limit: wallclock_limit,
    cpu_time:        cpu_time,
    submission_time: submission_time,
    dispatch_time:   dispatch_time,
    native:          native
  }
end