Method: Puppet::Util::Tagging#tag

Defined in:
lib/puppet/util/tagging.rb

#tag(*ary) ⇒ Object

Add a tag to the current tag set. When a tag set is used for a scope, these tags will be added to all of the objects contained in this scope when the objects are finished.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/puppet/util/tagging.rb', line 10

def tag(*ary)
  @tags ||= new_tags

  ary.flatten.each do |tag|
    name = tag.to_s.downcase
    # Add the tag before testing if it's valid since this means that
    # we never need to test the same valid tag twice. This speeds things
    # up since we get a lot of duplicates and rarely fail on bad tags
    if @tags.add?(name)
      # not seen before, so now we test if it is valid
      if name =~ ValidTagRegex
        if split_qualified_tags?
        # avoid adding twice by first testing if the string contains '::'
          @tags.merge(name.split('::')) if name.include?('::')
        end
      else
        @tags.delete(name)
        fail(Puppet::ParseError, _("Invalid tag '%{name}'") % { name: name })
      end
    end
  end
end