class Biosphere::Suite

Attributes

actions[RW]
biosphere_settings[R]
deployments[R]
files[RW]
state[R]

Public Class Methods

new(state) click to toggle source
# File lib/biosphere/suite.rb, line 12
def initialize(state)

    @files = {}
    @actions = {}
    @state = state
    @deployments = {}
    @biosphere_settings = {}
    @biosphere_path = ""
end

Public Instance Methods

call_action(name, context) click to toggle source
# File lib/biosphere/suite.rb, line 76
def call_action(name, context)
    found = false
    @files.each do |file_name, proxy|
        if proxy.actions[name]
            found = true
            proxy.call_action(name, context)
        end
    end

    return found
end
evaluate_resources() click to toggle source
# File lib/biosphere/suite.rb, line 41
def evaluate_resources()
    @deployments.each do |name, deployment|
        deployment.evaluate_resources()
    end
end
load_all(directory) click to toggle source
# File lib/biosphere/suite.rb, line 51
def load_all(directory)
    @directory = directory
    files = Dir::glob("#{directory}/*.rb")

    for file in files
        proxy = Biosphere::TerraformProxy.new(file, self)

        @files[file[directory.length+1..-1]] = proxy
    end
    
    @files.each do |file_name, proxy|
        proxy.load_from_file()

        proxy.actions.each do |key, value|

            if @actions[key]
                raise "Action '#{key}' already defined at #{value[:location]}"
            end
            @actions[key] = value
        end
    end

    return @files.length
end
node() click to toggle source
# File lib/biosphere/suite.rb, line 47
def node
    @state.node
end
register(deployment) click to toggle source
# File lib/biosphere/suite.rb, line 22
def register(deployment)
    if @deployments[deployment.name]
        raise RuntimeException.new("Deployment #{deployment.name} already registered")
    end
    @deployments[deployment.name] = deployment
    if !@state.node[:deployments]
        @state.node[:deployments] = Node::Attribute.new
    end
    @state.node[:deployments][deployment.name] = Node::Attribute.new
    deployment.node = Node.new(@state.node[:deployments][deployment.name])
    #@state.node.deep_set(:deployments, deployment.name, deployment.node.data)
    deployment.state = @state

    if deployment._settings[:biosphere]
        @biosphere_settings.deep_merge!(deployment._settings[:biosphere])
    end
    
end
write_json_to(destination_dir) { |name, destination_name, str, deployment| ... } click to toggle source
# File lib/biosphere/suite.rb, line 88
def write_json_to(destination_dir)
    if !File.directory?(destination_dir)
        Dir.mkdir(destination_dir)
    end

    @deployments.each do |name, deployment|
        dir = destination_dir + "/" + deployment.name
        if !File.directory?(dir)
            Dir.mkdir(dir)
        end

        json_name = deployment.name + ".json.tf"
        str = deployment.to_json(true) + "\n"
        destination_name = dir + "/" + json_name
        File.write(destination_name, str)

        yield deployment.name, destination_name, str, deployment if block_given?
    end

end