/usr/local/CPAN/Nagios-Interface/Nagios/Interface/LogMessage.pm


package Nagios::Interface::LogMessage;

use strict;
use warnings;

use Moose::Role;

requires 'log_info_order';

sub output_fields {
	my $self = shift;
	$self->log_info_order;
}

requires 'as_string';
requires 'ok';

has 'host' =>
	isa => 'Str',
	is => 'ro',
	required => 1,
	;

has 'when' =>
	isa => 'TimestampTZ',
	is => 'ro',
	required => 0,
	coerce => 1,
	;

requires 'match';

# As an idea for a simplification, just require classes to return
# which fields make up their 'key'
#
# requires 'match_keys';
#
#has 'keys' =>
#	isa => 'ArrayRef',
#	is => 'rw',
#	required => 1,
#	lazy => 1,
#	default => sub {
#		my $self = shift;
#		[ $self->match_keys ];
#	},
#	;

sub nagios_label {
	my $self = shift;
	my $class = ref $self;
	our %labels;
	$labels{$class} ||= do {
		my $label = $class;
		$DB::single = 1;
		$label =~ s{Nagios::Interface::}{};
		$label =~ s{([a-z])([A-Z])}{${1}_$2}g;
		$label = uc($label);
		$label =~ s{SERVICE}{SVC}g;
		$label;
	};
}

1;