File: service.rb

package info (click to toggle)
ruby-serverspec 2.41.5-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 984 kB
  • sloc: ruby: 4,780; makefile: 3
file content (57 lines) | stat: -rw-r--r-- 1,529 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
module Serverspec::Type
  class Service < Base
    def enabled?(level, under=nil)
      under = under ? "_under_#{under.gsub(/^under_/, '')}" : ''
      check_method = "check_service_is_enabled#{under}"

      if level
        @runner.send(check_method.to_sym, @name, level)
      else
        @runner.send(check_method.to_sym, @name)
      end
    end

    def installed?(name, version)
      @runner.check_service_is_installed(@name)
    end

    def has_start_mode?(mode)
      @runner.check_service_has_start_mode(@name, mode)
    end

    def running?(under)
      if under
        check_method = "check_service_is_running_under_#{under}".to_sym
        @runner.send(check_method, @name)
      else
        @runner.check_service_is_running(@name)
      end
    end

    def monitored_by?(monitor, monitor_name)
      check_method = "check_service_is_monitored_by_#{monitor}".to_sym
      # use the with_name value if set instead of the service name
      monitor_name = (monitor_name ? monitor_name : @name)
      res = @runner.send(check_method, monitor_name)
    end

    def has_property?(property)
      @runner.check_service_has_property(@name, property)
    end

    def property
      get_property if @property.nil?
      @property
    end

    private
    def get_property
      @property = {}
      props = @runner.get_service_property(@name).stdout
      props.split(/\n/).each do |line|
        property, _type, *value = line.split(/\s+/)
        @property[property] = value.join(' ')
      end
    end
  end
end