cloud-mu 2.1.0beta → 3.0.0beta

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 (291) hide show
  1. checksums.yaml +5 -5
  2. data/Berksfile +4 -5
  3. data/Berksfile.lock +179 -0
  4. data/README.md +1 -6
  5. data/ansible/roles/geerlingguy.firewall/templates/firewall.bash.j2 +0 -0
  6. data/ansible/roles/mu-installer/README.md +33 -0
  7. data/ansible/roles/mu-installer/defaults/main.yml +2 -0
  8. data/ansible/roles/mu-installer/handlers/main.yml +2 -0
  9. data/ansible/roles/mu-installer/meta/main.yml +60 -0
  10. data/ansible/roles/mu-installer/tasks/main.yml +13 -0
  11. data/ansible/roles/mu-installer/tests/inventory +2 -0
  12. data/ansible/roles/mu-installer/tests/test.yml +5 -0
  13. data/ansible/roles/mu-installer/vars/main.yml +2 -0
  14. data/bin/mu-adopt +125 -0
  15. data/bin/mu-aws-setup +4 -4
  16. data/bin/mu-azure-setup +265 -0
  17. data/bin/mu-azure-tests +43 -0
  18. data/bin/mu-cleanup +20 -8
  19. data/bin/mu-configure +224 -98
  20. data/bin/mu-deploy +8 -3
  21. data/bin/mu-gcp-setup +16 -8
  22. data/bin/mu-gen-docs +92 -8
  23. data/bin/mu-load-config.rb +52 -12
  24. data/bin/mu-momma-cat +36 -0
  25. data/bin/mu-node-manage +34 -27
  26. data/bin/mu-self-update +2 -2
  27. data/bin/mu-ssh +12 -8
  28. data/bin/mu-upload-chef-artifacts +11 -4
  29. data/bin/mu-user-manage +3 -0
  30. data/cloud-mu.gemspec +8 -11
  31. data/cookbooks/firewall/libraries/helpers_iptables.rb +2 -2
  32. data/cookbooks/firewall/metadata.json +1 -1
  33. data/cookbooks/firewall/recipes/default.rb +5 -9
  34. data/cookbooks/mu-firewall/attributes/default.rb +2 -0
  35. data/cookbooks/mu-firewall/metadata.rb +1 -1
  36. data/cookbooks/mu-glusterfs/templates/default/mu-gluster-client.erb +0 -0
  37. data/cookbooks/mu-master/Berksfile +2 -2
  38. data/cookbooks/mu-master/files/default/check_mem.pl +0 -0
  39. data/cookbooks/mu-master/files/default/cloudamatic.png +0 -0
  40. data/cookbooks/mu-master/metadata.rb +5 -4
  41. data/cookbooks/mu-master/recipes/389ds.rb +1 -1
  42. data/cookbooks/mu-master/recipes/basepackages.rb +30 -10
  43. data/cookbooks/mu-master/recipes/default.rb +59 -7
  44. data/cookbooks/mu-master/recipes/firewall-holes.rb +1 -1
  45. data/cookbooks/mu-master/recipes/init.rb +65 -47
  46. data/cookbooks/mu-master/recipes/{eks-kubectl.rb → kubectl.rb} +4 -10
  47. data/cookbooks/mu-master/recipes/sssd.rb +2 -1
  48. data/cookbooks/mu-master/recipes/update_nagios_only.rb +6 -6
  49. data/cookbooks/mu-master/templates/default/web_app.conf.erb +2 -2
  50. data/cookbooks/mu-master/templates/mods/ldap.conf.erb +4 -0
  51. data/cookbooks/mu-php54/Berksfile +1 -2
  52. data/cookbooks/mu-php54/metadata.rb +4 -5
  53. data/cookbooks/mu-php54/recipes/default.rb +1 -1
  54. data/cookbooks/mu-splunk/templates/default/splunk-init.erb +0 -0
  55. data/cookbooks/mu-tools/Berksfile +3 -2
  56. data/cookbooks/mu-tools/files/default/Mu_CA.pem +33 -0
  57. data/cookbooks/mu-tools/libraries/helper.rb +20 -8
  58. data/cookbooks/mu-tools/metadata.rb +5 -2
  59. data/cookbooks/mu-tools/recipes/apply_security.rb +2 -3
  60. data/cookbooks/mu-tools/recipes/eks.rb +1 -1
  61. data/cookbooks/mu-tools/recipes/gcloud.rb +5 -30
  62. data/cookbooks/mu-tools/recipes/nagios.rb +1 -1
  63. data/cookbooks/mu-tools/recipes/rsyslog.rb +1 -0
  64. data/cookbooks/mu-tools/recipes/selinux.rb +19 -0
  65. data/cookbooks/mu-tools/recipes/split_var_partitions.rb +0 -1
  66. data/cookbooks/mu-tools/recipes/windows-client.rb +256 -122
  67. data/cookbooks/mu-tools/resources/disk.rb +3 -1
  68. data/cookbooks/mu-tools/templates/amazon/sshd_config.erb +1 -1
  69. data/cookbooks/mu-tools/templates/default/etc_hosts.erb +1 -1
  70. data/cookbooks/mu-tools/templates/default/{kubeconfig.erb → kubeconfig-eks.erb} +0 -0
  71. data/cookbooks/mu-tools/templates/default/kubeconfig-gke.erb +27 -0
  72. data/cookbooks/mu-tools/templates/windows-10/sshd_config.erb +137 -0
  73. data/cookbooks/mu-utility/recipes/nat.rb +4 -0
  74. data/extras/alpha.png +0 -0
  75. data/extras/beta.png +0 -0
  76. data/extras/clean-stock-amis +2 -2
  77. data/extras/generate-stock-images +131 -0
  78. data/extras/git-fix-permissions-hook +0 -0
  79. data/extras/image-generators/AWS/centos6.yaml +17 -0
  80. data/extras/image-generators/{aws → AWS}/centos7-govcloud.yaml +0 -0
  81. data/extras/image-generators/{aws → AWS}/centos7.yaml +0 -0
  82. data/extras/image-generators/{aws → AWS}/rhel7.yaml +0 -0
  83. data/extras/image-generators/{aws → AWS}/win2k12.yaml +0 -0
  84. data/extras/image-generators/{aws → AWS}/win2k16.yaml +0 -0
  85. data/extras/image-generators/{aws → AWS}/windows.yaml +0 -0
  86. data/extras/image-generators/{gcp → Google}/centos6.yaml +1 -0
  87. data/extras/image-generators/Google/centos7.yaml +18 -0
  88. data/extras/python_rpm/build.sh +0 -0
  89. data/extras/release.png +0 -0
  90. data/extras/ruby_rpm/build.sh +0 -0
  91. data/extras/ruby_rpm/muby.spec +1 -1
  92. data/install/README.md +43 -5
  93. data/install/deprecated-bash-library.sh +0 -0
  94. data/install/installer +1 -1
  95. data/install/jenkinskeys.rb +0 -0
  96. data/install/mu-master.yaml +55 -0
  97. data/modules/mommacat.ru +41 -7
  98. data/modules/mu.rb +444 -149
  99. data/modules/mu/adoption.rb +500 -0
  100. data/modules/mu/cleanup.rb +235 -158
  101. data/modules/mu/cloud.rb +675 -138
  102. data/modules/mu/clouds/aws.rb +156 -24
  103. data/modules/mu/clouds/aws/alarm.rb +4 -14
  104. data/modules/mu/clouds/aws/bucket.rb +60 -18
  105. data/modules/mu/clouds/aws/cache_cluster.rb +8 -20
  106. data/modules/mu/clouds/aws/collection.rb +12 -22
  107. data/modules/mu/clouds/aws/container_cluster.rb +209 -118
  108. data/modules/mu/clouds/aws/database.rb +120 -45
  109. data/modules/mu/clouds/aws/dnszone.rb +7 -18
  110. data/modules/mu/clouds/aws/endpoint.rb +5 -15
  111. data/modules/mu/clouds/aws/firewall_rule.rb +144 -72
  112. data/modules/mu/clouds/aws/folder.rb +4 -11
  113. data/modules/mu/clouds/aws/function.rb +6 -16
  114. data/modules/mu/clouds/aws/group.rb +4 -12
  115. data/modules/mu/clouds/aws/habitat.rb +11 -13
  116. data/modules/mu/clouds/aws/loadbalancer.rb +40 -28
  117. data/modules/mu/clouds/aws/log.rb +5 -13
  118. data/modules/mu/clouds/aws/msg_queue.rb +9 -24
  119. data/modules/mu/clouds/aws/nosqldb.rb +4 -12
  120. data/modules/mu/clouds/aws/notifier.rb +6 -13
  121. data/modules/mu/clouds/aws/role.rb +69 -40
  122. data/modules/mu/clouds/aws/search_domain.rb +17 -20
  123. data/modules/mu/clouds/aws/server.rb +184 -94
  124. data/modules/mu/clouds/aws/server_pool.rb +33 -38
  125. data/modules/mu/clouds/aws/storage_pool.rb +5 -12
  126. data/modules/mu/clouds/aws/user.rb +59 -33
  127. data/modules/mu/clouds/aws/userdata/linux.erb +18 -30
  128. data/modules/mu/clouds/aws/userdata/windows.erb +9 -9
  129. data/modules/mu/clouds/aws/vpc.rb +214 -145
  130. data/modules/mu/clouds/azure.rb +978 -44
  131. data/modules/mu/clouds/azure/container_cluster.rb +413 -0
  132. data/modules/mu/clouds/azure/firewall_rule.rb +500 -0
  133. data/modules/mu/clouds/azure/habitat.rb +167 -0
  134. data/modules/mu/clouds/azure/loadbalancer.rb +205 -0
  135. data/modules/mu/clouds/azure/role.rb +211 -0
  136. data/modules/mu/clouds/azure/server.rb +810 -0
  137. data/modules/mu/clouds/azure/user.rb +257 -0
  138. data/modules/mu/clouds/azure/userdata/README.md +4 -0
  139. data/modules/mu/clouds/azure/userdata/linux.erb +137 -0
  140. data/modules/mu/clouds/azure/userdata/windows.erb +275 -0
  141. data/modules/mu/clouds/azure/vpc.rb +782 -0
  142. data/modules/mu/clouds/cloudformation.rb +12 -9
  143. data/modules/mu/clouds/cloudformation/firewall_rule.rb +5 -13
  144. data/modules/mu/clouds/cloudformation/server.rb +10 -1
  145. data/modules/mu/clouds/cloudformation/server_pool.rb +1 -0
  146. data/modules/mu/clouds/cloudformation/vpc.rb +0 -2
  147. data/modules/mu/clouds/google.rb +554 -117
  148. data/modules/mu/clouds/google/bucket.rb +173 -32
  149. data/modules/mu/clouds/google/container_cluster.rb +1112 -157
  150. data/modules/mu/clouds/google/database.rb +24 -47
  151. data/modules/mu/clouds/google/firewall_rule.rb +344 -89
  152. data/modules/mu/clouds/google/folder.rb +156 -79
  153. data/modules/mu/clouds/google/group.rb +272 -82
  154. data/modules/mu/clouds/google/habitat.rb +177 -52
  155. data/modules/mu/clouds/google/loadbalancer.rb +9 -34
  156. data/modules/mu/clouds/google/role.rb +1211 -0
  157. data/modules/mu/clouds/google/server.rb +491 -227
  158. data/modules/mu/clouds/google/server_pool.rb +233 -48
  159. data/modules/mu/clouds/google/user.rb +479 -125
  160. data/modules/mu/clouds/google/userdata/linux.erb +3 -3
  161. data/modules/mu/clouds/google/userdata/windows.erb +9 -9
  162. data/modules/mu/clouds/google/vpc.rb +381 -223
  163. data/modules/mu/config.rb +689 -214
  164. data/modules/mu/config/bucket.rb +1 -1
  165. data/modules/mu/config/cache_cluster.rb +1 -1
  166. data/modules/mu/config/cache_cluster.yml +0 -4
  167. data/modules/mu/config/container_cluster.rb +18 -9
  168. data/modules/mu/config/database.rb +6 -23
  169. data/modules/mu/config/firewall_rule.rb +9 -15
  170. data/modules/mu/config/folder.rb +22 -21
  171. data/modules/mu/config/habitat.rb +22 -21
  172. data/modules/mu/config/loadbalancer.rb +2 -2
  173. data/modules/mu/config/role.rb +9 -40
  174. data/modules/mu/config/server.rb +26 -5
  175. data/modules/mu/config/server_pool.rb +1 -1
  176. data/modules/mu/config/storage_pool.rb +2 -2
  177. data/modules/mu/config/user.rb +4 -0
  178. data/modules/mu/config/vpc.rb +350 -110
  179. data/modules/mu/defaults/{amazon_images.yaml → AWS.yaml} +37 -39
  180. data/modules/mu/defaults/Azure.yaml +17 -0
  181. data/modules/mu/defaults/Google.yaml +24 -0
  182. data/modules/mu/defaults/README.md +1 -1
  183. data/modules/mu/deploy.rb +168 -125
  184. data/modules/mu/groomer.rb +2 -1
  185. data/modules/mu/groomers/ansible.rb +104 -32
  186. data/modules/mu/groomers/chef.rb +96 -44
  187. data/modules/mu/kittens.rb +20602 -0
  188. data/modules/mu/logger.rb +38 -11
  189. data/modules/mu/master.rb +90 -8
  190. data/modules/mu/master/chef.rb +2 -3
  191. data/modules/mu/master/ldap.rb +0 -1
  192. data/modules/mu/master/ssl.rb +250 -0
  193. data/modules/mu/mommacat.rb +917 -513
  194. data/modules/scratchpad.erb +1 -1
  195. data/modules/tests/super_complex_bok.yml +0 -0
  196. data/modules/tests/super_simple_bok.yml +0 -0
  197. data/roles/mu-master.json +2 -1
  198. data/spec/azure_creds +5 -0
  199. data/spec/mu.yaml +56 -0
  200. data/spec/mu/clouds/azure_spec.rb +164 -27
  201. data/spec/spec_helper.rb +5 -0
  202. data/test/clean_up.py +0 -0
  203. data/test/exec_inspec.py +0 -0
  204. data/test/exec_mu_install.py +0 -0
  205. data/test/exec_retry.py +0 -0
  206. data/test/smoke_test.rb +0 -0
  207. metadata +90 -118
  208. data/cookbooks/mu-jenkins/Berksfile +0 -14
  209. data/cookbooks/mu-jenkins/CHANGELOG.md +0 -13
  210. data/cookbooks/mu-jenkins/LICENSE +0 -37
  211. data/cookbooks/mu-jenkins/README.md +0 -105
  212. data/cookbooks/mu-jenkins/attributes/default.rb +0 -42
  213. data/cookbooks/mu-jenkins/files/default/cleanup_deploy_config.xml +0 -73
  214. data/cookbooks/mu-jenkins/files/default/deploy_config.xml +0 -44
  215. data/cookbooks/mu-jenkins/metadata.rb +0 -21
  216. data/cookbooks/mu-jenkins/recipes/default.rb +0 -195
  217. data/cookbooks/mu-jenkins/recipes/node-ssh-config.rb +0 -54
  218. data/cookbooks/mu-jenkins/recipes/public_key.rb +0 -24
  219. data/cookbooks/mu-jenkins/templates/default/example_job.config.xml.erb +0 -24
  220. data/cookbooks/mu-jenkins/templates/default/org.jvnet.hudson.plugins.SSHBuildWrapper.xml.erb +0 -14
  221. data/cookbooks/mu-jenkins/templates/default/ssh_config.erb +0 -6
  222. data/cookbooks/nagios/Berksfile +0 -11
  223. data/cookbooks/nagios/CHANGELOG.md +0 -589
  224. data/cookbooks/nagios/CONTRIBUTING.md +0 -11
  225. data/cookbooks/nagios/LICENSE +0 -37
  226. data/cookbooks/nagios/README.md +0 -328
  227. data/cookbooks/nagios/TESTING.md +0 -2
  228. data/cookbooks/nagios/attributes/config.rb +0 -171
  229. data/cookbooks/nagios/attributes/default.rb +0 -228
  230. data/cookbooks/nagios/chefignore +0 -102
  231. data/cookbooks/nagios/definitions/command.rb +0 -33
  232. data/cookbooks/nagios/definitions/contact.rb +0 -33
  233. data/cookbooks/nagios/definitions/contactgroup.rb +0 -33
  234. data/cookbooks/nagios/definitions/host.rb +0 -33
  235. data/cookbooks/nagios/definitions/hostdependency.rb +0 -33
  236. data/cookbooks/nagios/definitions/hostescalation.rb +0 -34
  237. data/cookbooks/nagios/definitions/hostgroup.rb +0 -33
  238. data/cookbooks/nagios/definitions/nagios_conf.rb +0 -38
  239. data/cookbooks/nagios/definitions/resource.rb +0 -33
  240. data/cookbooks/nagios/definitions/service.rb +0 -33
  241. data/cookbooks/nagios/definitions/servicedependency.rb +0 -33
  242. data/cookbooks/nagios/definitions/serviceescalation.rb +0 -34
  243. data/cookbooks/nagios/definitions/servicegroup.rb +0 -33
  244. data/cookbooks/nagios/definitions/timeperiod.rb +0 -33
  245. data/cookbooks/nagios/libraries/base.rb +0 -314
  246. data/cookbooks/nagios/libraries/command.rb +0 -91
  247. data/cookbooks/nagios/libraries/contact.rb +0 -230
  248. data/cookbooks/nagios/libraries/contactgroup.rb +0 -112
  249. data/cookbooks/nagios/libraries/custom_option.rb +0 -36
  250. data/cookbooks/nagios/libraries/data_bag_helper.rb +0 -23
  251. data/cookbooks/nagios/libraries/default.rb +0 -90
  252. data/cookbooks/nagios/libraries/host.rb +0 -412
  253. data/cookbooks/nagios/libraries/hostdependency.rb +0 -181
  254. data/cookbooks/nagios/libraries/hostescalation.rb +0 -173
  255. data/cookbooks/nagios/libraries/hostgroup.rb +0 -119
  256. data/cookbooks/nagios/libraries/nagios.rb +0 -282
  257. data/cookbooks/nagios/libraries/resource.rb +0 -59
  258. data/cookbooks/nagios/libraries/service.rb +0 -455
  259. data/cookbooks/nagios/libraries/servicedependency.rb +0 -215
  260. data/cookbooks/nagios/libraries/serviceescalation.rb +0 -195
  261. data/cookbooks/nagios/libraries/servicegroup.rb +0 -144
  262. data/cookbooks/nagios/libraries/timeperiod.rb +0 -160
  263. data/cookbooks/nagios/libraries/users_helper.rb +0 -54
  264. data/cookbooks/nagios/metadata.rb +0 -25
  265. data/cookbooks/nagios/recipes/_load_databag_config.rb +0 -153
  266. data/cookbooks/nagios/recipes/_load_default_config.rb +0 -241
  267. data/cookbooks/nagios/recipes/apache.rb +0 -48
  268. data/cookbooks/nagios/recipes/default.rb +0 -204
  269. data/cookbooks/nagios/recipes/nginx.rb +0 -82
  270. data/cookbooks/nagios/recipes/pagerduty.rb +0 -143
  271. data/cookbooks/nagios/recipes/server_package.rb +0 -40
  272. data/cookbooks/nagios/recipes/server_source.rb +0 -164
  273. data/cookbooks/nagios/templates/default/apache2.conf.erb +0 -96
  274. data/cookbooks/nagios/templates/default/cgi.cfg.erb +0 -266
  275. data/cookbooks/nagios/templates/default/commands.cfg.erb +0 -13
  276. data/cookbooks/nagios/templates/default/contacts.cfg.erb +0 -37
  277. data/cookbooks/nagios/templates/default/hostgroups.cfg.erb +0 -25
  278. data/cookbooks/nagios/templates/default/hosts.cfg.erb +0 -15
  279. data/cookbooks/nagios/templates/default/htpasswd.users.erb +0 -6
  280. data/cookbooks/nagios/templates/default/nagios.cfg.erb +0 -22
  281. data/cookbooks/nagios/templates/default/nginx.conf.erb +0 -62
  282. data/cookbooks/nagios/templates/default/pagerduty.cgi.erb +0 -185
  283. data/cookbooks/nagios/templates/default/resource.cfg.erb +0 -27
  284. data/cookbooks/nagios/templates/default/servicedependencies.cfg.erb +0 -15
  285. data/cookbooks/nagios/templates/default/servicegroups.cfg.erb +0 -14
  286. data/cookbooks/nagios/templates/default/services.cfg.erb +0 -14
  287. data/cookbooks/nagios/templates/default/templates.cfg.erb +0 -31
  288. data/cookbooks/nagios/templates/default/timeperiods.cfg.erb +0 -13
  289. data/extras/image-generators/aws/centos6.yaml +0 -18
  290. data/modules/mu/defaults/google_images.yaml +0 -16
  291. data/roles/mu-master-jenkins.json +0 -24
@@ -1,181 +0,0 @@
1
- #
2
- # Author:: Sander Botman <sbotman@schubergphilis.com>
3
- # Cookbook Name:: nagios
4
- # Library:: hostdependency
5
- #
6
- # Copyright 2014, Sander Botman
7
- #
8
- # Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
- # See the License for the specific language governing permissions and
18
- # limitations under the License.
19
-
20
- require_relative 'base'
21
-
22
- class Nagios
23
- #
24
- # This class holds all methods with regard to hostdependency options,
25
- # that are used within nagios configurations.
26
- #
27
- class Hostdependency < Nagios::Base
28
- attr_reader :dependent_name,
29
- :dependency_period,
30
- :dependent_host_name,
31
- :dependent_hostgroup_name,
32
- :host_name,
33
- :hostgroup_name
34
-
35
- attr_accessor :inherits_parent,
36
- :execution_failure_criteria,
37
- :notification_failure_criteria
38
-
39
- def initialize(name)
40
- @dependent_name = name
41
- @host_name = {}
42
- @hostgroup_name = {}
43
- @dependent_host_name = {}
44
- @dependent_hostgroup_name = {}
45
- super()
46
- end
47
-
48
- def definition
49
- get_definition(configured_options, 'hostdependency')
50
- end
51
-
52
- def dependent_host_name_list
53
- @dependent_host_name.values.map(&:to_s).sort.join(',')
54
- end
55
-
56
- def dependent_hostgroup_name_list
57
- @dependent_hostgroup_name.values.map(&:to_s).sort.join(',')
58
- end
59
-
60
- def host_name_list
61
- @host_name.values.map(&:to_s).sort.join(',')
62
- end
63
-
64
- def hostgroup_name_list
65
- @hostgroup_name.values.map(&:to_s).sort.join(',')
66
- end
67
-
68
- def import(hash)
69
- update_options(hash)
70
- update_members(hash, 'host_name', Nagios::Host)
71
- update_members(hash, 'hostgroup_name', Nagios::Hostgroup)
72
- update_dependency_members(hash, 'dependent_host_name', Nagios::Host)
73
- update_dependency_members(hash, 'dependent_hostgroup_name', Nagios::Hostgroup)
74
- end
75
-
76
- def push(obj)
77
- case obj
78
- when Nagios::Host
79
- push_object(obj, @host_name)
80
- when Nagios::Hostgroup
81
- push_object(obj, @hostgroup_name)
82
- when Nagios::Timeperiod
83
- @dependency_period = obj
84
- end
85
- end
86
-
87
- def push_dependency(obj)
88
- case obj
89
- when Nagios::Host
90
- push_object(obj, @dependent_host_name)
91
- when Nagios::Hostgroup
92
- push_object(obj, @dependent_hostgroup_name)
93
- end
94
- end
95
-
96
- def pop(obj)
97
- return if obj == self
98
- case obj
99
- when Nagios::Host
100
- if @host_name.keys?(obj.to_s)
101
- pop_object(obj, @host_name)
102
- pop(self, obj)
103
- end
104
- when Nagios::Hostgroup
105
- if @hostgroup_name.keys?(obj.to_s)
106
- pop_object(obj, @hostgroup_name)
107
- pop(self, obj)
108
- end
109
- when Nagios::Timeperiod
110
- @dependency_period = nil if @dependency_period == obj
111
- end
112
- end
113
-
114
- def pop_dependency(obj)
115
- return if obj == self
116
- case obj
117
- when Nagios::Host
118
- if @dependent_host_name.keys?(obj.to_s)
119
- pop_object(obj, @dependent_host_name)
120
- pop(self, obj)
121
- end
122
- when Nagios::Hostgroup
123
- if @dependent_hostgroup_name.keys?(obj.to_s)
124
- pop_object(obj, @dependent_hostgroup_name)
125
- pop(self, obj)
126
- end
127
- end
128
- end
129
-
130
-
131
- def self.create(name)
132
- Nagios.instance.find(Nagios::Hostdependency.new(name))
133
- end
134
-
135
- def to_s
136
- dependent_name
137
- end
138
-
139
- # check the True/False options
140
- # default = nil
141
-
142
- def inherits_parent=(arg)
143
- @inherits_parent = check_bool(arg)
144
- end
145
-
146
- # check other options
147
-
148
- def execution_failure_criteria=(arg)
149
- @execution_failure_criteria = check_state_options(arg, %w(o d u p n), 'execution_failure_criteria')
150
- end
151
-
152
- def notification_failure_criteria=(arg)
153
- @notification_failure_criteria = check_state_options(arg, %w(o d u p n), 'notification_failure_criteria')
154
- end
155
-
156
- private
157
-
158
- def config_options
159
- {
160
- 'dependent_name' => nil,
161
- 'dependency_period' => 'dependency_period',
162
- 'dependent_host_name_list' => 'dependent_host_name',
163
- 'dependent_hostgroup_name_list' => 'dependent_hostgroup_name',
164
- 'host_name_list' => 'host_name',
165
- 'hostgroup_name_list' => 'hostgroup_name',
166
- 'inherits_parent' => 'inherits_parent',
167
- 'execution_failure_criteria' => 'execution_failure_criteria',
168
- 'notification_failure_criteria' => 'notification_failure_criteria',
169
- }
170
- end
171
-
172
-
173
- def merge_members(obj)
174
- obj.host_name.each { |m| push(m) }
175
- obj.hostgroup_name.each { |m| push(m) }
176
- obj.dependent_host_name.each { |m| push_dependency(m) }
177
- obj.dependent_hostgroup_name.each { |m| push_dependency(m) }
178
- end
179
- end
180
- end
181
-
@@ -1,173 +0,0 @@
1
- #
2
- # Author:: Sander Botman <sbotman@schubergphilis.com>
3
- # Cookbook Name:: nagios
4
- # Library:: hostescalation
5
- #
6
- # Copyright 2014, Sander Botman
7
- #
8
- # Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
- # See the License for the specific language governing permissions and
18
- # limitations under the License.
19
-
20
- require_relative 'base'
21
-
22
- class Nagios
23
- #
24
- # This class holds all methods with regard to hostescalation options,
25
- # that are used within nagios configurations.
26
- #
27
- class Hostescalation < Nagios::Base
28
- attr_reader :host_description,
29
- :host_name,
30
- :hostgroup_name,
31
- :contacts,
32
- :contact_groups
33
-
34
- attr_accessor :first_notification,
35
- :last_notification,
36
- :notification_interval,
37
- :escalation_options,
38
- :escalation_period
39
-
40
- def initialize(name)
41
- @host_description = name
42
- @contacts = {}
43
- @contact_groups = {}
44
- @host_name = {}
45
- @hostgroup_name = {}
46
- super()
47
- end
48
-
49
- def definition
50
- get_definition(configured_options, 'hostescalation')
51
- end
52
-
53
- def contacts_list
54
- @contacts.values.map(&:to_s).sort.join(',')
55
- end
56
-
57
- def contact_groups_list
58
- @contact_groups.values.map(&:to_s).sort.join(',')
59
- end
60
-
61
- def host_name_list
62
- @host_name.values.map(&:to_s).sort.join(',')
63
- end
64
-
65
- def hostgroup_name_list
66
- @hostgroup_name.values.map(&:to_s).sort.join(',')
67
- end
68
-
69
- def import(hash)
70
- update_options(hash)
71
- update_members(hash, 'contacts', Nagios::Contact)
72
- update_members(hash, 'contact_groups', Nagios::Contactgroup)
73
- update_members(hash, 'host_name', Nagios::Host)
74
- update_members(hash, 'hostgroup_name', Nagios::Hostgroup)
75
- end
76
-
77
- def push(obj)
78
- case obj
79
- when Nagios::Host
80
- push_object(obj, @host_name)
81
- when Nagios::Hostgroup
82
- push_object(obj, @hostgroup_name)
83
- when Nagios::Contact
84
- push_object(obj, @contacts)
85
- when Nagios::Contactgroup
86
- push_object(obj, @contact_groups)
87
- when Nagios::Timeperiod
88
- @escalation_period = obj
89
- end
90
- end
91
-
92
- def pop(obj)
93
- return if obj == self
94
- case obj
95
- when Nagios::Host
96
- if @host_name.keys?(obj.to_s)
97
- pop_object(obj, @host_name)
98
- pop(self, obj)
99
- end
100
- when Nagios::Hostgroup
101
- if @hostgroup_name.keys?(obj.to_s)
102
- pop_object(obj, @hostgroup_name)
103
- pop(self, obj)
104
- end
105
- when Nagios::Contact
106
- if @contacts.keys?(obj.to_s)
107
- pop_object(obj, @contacts)
108
- pop(self, obj)
109
- end
110
- when Nagios::Contactgroup
111
- if @contact_groups.keys?(obj.to_s)
112
- pop_object(obj, @contact_groups)
113
- pop(self, obj)
114
- end
115
- when Nagios::Timeperiod
116
- @escalation_period = nil if @escalation_period == obj
117
- end
118
- end
119
-
120
-
121
- def to_s
122
- host_description
123
- end
124
-
125
- # check the integer options
126
- # default = nil
127
- def first_notification=(int)
128
- @first_notification = check_integer(int)
129
- end
130
-
131
- def last_notification=(int)
132
- @last_notification = check_integer(int)
133
- end
134
-
135
- def notification_interval=(int)
136
- @notification_interval = check_integer(int)
137
- end
138
-
139
- # check other options
140
- def escalation_options=(arg)
141
- @escalation_options = check_state_options(arg, %w(d u r), 'escalation_options')
142
- end
143
-
144
- private
145
-
146
- def config_options
147
- {
148
- 'name' => 'name',
149
- 'use' => 'use',
150
- 'host_description' => nil,
151
- 'contacts_list' => 'contacts',
152
- 'contact_groups_list' => 'contact_groups',
153
- 'escalation_period' => 'escalation_period',
154
- 'host_name_list' => 'host_name',
155
- 'hostgroup_name_list' => 'hostgroup_name',
156
- 'escalation_options' => 'escalation_options',
157
- 'first_notification' => 'first_notification',
158
- 'last_notification' => 'last_notification',
159
- 'notification_interval' => 'notification_interval',
160
- 'register' => 'register',
161
- }
162
- end
163
-
164
-
165
- def merge_members(obj)
166
- obj.contacts.each { |m| push(m) }
167
- obj.host_name.each { |m| push(m) }
168
- obj.contact_groups.each { |m| push(m) }
169
- obj.hostgroup_name.each { |m| push(m) }
170
- end
171
- end
172
- end
173
-
@@ -1,119 +0,0 @@
1
- #
2
- # Author:: Sander Botman <sbotman@schubergphilis.com>
3
- # Cookbook Name:: nagios
4
- # Library:: hostgroup
5
- #
6
- # Copyright 2014, Sander Botman
7
- #
8
- # Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
- # See the License for the specific language governing permissions and
18
- # limitations under the License.
19
-
20
- require_relative 'base'
21
-
22
- class Nagios
23
- #
24
- # This class holds all methods with regard to hostgroup options,
25
- # that are used within nagios configurations.
26
- #
27
- class Hostgroup < Nagios::Base
28
- attr_reader :hostgroup_name,
29
- :members,
30
- :hostgroup_members
31
-
32
- attr_accessor :alias,
33
- :notes,
34
- :notes_url,
35
- :action_url
36
-
37
- def initialize(hostgroup_name)
38
- @hostgroup_name = hostgroup_name
39
- @members = {}
40
- @hostgroup_members = {}
41
- super()
42
- end
43
-
44
- def definition
45
- get_definition(configured_options, 'hostgroup')
46
- end
47
-
48
- def hostgroup_members_list
49
- @hostgroup_members.values.map(&:to_s).sort.join(',')
50
- end
51
-
52
- def import(hash)
53
- update_options(hash)
54
- update_members(hash, 'members', Nagios::Host, true)
55
- update_members(hash, 'hostgroups_members', Nagios::Hostgroup, true)
56
- end
57
-
58
- def members_list
59
- @members.values.map(&:to_s).sort.join(',')
60
- end
61
-
62
- def push(obj)
63
- case obj
64
- when Nagios::Host
65
- push_object(obj, @members)
66
- when Nagios::Hostgroup
67
- push_object(obj, @hostgroup_members)
68
- end
69
- end
70
-
71
- def pop(obj)
72
- return if obj == self
73
- case obj
74
- when Nagios::Host
75
- if @members.key?(obj.to_s)
76
- pop_object(obj, @members)
77
- obj.pop(obj)
78
- end
79
- when Nagios::Hostgroup
80
- if @hostgroups_members.key?(obj.to_s)
81
- pop_object(obj, @hostgroup_members)
82
- obj.pop(obj)
83
- end
84
- end
85
- end
86
-
87
-
88
- def self.create(name)
89
- Nagios.instance.find(Nagios::Hostgroup.new(name))
90
- end
91
-
92
- def to_s
93
- hostgroup_name
94
- end
95
-
96
- private
97
-
98
- def config_options
99
- {
100
- 'name' => 'name',
101
- 'use' => 'use',
102
- 'hostgroup_name' => 'hostgroup_name',
103
- 'members_list' => 'members',
104
- 'hostgroup_members_list' => 'hostgroup_members',
105
- 'alias' => 'alias',
106
- 'notes' => 'notes',
107
- 'notes_url' => 'notes_url',
108
- 'action_url' => 'action_url',
109
- 'register' => 'register',
110
- }
111
- end
112
-
113
-
114
- def merge_members(obj)
115
- obj.members.each { |m| push(m) }
116
- obj.hostgroup_members.each { |m| push(m) }
117
- end
118
- end
119
- end