Class: Bosh::Cloudfoundry::ReleaseVersion
- Inherits:
-
Object
- Object
- Bosh::Cloudfoundry::ReleaseVersion
- Defined in:
- lib/bosh/cloudfoundry/release_version.rb
Overview
This project should support all known versions of Cloud Foundry back to v132. v132 was the first release of Cloud Foundry v2.
This class represents an available release version, for which there are a subset of CPIs supported. From this class you can navigate to ReleaseVersionCpi for the CPI specific aspect of a release version; and from ReleaseVersionCpi you can navigate to one or more ReleaseVersionCpiSizes (deployment sizes).
Instance Attribute Summary collapse
-
#version_number ⇒ Object
readonly
Returns the value of attribute version_number.
Class Method Summary collapse
- .available_version(version_number) ⇒ Object
-
.available_versions ⇒ Object
converts templates/v132, templates/v140, etc into [132, 140].
- .base_template_dir ⇒ Object
- .for_version(version_number) ⇒ Object
- .latest_version_number ⇒ Object
Instance Method Summary collapse
- #available_cpi_names ⇒ Object
- #bosh_release_dir ⇒ Object
-
#immutable_attributes ⇒ Object
Attributes & their values that are not to be changed over time.
-
#initialize(version_number) ⇒ ReleaseVersion
constructor
A new instance of ReleaseVersion.
-
#mutable_attributes ⇒ Object
Attributes & their values that can be changed via setters & deployment re-deployed successfully.
- #release_name ⇒ Object
- #spec ⇒ Object
- #spec_path ⇒ Object
- #template_dir ⇒ Object
- #valid_cpi?(cpi) ⇒ Boolean
Constructor Details
#initialize(version_number) ⇒ ReleaseVersion
Returns a new instance of ReleaseVersion.
43 44 45 |
# File 'lib/bosh/cloudfoundry/release_version.rb', line 43 def initialize(version_number) @version_number = version_number end |
Instance Attribute Details
#version_number ⇒ Object (readonly)
Returns the value of attribute version_number.
9 10 11 |
# File 'lib/bosh/cloudfoundry/release_version.rb', line 9 def version_number @version_number end |
Class Method Details
.available_version(version_number) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/bosh/cloudfoundry/release_version.rb', line 26 def self.available_version(version_number) available_version, *versions = available_versions while versions && versions.size > 0 version, *versions = versions if version <= version_number available_version = version else return available_version end end available_version end |
.available_versions ⇒ Object
converts templates/v132, templates/v140, etc into [132, 140]
17 18 19 20 21 22 23 24 |
# File 'lib/bosh/cloudfoundry/release_version.rb', line 17 def self.available_versions @available_versions ||= begin Dir[File.join(base_template_dir, "v*")]. map {|dir| File.basename(dir)}. map {|version| version[1..-1].to_i}. sort end end |
.base_template_dir ⇒ Object
76 77 78 |
# File 'lib/bosh/cloudfoundry/release_version.rb', line 76 def self.base_template_dir File.("../../../../templates", __FILE__) end |
.for_version(version_number) ⇒ Object
11 12 13 14 |
# File 'lib/bosh/cloudfoundry/release_version.rb', line 11 def self.for_version(version_number) raise "Minimum release version is 132; #{version_number} is too small" if version_number.to_i < 132 ReleaseVersion.new(available_version(version_number)) end |
.latest_version_number ⇒ Object
39 40 41 |
# File 'lib/bosh/cloudfoundry/release_version.rb', line 39 def self.latest_version_number available_versions.last end |
Instance Method Details
#available_cpi_names ⇒ Object
64 65 66 |
# File 'lib/bosh/cloudfoundry/release_version.rb', line 64 def available_cpi_names spec["available_cpi"] end |
#bosh_release_dir ⇒ Object
72 73 74 |
# File 'lib/bosh/cloudfoundry/release_version.rb', line 72 def bosh_release_dir File.("../../../../bosh_release", __FILE__) end |
#immutable_attributes ⇒ Object
Attributes & their values that are not to be changed over time
60 61 62 |
# File 'lib/bosh/cloudfoundry/release_version.rb', line 60 def immutable_attributes spec["immutable_attributes"] end |
#mutable_attributes ⇒ Object
Attributes & their values that can be changed via setters & deployment re-deployed successfully
55 56 57 |
# File 'lib/bosh/cloudfoundry/release_version.rb', line 55 def mutable_attributes spec["mutable_attributes"] end |
#release_name ⇒ Object
47 48 49 50 51 52 |
# File 'lib/bosh/cloudfoundry/release_version.rb', line 47 def release_name @release_name ||= begin release_yml = Dir[File.join(bosh_release_dir, "releases", "*-#{release_version}.yml")].first YAML.load_file(release_yml)["name"] end end |
#spec ⇒ Object
88 89 90 |
# File 'lib/bosh/cloudfoundry/release_version.rb', line 88 def spec @spec ||= YAML.load_file(spec_path) end |
#spec_path ⇒ Object
84 85 86 |
# File 'lib/bosh/cloudfoundry/release_version.rb', line 84 def spec_path File.join(template_dir, "spec") end |
#template_dir ⇒ Object
80 81 82 |
# File 'lib/bosh/cloudfoundry/release_version.rb', line 80 def template_dir File.join(self.class.base_template_dir, "v#{version_number}") end |
#valid_cpi?(cpi) ⇒ Boolean
68 69 70 |
# File 'lib/bosh/cloudfoundry/release_version.rb', line 68 def valid_cpi?(cpi) available_cpi_names.include?(cpi) end |