Develop > Service Health > Service Health Rules API > Examples - API Sample Rule > Example - Average Availability Rule

Example - Average Availability Rule

The following rule calculates average availability of samples, based on the u_iStatus sample field.

The rule logic is (available samples / total samples) * 100.

// This rule uses the u_iStatus sample field.
def sampleFields = ["u_iStatus"];
public void calculateKPI(CI ci, KPI kpi, List<Sample> samples) {
    // Keep total number of samples for this calculation cycle.
    def totalSamples = samples.size();
    // Create a variable to count available samples.
    def availableSamples = 0;
    /**
    * Go over the given samples. If a sample's u_iStatus is equal to 0,
    * the sample is considered available.
    */
    samples.each {Sample currentSample->
    if (currentSample.u_iStatus == 0) {
        // Increase the count of available samples.
        availableSamples++;
        }
    }
    if (totalSamples > 0) {
        // Set KPI value, converted to percentage.
    kpi.setValue ((availableSamples/totalSamples)*100.0);
    }
}


Parent topic: Examples - API Sample Rule