<% set destination = [
    "input",
    "output"
] %>

<% set datacenter = [
    "man",
    "sas",
    "vla",
    "msk"
] %>

<% set mgroups = [
    "ASEARCH",
    "QLOUD"
] %>

<% set intervals = [
    "1,60",
    "60,600",
    "600,6000",
    "6000,60000",
    "60000,inf",
] %>

<% set limits = {
    "sas": {
        "input": {
            "1,60": {
                "warn":[10000,12000],
                "crit":[12000,None],
            },
            "60,600": {
                "warn":[400,800],
                "crit":[800,None],
            },
            "600,6000": {
                "warn":[300,600],
                "crit":[600,None],
            },
            "6000,60000": {
                "warn":[100,150],
                "crit":[150,None],
            },
            "60000,inf": {
                "warn":[100,150],
                "crit":[150,None],
            }
        },
        "output": {
            "1,60": {
                "warn":[2800,3600],
                "crit":[3600,None],
            },
            "60,600": {
                "warn":[2000,2800],
                "crit":[2800,None],
            },
            "600,6000": {
                "warn":[500,1000],
                "crit":[1000,None],
            },
            "6000,60000": {
                "warn":[180,250],
                "crit":[250,None],
            },
            "60000,inf": {
                "warn":[100,150],
                "crit":[150,None],
            }
        }
    },
    "vla": {
        "input": {
            "1,60": {
                "warn":[10000,12000],
                "crit":[12000,None],
            },
            "60,600": {
                "warn":[400,800],
                "crit":[800,None],
            },
            "600,6000": {
                "warn":[180,250],
                "crit":[250,None],
            },
            "6000,60000": {
                "warn":[100,150],
                "crit":[50,None],
            },
            "60000,inf": {
                "warn":[100,150],
                "crit":[150,None],
            }
        },
        "output": {
            "1,60": {
                "warn":[2800,3600],
                "crit":[3600,None],
            },
            "60,600": {
                "warn":[2000,2800],
                "crit":[2800,None],
            },
            "600,6000": {
                "warn":[500,1000],
                "crit":[1000,None],
            },
            "6000,60000": {
                "warn":[180,250],
                "crit":[250,None],
            },
            "60000,inf": {
                "warn":[100,150],
                "crit":[150,None],
            }
        }
    },
    "man": {
        "input": {
            "1,60": {
                "warn":[10000,12000],
                "crit":[12000,None],
            },
            "60,600": {
                "warn":[400,600],
                "crit":[600,None],
            },
            "600,6000": {
                "warn":[180,250],
                "crit":[250,None],
            },
            "6000,60000": {
                "warn":[100,150],
                "crit":[150,None],
            },
            "60000,inf": {
                "warn":[100,150],
                "crit":[150,None],
            }
        },
        "output": {
            "1,60": {
                "warn":[2600,3400],
                "crit":[3400,None],
            },
            "60,600": {
                "warn":[800,1400],
                "crit":[1400,None],
            },
            "600,6000": {
                "warn":[600,1000],
                "crit":[1000,None],
            },
            "6000,60000": {
                "warn":[100,150],
                "crit":[150,None],
            },
            "60000,inf": {
                "warn":[100,150],
                "crit":[150,None],
            }
        }
    },
    "msk": {
        "input": {
            "1,60": {
                "warn":[7000,8000],
                "crit":[8000,None],
            },
            "60,600": {
                "warn":[180,250],
                "crit":[250,None],
            },
            "600,6000": {
                "warn":[180,250],
                "crit":[100,None],
            },
            "6000,60000": {
                "warn":[100,150],
                "crit":[150,None],
            },
            "60000,inf": {
                "warn":[100,150],
                "crit":[150,None],
            }
        },
        "output": {
            "1,60": {
                "warn":[1200,2000],
                "crit":[2000,None],
            },
            "60,600": {
                "warn":[600,1000],
                "crit":[1000,None],
            },
            "600,6000": {
                "warn":[180,250],
                "crit":[250,None],
            },
            "6000,60000": {
                "warn":[100,150],
                "crit":[150,None],
            },
            "60000,inf": {
                "warn":[100,150],
                "crit":[150,None],
            }
        }
    }
} %>

[
<% for mgroup in mgroups %>
<% for dst in destination %>
<% for interval in intervals %>
<% for dc in datacenter %>

<% set service = "{}_hbf_drops_geowide_{}_{}_{}".format(mgroup|lower(), dc, dst, interval.replace(',', '_')) %>
<% set yasm_name = "yasm_{}".format(service) %>
<% set signal_name = {
    "input": "hcount(hbf6-packets_drop_ahhh, {})".format(interval),
    "output": "hcount(hbf6-packets_output_reject_ahhh, {})".format(interval)
} %>

<% set base = {
    "name": yasm_name,
    "signal": signal_name[dst],
    "tags": {
        "itype": "runtimecloud",
        "geo": dc
    },
    "description": "{} {} {} {} drops".format(mgroup|upper(), dc|upper(), dst|upper(), interval.replace(',', '_')),
    "warn": limits[dc][dst][interval]["warn"],
    "crit": limits[dc][dst][interval]["crit"]
} %>

<% set common = {
    "mgroups": [mgroup]
} %>

<< Alert(
    base = base|merge_with_dict(common),
    juggler_check = {
        "namespace": "rtcsys",
        "host": yasm_name,
        "service": service,
        "aggregator": "logic_or",
        "ttl": 900,
        "refresh_time": 5,
        "aggregator_kwargs": {
            "nodata_mode": "force_crit"
        },
        "tags": [
            "hbf",
            mgroup
        ],
        "meta": {
            "urls": [
                {
                    "title": "Docs",
                    "url": "https://wiki.yandex-team.ru/runtime-cloud/yandex-hbf-agent/",
                    "type": "wiki"
                }
            ]
        }
    }
) >> ,

<% endfor %>
<% endfor %>
<% endfor %>
<% endfor %>
]
