######## component templates ########
# nf_component_usage_tmpl

# nf_component_usage_report_tmpl



resource "elasticstack_elasticsearch_script" "nf_component_usage_tmpl" {
    script_id = "nf_component_usage_tmpl"
    lang      = "mustache"
    source    = <<-EOT
     {
            "size": 100,
            "query": {
                "bool": {
                    "must": [
                        {
                            "bool": {
                                "should": [
                                    {
                                        "terms": {
                                            "networkID.keyword":{{#toJson}}network_List{{/toJson}}
                                        }
                                    }
                                ],
                                "adjust_pure_negative": true,
                                "minimum_should_match": "1",
                                "boost": 1.0
                            }
                        },
                        {
                            "match_phrase": {
                                "componentGroup": {
                                    "query": "ZT_EDGE_IDENTITIES",
                                    "slop": 0,
                                    "zero_terms_query": "NONE",
                                    "boost": 1.0
                                }
                            }
                        },
                        {
                             "range": {
                                 "fromTime": {
                                 "gte": "{{gte}}",
                                 "format": "strict_date_optional_time||epoch_millis"
                                }
                            }
                        },
                       {
                             "range": {
                                 "toTime": {
                                 "lte": "{{lte}}",
                                 "format": "strict_date_optional_time||epoch_millis"
                                }
                            }
                       }
                    ],
                    "adjust_pure_negative": true,
                    "boost": 1.0
                }
            },
            "aggregations": {
                "group_by_networkid": {
                    "terms": {
                        "field": "networkID.keyword",
                        "size": 10,
                        "min_doc_count": 1,
                        "shard_min_doc_count": 0,
                        "show_term_doc_count_error": false,
                        "order": [
                            {
                                "_count": "desc"
                            },
                            {
                                "_key": "asc"
                            }
                        ]
                    },
                    "aggregations": {
                        "average_endpoints_used": {
                            "avg": {
                                "field": "endpointQuantity"
                            }
                        },
                        "average_registered_endpoints_used": {
                            "avg": {
                                "field": "registeredEndpointQuantity"
                            }
                        },
                        "average_routers_used": {
                            "avg": {
                                "field": "routerQuantity"
                            }
                        },
                        "average_registered_routers_used": {
                            "avg": {
                                "field": "registeredRouterQuantity"
                            }
                        },
                        "average_registered_private_routers_used": {
                            "avg": {
                                "field": "registeredPrivateRouterQuantity"
                            }
                        },
                        "average_registered_cloud_routers_used": {
                            "avg": {
                                "field": "registeredCloudRouterQuantity"
                            }
                        }
                    }
                }
            }
        }
}
	EOT
}



resource "elasticstack_elasticsearch_script" "nf_component_usage_report_tmpl" {
    script_id = "nf_component_usage_report_tmpl"
    lang      = "mustache"
    source    = <<-EOT
     {
     "size": 100,
    "query": {
        "bool": {
            "filter": [
                {
                    "range": {
                        "fromTime": {
                            "gte": "{{gte}}",
                            "format": "strict_date_optional_time||epoch_millis"
                        }
                    }
                },
                {
                    "range": {
                        "toTime": {
                          "lte": "{{lte}}",
                          "format": "strict_date_optional_time||epoch_millis"
                          }
                    }
                },
                {
                    "match_phrase": {
                        "componentGroup": {
                            "query": "ZT_EDGE_IDENTITIES",
                            "slop": 0,
                            "zero_terms_query": "NONE",
                            "boost": 1.0
                        }
                    }
                },
                {
                    "terms": {
                        "networkGroupID.keyword": {{#toJson}}network_group_list{{/toJson}}
                    }
                }
            ]
        }
    },
    "aggregations": {
        "group_by_network_groupid": {
            "terms": {
                "field": "networkGroupID.keyword",
                "size": 100,
                "min_doc_count": 1,
                "shard_min_doc_count": 0,
                "show_term_doc_count_error": false,
                "order": [
                    {
                        "_count": "desc"
                    },
                    {
                        "_key": "asc"
                    }
                ]
            },
            "aggregations": {
                "group_by_networkid": {
                    "terms": {
                        "field": "networkID.keyword",
                        "size": 100,
                        "min_doc_count": 1,
                        "shard_min_doc_count": 0,
                        "show_term_doc_count_error": false,
                        "order": [
                            {
                                "_count": "desc"
                            },
                            {
                                "_key": "asc"
                            }
                        ]
                    },
                    "aggregations": {
                        "network_name": {
                            "top_hits": {
                                "_source": [
                                    "networkName"
                                ],
                                "size": 1
                            }
                        },
                        "average_endpoints_used": {
                            "avg": {
                                "field": "endpointQuantity"
                            }
                        },
                        "average_registered_endpoints_used": {
                            "avg": {
                                "field": "registeredEndpointQuantity"
                            }
                        },
                        "average_routers_used": {
                            "avg": {
                                "field": "routerQuantity"
                            }
                        },
                        "average_registered_routers_used": {
                            "avg": {
                                "field": "registeredRouterQuantity"
                            }
                        },
                        "average_registered_private_routers_used": {
                            "avg": {
                                "field": "registeredPrivateRouterQuantity"
                            }
                        },
                        "average_registered_cloud_routers_used": {
                            "avg": {
                                "field": "registeredCloudRouterQuantity"
                            }
                        }
                    }
                }
            }
        }
    }

}
	EOT
}
