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