Sha256: a56a11eabebc98970e13e26bfb1df0c832329d252ae3885f96ef86c266346502

Contents?: true

Size: 1.32 KB

Versions: 16

Compression:

Stored size: 1.32 KB

Contents

require 'mccloud/vm'
module Mccloud
  class Vms < Hash

    attr_reader :env

    def initialize(env)
      @env=env
    end

    def define(name,definitionname)
      # Check if definition  exists
      unless env.config.definitions.registered?(definitionname)
        raise ::Mccloud::Error, "Definition #{definitionname} does not exist"
      end
      # Create the vms dir if needed
      unless self.exists?
        self.create
      end

      vm=::Mccloud::Vm.new(name,env)
      unless vm.exists?
       vm.definition=env.config.definitions[definitionname]
       vm.create
      end
    end

    def load!
      if self.exists?
        Dir[File.join(self.path,"**.rb")].each do |dir|
          name=File.basename(dir,'.rb')
          vm=::Mccloud::Vm.new(name,env)
          vm.load!
        end
      else
        env.logger.info "Skipping loading of vms as the vm_path does exist"
      end
    end

    def path
      @env.config.mccloud.vm_path
    end

    def exists?
      File.directory?(self.path)
    end

    def create
     begin
      unless self.exists?
        env.logger.info "Creating the vms directory #{self.path} as it doesn't exist yet"
        FileUtils.mkdir(self.path)
      end
      rescue Exception => ex
         raise ::Mccloud::Error, "Error creating vms directory #{self.path}: \n#{ex}"
      end
    end

  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
mccloud-0.1.1 lib/mccloud/vms.rb
mccloud-0.0.28 lib/mccloud/vms.rb
mccloud-0.0.27 lib/mccloud/vms.rb
mccloud-0.0.26 lib/mccloud/vms.rb
mccloud-0.0.25 lib/mccloud/vms.rb
mccloud-0.0.24 lib/mccloud/vms.rb
mccloud-0.0.23 lib/mccloud/vms.rb
mccloud-0.0.22 lib/mccloud/vms.rb
mccloud-0.0.21 lib/mccloud/vms.rb
mccloud-0.0.20 lib/mccloud/vms.rb
mccloud-0.0.19 lib/mccloud/vms.rb
mccloud-0.0.18 lib/mccloud/vms.rb
mccloud-0.0.17 lib/mccloud/vms.rb
mccloud-0.0.16 lib/mccloud/vms.rb
mccloud-0.0.15 lib/mccloud/vms.rb
mccloud-0.0.14 lib/mccloud/vms.rb