Sha256: 27df4fd833dead38bc9c3adc3374467313b2792a3ec5b2f40c1a6b9f4021a8c1

Contents?: true

Size: 1.42 KB

Versions: 3

Compression:

Stored size: 1.42 KB

Contents

module VagrantPlugins
  module VCenter
    module Action
      # This class verifies if the VM has been created.
      class IsCreated
        def initialize(app, env)
          @app = app
          @logger = Log4r::Logger.new('vagrant_vcenter::action::is_created')
        end

        def call(env)
          vm_id = env[:machine].id
          if vm_id

            # VM is in the vagrant registry, now we need to check if it's
            # actually in vcenter

            # FIXME: this part needs some cleanup
            config = env[:machine].provider_config

            # FIXME: Raise a correct exception
            dc = config.vcenter_cnx.serviceInstance.find_datacenter(
                 config.datacenter_name) or abort 'datacenter not found'

            root_vm_folder = dc.vmFolder

            vm = root_vm_folder.findByUuid(env[:machine].id)

            unless vm
              @logger.info('VM is in the vagrant registry but not in vcenter')
              # Clear the ID
              env[:machine].id = nil
              env[:result] = false
            end

            # VM is in the registry AND in vcenter
            @logger.info("VM has been created and ID is: [#{vm_id}]")
            env[:result] = true

          else
            # VM is not in the registry
            @logger.warn('VM has not been created')
            env[:result] = false
          end

          @app.call env
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
vagrant-vcenter-0.3.2 lib/vagrant-vcenter/action/is_created.rb
vagrant-vcenter-0.3.1 lib/vagrant-vcenter/action/is_created.rb
vagrant-vcenter-0.3.0 lib/vagrant-vcenter/action/is_created.rb