Class: EC2::Host::RoleData
- Inherits:
-
Object
- Object
- EC2::Host::RoleData
- Defined in:
- lib/ec2/host/role_data.rb
Overview
Represents each role
Class Method Summary (collapse)
-
+ (Object) build(role)
Create a role data with role delimiter by Config.role_tag_delimiter.
Instance Method Summary (collapse)
-
- (Object) ==(other)
Equality.
-
- (RoleData) initialize(*role_parts)
constructor
Initialize role data with role parts.
- - (Object) inspect
-
- (Boolean) match?(*role_parts)
Check whether given role parts matches with this role data object.
-
- (String) role
(also: #to_s)
Something like “admin:jenkins:slave”.
-
- (Array) uppers
Something like [“admin”, “admin:jenkins”, “admin:jenkins:slave”].
Constructor Details
- (RoleData) initialize(*role_parts)
Initialize role data with role parts
RoleData.new('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')
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
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
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”
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”]
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 |