Puppet Class: jboss::internal::service

Defined in:
manifests/internal/service.pp

Overview

Internal class - manage JBoss service



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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'manifests/internal/service.pp', line 2

class jboss::internal::service {
  include jboss
  $servicename = $jboss::product

  include jboss::params
  include jboss::internal::params
  include jboss::internal::compatibility
  include jboss::internal::configuration
  include jboss::internal::quirks::etc_initd_functions

  Exec {
    path      => $jboss::internal::params::syspath,
    logoutput => 'on_failure',
  }

  anchor { 'jboss::service::begin': }

  $service_stop_cooldown = 5 # sec.
  # TODO: change to $::virtual after dropping support for Puppet 2.x
  $enable = $::jboss_virtual ? {
    'docker' => undef,
    default  => true,
  }

  if $jboss::internal::compatibility::initsystem == 'SystemD' {
    exec { "systemctl-daemon-reload-for-${servicename}":
      command     => '/bin/systemctl daemon-reload',
      refreshonly => true,
      notify      => Service[$servicename],
      subscribe   => [
        Anchor['jboss::package::end'],
        Anchor['jboss::configuration::end'],
        Anchor['jboss::service::begin'],
      ],
    }
  }

  service { $servicename:
    ensure     => running,
    enable     => $enable,
    hasstatus  => true,
    hasrestart => true,
    subscribe  => [
      Package['coreutils'],
      Anchor['jboss::package::end'],
      Anchor['jboss::service::begin'],
    ],
  }

  if $jboss::internal::compatibility::expect_to_start {
    $test_running_loglevel   = 'emerg'
    $test_running_failstatus = 1
  } else {
    $test_running_loglevel   = 'warning'
    $test_running_failstatus = 0
  }

  exec { 'jboss::service::test-running':
    loglevel  => $test_running_loglevel,
    command   => "tail -n 80 ${jboss::internal::configuration::logfile} && exit ${test_running_failstatus}",
    unless    => "pgrep -f '^java.*${servicename}' > /dev/null",
    logoutput => true,
    subscribe => Service[$servicename],
    require   => Package['procps'],
  }

  $restart_cmd1 = $jboss::internal::compatibility::initsystem ? {
    'SystemD' => "systemctl stop ${servicename}",
    default   => "service ${servicename} stop"
  }
  $restart_cmd2 = "sleep ${service_stop_cooldown}"
  $restart_cmd3 = "pkill -9 -f '^java.*${servicename}'"
  $restart_cmd4 = $jboss::internal::compatibility::initsystem ? {
    'SystemD' => "systemctl start ${servicename}",
    default   => "service ${servicename} start"
  }

  exec { 'jboss::service::restart':
    command     => "${restart_cmd1} ; ${restart_cmd2} ; ${restart_cmd3} ; ${restart_cmd4}",
    refreshonly => true,
    require     => [
      Package['procps'],
      Exec['jboss::service::test-running'],
    ],
  }

  anchor { 'jboss::service::end':
    require => [
      Service[$servicename],
      Exec['jboss::service::test-running'],
    ],
  }

  anchor { 'jboss::service::started':
    require => [
      Service[$servicename],
      Anchor['jboss::service::end'],
      Exec['jboss::service::restart'],
    ],
  }
}