diff options
Diffstat (limited to 'src/fluent-bit/plugins/filter_kubernetes/kube_conf.c')
-rw-r--r-- | src/fluent-bit/plugins/filter_kubernetes/kube_conf.c | 232 |
1 files changed, 0 insertions, 232 deletions
diff --git a/src/fluent-bit/plugins/filter_kubernetes/kube_conf.c b/src/fluent-bit/plugins/filter_kubernetes/kube_conf.c deleted file mode 100644 index 9dc360b48..000000000 --- a/src/fluent-bit/plugins/filter_kubernetes/kube_conf.c +++ /dev/null @@ -1,232 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ - -/* Fluent Bit - * ========== - * Copyright (C) 2015-2022 The Fluent Bit Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <fluent-bit/flb_info.h> -#include <fluent-bit/flb_filter_plugin.h> -#include <fluent-bit/flb_mem.h> -#include <fluent-bit/flb_log.h> -#include <fluent-bit/flb_str.h> -#include <fluent-bit/flb_filter.h> -#include <fluent-bit/flb_utils.h> -#include <fluent-bit/flb_parser.h> -#include <fluent-bit/flb_http_client.h> -#include <fluent-bit/flb_hash_table.h> - -#ifndef FLB_HAVE_TLS -#error "Fluent Bit was built without TLS support" -#endif - -#include "kube_meta.h" -#include "kube_conf.h" - -struct flb_kube *flb_kube_conf_create(struct flb_filter_instance *ins, - struct flb_config *config) -{ - int off; - int ret; - const char *url; - const char *tmp; - const char *p; - const char *cmd; - struct flb_kube *ctx; - - ctx = flb_calloc(1, sizeof(struct flb_kube)); - if (!ctx) { - flb_errno(); - return NULL; - } - ctx->config = config; - ctx->ins = ins; - - /* Set config_map properties in our local context */ - ret = flb_filter_config_map_set(ins, (void *) ctx); - if (ret == -1) { - flb_free(ctx); - return NULL; - } - - /* K8s Token Command */ - cmd = flb_filter_get_property("kube_token_command", ins); - if (cmd) { - ctx->kube_token_command = cmd; - } - else { - ctx->kube_token_command = NULL; - } - ctx->kube_token_create = 0; - - /* Merge Parser */ - tmp = flb_filter_get_property("merge_parser", ins); - if (tmp) { - ctx->merge_parser = flb_parser_get(tmp, config); - if (!ctx->merge_parser) { - flb_plg_error(ctx->ins, "parser '%s' is not registered", tmp); - } - } - else { - ctx->merge_parser = NULL; - } - - /* Get Kubernetes API server */ - url = flb_filter_get_property("kube_url", ins); - - if (ctx->use_tag_for_meta) { - ctx->api_https = FLB_FALSE; - } - else if (ctx->use_kubelet) { - ctx->api_host = flb_strdup(ctx->kubelet_host); - ctx->api_port = ctx->kubelet_port; - ctx->api_https = FLB_TRUE; - - /* This is for unit test diagnostic purposes */ - if (ctx->meta_preload_cache_dir) { - ctx->api_https = FLB_FALSE; - } - - } - else if (!url) { - ctx->api_host = flb_strdup(FLB_API_HOST); - ctx->api_port = FLB_API_PORT; - ctx->api_https = FLB_API_TLS; - } - else { - tmp = url; - - /* Check the protocol */ - if (strncmp(tmp, "http://", 7) == 0) { - off = 7; - ctx->api_https = FLB_FALSE; - } - else if (strncmp(tmp, "https://", 8) == 0) { - off = 8; - ctx->api_https = FLB_TRUE; - } - else { - flb_kube_conf_destroy(ctx); - return NULL; - } - - /* Get hostname and TCP port */ - p = url + off; - tmp = strchr(p, ':'); - if (tmp) { - ctx->api_host = flb_strndup(p, tmp - p); - tmp++; - ctx->api_port = atoi(tmp); - } - else { - ctx->api_host = flb_strdup(p); - ctx->api_port = FLB_API_PORT; - } - } - - snprintf(ctx->kube_url, sizeof(ctx->kube_url) - 1, - "%s://%s:%i", - ctx->api_https ? "https" : "http", - ctx->api_host, ctx->api_port); - - if (ctx->kube_meta_cache_ttl > 0) { - ctx->hash_table = flb_hash_table_create_with_ttl(ctx->kube_meta_cache_ttl, - FLB_HASH_TABLE_EVICT_OLDER, - FLB_HASH_TABLE_SIZE, - FLB_HASH_TABLE_SIZE); - } - else { - ctx->hash_table = flb_hash_table_create(FLB_HASH_TABLE_EVICT_RANDOM, - FLB_HASH_TABLE_SIZE, - FLB_HASH_TABLE_SIZE); - } - - if (!ctx->hash_table) { - flb_kube_conf_destroy(ctx); - return NULL; - } - - /* Merge log buffer */ - if (ctx->merge_log == FLB_TRUE) { - ctx->unesc_buf = flb_malloc(FLB_MERGE_BUF_SIZE); - ctx->unesc_buf_size = FLB_MERGE_BUF_SIZE; - } - - /* Custom Regex */ - tmp = flb_filter_get_property("regex_parser", ins); - if (tmp) { - /* Get custom parser */ - ctx->parser = flb_parser_get(tmp, config); - if (!ctx->parser) { - flb_plg_error(ctx->ins, "invalid parser '%s'", tmp); - flb_kube_conf_destroy(ctx); - return NULL; - } - - /* Force to regex parser */ - if (ctx->parser->type != FLB_PARSER_REGEX) { - flb_plg_error(ctx->ins, "invalid parser type '%s'", tmp); - flb_kube_conf_destroy(ctx); - return NULL; - } - else { - ctx->regex = ctx->parser->regex; - } - } - - if (!ctx->use_tag_for_meta) { - flb_plg_info(ctx->ins, "https=%i host=%s port=%i", - ctx->api_https, ctx->api_host, ctx->api_port); - } - return ctx; -} - -void flb_kube_conf_destroy(struct flb_kube *ctx) -{ - if (ctx == NULL) { - return; - } - - if (ctx->hash_table) { - flb_hash_table_destroy(ctx->hash_table); - } - - if (ctx->merge_log == FLB_TRUE) { - flb_free(ctx->unesc_buf); - } - - /* Destroy regex content only if a parser was not defined */ - if (ctx->parser == NULL && ctx->regex) { - flb_regex_destroy(ctx->regex); - } - - flb_free(ctx->api_host); - flb_free(ctx->token); - flb_free(ctx->namespace); - flb_free(ctx->podname); - flb_free(ctx->auth); - - if (ctx->upstream) { - flb_upstream_destroy(ctx->upstream); - } - -#ifdef FLB_HAVE_TLS - if (ctx->tls) { - flb_tls_destroy(ctx->tls); - } -#endif - - flb_free(ctx); -} |