Changeset View
Changeset View
Standalone View
Standalone View
site-modules/profile/manifests/swh/deploy/webapp/icinga_checks.pp
class profile::swh::deploy::webapp::icinga_checks { | class profile::swh::deploy::webapp::icinga_checks { | ||||
$vhost_name = $::profile::swh::deploy::webapp::vhost_name | $vhost_name = $::profile::swh::deploy::webapp::vhost_name | ||||
$vhost_ssl_port = $::profile::swh::deploy::webapp::vhost_ssl_port | $vhost_ssl_port = $::profile::swh::deploy::webapp::vhost_ssl_port | ||||
$icinga_checks_file = lookup('icinga2::exported_checks::filename') | $icinga_checks_file = lookup('icinga2::exported_checks::filename') | ||||
$icinga_checks = lookup('swh::deploy::webapp::icinga_checks') | |||||
$checks = { | # so far 3 types of icinga checks (get, post, and regexp). Walk through them and | ||||
'counters' => { | # create the expected icinga checks out of those | ||||
http_uri => '/api/1/stat/counters/', | |||||
http_string => '"content":', | $checks_get = $icinga_checks['get'].map | $name, $entry | { | ||||
}, | { | ||||
'content known' => { | $name => { | ||||
http_uri => '/api/1/content/known/search/', | http_uri => $entry['uri'], | ||||
http_post => 'q=8624bcdae55baeef00cd11d5dfcfa60f68710a02', | http_string => $entry['string'], | ||||
http_string => '"found":true', | } | ||||
}, | } | ||||
'content end to end' => { | } | ||||
http_uri => '/browse/content/4dfc4478b1d5f7388b298fdfc06802485bdeae0c/', | |||||
http_string => 'PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2', | $checks_post = $icinga_checks['post'].map | $name, $entry | { | ||||
}, | { | ||||
'directory end to end' => { | $name => { | ||||
http_uri => '/browse/directory/977fc4b98c0e85816348cebd3b12026407c368b6/', | http_uri => $entry['uri'], | ||||
http_linespan => true, | http_post => $entry['post'], | ||||
http_expect_body_regex => 'Doc.*Grammar.*Include.*Lib.*Mac.*Misc.*Modules.*Objects.*PC.*PCbuild.*LICENSE.*README.rst', | http_string => $entry['string'], | ||||
}, | } | ||||
'revision end to end' => { | } | ||||
http_uri => '/browse/revision/f1b94134a4b879bc55c3dacdb496690c8ebdc03f/', | } | ||||
http_linespan => true, | |||||
http_expect_body_regex => join([ | $checks_regexp = $icinga_checks['regexp'].map | $name, $entry | { | ||||
'-:"Allocate the output vlc pictures with dimensions padded,.*', | { | ||||
'as requested by the decoder \\\\(for alignments\\\\)."' | $name => { | ||||
]), | http_uri => $entry['uri'], | ||||
}, | |||||
'revision log end to end' => { | |||||
http_uri => '/browse/revision/b9b0ecd1e2f9db10335383651f8317ed8cec8296/log/', | |||||
http_linespan => true, | |||||
http_expect_body_regex => join([ | |||||
'-:"', | |||||
join([ | |||||
'/browse/revision/b9b0ecd1e2f9db10335383651f8317ed8cec8296/', | |||||
'Roberto Di Cosmo', | |||||
'Moved to github', | |||||
], '.*'), | |||||
'"', | |||||
]), | |||||
}, | |||||
'release end to end' => { | |||||
http_uri => '/browse/release/a9b7e3f1eada90250a6b2ab2ef3e0a846cb16831/', | |||||
http_linespan => true, | |||||
http_expect_body_regex => join([ | |||||
'-:"Linux 4.9-rc8.*', | |||||
'/revision/3e5de27e940d00d8d504dfb96625fb654f641509/"' | |||||
]), | |||||
}, | |||||
'snapshot end to end' => { | |||||
http_uri => '/browse/snapshot/baebc2109e4a2ec22a1129a3859647e191d04df4/branches/', | |||||
http_linespan => true, | http_linespan => true, | ||||
http_expect_body_regex => join([ | http_expect_body_regex => join(['-:"'] + $entry['regexp'] + ['"']), | ||||
'-:"', | } | ||||
join([ | |||||
'buster/main/4.13.13-1', | |||||
'buster/main/4.14.12-2', | |||||
'buster/main/4.14.13-1', | |||||
'buster/main/4.14.17-1', | |||||
'buster/main/4.15.4-1', | |||||
'buster/main/4.9.65-3', | |||||
'experimental/main/4.10~rc6-1~exp2', | |||||
'jessie-backports/main/3.16.39-1', | |||||
'jessie-backports/main/4.7.8-1~bpo8\\\\+1', | |||||
'jessie-backports/main/4.9.18-1~bpo8\\\\+1', | |||||
'jessie-backports/main/4.9.65-3\\\\+deb9u1~bpo8\\\\+1', | |||||
'jessie-backports/main/4.9.65-3\\\\+deb9u2~bpo8\\\\+1', | |||||
'jessie-kfreebsd/main/3.16.7-ckt9-2', | |||||
'jessie-proposed-updates/main/3.16.51-3', | |||||
'jessie-proposed-updates/main/3.16.51-3\\\\+deb8u1', | |||||
'jessie-updates/main/3.16.51-3', | |||||
'jessie/main/3.16.43-1', | |||||
'jessie/main/3.16.51-2', | |||||
'jessie/main/3.16.7-ckt2-1', | |||||
'jessie/main/3.16.7-ckt20-1\\\\+deb8u3', | |||||
], '.*'), | |||||
'"', | |||||
]), | |||||
} | } | ||||
} | } | ||||
# compulse checks as one dict | |||||
$checks = ($checks_get + $checks_post + $checks_regexp).reduce({}) |$acc, $entry| { | |||||
merge($acc, $entry) | |||||
} | |||||
each($checks) |$name, $args| { | each($checks) |$name, $args| { | ||||
@@::icinga2::object::service {"swh-webapp ${name} ${::fqdn}": | @@::icinga2::object::service {"swh-webapp ${name} ${::fqdn}": | ||||
service_name => "swh webapp ${name}", | service_name => "swh webapp ${name}", | ||||
import => ['generic-service'], | import => ['generic-service'], | ||||
host_name => $::fqdn, | host_name => $::fqdn, | ||||
check_command => 'http', | check_command => 'http', | ||||
vars => { | vars => { | ||||
http_address => $vhost_name, | http_address => $vhost_name, | ||||
Show All 24 Lines |