class GeoEngineer::Project
Projects are groups of resources used to organize and validate.
A Project
contains resources, has arbitrary attributes and validation rules
Attributes
environment[R]
name[RW]
org[RW]
Public Class Methods
new(org, name, environment, &block)
click to toggle source
# File lib/geoengineer/project.rb, line 20 def initialize(org, name, environment, &block) @org = org @name = name @environment = environment instance_exec(self, &block) if block_given? execute_lifecycle(:after, :initialize) end
Public Instance Methods
all_resources()
click to toggle source
# File lib/geoengineer/project.rb, line 44 def all_resources [resources, all_template_resources].flatten end
full_id_name()
click to toggle source
# File lib/geoengineer/project.rb, line 28 def full_id_name "#{org}_#{name}".tr('-', '_') end
full_name()
click to toggle source
# File lib/geoengineer/project.rb, line 32 def full_name "#{org}/#{name}" end
resource(type, id, &block)
click to toggle source
# File lib/geoengineer/project.rb, line 36 def resource(type, id, &block) return find_resource(type, id) unless block_given? resource = create_resource(type, id, &block) resource.project = self resource.environment = @environment resource end
to_dot()
click to toggle source
dot method
# File lib/geoengineer/project.rb, line 49 def to_dot str = [" subgraph \"cluster_#{full_id_name}\" {"] str << " style = filled; color = lightgrey;" str << " label = <<B><FONT POINT-SIZE=\"24.0\">#{full_name}</FONT></B>>" nodes = all_resources.map do |res| " node [label=#{res.short_name.inspect}, shape=\"box\"] #{res.to_ref.inspect};" end str << nodes str << " }" str.join(" // #{full_name} \n") end