allomov
3/15/2017 - 2:19 PM

generate-ldap-uaa-config

#!/usr/bin/env ruby

require 'rubygems'
require 'bundler'
Bundler.require(:default)

require "yaml"
require "json"
require "mantra"

manifest_path = ARGV.shift
release_path  = ARGV.shift

if manifest_path.nil? || release_path.nil?
  puts "run as following: get-full-context <manifest_path> <release_path>"
  exit(1)
end

job_spec_files = Dir[File.join(release_path, "jobs/*/spec")]
release_proprties = job_spec_files.map do |file|
  YAML.load_file(file)["properties"]
end.compact.inject({}) do |res, props|
  res.merge!(props)
end.select { |key, value| !value["default"].nil? }

release_default_proprties = {}

release_proprties.each_pair do |key, value|
  release_default_proprties[key] = value["default"]
end

manifest = Mantra::Manifest.new(manifest_path)

release_default_proprties = release_default_proprties.each_pair.inject(Mantra::Manifest::Element.create({})) do |result, pair|
  result.merge(Mantra::Manifest::Element.element_with_selector(pair.first, pair.last))
  result
end

resulting_properties = manifest.properties.merge(release_default_proprties, force: true)

puts JSON.generate({"properties" => resulting_properties.to_ruby_object})
#!/usr/bin/env bash

project_dir=$(cd `dirname $0` && cd .. && pwd)

if [ ! -d "$project_dir/uaa-release" ]; then
  echo "Please, clone uaa-release repos to the project folder."
  exit 1
fi

if [ ! -f "$project_dir/ldap-manifest.yml" ]; then
  echo "Please, create ldap-manifest.yml manifest file into the project folder."
  exit 1
fi

temp_dir=`mktemp -d`
uaa_release_folder=$project_dir/uaa-release
context=$(./bin/get-full-context $project_dir/ldap-manifest.yml $uaa_release_folder)
bosh-template $uaa_release_folder/jobs/uaa/templates/uaa.yml.erb --context "$context" > $temp_dir/ldap-uaa.yml
mantra transform -m $temp_dir/ldap-uaa.yml -c $project_dir/pcf-uaa-transform.yml > $project_dir/ldap-uaa.yml