Sha256: 99035440a5887acf3f088a12da3b5fcbdb08ef04812349568c24e9569a31ed0f

Contents?: true

Size: 1.53 KB

Versions: 15

Compression:

Stored size: 1.53 KB

Contents

class EC2
  class Host
    RoleData = Struct.new(
      :role1, :role2, :role3
    )

    # Represents each role
    class RoleData
      def self.initialize(role)
        role1, role2, role3 = role.split(Config.role_tag_delimiter)
        self.new(role1, role2, role3)
      end

      # @return [String] something like "admin:jenkins:slave"
      def role
        @role ||= [role1, role2, role3].compact.reject(&:empty?).join(Config.role_tag_delimiter)
      end
      alias :to_s :role

      # @return [Array] something like ["admin", "admin:jenkins", "admin:jenkins:slave"]
      def uppers
        uppers = [RoleData.new(role1)]
        uppers << RoleData.new(role1, role2) if role2 and !role2.empty?
        uppers << RoleData.new(role1, role2, role3) if role3 and !role3.empty?
        uppers
      end

      def match?(role1, role2 = nil, role3 = nil)
        if role3
          role1 == self.role1 and role2 == self.role2 and role3 == self.role3
        elsif role2
          role1 == self.role1 and role2 == self.role2
        else
          role1 == self.role1
        end
      end

      # Equality
      #
      #     Role::Data.new('admin') == Role::Data.new('admin') #=> true
      #     Role::Data.new('admin', 'jenkin') == "admin:jenkins" #=> true
      #
      # @param [Object] other
      def ==(other)
        case other
        when String
          self.role == other
        when EC2::Host::RoleData
          super(other)
        else
          false
        end
      end

      def inspect
        "\"#{to_s}\""
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
ec2-host-0.3.1 lib/ec2/host/role_data.rb
ec2-host-0.3.0 lib/ec2/host/role_data.rb
ec2-host-0.2.4 lib/ec2/host/role_data.rb
ec2-host-0.2.3 lib/ec2/host/role_data.rb
ec2-host-0.2.1 lib/ec2/host/role_data.rb
ec2-host-0.2.0 lib/ec2/host/role_data.rb
ec2-host-0.1.1 lib/ec2/host/role_data.rb
ec2-host-0.1.0 lib/ec2/host/role_data.rb
ec2-host-0.0.9 lib/ec2/host/role_data.rb
ec2-host-0.0.8 lib/ec2/host/role_data.rb
ec2-host-0.0.7 lib/ec2/host/role_data.rb
ec2-host-0.0.6 lib/ec2/host/role_data.rb
ec2-host-0.0.5 lib/ec2/host/role_data.rb
ec2-host-0.0.4 lib/ec2/host/role_data.rb
ec2-host-0.0.3 lib/ec2/host/role_data.rb