orange-cloudfoundry/cf-ops-automation

View on GitHub
upgrade/v2.0.0/01-upgrade-paas-template.rb

Summary

Maintainability
A
25 mins
Test Coverage
#!/usr/bin/env ruby
require 'yaml'
require_relative '../../lib/deployment_deployers_config'
require_relative '../../lib/coa_upgrader'

OPTIONS = {
  dump_output: true,
  config_path: '',
  templates_path: '../paas-templates'
}.freeze

options = CoaUpgrader::CommandLineParser.new(OPTIONS.dup).parse
paas_template_root = options[:templates_path]

raise "invalid paas_template_root: <#{paas_template_root}> does not exist" unless Dir.exist?(paas_template_root)

def delete_stemcells_key(deployment_dependencies)
  migrated = false
  deployment_dependencies['deployment']&.each do |_, details|
    details&.delete('stemcells') && migrated = true
  end
  migrated
end

def remove_stemcell_key_from_deployment_dependencies(deployment_dependencies_files)
  migrated_counter = 0
  deployment_dependencies_files&.each do |deployment_dependencies_filename|
    deployment_dependencies = YAML.load_file(deployment_dependencies_filename)
    unless deployment_dependencies
      puts "*** ignoring file: #{deployment_dependencies_filename} - invalid format"
      next
    end
    puts "original #{deployment_dependencies_filename}: #{deployment_dependencies}"

    if delete_stemcells_key(deployment_dependencies)
      migrated_counter += 1
      puts "migrated #{deployment_dependencies_filename}: #{deployment_dependencies}"
    end
    File.open(deployment_dependencies_filename, 'w') { |file| file.write deployment_dependencies.to_yaml }
    puts '#########'
  end
  migrated_counter
end

puts "scanning for deployment-dependencies in #{paas_template_root}"

deployment_dependencies_files = Dir["#{paas_template_root}/**/deployment-dependencies.yml"]

migrated_deployment_dependencies_counter = remove_stemcell_key_from_deployment_dependencies(deployment_dependencies_files)

puts
puts 'Summary:'
puts "  #{migrated_deployment_dependencies_counter}/#{deployment_dependencies_files.length} deployment-dependencies.yml migrated"
puts

puts
puts 'Thanks, Orange CloudFoundry SKC'