Class: Bosh::Cli::DeploymentManifest
- Defined in:
- lib/cli/deployment_manifest.rb
Instance Method Summary collapse
-
#initialize(manifest_hash) ⇒ DeploymentManifest
constructor
A new instance of DeploymentManifest.
- #normalize ⇒ Object
Constructor Details
#initialize(manifest_hash) ⇒ DeploymentManifest
Returns a new instance of DeploymentManifest.
5 6 7 |
# File 'lib/cli/deployment_manifest.rb', line 5 def initialize(manifest_hash) @manifest_hash = manifest_hash end |
Instance Method Details
#normalize ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/cli/deployment_manifest.rb', line 9 def normalize normalized = Bosh::Common::DeepCopy.copy(manifest_hash) # for backwards compatibility, new directors always convert stemcell and release versions to string if normalized['resource_pools'] normalized['resource_pools'].each do |rp| rp['stemcell']['version'] = rp['stemcell']['version'].to_s end end if normalized['releases'] normalized['releases'].each do |release| release['version'] = release['version'].to_s end end %w(releases networks jobs resource_pools disk_pools).each do |section| normalized[section] ||= [] unless normalized[section].kind_of?(Array) manifest_error("#{section} is expected to be an array") end normalized[section] = normalized[section].inject({}) do |acc, e| if e["name"].blank? manifest_error("missing name for one of entries in '#{section}'") end if acc.has_key?(e["name"]) manifest_error("duplicate entry '#{e['name']}' in '#{section}'") end acc[e["name"]] = e acc end end normalized["networks"].each do |network_name, network| # VIP and dynamic networks do not require subnet, # but if it's there we can run some sanity checks next unless network.has_key?("subnets") unless network["subnets"].kind_of?(Array) manifest_error("network subnets is expected to be an array") end subnets = network["subnets"].inject({}) do |acc, e| if e["range"].blank? manifest_error("missing range for one of subnets " + "in '#{network_name}'") end if acc.has_key?(e["range"]) manifest_error("duplicate network range '#{e['range']}' " + "in '#{network}'") end acc[e["range"]] = e acc end normalized["networks"][network_name]["subnets"] = subnets end normalized end |