#!/usr/bin/env ruby

$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)

require 'yaml'
require 'ostruct'
require 'logger'
require 'tmpdir'
require 'bosh/cpi'
require 'bosh/cpi/cli'

require 'cloud'
require 'cloud/vsphere'

cpi_config = YAML.load_file(ARGV.shift)

Bosh::Clouds::Config.configure(OpenStruct.new(
  logger: Bosh::Cpi::Logger.new(STDERR),
  task_checkpoint: nil,
))

soap_log = StringIO.new

#cpi_lambda now requires 2 arguments context, cpi_api_version
cpi_lambda = lambda do |context, _|
  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']

  if cloud_properties['vcenters'].nil? || cloud_properties['vcenters'].empty?
    cloud_properties['vcenters'] = [{}]
  end
  cloud_properties['vcenters'][0].merge!(context)

  cloud_properties['soap_log'] = soap_log
  Bosh::Clouds::VSphere.new(cloud_properties)
end

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

cli.run(ARGF.read)
