serverspec-ruby19 2.24.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +26 -0
  3. data/.gitmodules +3 -0
  4. data/.travis.yml +19 -0
  5. data/Gemfile +8 -0
  6. data/Guardfile +4 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +26 -0
  9. data/Rakefile +30 -0
  10. data/WINDOWS_SUPPORT.md +118 -0
  11. data/appveyor.yml +56 -0
  12. data/bin/serverspec-init +7 -0
  13. data/lib/serverspec.rb +63 -0
  14. data/lib/serverspec/commands/base.rb +7 -0
  15. data/lib/serverspec/helper.rb +8 -0
  16. data/lib/serverspec/helper/type.rb +26 -0
  17. data/lib/serverspec/matcher.rb +39 -0
  18. data/lib/serverspec/matcher/be_enabled.rb +13 -0
  19. data/lib/serverspec/matcher/be_enforcing.rb +10 -0
  20. data/lib/serverspec/matcher/be_executable.rb +13 -0
  21. data/lib/serverspec/matcher/be_installed.rb +13 -0
  22. data/lib/serverspec/matcher/be_listening.rb +13 -0
  23. data/lib/serverspec/matcher/be_mounted.rb +15 -0
  24. data/lib/serverspec/matcher/be_permissive.rb +10 -0
  25. data/lib/serverspec/matcher/be_reachable.rb +17 -0
  26. data/lib/serverspec/matcher/be_readable.rb +13 -0
  27. data/lib/serverspec/matcher/be_resolvable.rb +9 -0
  28. data/lib/serverspec/matcher/be_running.rb +13 -0
  29. data/lib/serverspec/matcher/be_writable.rb +13 -0
  30. data/lib/serverspec/matcher/belong_to_group.rb +5 -0
  31. data/lib/serverspec/matcher/belong_to_primary_group.rb +5 -0
  32. data/lib/serverspec/matcher/contain.rb +28 -0
  33. data/lib/serverspec/matcher/have_entry.rb +14 -0
  34. data/lib/serverspec/matcher/have_rule.rb +17 -0
  35. data/lib/serverspec/matcher/have_site_application.rb +18 -0
  36. data/lib/serverspec/matcher/have_site_bindings.rb +22 -0
  37. data/lib/serverspec/matcher/have_virtual_dir.rb +14 -0
  38. data/lib/serverspec/power_assert.rb +14 -0
  39. data/lib/serverspec/setup.rb +338 -0
  40. data/lib/serverspec/subject.rb +12 -0
  41. data/lib/serverspec/type/base.rb +30 -0
  42. data/lib/serverspec/type/bond.rb +11 -0
  43. data/lib/serverspec/type/bridge.rb +11 -0
  44. data/lib/serverspec/type/cgroup.rb +17 -0
  45. data/lib/serverspec/type/command.rb +20 -0
  46. data/lib/serverspec/type/cron.rb +15 -0
  47. data/lib/serverspec/type/default_gateway.rb +15 -0
  48. data/lib/serverspec/type/docker_base.rb +29 -0
  49. data/lib/serverspec/type/docker_container.rb +27 -0
  50. data/lib/serverspec/type/docker_image.rb +4 -0
  51. data/lib/serverspec/type/file.rb +133 -0
  52. data/lib/serverspec/type/fstab.rb +11 -0
  53. data/lib/serverspec/type/group.rb +11 -0
  54. data/lib/serverspec/type/host.rb +21 -0
  55. data/lib/serverspec/type/iis_app_pool.rb +43 -0
  56. data/lib/serverspec/type/iis_website.rb +40 -0
  57. data/lib/serverspec/type/interface.rb +27 -0
  58. data/lib/serverspec/type/ip6tables.rb +13 -0
  59. data/lib/serverspec/type/ipfilter.rb +11 -0
  60. data/lib/serverspec/type/ipnat.rb +11 -0
  61. data/lib/serverspec/type/iptables.rb +11 -0
  62. data/lib/serverspec/type/kernel_module.rb +7 -0
  63. data/lib/serverspec/type/linux_audit_system.rb +45 -0
  64. data/lib/serverspec/type/linux_kernel_parameter.rb +10 -0
  65. data/lib/serverspec/type/lxc.rb +15 -0
  66. data/lib/serverspec/type/mail_alias.rb +7 -0
  67. data/lib/serverspec/type/mysql_config.rb +10 -0
  68. data/lib/serverspec/type/package.rb +66 -0
  69. data/lib/serverspec/type/php_config.rb +10 -0
  70. data/lib/serverspec/type/port.rb +40 -0
  71. data/lib/serverspec/type/ppa.rb +11 -0
  72. data/lib/serverspec/type/process.rb +27 -0
  73. data/lib/serverspec/type/routing_table.rb +11 -0
  74. data/lib/serverspec/type/selinux.rb +19 -0
  75. data/lib/serverspec/type/selinux_module.rb +11 -0
  76. data/lib/serverspec/type/service.rb +52 -0
  77. data/lib/serverspec/type/user.rb +43 -0
  78. data/lib/serverspec/type/windows_feature.rb +7 -0
  79. data/lib/serverspec/type/windows_hot_fix.rb +7 -0
  80. data/lib/serverspec/type/windows_registry_key.rb +19 -0
  81. data/lib/serverspec/type/windows_scheduled_task.rb +7 -0
  82. data/lib/serverspec/type/x509_certificate.rb +76 -0
  83. data/lib/serverspec/type/x509_private_key.rb +21 -0
  84. data/lib/serverspec/type/yumrepo.rb +11 -0
  85. data/lib/serverspec/type/zfs.rb +29 -0
  86. data/lib/serverspec/version.rb +3 -0
  87. data/serverspec.gemspec +28 -0
  88. data/spec/helper/type_spec.rb +6 -0
  89. data/spec/spec_helper.rb +28 -0
  90. data/spec/type/aix/file_spec.rb +31 -0
  91. data/spec/type/aix/group_spec.rb +7 -0
  92. data/spec/type/aix/package_spec.rb +7 -0
  93. data/spec/type/aix/port_spec.rb +20 -0
  94. data/spec/type/aix/service_spec.rb +12 -0
  95. data/spec/type/aix/user_spec.rb +16 -0
  96. data/spec/type/arch/file_spec.rb +15 -0
  97. data/spec/type/arch/package_spec.rb +19 -0
  98. data/spec/type/arch/service_spec.rb +9 -0
  99. data/spec/type/base/command_spec.rb +67 -0
  100. data/spec/type/base/cron_spec.rb +11 -0
  101. data/spec/type/base/default_gateway_spec.rb +11 -0
  102. data/spec/type/base/file_spec.rb +356 -0
  103. data/spec/type/base/group_spec.rb +11 -0
  104. data/spec/type/base/host_spec.rb +47 -0
  105. data/spec/type/base/mail_alias_spec.rb +7 -0
  106. data/spec/type/base/mysql_config_spec.rb +13 -0
  107. data/spec/type/base/package_spec.rb +51 -0
  108. data/spec/type/base/php_config_spec.rb +33 -0
  109. data/spec/type/base/port_spec.rb +34 -0
  110. data/spec/type/base/process_spec.rb +35 -0
  111. data/spec/type/base/routing_table_spec.rb +63 -0
  112. data/spec/type/base/service_spec.rb +49 -0
  113. data/spec/type/base/user_spec.rb +44 -0
  114. data/spec/type/darwin/file_spec.rb +41 -0
  115. data/spec/type/darwin/package_spec.rb +19 -0
  116. data/spec/type/darwin/port_spec.rb +27 -0
  117. data/spec/type/darwin/service_spec.rb +16 -0
  118. data/spec/type/debian/package_spec.rb +23 -0
  119. data/spec/type/debian/service_spec.rb +11 -0
  120. data/spec/type/fedora/service_spec.rb +15 -0
  121. data/spec/type/fedora15/service_spec.rb +15 -0
  122. data/spec/type/fedora20/service_spec.rb +15 -0
  123. data/spec/type/freebsd/file_spec.rb +29 -0
  124. data/spec/type/freebsd/package_spec.rb +19 -0
  125. data/spec/type/freebsd/port_spec.rb +27 -0
  126. data/spec/type/freebsd/service_spec.rb +8 -0
  127. data/spec/type/freebsd10/package_spec.rb +19 -0
  128. data/spec/type/gentoo/package_spec.rb +7 -0
  129. data/spec/type/gentoo/service_spec.rb +12 -0
  130. data/spec/type/linux/bond_spec.rb +12 -0
  131. data/spec/type/linux/bridge_spec.rb +12 -0
  132. data/spec/type/linux/cgroup_spec.rb +13 -0
  133. data/spec/type/linux/docker_container_pre_1_8_spec.rb +124 -0
  134. data/spec/type/linux/docker_container_spec.rb +126 -0
  135. data/spec/type/linux/docker_image_spec.rb +94 -0
  136. data/spec/type/linux/file_spec.rb +27 -0
  137. data/spec/type/linux/fstab_spec.rb +31 -0
  138. data/spec/type/linux/interface_spec.rb +30 -0
  139. data/spec/type/linux/ip6tables_spec.rb +19 -0
  140. data/spec/type/linux/iptables_spec.rb +11 -0
  141. data/spec/type/linux/kernel_module_spec.rb +7 -0
  142. data/spec/type/linux/linux_audit_system_spec.rb +139 -0
  143. data/spec/type/linux/linux_kernel_parameter_spec.rb +33 -0
  144. data/spec/type/linux/lxc_container_spec.rb +12 -0
  145. data/spec/type/linux/selinux_module_spec.rb +11 -0
  146. data/spec/type/linux/selinux_spec.rb +23 -0
  147. data/spec/type/linux/x509_certificate_spec.rb +62 -0
  148. data/spec/type/linux/x509_private_key_spec.rb +31 -0
  149. data/spec/type/linux/zfs_spec.rb +15 -0
  150. data/spec/type/nixos/package_spec.rb +15 -0
  151. data/spec/type/nixos/service_spec.rb +9 -0
  152. data/spec/type/openbsd/file_spec.rb +134 -0
  153. data/spec/type/openbsd/interface_spec.rb +21 -0
  154. data/spec/type/openbsd/mail_alias_spec.rb +7 -0
  155. data/spec/type/openbsd/package_spec.rb +11 -0
  156. data/spec/type/openbsd/port_spec.rb +7 -0
  157. data/spec/type/openbsd/service_spec.rb +13 -0
  158. data/spec/type/openbsd/user_spec.rb +12 -0
  159. data/spec/type/opensuse/service_spec.rb +16 -0
  160. data/spec/type/plamo/package_spec.rb +8 -0
  161. data/spec/type/plamo/service_spec.rb +8 -0
  162. data/spec/type/redhat/file_spec.rb +19 -0
  163. data/spec/type/redhat/package_spec.rb +23 -0
  164. data/spec/type/redhat/service_spec.rb +11 -0
  165. data/spec/type/redhat/yumrepo_spec.rb +11 -0
  166. data/spec/type/redhat5/iptables_spec.rb +11 -0
  167. data/spec/type/redhat7/service_spec.rb +9 -0
  168. data/spec/type/smartos/package_spec.rb +19 -0
  169. data/spec/type/smartos/service_spec.rb +16 -0
  170. data/spec/type/solaris/cron_spec.rb +11 -0
  171. data/spec/type/solaris/file_spec.rb +15 -0
  172. data/spec/type/solaris/group_spec.rb +7 -0
  173. data/spec/type/solaris/host_spec.rb +19 -0
  174. data/spec/type/solaris/ipfilter_spec.rb +7 -0
  175. data/spec/type/solaris/ipnat_spec.rb +7 -0
  176. data/spec/type/solaris/package_spec.rb +7 -0
  177. data/spec/type/solaris/port_spec.rb +34 -0
  178. data/spec/type/solaris/service_spec.rb +16 -0
  179. data/spec/type/solaris/user_spec.rb +16 -0
  180. data/spec/type/solaris/zfs_spec.rb +15 -0
  181. data/spec/type/solaris10/file_spec.rb +313 -0
  182. data/spec/type/solaris10/group_spec.rb +8 -0
  183. data/spec/type/solaris10/host_spec.rb +16 -0
  184. data/spec/type/solaris10/package_spec.rb +8 -0
  185. data/spec/type/solaris10/user_spec.rb +8 -0
  186. data/spec/type/suse/package_spec.rb +23 -0
  187. data/spec/type/suse/service_spec.rb +11 -0
  188. data/spec/type/ubuntu/ppa_spec.rb +11 -0
  189. data/spec/type/ubuntu/service_spec.rb +7 -0
  190. data/spec/type/windows/command_spec.rb +64 -0
  191. data/spec/type/windows/feature_spec.rb +17 -0
  192. data/spec/type/windows/file_spec.rb +120 -0
  193. data/spec/type/windows/group_spec.rb +23 -0
  194. data/spec/type/windows/host_spec.rb +32 -0
  195. data/spec/type/windows/hot_fix_spec.rb +22 -0
  196. data/spec/type/windows/iis_app_pool_spec.rb +17 -0
  197. data/spec/type/windows/iis_webisite_spec.rb +16 -0
  198. data/spec/type/windows/package_spec.rb +10 -0
  199. data/spec/type/windows/port_spec.rb +25 -0
  200. data/spec/type/windows/registry_key_spec.rb +58 -0
  201. data/spec/type/windows/scheduled_task_spec.rb +9 -0
  202. data/spec/type/windows/service_spec.rb +30 -0
  203. data/spec/type/windows/user_spec.rb +33 -0
  204. data/wercker.yml +1 -0
  205. metadata +450 -0
@@ -0,0 +1,27 @@
1
+ module Serverspec::Type
2
+ class Interface < Base
3
+ def exists?
4
+ @runner.check_interface_exists(@name)
5
+ end
6
+
7
+ def speed
8
+ ret = @runner.get_interface_speed_of(@name)
9
+ val = ret.stdout.strip
10
+ val = val.to_i if val.match(/^\d+$/)
11
+ val
12
+ end
13
+
14
+ def has_ipv4_address?(ip_address)
15
+ @runner.check_interface_has_ipv4_address(@name, ip_address)
16
+ end
17
+
18
+ def has_ipv6_address?(ip_address)
19
+ @runner.check_interface_has_ipv6_address(@name, ip_address)
20
+ end
21
+
22
+ def up?
23
+ ret = @runner.get_interface_link_state(@name)
24
+ ret.stdout.strip == 'up'
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,13 @@
1
+ module Serverspec
2
+ module Type
3
+ class Ip6tables < Base
4
+ def has_rule?(rule, table, chain)
5
+ @runner.check_ip6tables_has_rule(rule, table, chain)
6
+ end
7
+
8
+ def to_s
9
+ 'ip6tables'
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ module Serverspec::Type
2
+ class Ipfilter < Base
3
+ def has_rule?(rule)
4
+ @runner.check_ipfilter_has_rule(rule)
5
+ end
6
+
7
+ def to_s
8
+ 'ipfilter'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Serverspec::Type
2
+ class Ipnat < Base
3
+ def has_rule?(rule)
4
+ @runner.check_ipnat_has_rule(rule)
5
+ end
6
+
7
+ def to_s
8
+ 'ipnat'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Serverspec::Type
2
+ class Iptables < Base
3
+ def has_rule?(rule, table, chain)
4
+ @runner.check_iptables_has_rule(rule, table, chain)
5
+ end
6
+
7
+ def to_s
8
+ 'iptables'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,7 @@
1
+ module Serverspec::Type
2
+ class KernelModule < Base
3
+ def loaded?
4
+ @runner.check_kernel_module_is_loaded(@name)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,45 @@
1
+ module Serverspec::Type
2
+ class LinuxAuditSystem < Base
3
+ def initialize(name=nil)
4
+ @name = 'linux_audit_system'
5
+ @runner = Specinfra::Runner
6
+ @rules_content = nil
7
+ end
8
+
9
+ def enabled?
10
+ status_of('enabled') == '1'
11
+ end
12
+
13
+ def running?
14
+ pid = status_of('pid')
15
+ (!pid.nil? && pid.size > 0 && pid != '0')
16
+ end
17
+
18
+ def rules
19
+ if @rules_content.nil?
20
+ @rules_content = @runner.run_command('/sbin/auditctl -l').stdout || ''
21
+ end
22
+ @rules_content
23
+ end
24
+
25
+ private
26
+
27
+ def status_of(part)
28
+ cmd = "/sbin/auditctl -s"
29
+ status_str = @runner.run_command(cmd).stdout.chomp
30
+ status_map = parse_status(status_str)
31
+ status_map[part] || ''
32
+ end
33
+
34
+ def parse_status(status_str)
35
+ map = nil
36
+ if status_str =~ /^AUDIT_STATUS/ then
37
+ map = status_str.split(' ')[1..-1].inject({}) { |res,elem| a = elem.split('='); res.store(a[0],a[1] || ''); res }
38
+ else
39
+ map = status_str.split("\n").inject({}) { |res,elem| a = elem.split(' '); res.store(a[0],a[1] || ''); res }
40
+ end
41
+ map
42
+ end
43
+
44
+ end
45
+ end
@@ -0,0 +1,10 @@
1
+ module Serverspec::Type
2
+ class LinuxKernelParameter < Base
3
+ def value
4
+ ret = @runner.run_command("/sbin/sysctl -q -n #{@name}")
5
+ val = ret.stdout.strip
6
+ val = val.to_i if val.match(/^\d+$/)
7
+ val
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,15 @@
1
+ module Serverspec::Type
2
+ class Lxc < Base
3
+ def exists?
4
+ @runner.check_lxc_container_exists(@name)
5
+ end
6
+
7
+ def running?
8
+ @runner.check_lxc_container_is_running(@name)
9
+ end
10
+
11
+ def to_s
12
+ 'LXC'
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,7 @@
1
+ module Serverspec::Type
2
+ class MailAlias < Base
3
+ def aliased_to?(target)
4
+ @runner.check_mail_alias_is_aliased_to(@name, target)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,10 @@
1
+ module Serverspec::Type
2
+ class MysqlConfig < Base
3
+ def value
4
+ ret = @runner.run_command("mysqld --verbose --help 2> /dev/null | grep '^#{@name}'")
5
+ val = ret.stdout.match(/#{@name}\s+(.+)$/)[1]
6
+ val = val.to_i if val.match(/^\d+$/)
7
+ val
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,66 @@
1
+ module Serverspec::Type
2
+ class Package < Base
3
+ def installed?(provider=nil, version=nil)
4
+ if provider.nil?
5
+ @inspection = Specinfra.command.get(:check_package_is_installed, @name, version)
6
+ @runner.check_package_is_installed(@name, version)
7
+ else
8
+ check_method = "check_package_is_installed_by_#{provider}".to_sym
9
+ @runner.send(check_method, @name, version)
10
+ end
11
+ end
12
+
13
+ def version
14
+ ret = @runner.get_package_version(@name).stdout.strip
15
+ if ret.empty?
16
+ nil
17
+ else
18
+ Version.new(ret)
19
+ end
20
+ end
21
+
22
+ class Version
23
+ include Comparable
24
+
25
+ attr_reader :epoch, :version
26
+
27
+ def initialize(val)
28
+ matches = val.match(/^(?:(\d+):)?(\d[0-9a-zA-Z.+:~_-]*)$/)
29
+ if matches.nil?
30
+ raise ArgumentError, "Malformed version number string #{val}"
31
+ end
32
+ @epoch = matches[1].to_i
33
+ @version = matches[2].to_s
34
+ end
35
+
36
+ def <=>(other)
37
+ other = Version.new(other) if other.is_a?(String)
38
+ rv = @epoch <=> other.epoch
39
+ return rv if rv != 0
40
+
41
+ self.ver_array <=> other.ver_array
42
+ end
43
+
44
+ def ver_array
45
+ val = @version
46
+ re = /^(?:(\d+)|(\D+))(.*)$/
47
+ res = []
48
+ until val.empty?
49
+ matches = val.match(re)
50
+ if matches[1].nil?
51
+ # String
52
+ matches[2].to_s.each_byte do |b|
53
+ code_point = defined?("~".ord) ? "~".ord : ?~
54
+ res << ((b == code_point) ? -2 : b)
55
+ end
56
+ else
57
+ # Digits
58
+ res << matches[1].to_i
59
+ end
60
+ val = matches[3].to_s
61
+ end
62
+ res << -1
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,10 @@
1
+ module Serverspec::Type
2
+ class PhpConfig < Base
3
+ def value
4
+ ret = @runner.run_command("php -r 'echo get_cfg_var( \"#{@name}\" );'")
5
+ val = ret.stdout
6
+ val = val.to_i if val.match(/^\d+$/)
7
+ val
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,40 @@
1
+ require 'resolv'
2
+
3
+ module Serverspec::Type
4
+ class Port < Base
5
+ def protocols
6
+ %w(udp tcp tcp6 udp6)
7
+ end
8
+
9
+ def options
10
+ @options ||= {}
11
+ end
12
+
13
+ def protocol_matcher(protocol)
14
+ protocol = protocol.to_s.downcase
15
+ if protocols.include?(protocol)
16
+ options[:protocol] = protocol
17
+ else
18
+ raise ArgumentError.new("`be_listening` matcher doesn't support #{protocol}")
19
+ end
20
+ end
21
+
22
+ def local_address_matcher(local_address)
23
+ if valid_ip_address?(local_address)
24
+ options[:local_address] = local_address
25
+ else
26
+ raise ArgumentError.new("`be_listening` matcher requires valid IPv4 or IPv6 address")
27
+ end
28
+ end
29
+
30
+ def listening?(protocol, local_address)
31
+ protocol_matcher(protocol) if protocol
32
+ local_address_matcher(local_address) if local_address
33
+ @runner.check_port_is_listening(@name, options)
34
+ end
35
+
36
+ def valid_ip_address?(ip_address)
37
+ !!(ip_address =~ Resolv::IPv4::Regex) || !!(ip_address =~ Resolv::IPv6::Regex)
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,11 @@
1
+ module Serverspec::Type
2
+ class Ppa < Base
3
+ def exists?
4
+ @runner.check_ppa_exists(@name)
5
+ end
6
+
7
+ def enabled?
8
+ @runner.check_ppa_is_enabled(@name)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,27 @@
1
+ module Serverspec::Type
2
+ class Process < Base
3
+ def running?
4
+ pid = @runner.get_process(@name, :format => "pid=").stdout
5
+ not pid.empty?
6
+ end
7
+
8
+ def user
9
+ get_column("user")
10
+ end
11
+
12
+ def group
13
+ get_column("group")
14
+ end
15
+
16
+ def method_missing(meth)
17
+ get_column(meth.to_s)
18
+ end
19
+
20
+ def get_column(keyword)
21
+ ret = @runner.get_process(@name, :format => "#{keyword}=")
22
+ val = ret.stdout.strip
23
+ val = val.to_i if val.match(/^\d+$/)
24
+ val
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,11 @@
1
+ module Serverspec::Type
2
+ class RoutingTable < Base
3
+ def has_entry?(entry)
4
+ @runner.check_routing_table_has_entry(entry)
5
+ end
6
+
7
+ def to_s
8
+ 'Routing Table'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,19 @@
1
+ module Serverspec::Type
2
+ class Selinux < Base
3
+ def disabled?
4
+ @runner.check_selinux_has_mode('disabled')
5
+ end
6
+
7
+ def enforcing?(with_policy)
8
+ @runner.check_selinux_has_mode('enforcing', with_policy)
9
+ end
10
+
11
+ def permissive?(with_policy)
12
+ @runner.check_selinux_has_mode('permissive', with_policy)
13
+ end
14
+
15
+ def to_s
16
+ 'SELinux'
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,11 @@
1
+ module Serverspec::Type
2
+ class SelinuxModule < Base
3
+ def enabled?
4
+ @runner.check_selinux_module_is_enabled(@name)
5
+ end
6
+
7
+ def installed?(name, version=nil)
8
+ @runner.check_selinux_module_is_installed(@name, version)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,52 @@
1
+ module Serverspec::Type
2
+ class Service < Base
3
+ def enabled?(level)
4
+ if level
5
+ @runner.check_service_is_enabled(@name, level)
6
+ else
7
+ @runner.check_service_is_enabled(@name)
8
+ end
9
+ end
10
+
11
+ def installed?(name, version)
12
+ @runner.check_service_is_installed(@name)
13
+ end
14
+
15
+ def has_start_mode?(mode)
16
+ @runner.check_service_has_start_mode(@name, mode)
17
+ end
18
+
19
+ def running?(under)
20
+ if under
21
+ check_method = "check_service_is_running_under_#{under}".to_sym
22
+ @runner.send(check_method, @name)
23
+ else
24
+ @runner.check_service_is_running(@name)
25
+ end
26
+ end
27
+
28
+ def monitored_by?(monitor)
29
+ check_method = "check_service_is_monitored_by_#{monitor}".to_sym
30
+ res = @runner.send(check_method, @name)
31
+ end
32
+
33
+ def has_property?(property)
34
+ @runner.check_service_has_property(@name, property)
35
+ end
36
+
37
+ def property
38
+ get_property if @property.nil?
39
+ @property
40
+ end
41
+
42
+ private
43
+ def get_property
44
+ @property = {}
45
+ props = @runner.get_service_property(@name).stdout
46
+ props.split(/\n/).each do |line|
47
+ property, _type, *value = line.split(/\s+/)
48
+ @property[property] = value.join(' ')
49
+ end
50
+ end
51
+ end
52
+ end