class GCE::Host::RoleData
Represents each role
Public Class Methods
build(role)
click to toggle source
Create a role data with role delimiter by Config.role_value_delimiter
RoleData.build('admin:jenkins:slave')
@param [String] role such as “admin:jenkins:slave”
# File lib/gce/host/role_data.rb, line 19 def self.build(role) role_parts = role.split(Config.role_value_delimiter, Config.role_max_depth) new(*role_parts) end
new(*role_parts)
click to toggle source
Initialize role data with role parts
RoleData.new('admin', 'jenkins', 'slave')
@param [Array] role_parts such as ['admin', 'jenkins', 'slave']
# File lib/gce/host/role_data.rb, line 10 def initialize(*role_parts) @role_parts = role_parts end
Public Instance Methods
==(other)
click to toggle source
Equality
RoleData.new('admin') == Role::Data.new('admin') #=> true RoleData.new('admin', 'jenkin') == "admin:jenkins" #=> true
@param [Object] other
Calls superclass method
# File lib/gce/host/role_data.rb, line 80 def ==(other) case other when String self.role == other when GCE::Host::RoleData super(other) else false end end
inspect()
click to toggle source
# File lib/gce/host/role_data.rb, line 91 def inspect "\"#{to_s}\"" end
match?(*role_parts)
click to toggle source
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 RoleData.new('foo', 'a').match?(['foo', 'bar']) #=> true RoleData.new('bar', 'a').match?(['foo', 'bar']) #=> true RoleData.new('baz', 'a').match?(['foo', 'bar']) #=> false RoleData.new('foo', 'a').match?(['foo', 'bar'], ['a', 'b']) #=> true RoleData.new('bar', 'a').match?(['foo', 'bar'], ['a', 'b']) #=> true RoleData.new('baz', 'a').match?(['foo', 'bar'], ['a', 'b']) #=> false RoleData.new('foo', 'b').match?(['foo', 'bar'], ['a', 'b']) #=> true RoleData.new('bar', 'b').match?(['foo', 'bar'], ['a', 'b']) #=> true RoleData.new('baz', 'b').match?(['foo', 'bar'], ['a', 'b']) #=> false
@param [Array] role_parts such as [“admin”, “jenkins”, “slave”]
# File lib/gce/host/role_data.rb, line 69 def match?(*role_parts) indexes = role_parts.map.with_index {|part, i| part ? i : nil }.compact indexes.all? {|i| Array(role_parts[i]).include?(@role_parts[i]) } end
role()
click to toggle source
@return [String] something like “admin:jenkins:slave”
# File lib/gce/host/role_data.rb, line 25 def role @role ||= @role_parts.compact.reject(&:empty?).join(Config.role_value_delimiter) end
Also aliased as: to_s
uppers()
click to toggle source
@return [Array] something like [“admin”, “admin:jenkins”, “admin:jenkins:slave”]
# File lib/gce/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