## ------------------------------------------
## Retrieve messages from Voltha alarm topic
## ------------------------------------------

input {
  	kafka {
		bootstrap_servers => "kafka:9092"
		topics => ["voltha.alarms"]
		tags => [ "alarm" ]
		type => "voltha_alarms"
  	}
}

## ------------------------------------------
## The message field is a JSON block.
## Break it down in multiple fields
## for easy extraction
## ------------------------------------------

filter {
    json{
        source => "message"
    }
}

## ------------------------------------------
## Intercept alarm messages and manipulate 
## the content prior to injection in OpenNMS 
## ------------------------------------------

filter {
    if "alarm" in [tags] {
        mutate {
            add_field => { "[@metadata][alarm_id]" => "%{id}" }
            add_field => { "[@metadata][resource_id]" => "%{resource_id}" }
            add_field => { "[@metadata][description]" => "%{description}" }
            add_field => { "[@metadata][type]" => "%{type}" }
            add_field => { "[@metadata][category]" => "%{category}" }
            add_field => { "[@metadata][state]" => "%{state}" }
            add_field => { "[@metadata][raised_time]" => "%{raised_ts}" }
            add_field => { "[@metadata][reported_time]" => "%{reported_ts}" }
            add_field => { "[@metadata][changed_time]" => "%{changed_ts}" }
            add_field => { "[@metadata][context]" => "%{context}" }
            add_field => { "[@metadata][service]" => "voltha" }
            add_field => { "[@metadata][interface]" => "localhost" }
            add_tag   => "opennms"
        }

        if [state] == "RAISED" {
            mutate {
                add_field => { "[@metadata][uei]" => "uei.opennms.org/vendor/voltha/alarmRaised" }
                add_field => { "[@metadata][severity]" => "%{severity}" }
            }
        } else if [state] == "CLEARED" {
            mutate {
                add_field => { "[@metadata][uei]" => "uei.opennms.org/vendor/voltha/alarmCleared" }
                add_field => { "[@metadata][severity]" => "Normal" }
            }
        }
    }
}

## ------------------------------------------
## View incoming messages (for debugging)
## ------------------------------------------

output {
    stdout {
        codec  => rubydebug { metadata => true }
    }
}

## ------------------------------------------
## Forward alarm messages to OpenNMS
## ------------------------------------------

output {
    if "opennms" in [tags] {
        opennms {
            opennms_server_hosts      => {
                "10.100.198.220" => 5817
            }

            opennms_event_timezone    => "utc"
            opennms_event_service     => "[@metadata][service]"
            opennms_event_nodeid      => 0
            opennms_event_interface   => "[@metadata][interface]"
            opennms_event_uei         => "[@metadata][uei]"
            opennms_event_severity    => "[@metadata][severity]"
            opennms_event_description => "[@metadata][description]"
            opennms_event_logmsg      => "logmsg"

            opennms_event_parms => {
                "AlarmId"       => "[@metadata][alarm_id]"
                "ResourceId"    => "[@metadata][resource_id]"
                "Description"   => "[@metadata][description]"
                "Type"          => "[@metadata][type]"
                "Category"      => "[@metadata][category]"
                "State"         => "[@metadata][state]"
                "Severity"      => "[@metadata][severity]"
                "RaisedTime"    => "[@metadata][raised_time]"
                "ReportedTime"  => "[@metadata][reported_time]"
                "ChangedTime"   => "[@metadata][changed_time]"
                "Context"       => "[@metadata][context]"
            }

            opennms_event_parms_order => [ "AlarmId", "ResourceId", "Description", "Type", "Category", "State", "Severity", "RaisedTime", "ReportedTime", "ChangedTime", "Context" ]
        }
    }
}
