Sha256: a8ddba3629086ea04b95a0701bfb258611e0647ed5935b3e1324798689f6c636

Contents?: true

Size: 1.29 KB

Versions: 6

Compression:

Stored size: 1.29 KB

Contents

module Ironfan
  class Dsl

    class Facet < Ironfan::Dsl::Compute
      include Ironfan::Plugin::Base; register_with Ironfan::Dsl::Cluster

      magic      :instances,    Integer,              default: 1
      collection :servers,      Ironfan::Dsl::Server, resolver: :deep_resolve
      field      :cluster_name, String

      def self.plugin_hook(owner, attrs, plugin_name, full_name, &blk)
        facet = owner.facet(plugin_name, new(attrs.merge(name: plugin_name, owner: owner)))
        _project(facet, &blk)
      end

      def initialize(attrs = {}, &blk)
        self.cluster_names  attrs[:owner].cluster_names unless attrs[:owner].nil?
        self.realm_name     attrs[:owner].realm_name    unless attrs[:owner].nil?
        self.cluster_name = attrs[:owner].cluster_name  unless attrs[:owner].nil?
        self.name         = attrs[:name]                unless attrs[:name].nil?
        self.facet_role     Ironfan::Dsl::Role.new(name: Compute.facet_role_name(realm_name, cluster_name, name))
        super
        (0..instances - 1).each{ |idx| server idx }
      end

      def children
        servers.to_a + components.to_a
      end

      def full_cluster_name
        "#{realm_name}-#{cluster_name}"
      end

      def full_name
        "#{full_cluster_name}-#{name}"
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
ironfan-6.1.9 lib/ironfan/dsl/facet.rb
ironfan-6.0.9 lib/ironfan/dsl/facet.rb
ironfan-6.1.7 lib/ironfan/dsl/facet.rb
ironfan-6.1.6 lib/ironfan/dsl/facet.rb
ironfan-6.0.8 lib/ironfan/dsl/facet.rb
ironfan-6.1.5 lib/ironfan/dsl/facet.rb