class Guard::Bosh::ApplySpecification
Simulated BOSH Apply Spec.
Public Class Methods
new( deployment_manifest:, package_resolver:, network_generator:)
click to toggle source
# File lib/guard/bosh/apply_specification.rb, line 5 def initialize( deployment_manifest:, package_resolver:, network_generator:) @manifest = deployment_manifest @package_resolver = package_resolver @network_generator = network_generator end
Public Instance Methods
generate(properties:, job_name:)
click to toggle source
rubocop:disable Metrics/MethodLength
# File lib/guard/bosh/apply_specification.rb, line 13 def generate(properties:, job_name:) { 'deployment' => @manifest['name'], 'configuration_hash' => '24292bab7264f00ada207768efa7018e2a2226fc', 'job' => job(job_name), 'packages' => packages(job_name), 'resource_pool' => resource_pool(job_name), 'networks' => network(job_name), 'index' => 0, 'properties' => properties, 'persistent_disk' => persistent_disk(job_name), 'rendered_templates_archive' => rendered_templates_archive } end
Private Instance Methods
job(job_name)
click to toggle source
# File lib/guard/bosh/apply_specification.rb, line 30 def job(job_name) manifest_job = manifest_job_with_name(job_name) { 'name' => job_name, 'template' => manifest_job['template'] || manifest_job['templates'].first['name'], 'version' => '1', 'sha1' => 'c7f277de5b283e5ceffe55674dc56fad2257ecab', 'blobstore_id' => '8a66ab45-4831-4ce3-aa8f-313fe33a9891', 'templates' => templates(manifest_job) } end
manifest_job_with_name(name)
click to toggle source
# File lib/guard/bosh/apply_specification.rb, line 110 def manifest_job_with_name(name) @manifest['jobs'].find { |j| j['name'] == name } end
network(job_name)
click to toggle source
# File lib/guard/bosh/apply_specification.rb, line 83 def network(job_name) @network_generator.generate( deployment_manifest: @manifest, job_name: job_name) end
packages(job_name)
click to toggle source
# File lib/guard/bosh/apply_specification.rb, line 43 def packages(job_name) manifest_job = manifest_job_with_name(job_name) all_packages = template_names(manifest_job).flat_map do |template| @package_resolver.resolve(template) end all_packages.inject({}) do |result, package| result.merge( package => { 'name' => package, 'version' => '1.0', 'sha1' => 'b945ce51b3635bb0ebfb2207323514381bcee824', 'blobstore_id' => '608c41bc-d491-4773-9812-8f24276eace1' } ) end end
persistent_disk(job_name)
click to toggle source
# File lib/guard/bosh/apply_specification.rb, line 98 def persistent_disk(job_name) manifest_job = manifest_job_with_name(job_name) manifest_job['persistent_disk'] end
rendered_templates_archive()
click to toggle source
# File lib/guard/bosh/apply_specification.rb, line 103 def rendered_templates_archive { 'sha1' => 'c299ead74faf9ee9b47b3548e5df427e3e9a2c70', 'blobstore_id' => '72fb06ef-0f40-4280-85e8-b5930e672308' } end
resource_pool(job_name)
click to toggle source
# File lib/guard/bosh/apply_specification.rb, line 88 def resource_pool(job_name) manifest_job = manifest_job_with_name(job_name) job_pool = @manifest['resource_pools'].find do |pool| pool['name'] == manifest_job['resource_pool'] end job_pool.delete_if do |k, _| ! %w(cloud_properties name stemcell).include?(k) end end
template(name)
click to toggle source
# File lib/guard/bosh/apply_specification.rb, line 74 def template(name) { 'name' => name, 'version' => '1', 'sha1' => '88d6ea417857efda58916f9cb9bd5dd3a0f76f00', 'blobstore_id' => '2356dff1-18fd-4314-a9bd-199b9d6c5c45' } end
template_names(manifest_job)
click to toggle source
# File lib/guard/bosh/apply_specification.rb, line 66 def template_names(manifest_job) if manifest_job.key?('template') Array(manifest_job['template']) else manifest_job['templates'].map { |t| t['name'] } end end
templates(manifest_job)
click to toggle source
# File lib/guard/bosh/apply_specification.rb, line 62 def templates(manifest_job) template_names(manifest_job).map { |t| template(t) } end