#!/usr/bin/env ruby
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)

require 'yaml'
require 'ostruct'
require 'bosh/cpi'
require 'cloud/openstack'

cpi_config = YAML.load_file(ARGV.shift)
ssl_ca_file = ARGV.shift

cloud_config = OpenStruct.new(:logger => Logger.new(STDERR))

Bosh::Clouds::Config.configure(cloud_config)

cpi_log = StringIO.new

cpi_lambda = lambda do
  unless cpi_config.has_key?('cloud') && cpi_config['cloud'].has_key?('properties')
    raise "Could not find cloud properties in the configuration"
  end

  cloud_properties = cpi_config['cloud']['properties']
  cloud_properties['cpi_log'] = cpi_log
  connection_options = cloud_properties['openstack']['connection_options']
  # If 'ca_cert' is set we render non-empty `config/openstack.crt`
  if connection_options && connection_options['ca_cert']
      connection_options['ssl_ca_file'] = ssl_ca_file
      connection_options.delete('ca_cert')
  end
  Bosh::Clouds::Openstack.new(cloud_properties)
end

cli = Bosh::Cpi::Cli.new(cpi_lambda, cpi_log, STDOUT)

cli.run(ARGF.read)
