Sha256: 94d09d8ae8fd73752d27dbddc454f238ad80f37c2c7ea2a5bf999bb0a47b88aa

Contents?: true

Size: 1.38 KB

Versions: 16

Compression:

Stored size: 1.38 KB

Contents

module Mccloud

  class Vm

    attr_accessor :name
    attr_reader :env
    attr_accessor :definition

    def initialize(name,env)
      @name=name
      @env=env
    end

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

    def path
      File.join(@env.config.mccloud.vm_path,@name+".rb")
    end

    def load!
      self.validate

      content=File.read(self.path)
      mccloud_configurator=env.config
      content.gsub!("Mccloud::Config.run","mccloud_configurator.define")

      begin
        env.config.instance_eval(content)
      rescue Error => ex
        raise ::Mccloud::Error, "Error reading vm from file #{definition_file}#{ex}"
      end
    end

    def create
      begin
        unless self.exists?
          File.open(self.path,'w'){ |f| f.write(self.to_template)}
        else
          raise ::Mccloud::Error, "VM file #{self.path} already exists"
        end
      rescue Error => ex
        raise ::Mccloud::Error, "Error writing vm file"
      end
    end

    def to_template
      result=""
      filename=File.expand_path(File.join(File.dirname(__FILE__),'templates','vm.erb'))
      env.logger.info "Opening vm template file #{@file}"
      template=File.new(filename).read
      result=ERB.new(template).result(binding)
      return result
    end

    def validate
      raise ::Mccloud::Error, "Vm #{@name} does not yet exist" unless self.exists?
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

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