95 lines
3.2 KiB
Python
95 lines
3.2 KiB
Python
"""Nrpe service definifition."""
|
|
|
|
import os
|
|
|
|
from charmhelpers.core import hookenv
|
|
from charmhelpers.core.hookenv import status_set
|
|
from charmhelpers.core.services import helpers
|
|
from charmhelpers.core.services.base import ServiceManager
|
|
|
|
import nrpe_helpers
|
|
|
|
import nrpe_utils
|
|
|
|
|
|
def get_revision():
|
|
"""Get charm revision str."""
|
|
revision = ""
|
|
if os.path.exists("version"):
|
|
with open("version") as f:
|
|
line = f.readline().strip()
|
|
# We only want the first 8 characters, that's enough to tell
|
|
# which version of the charm we're using.
|
|
if len(line) > 8:
|
|
revision = " (source version/commit {}...)".format(line[:8])
|
|
else:
|
|
revision = " (source version/commit {})".format(line)
|
|
return revision
|
|
|
|
|
|
def manage():
|
|
"""Manage nrpe service."""
|
|
status_set("maintenance", "starting")
|
|
config = hookenv.config()
|
|
manager = ServiceManager(
|
|
[
|
|
{
|
|
"service": "nrpe-install",
|
|
"data_ready": [
|
|
nrpe_utils.install_packages,
|
|
nrpe_utils.install_charm_files,
|
|
],
|
|
"start": [],
|
|
"stop": [],
|
|
},
|
|
{
|
|
"service": "nrpe-config",
|
|
"required_data": [
|
|
config,
|
|
nrpe_helpers.MonitorsRelation(),
|
|
nrpe_helpers.PrincipalRelation(),
|
|
nrpe_helpers.NagiosInfo(),
|
|
],
|
|
"data_ready": [
|
|
nrpe_utils.update_nrpe_external_master_relation,
|
|
nrpe_utils.update_monitor_relation,
|
|
nrpe_utils.create_host_export_fragment,
|
|
nrpe_utils.render_nrped_files,
|
|
helpers.render_template(
|
|
source="nrpe.tmpl", target="/etc/nagios/nrpe.cfg"
|
|
),
|
|
],
|
|
"provided_data": [nrpe_helpers.PrincipalRelation()],
|
|
"ports": [hookenv.config("server_port"), "ICMP"],
|
|
"start": [nrpe_utils.maybe_open_ports, nrpe_utils.restart_nrpe],
|
|
"stop": [],
|
|
},
|
|
{
|
|
"service": "nrpe-rsync",
|
|
"required_data": [
|
|
config,
|
|
nrpe_helpers.PrincipalRelation(),
|
|
nrpe_helpers.RsyncEnabled(),
|
|
nrpe_helpers.NagiosInfo(),
|
|
],
|
|
"data_ready": [
|
|
nrpe_utils.remove_host_export_fragments,
|
|
helpers.render_template(
|
|
source="rsync-juju.d.tmpl",
|
|
target="/etc/rsync-juju.d/010-nrpe-external-master.conf",
|
|
),
|
|
nrpe_utils.create_host_export_fragment,
|
|
],
|
|
"start": [nrpe_utils.restart_rsync],
|
|
"stop": [],
|
|
},
|
|
]
|
|
)
|
|
manager.manage()
|
|
if not nrpe_utils.has_consumer():
|
|
status_set("blocked", "Nagios server not configured or related")
|
|
elif nrpe_helpers.has_netlinks_error():
|
|
status_set("blocked", "Netlinks parsing encountered failure; see logs")
|
|
else:
|
|
status_set("active", "Ready{}".format(get_revision()))
|