Sha256: 0f94cbaae70526c254ab47df6d4181f6461136c408560585f4d9356654e095b2

Contents?: true

Size: 1.14 KB

Versions: 1

Compression:

Stored size: 1.14 KB

Contents

require 'log4r'
require 'json'

require 'vagrant-skytap/setup_helper'
require 'vagrant-skytap/util/timer'
require 'vagrant-skytap/api/environment'
require 'vagrant-skytap/api/vm'

require 'net/https'
require 'uri'
require 'base64'
require 'json'
require 'timeout'

module VagrantPlugins
  module Skytap
    module Action
      # Creates an environment from the template URL present in the config
      # file. Stores the new environment URL in the environment properties.
      class CreateEnvironment
        attr_reader :env

        def initialize(app, env)
          @app = app
          @env = env
          @logger = Log4r::Logger.new("vagrant_skytap::action::create_environment")
        end

        def call(env)
          vm = API::Vm.fetch(env, vm_url)
          environment = API::Environment.create!(env, [vm])
          env[:environment] = environment
          environment.properties.write('url' => environment.url)
          env[:machine].id = environment.vms.first.id
          environment.wait_until_ready

          @app.call(env)
        end

        def vm_url
          env[:machine].provider_config.vm_url
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vagrant-skytap-0.2.3 lib/vagrant-skytap/action/create_environment.rb