Class: Bosh::Cloudfoundry::ReleaseVersionCpi

Inherits:
Object
  • Object
show all
Defined in:
lib/bosh/cloudfoundry/release_version_cpi.rb

Overview

This project should support all known versions of Cloud Foundry back to v132. v132 was the first release of Cloud Foundry v2. The project also supports the different CPIs that are supported by bosh.

This class represents an available release version for a specific CPI. From this class you can navigate to one or more ReleaseVersionCpiSizes (deployment sizes).

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(release_version, cpi) ⇒ ReleaseVersionCpi

Returns a new instance of ReleaseVersionCpi.



21
22
23
24
25
# File 'lib/bosh/cloudfoundry/release_version_cpi.rb', line 21

def initialize(release_version, cpi)
  release_version = ReleaseVersion.for_version(release_version) unless release_version.is_a?(ReleaseVersion)
  raise "CPI #{cpi} not available for version #{release_version.version_number}" unless release_version.valid_cpi?(cpi)
  @release_version, @cpi = release_version, cpi
end

Instance Attribute Details

#cpiObject (readonly)

Returns the value of attribute cpi.



10
11
12
# File 'lib/bosh/cloudfoundry/release_version_cpi.rb', line 10

def cpi
  @cpi
end

#release_versionObject (readonly)

Returns the value of attribute release_version.



9
10
11
# File 'lib/bosh/cloudfoundry/release_version_cpi.rb', line 9

def release_version
  @release_version
end

Class Method Details

.for_cpi(release_version, cpi) ⇒ Object



12
13
14
# File 'lib/bosh/cloudfoundry/release_version_cpi.rb', line 12

def self.for_cpi(release_version, cpi)
  ReleaseVersionCpi.new(release_version, cpi)
end

.latest_for_cpi(cpi) ⇒ Object



16
17
18
19
# File 'lib/bosh/cloudfoundry/release_version_cpi.rb', line 16

def self.latest_for_cpi(cpi)
  release_version = ReleaseVersion.latest_version_number
  ReleaseVersionCpi.new(release_version, cpi)
end

Instance Method Details

#available_deployment_sizesObject



39
40
41
# File 'lib/bosh/cloudfoundry/release_version_cpi.rb', line 39

def available_deployment_sizes
  spec["deployment_sizes"]
end

#default_deployment_sizeObject



43
44
45
# File 'lib/bosh/cloudfoundry/release_version_cpi.rb', line 43

def default_deployment_size
  spec["default_deployment_size"]
end

#immutable_attributesObject

Attributes & their values that are not to be changed over time



61
62
63
# File 'lib/bosh/cloudfoundry/release_version_cpi.rb', line 61

def immutable_attributes
  release_version.immutable_attributes
end

#mutable_attributesObject

Attributes & their values that can be changed via setters & deployment re-deployed successfully



56
57
58
# File 'lib/bosh/cloudfoundry/release_version_cpi.rb', line 56

def mutable_attributes
  release_version.mutable_attributes
end

#release_nameObject



47
48
49
# File 'lib/bosh/cloudfoundry/release_version_cpi.rb', line 47

def release_name
  release_version.release_name
end

#release_version_numberObject



51
52
53
# File 'lib/bosh/cloudfoundry/release_version_cpi.rb', line 51

def release_version_number
  release_version.version_number
end

#specObject



35
36
37
# File 'lib/bosh/cloudfoundry/release_version_cpi.rb', line 35

def spec
  @spec ||= YAML.load_file(spec_path)
end

#spec_pathObject



31
32
33
# File 'lib/bosh/cloudfoundry/release_version_cpi.rb', line 31

def spec_path
  File.join(template_dir, "spec")
end

#template_dirObject



27
28
29
# File 'lib/bosh/cloudfoundry/release_version_cpi.rb', line 27

def template_dir
  File.join(release_version.template_dir, cpi)
end