Class: Bosh::Director::Models::CompiledPackage

Inherits:
Object
  • Object
show all
Defined in:
lib/bosh/director/models/compiled_package.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.create_cache_key(package, transitive_dependencies, stemcell) ⇒ Object

Creates a ‘unique’ key to use in the global package cache



14
15
16
17
18
# File 'lib/bosh/director/models/compiled_package.rb', line 14

def self.create_cache_key(package, transitive_dependencies, stemcell)
  dependency_fingerprints = transitive_dependencies.to_a.sort_by(&:name).map {|p| p.fingerprint }
  hash_input = ([package.fingerprint, stemcell.sha1]+dependency_fingerprints).join('')
  Digest::SHA1.hexdigest(hash_input)
end

.create_dependency_key(transitive_dependencies) ⇒ Object

Creates a dependency_key from a list of dependencies Input MUST include immediate & transitive dependencies



8
9
10
11
# File 'lib/bosh/director/models/compiled_package.rb', line 8

def self.create_dependency_key(transitive_dependencies)
  key = transitive_dependencies.to_a.sort_by(&:name).map { |p| [p.name, p.version]}
  Yajl::Encoder.encode(key)
end

.generate_build_number(package_model, stemcell_model) ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/bosh/director/models/compiled_package.rb', line 40

def self.generate_build_number(package_model, stemcell_model)
  attrs = {
    :package_id => package_model.id,
    :stemcell_id => stemcell_model.id
  }

  filter(attrs).max(:build).to_i + 1
end

Instance Method Details

#before_saveObject



26
27
28
29
30
# File 'lib/bosh/director/models/compiled_package.rb', line 26

def before_save
  self.dependency_key_sha1 = Digest::SHA1.hexdigest(self.dependency_key)

  super
end

#nameObject



32
33
34
# File 'lib/bosh/director/models/compiled_package.rb', line 32

def name
  package.name
end

#validateObject



20
21
22
23
24
# File 'lib/bosh/director/models/compiled_package.rb', line 20

def validate
  validates_presence [:package_id, :stemcell_id, :sha1, :blobstore_id, :dependency_key]
  validates_unique [:package_id, :stemcell_id, :dependency_key]
  validates_unique [:package_id, :stemcell_id, :build]
end

#versionObject



36
37
38
# File 'lib/bosh/director/models/compiled_package.rb', line 36

def version
  package.version
end