Sha256: a03577183cdf1d99dae4280c430da082836ebf9aa3dcdb25f2ce6f0087de7695

Contents?: true

Size: 1.9 KB

Versions: 38

Compression:

Stored size: 1.9 KB

Contents

class TestLab

  class Provisioner

    # Resolv Provisioner Error Class
    class ResolvError < ProvisionerError; end

    # Resolv Provisioner Class
    #
    # @author Zachary Patten <zachary AT jovelabs DOT com>
    class Resolv

      def initialize(config={}, ui=nil)
        @config = (config || Hash.new)
        @ui     = (ui     || TestLab.ui)

        @config[:resolv] ||= Hash.new

        @config[:resolv][:servers] ||= Array.new
        @config[:resolv][:servers].unshift([TestLab::Network.ips]).flatten!.compact!

        @config[:resolv][:search] ||= Array.new
        @config[:resolv][:search].unshift([TestLab::Container.domains]).flatten!.compact!

        @ui.logger.debug { "config(#{@config.inspect})" }
      end

      # Resolv: Node Provision
      #
      # @param [TestLab::Node] node The node which we want to provision.
      # @return [Boolean] True if successful.
      def on_node_provision(node)
        @ui.logger.debug { "RESOLV Provisioner: Node #{node.id}" }

        @config[:resolv].merge!(
          :servers => %w(127.0.0.1),
          :object => :node
        )

        node.bootstrap(ZTK::Template.render(provision_template, @config))

        true
      end
      alias :on_node_up :on_node_provision

      # Resolv: Container Provision
      #
      # @param [TestLab::Container] container The container which we want to
      #   provision.
      # @return [Boolean] True if successful.
      def on_container_provision(container)
        @ui.logger.debug { "RESOLV Provisioner: Container #{container.id}" }

        @config[:resolv].merge!(
          :object => :container
        )

        container.bootstrap(ZTK::Template.render(provision_template, @config))

        true
      end
      alias :on_container_up :on_container_provision

    private

      def provision_template
        File.join(TestLab::Provisioner.template_dir, 'resolv', 'provision.erb')
      end

    end

  end
end

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
testlab-1.16.0 lib/testlab/provisioners/resolv.rb
testlab-1.15.1 lib/testlab/provisioners/resolv.rb
testlab-1.15.0 lib/testlab/provisioners/resolv.rb
testlab-1.14.0 lib/testlab/provisioners/resolv.rb
testlab-1.13.0 lib/testlab/provisioners/resolv.rb
testlab-1.12.0 lib/testlab/provisioners/resolv.rb
testlab-1.11.7 lib/testlab/provisioners/resolv.rb
testlab-1.11.6 lib/testlab/provisioners/resolv.rb
testlab-1.11.5 lib/testlab/provisioners/resolv.rb
testlab-1.11.4 lib/testlab/provisioners/resolv.rb
testlab-1.11.3 lib/testlab/provisioners/resolv.rb
testlab-1.11.2 lib/testlab/provisioners/resolv.rb
testlab-1.11.1 lib/testlab/provisioners/resolv.rb
testlab-1.11.0 lib/testlab/provisioners/resolv.rb
testlab-1.10.0 lib/testlab/provisioners/resolv.rb
testlab-1.9.2 lib/testlab/provisioners/resolv.rb
testlab-1.9.1 lib/testlab/provisioners/resolv.rb
testlab-1.9.0 lib/testlab/provisioners/resolv.rb
testlab-1.8.5 lib/testlab/provisioners/resolv.rb
testlab-1.8.4 lib/testlab/provisioners/resolv.rb