Class: Octopusci::JobStore

Inherits:
Object
  • Object
show all
Defined in:
lib/octopusci/job_store.rb

Class Method Summary collapse

Class Method Details

.get(job_id) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/octopusci/job_store.rb', line 18

def self.get(job_id)
  job = redis.get("octopusci:jobs:#{job_id}")
  if job
    return YAML.load(job)
  end
  return nil
end

.list(start_idx, num_jobs) ⇒ Object



56
57
58
59
# File 'lib/octopusci/job_store.rb', line 56

def self.list(start_idx, num_jobs)
  job_ids = list_job_ids(start_idx, num_jobs)
  job_ids.map { |id| self.get(id) }
end

.list_job_ids(start_idx, num_jobs) ⇒ Object



34
35
36
37
38
39
40
41
42
43
# File 'lib/octopusci/job_store.rb', line 34

def self.list_job_ids(start_idx, num_jobs)
  len = size()
  end_idx = len - 1

  range_idx = start_idx + num_jobs
  if (end_idx - start_idx < num_jobs)
    range_idx = end_idx
  end
  redis.lrange("octopusci:jobs", 0, range_idx)
end

.list_repo_branch(repo_name, branch_name, start_idx, num_jobs) ⇒ Object



61
62
63
64
# File 'lib/octopusci/job_store.rb', line 61

def self.list_repo_branch(repo_name, branch_name, start_idx, num_jobs)
  job_ids = list_repo_branch_job_ids(repo_name, branch_name, start_idx, num_jobs)
  job_ids.map { |id| self.get(id) }
end

.list_repo_branch_job_ids(repo_name, branch_name, start_idx, num_jobs) ⇒ Object



45
46
47
48
49
50
51
52
53
54
# File 'lib/octopusci/job_store.rb', line 45

def self.list_repo_branch_job_ids(repo_name, branch_name, start_idx, num_jobs)
  len = repo_branch_size(repo_name, branch_name)
  end_idx = len - 1

  range_idx = start_idx + num_jobs
  if (end_idx - start_idx < num_jobs)
    range_idx = end_idx
  end
  redis.lrange("octopusci:#{repo_name}:#{branch_name}:jobs", 0, range_idx)
end

.prepend(job) ⇒ Object



6
7
8
9
10
11
12
# File 'lib/octopusci/job_store.rb', line 6

def self.prepend(job)
  job_id = redis.incr('octopusci:job_count')
  self.set(job_id, job.merge({ 'id' => job_id }))
  redis.lpush("octopusci:jobs", job_id)
  redis.lpush("octopusci:#{job['repo_name']}:#{job['ref'].split('/').last}:jobs", job_id)
  return job_id
end

.redisObject



66
67
68
# File 'lib/octopusci/job_store.rb', line 66

def self.redis
  Resque.redis
end

.repo_branch_size(repo_name, branch_name) ⇒ Object



30
31
32
# File 'lib/octopusci/job_store.rb', line 30

def self.repo_branch_size(repo_name, branch_name)
  redis.llen("octopusci:#{repo_name}:#{branch_name}:jobs")
end

.set(job_id, job) ⇒ Object



14
15
16
# File 'lib/octopusci/job_store.rb', line 14

def self.set(job_id, job)
  redis.set("octopusci:jobs:#{job_id}", YAML.dump(job))
end

.sizeObject



26
27
28
# File 'lib/octopusci/job_store.rb', line 26

def self.size
  redis.llen("octopusci:jobs")
end