Class: EC2::Host::RoleData

Inherits:
Object
  • Object
show all
Defined in:
lib/ec2/host/role_data.rb

Overview

Represents each role

Class Method Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (RoleData) initialize(*role_parts)

Initialize role data with role parts

RoleData.new('admin', 'jenkins', 'slave')

Parameters:

  • role_parts (Array)

    such as ['admin', 'jenkins', 'slave']



10
11
12
# File 'lib/ec2/host/role_data.rb', line 10

def initialize(*role_parts)
  @role_parts = role_parts
end

Class Method Details

+ (Object) build(role)

Create a role data with role delimiter by Config.role_tag_delimiter

RoleData.build('admin:jenkins:slave')

Parameters:

  • role (String)

    such as “admin:jenkins:slave”



19
20
21
22
# File 'lib/ec2/host/role_data.rb', line 19

def self.build(role)
  role_parts = role.split(Config.role_tag_delimiter, Config.role_max_depth)
  new(*role_parts)
end

Instance Method Details

- (Object) ==(other)

Equality

RoleData.new('admin') == RoleData.new('admin') #=> true
RoleData.new('admin', 'jenkin') == "admin:jenkins" #=> true

Parameters:

  • other (Object)


69
70
71
72
73
74
75
76
77
78
# File 'lib/ec2/host/role_data.rb', line 69

def ==(other)
  case other
  when String
    self.role == other
  when EC2::Host::RoleData
    super(other)
  else
    false
  end
end

- (Object) inspect



80
81
82
# File 'lib/ec2/host/role_data.rb', line 80

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

- (Boolean) match?(*role_parts)

Check whether given role parts matches with this role data object

RoleData.new('admin', 'jenkins', 'slave').match?('admin') #=> true
RoleData.new('admin', 'jenkins', 'slave').match?('admin', 'jenkins') #=> true
RoleData.new('admin', 'jenkins', 'slave').match?('admin', 'jenkins', 'slave') #=> true
RoleData.new('admin', 'jenkins', 'slave').match?('admin', 'jenkins', 'master') #=> false
RoleData.new('admin', 'jenkins', 'slave').match?(nil, 'jenkins') #=> true
RoleData.new('admin', 'jenkins', 'slave').match?(nil, nil, 'slave') #=> true

Parameters:

  • role_parts (Array)

    such as [“admin”, “jenkins”, “slave”]

Returns:

  • (Boolean)


58
59
60
61
# File 'lib/ec2/host/role_data.rb', line 58

def match?(*role_parts)
  indexes = role_parts.map.with_index {|part, i| part ? i : nil }.compact
  @role_parts.values_at(*indexes) == role_parts.values_at(*indexes)
end

- (String) role Also known as: to_s

Returns something like “admin:jenkins:slave”

Returns:

  • (String)

    something like “admin:jenkins:slave”



25
26
27
# File 'lib/ec2/host/role_data.rb', line 25

def role
  @role ||= @role_parts.compact.reject(&:empty?).join(Config.role_tag_delimiter)
end

- (Array) uppers

Returns something like [“admin”, “admin:jenkins”, “admin:jenkins:slave”]

Returns:

  • (Array)

    something like [“admin”, “admin:jenkins”, “admin:jenkins:slave”]



37
38
39
40
41
42
43
44
45
46
# File 'lib/ec2/host/role_data.rb', line 37

def uppers
  role_parts = @role_parts.dup
  upper_role_parts = []
  upper_role_parts << [role_parts.shift]
  role_parts.each do |role_part|
    break if role_part.nil? or role_part.empty?
    upper_role_parts << [*(upper_role_parts.last), role_part]
  end
  upper_role_parts.map {|role_parts| RoleData.new(*role_parts) }
end