From 7efe0940d854c48219c11c89efadff7c7923bd3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patryk=20Ma=C5=82ek?= Date: Tue, 3 Nov 2020 16:55:06 +0100 Subject: [PATCH 01/10] Create fields automatically in setup job --- .../sumologic/conf/setup/fields/fields.tf | 47 +++++++++++++++++++ .../conf/setup/fields/main_fields.tf | 5 ++ deploy/helm/sumologic/conf/setup/setup.sh | 29 ++++++++++-- deploy/helm/sumologic/templates/NOTES.txt | 6 ++- .../templates/setup/setup-configmap.yaml | 1 + 5 files changed, 84 insertions(+), 4 deletions(-) create mode 100644 deploy/helm/sumologic/conf/setup/fields/fields.tf create mode 100644 deploy/helm/sumologic/conf/setup/fields/main_fields.tf mode change 100644 => 100755 deploy/helm/sumologic/conf/setup/setup.sh diff --git a/deploy/helm/sumologic/conf/setup/fields/fields.tf b/deploy/helm/sumologic/conf/setup/fields/fields.tf new file mode 100644 index 0000000000..b2c24330d3 --- /dev/null +++ b/deploy/helm/sumologic/conf/setup/fields/fields.tf @@ -0,0 +1,47 @@ +resource "sumologic_field" "cluster" { + field_name = "cluster" + data_type = "String" + state = "Enabled" +} + +resource "sumologic_field" "container" { + field_name = "container" + data_type = "String" + state = "Enabled" +} + +resource "sumologic_field" "deployment" { + field_name = "deployment" + data_type = "String" + state = "Enabled" +} + +resource "sumologic_field" "host" { + field_name = "host" + data_type = "String" + state = "Enabled" +} + +resource "sumologic_field" "namespace" { + field_name = "namespace" + data_type = "String" + state = "Enabled" +} + +resource "sumologic_field" "node" { + field_name = "node" + data_type = "String" + state = "Enabled" +} + +resource "sumologic_field" "pod" { + field_name = "pod" + data_type = "String" + state = "Enabled" +} + +resource "sumologic_field" "service" { + field_name = "service" + data_type = "String" + state = "Enabled" +} diff --git a/deploy/helm/sumologic/conf/setup/fields/main_fields.tf b/deploy/helm/sumologic/conf/setup/fields/main_fields.tf new file mode 100644 index 0000000000..092e8f7759 --- /dev/null +++ b/deploy/helm/sumologic/conf/setup/fields/main_fields.tf @@ -0,0 +1,5 @@ +terraform { + required_providers { + sumologic = "~> 2.3.0" + } +} diff --git a/deploy/helm/sumologic/conf/setup/setup.sh b/deploy/helm/sumologic/conf/setup/setup.sh old mode 100644 new mode 100755 index 7b7aba05b3..5f5cacdc00 --- a/deploy/helm/sumologic/conf/setup/setup.sh +++ b/deploy/helm/sumologic/conf/setup/setup.sh @@ -1,15 +1,25 @@ #!/bin/bash -cp /etc/terraform/{locals,main,providers,resources,variables}.tf /terraform -cd /terraform # Fix URL to remove "v1" or "v1/" export SUMOLOGIC_BASE_URL=${SUMOLOGIC_BASE_URL%v1*} - # Support proxy for terraform export HTTP_PROXY=${HTTP_PROXY:=""} export HTTPS_PROXY=${HTTPS_PROXY:=""} export NO_PROXY=${NO_PROXY:=""} +function remaining_fields() { + readonly RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields/quota)" + + echo "${RESPONSE}" | jq '.remaining' +} + +mkdir /terraform/fields/ +cp /etc/terraform/{locals,main,providers,resources,variables}.tf /terraform/ +cp /etc/terraform/{main_fields,fields}.tf /terraform/fields/ +cd /terraform + COLLECTOR_NAME="{{- if .Values.sumologic.collectorName }}{{ .Values.sumologic.collectorName }}{{- else}}{{ .Values.sumologic.clusterName }}{{- end}}" terraform init @@ -32,6 +42,19 @@ terraform import kubernetes_secret.sumologic_collection_secret {{ .Release.Names terraform apply -auto-approve +# Fields +# +# Check if we have at least 10 fields remaining after we would +# create 8 additional fields for the collection +readonly REMAINING=$(remaining_fields) +if [[ $(( REMAINING - 8 )) -ge -10 ]] ; then + echo "Creating fields..." + ( cd fields && terraform destroy -auto-approve ) +else + printf "Couldn't automatically create fields\n" + printf "There's only %s remaining and collection requires at least 8\n" "${REMAINING}" +fi + # Cleanup env variables export SUMOLOGIC_BASE_URL= export SUMOLOGIC_ACCESSKEY= diff --git a/deploy/helm/sumologic/templates/NOTES.txt b/deploy/helm/sumologic/templates/NOTES.txt index 6fb7489259..922752a9d5 100644 --- a/deploy/helm/sumologic/templates/NOTES.txt +++ b/deploy/helm/sumologic/templates/NOTES.txt @@ -11,4 +11,8 @@ Check the release status by running: {{- if eq .Values.fluentd.persistence.enabled false }} WARNING: File persistence for fluentd is disabled. This might lead to loss of data in case of memory buffer overflow. We recommend turning this property on for production environments by setting fluentd.persistence.enabled=true -{{- end }} \ No newline at end of file +{{- end }} + +We've tried to automatically create fields. In an unlikely scenario that this +fails please refer to the following to create them manually: +https://github.com/SumoLogic/sumologic-kubernetes-collection/blob/2b3ca63/deploy/docs/Installation_with_Helm.md#prerequisite diff --git a/deploy/helm/sumologic/templates/setup/setup-configmap.yaml b/deploy/helm/sumologic/templates/setup/setup-configmap.yaml index 32f0caf034..a7e52f8ef7 100644 --- a/deploy/helm/sumologic/templates/setup/setup-configmap.yaml +++ b/deploy/helm/sumologic/templates/setup/setup-configmap.yaml @@ -10,4 +10,5 @@ metadata: {{- include "sumologic.labels.common" . | nindent 4 }} data: {{- (tpl (.Files.Glob "conf/setup/*").AsConfig .) | nindent 2 }} + {{- (.Files.Glob "conf/setup/fields/*.tf").AsConfig | nindent 2 }} {{- end }} From d7df24daeee990b48acfa22a832d244570ace51b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patryk=20Ma=C5=82ek?= Date: Wed, 4 Nov 2020 17:57:50 +0100 Subject: [PATCH 02/10] Fix tests --- tests/terraform/static/all_fields.output.yaml | 179 ++++++++++++++++-- .../static/collector_fields.output.yaml | 175 +++++++++++++++-- .../static/conditional_sources.output.yaml | 135 ++++++++++++- tests/terraform/static/custom.output.yaml | 135 ++++++++++++- tests/terraform/static/default.output.yaml | 175 +++++++++++++++-- .../disable_default_metrics.output.yaml | 171 +++++++++++++++-- .../static/strip_extrapolation.output.yaml | 175 +++++++++++++++-- tests/terraform/static/traces.output.yaml | 139 +++++++++++++- 8 files changed, 1169 insertions(+), 115 deletions(-) diff --git a/tests/terraform/static/all_fields.output.yaml b/tests/terraform/static/all_fields.output.yaml index 6850283ec6..dcc027ff27 100644 --- a/tests/terraform/static/all_fields.output.yaml +++ b/tests/terraform/static/all_fields.output.yaml @@ -49,6 +49,70 @@ data: done cd "${target}" && bash setup.sh done + fields.tf: | + resource "sumologic_field" "cluster" { + count = var.create_fields ? 1 : 0 + + field_name = "cluster" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "container" { + count = var.create_fields ? 1 : 0 + + field_name = "container" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "deployment" { + count = var.create_fields ? 1 : 0 + + field_name = "deployment" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "host" { + count = var.create_fields ? 1 : 0 + + field_name = "host" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "namespace" { + count = var.create_fields ? 1 : 0 + + field_name = "namespace" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "node" { + count = var.create_fields ? 1 : 0 + + field_name = "node" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "pod" { + count = var.create_fields ? 1 : 0 + + field_name = "pod" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "service" { + count = var.create_fields ? 1 : 0 + + field_name = "service" + data_type = "String" + state = "Enabled" + } locals.tf: | locals { default_events_source = "events" @@ -208,39 +272,111 @@ data: } setup.sh: | #!/bin/bash - cp /etc/terraform/{locals,main,providers,resources,variables}.tf /terraform - cd /terraform # Fix URL to remove "v1" or "v1/" export SUMOLOGIC_BASE_URL=${SUMOLOGIC_BASE_URL%v1*} - # Support proxy for terraform export HTTP_PROXY=${HTTP_PROXY:=""} export HTTPS_PROXY=${HTTPS_PROXY:=""} export NO_PROXY=${NO_PROXY:=""} + function remaining_fields() { + local RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields/quota)" + + echo "${RESPONSE}" | jq '.remaining' + } + + # Check if we'd have at least 10 fields remaining after 8 additional fields + # would be created for the collection + function should_create_fields() { + local REMAINING=$(remaining_fields) + if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then + echo 1 + else + echo 0 + fi + } + + cp /etc/terraform/{locals,main,providers,resources,variables,fields}.tf /terraform/ + cd /terraform + COLLECTOR_NAME="kubernetes" terraform init - # Sumo Collector and HTTP sources - terraform import sumologic_collector.collector "$COLLECTOR_NAME" - terraform import sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" - terraform import sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" - terraform import sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" - terraform import sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" - terraform import sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" - terraform import sumologic_http_source.default_metrics_source "$COLLECTOR_NAME/(default-metrics)" - terraform import sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" - terraform import sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" - terraform import sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" - terraform import sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" - terraform import sumologic_http_source.test_source_metrics_source "$COLLECTOR_NAME/(Test source)" + # Sumo Logic fields + readonly CREATE_FIELDS="$(should_create_fields)" + if [[ "${CREATE_FIELDS}" -eq 0 ]]; then + echo "Couldn't automatically create fields\n" + echo "There's not enough fields which we could use for collection fields creation" + echo "Please free some of them and rerun the setup job" + else + readonly FIELDS_RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" + + declare -ra FIELDS=("cluster" "container" "deployment" "host" "namespace" "node" "pod" "service") + for FIELD in "${FIELDS[@]}" ; do + FIELD_ID=$( echo "${FIELDS_RESPONSE}" | jq -r "select(.fieldName == \"${FIELD}\") | .fieldId" ) + # Don't try to import non existing fields + if [[ -z "${FIELD_ID}" ]]; then + continue + fi + + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_field."${FIELD}" "${FIELD_ID}" + done + fi + + # Sumo Logic Collector and HTTP sources + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_collector.collector "$COLLECTOR_NAME" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.default_metrics_source "$COLLECTOR_NAME/(default-metrics)" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.test_source_metrics_source "$COLLECTOR_NAME/(Test source)" # Kubernetes Secret - terraform import kubernetes_secret.sumologic_collection_secret sumologic/sumologic + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + kubernetes_secret.sumologic_collection_secret sumologic/sumologic - terraform apply -auto-approve + # Apply planned changes + terraform apply -auto-approve \ + -var="create_fields=${CREATE_FIELDS}" # Cleanup env variables export SUMOLOGIC_BASE_URL= @@ -248,7 +384,7 @@ data: export SUMOLOGIC_ACCESSID= bash /etc/terraform/custom.sh - variables.tf: |- + variables.tf: | variable "cluster_name" { type = string default = "kubernetes" @@ -263,3 +399,8 @@ data: type = string default = "sumologic" } + + variable "create_fields" { + description = "If set, terraform will attempt to create fields at Sumo Logic" + type = bool + } diff --git a/tests/terraform/static/collector_fields.output.yaml b/tests/terraform/static/collector_fields.output.yaml index dfa820d56d..2eb5d1cd72 100644 --- a/tests/terraform/static/collector_fields.output.yaml +++ b/tests/terraform/static/collector_fields.output.yaml @@ -49,6 +49,70 @@ data: done cd "${target}" && bash setup.sh done + fields.tf: | + resource "sumologic_field" "cluster" { + count = var.create_fields ? 1 : 0 + + field_name = "cluster" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "container" { + count = var.create_fields ? 1 : 0 + + field_name = "container" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "deployment" { + count = var.create_fields ? 1 : 0 + + field_name = "deployment" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "host" { + count = var.create_fields ? 1 : 0 + + field_name = "host" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "namespace" { + count = var.create_fields ? 1 : 0 + + field_name = "namespace" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "node" { + count = var.create_fields ? 1 : 0 + + field_name = "node" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "pod" { + count = var.create_fields ? 1 : 0 + + field_name = "pod" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "service" { + count = var.create_fields ? 1 : 0 + + field_name = "service" + data_type = "String" + state = "Enabled" + } locals.tf: | locals { default_events_source = "events" @@ -163,38 +227,108 @@ data: } setup.sh: | #!/bin/bash - cp /etc/terraform/{locals,main,providers,resources,variables}.tf /terraform - cd /terraform # Fix URL to remove "v1" or "v1/" export SUMOLOGIC_BASE_URL=${SUMOLOGIC_BASE_URL%v1*} - # Support proxy for terraform export HTTP_PROXY=${HTTP_PROXY:=""} export HTTPS_PROXY=${HTTPS_PROXY:=""} export NO_PROXY=${NO_PROXY:=""} + function remaining_fields() { + local RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields/quota)" + + echo "${RESPONSE}" | jq '.remaining' + } + + # Check if we'd have at least 10 fields remaining after 8 additional fields + # would be created for the collection + function should_create_fields() { + local REMAINING=$(remaining_fields) + if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then + echo 1 + else + echo 0 + fi + } + + cp /etc/terraform/{locals,main,providers,resources,variables,fields}.tf /terraform/ + cd /terraform + COLLECTOR_NAME="kubernetes" terraform init - # Sumo Collector and HTTP sources - terraform import sumologic_collector.collector "$COLLECTOR_NAME" - terraform import sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" - terraform import sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" - terraform import sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" - terraform import sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" - terraform import sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" - terraform import sumologic_http_source.default_metrics_source "$COLLECTOR_NAME/(default-metrics)" - terraform import sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" - terraform import sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" - terraform import sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" - terraform import sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" + # Sumo Logic fields + readonly CREATE_FIELDS="$(should_create_fields)" + if [[ "${CREATE_FIELDS}" -eq 0 ]]; then + echo "Couldn't automatically create fields\n" + echo "There's not enough fields which we could use for collection fields creation" + echo "Please free some of them and rerun the setup job" + else + readonly FIELDS_RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" + + declare -ra FIELDS=("cluster" "container" "deployment" "host" "namespace" "node" "pod" "service") + for FIELD in "${FIELDS[@]}" ; do + FIELD_ID=$( echo "${FIELDS_RESPONSE}" | jq -r "select(.fieldName == \"${FIELD}\") | .fieldId" ) + # Don't try to import non existing fields + if [[ -z "${FIELD_ID}" ]]; then + continue + fi + + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_field."${FIELD}" "${FIELD_ID}" + done + fi + + # Sumo Logic Collector and HTTP sources + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_collector.collector "$COLLECTOR_NAME" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.default_metrics_source "$COLLECTOR_NAME/(default-metrics)" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" # Kubernetes Secret - terraform import kubernetes_secret.sumologic_collection_secret sumologic/sumologic + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + kubernetes_secret.sumologic_collection_secret sumologic/sumologic - terraform apply -auto-approve + # Apply planned changes + terraform apply -auto-approve \ + -var="create_fields=${CREATE_FIELDS}" # Cleanup env variables export SUMOLOGIC_BASE_URL= @@ -202,7 +336,7 @@ data: export SUMOLOGIC_ACCESSID= bash /etc/terraform/custom.sh - variables.tf: |- + variables.tf: | variable "cluster_name" { type = string default = "kubernetes" @@ -217,3 +351,8 @@ data: type = string default = "sumologic" } + + variable "create_fields" { + description = "If set, terraform will attempt to create fields at Sumo Logic" + type = bool + } diff --git a/tests/terraform/static/conditional_sources.output.yaml b/tests/terraform/static/conditional_sources.output.yaml index 56352b43ab..778d5dfa08 100644 --- a/tests/terraform/static/conditional_sources.output.yaml +++ b/tests/terraform/static/conditional_sources.output.yaml @@ -49,6 +49,70 @@ data: done cd "${target}" && bash setup.sh done + fields.tf: | + resource "sumologic_field" "cluster" { + count = var.create_fields ? 1 : 0 + + field_name = "cluster" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "container" { + count = var.create_fields ? 1 : 0 + + field_name = "container" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "deployment" { + count = var.create_fields ? 1 : 0 + + field_name = "deployment" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "host" { + count = var.create_fields ? 1 : 0 + + field_name = "host" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "namespace" { + count = var.create_fields ? 1 : 0 + + field_name = "namespace" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "node" { + count = var.create_fields ? 1 : 0 + + field_name = "node" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "pod" { + count = var.create_fields ? 1 : 0 + + field_name = "pod" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "service" { + count = var.create_fields ? 1 : 0 + + field_name = "service" + data_type = "String" + state = "Enabled" + } locals.tf: | locals { } @@ -90,28 +154,78 @@ data: } setup.sh: | #!/bin/bash - cp /etc/terraform/{locals,main,providers,resources,variables}.tf /terraform - cd /terraform # Fix URL to remove "v1" or "v1/" export SUMOLOGIC_BASE_URL=${SUMOLOGIC_BASE_URL%v1*} - # Support proxy for terraform export HTTP_PROXY=${HTTP_PROXY:=""} export HTTPS_PROXY=${HTTPS_PROXY:=""} export NO_PROXY=${NO_PROXY:=""} + function remaining_fields() { + local RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields/quota)" + + echo "${RESPONSE}" | jq '.remaining' + } + + # Check if we'd have at least 10 fields remaining after 8 additional fields + # would be created for the collection + function should_create_fields() { + local REMAINING=$(remaining_fields) + if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then + echo 1 + else + echo 0 + fi + } + + cp /etc/terraform/{locals,main,providers,resources,variables,fields}.tf /terraform/ + cd /terraform + COLLECTOR_NAME="kubernetes" terraform init - # Sumo Collector and HTTP sources - terraform import sumologic_collector.collector "$COLLECTOR_NAME" + # Sumo Logic fields + readonly CREATE_FIELDS="$(should_create_fields)" + if [[ "${CREATE_FIELDS}" -eq 0 ]]; then + echo "Couldn't automatically create fields\n" + echo "There's not enough fields which we could use for collection fields creation" + echo "Please free some of them and rerun the setup job" + else + readonly FIELDS_RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" + + declare -ra FIELDS=("cluster" "container" "deployment" "host" "namespace" "node" "pod" "service") + for FIELD in "${FIELDS[@]}" ; do + FIELD_ID=$( echo "${FIELDS_RESPONSE}" | jq -r "select(.fieldName == \"${FIELD}\") | .fieldId" ) + # Don't try to import non existing fields + if [[ -z "${FIELD_ID}" ]]; then + continue + fi + + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_field."${FIELD}" "${FIELD_ID}" + done + fi + + # Sumo Logic Collector and HTTP sources + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_collector.collector "$COLLECTOR_NAME" # Kubernetes Secret - terraform import kubernetes_secret.sumologic_collection_secret sumologic/sumologic + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + kubernetes_secret.sumologic_collection_secret sumologic/sumologic - terraform apply -auto-approve + # Apply planned changes + terraform apply -auto-approve \ + -var="create_fields=${CREATE_FIELDS}" # Cleanup env variables export SUMOLOGIC_BASE_URL= @@ -119,7 +233,7 @@ data: export SUMOLOGIC_ACCESSID= bash /etc/terraform/custom.sh - variables.tf: |- + variables.tf: | variable "cluster_name" { type = string default = "kubernetes" @@ -134,3 +248,8 @@ data: type = string default = "sumologic" } + + variable "create_fields" { + description = "If set, terraform will attempt to create fields at Sumo Logic" + type = bool + } diff --git a/tests/terraform/static/custom.output.yaml b/tests/terraform/static/custom.output.yaml index 56352b43ab..778d5dfa08 100644 --- a/tests/terraform/static/custom.output.yaml +++ b/tests/terraform/static/custom.output.yaml @@ -49,6 +49,70 @@ data: done cd "${target}" && bash setup.sh done + fields.tf: | + resource "sumologic_field" "cluster" { + count = var.create_fields ? 1 : 0 + + field_name = "cluster" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "container" { + count = var.create_fields ? 1 : 0 + + field_name = "container" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "deployment" { + count = var.create_fields ? 1 : 0 + + field_name = "deployment" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "host" { + count = var.create_fields ? 1 : 0 + + field_name = "host" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "namespace" { + count = var.create_fields ? 1 : 0 + + field_name = "namespace" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "node" { + count = var.create_fields ? 1 : 0 + + field_name = "node" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "pod" { + count = var.create_fields ? 1 : 0 + + field_name = "pod" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "service" { + count = var.create_fields ? 1 : 0 + + field_name = "service" + data_type = "String" + state = "Enabled" + } locals.tf: | locals { } @@ -90,28 +154,78 @@ data: } setup.sh: | #!/bin/bash - cp /etc/terraform/{locals,main,providers,resources,variables}.tf /terraform - cd /terraform # Fix URL to remove "v1" or "v1/" export SUMOLOGIC_BASE_URL=${SUMOLOGIC_BASE_URL%v1*} - # Support proxy for terraform export HTTP_PROXY=${HTTP_PROXY:=""} export HTTPS_PROXY=${HTTPS_PROXY:=""} export NO_PROXY=${NO_PROXY:=""} + function remaining_fields() { + local RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields/quota)" + + echo "${RESPONSE}" | jq '.remaining' + } + + # Check if we'd have at least 10 fields remaining after 8 additional fields + # would be created for the collection + function should_create_fields() { + local REMAINING=$(remaining_fields) + if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then + echo 1 + else + echo 0 + fi + } + + cp /etc/terraform/{locals,main,providers,resources,variables,fields}.tf /terraform/ + cd /terraform + COLLECTOR_NAME="kubernetes" terraform init - # Sumo Collector and HTTP sources - terraform import sumologic_collector.collector "$COLLECTOR_NAME" + # Sumo Logic fields + readonly CREATE_FIELDS="$(should_create_fields)" + if [[ "${CREATE_FIELDS}" -eq 0 ]]; then + echo "Couldn't automatically create fields\n" + echo "There's not enough fields which we could use for collection fields creation" + echo "Please free some of them and rerun the setup job" + else + readonly FIELDS_RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" + + declare -ra FIELDS=("cluster" "container" "deployment" "host" "namespace" "node" "pod" "service") + for FIELD in "${FIELDS[@]}" ; do + FIELD_ID=$( echo "${FIELDS_RESPONSE}" | jq -r "select(.fieldName == \"${FIELD}\") | .fieldId" ) + # Don't try to import non existing fields + if [[ -z "${FIELD_ID}" ]]; then + continue + fi + + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_field."${FIELD}" "${FIELD_ID}" + done + fi + + # Sumo Logic Collector and HTTP sources + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_collector.collector "$COLLECTOR_NAME" # Kubernetes Secret - terraform import kubernetes_secret.sumologic_collection_secret sumologic/sumologic + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + kubernetes_secret.sumologic_collection_secret sumologic/sumologic - terraform apply -auto-approve + # Apply planned changes + terraform apply -auto-approve \ + -var="create_fields=${CREATE_FIELDS}" # Cleanup env variables export SUMOLOGIC_BASE_URL= @@ -119,7 +233,7 @@ data: export SUMOLOGIC_ACCESSID= bash /etc/terraform/custom.sh - variables.tf: |- + variables.tf: | variable "cluster_name" { type = string default = "kubernetes" @@ -134,3 +248,8 @@ data: type = string default = "sumologic" } + + variable "create_fields" { + description = "If set, terraform will attempt to create fields at Sumo Logic" + type = bool + } diff --git a/tests/terraform/static/default.output.yaml b/tests/terraform/static/default.output.yaml index 445a6a9896..56d10267e2 100644 --- a/tests/terraform/static/default.output.yaml +++ b/tests/terraform/static/default.output.yaml @@ -49,6 +49,70 @@ data: done cd "${target}" && bash setup.sh done + fields.tf: | + resource "sumologic_field" "cluster" { + count = var.create_fields ? 1 : 0 + + field_name = "cluster" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "container" { + count = var.create_fields ? 1 : 0 + + field_name = "container" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "deployment" { + count = var.create_fields ? 1 : 0 + + field_name = "deployment" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "host" { + count = var.create_fields ? 1 : 0 + + field_name = "host" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "namespace" { + count = var.create_fields ? 1 : 0 + + field_name = "namespace" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "node" { + count = var.create_fields ? 1 : 0 + + field_name = "node" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "pod" { + count = var.create_fields ? 1 : 0 + + field_name = "pod" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "service" { + count = var.create_fields ? 1 : 0 + + field_name = "service" + data_type = "String" + state = "Enabled" + } locals.tf: | locals { default_events_source = "events" @@ -161,38 +225,108 @@ data: } setup.sh: | #!/bin/bash - cp /etc/terraform/{locals,main,providers,resources,variables}.tf /terraform - cd /terraform # Fix URL to remove "v1" or "v1/" export SUMOLOGIC_BASE_URL=${SUMOLOGIC_BASE_URL%v1*} - # Support proxy for terraform export HTTP_PROXY=${HTTP_PROXY:=""} export HTTPS_PROXY=${HTTPS_PROXY:=""} export NO_PROXY=${NO_PROXY:=""} + function remaining_fields() { + local RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields/quota)" + + echo "${RESPONSE}" | jq '.remaining' + } + + # Check if we'd have at least 10 fields remaining after 8 additional fields + # would be created for the collection + function should_create_fields() { + local REMAINING=$(remaining_fields) + if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then + echo 1 + else + echo 0 + fi + } + + cp /etc/terraform/{locals,main,providers,resources,variables,fields}.tf /terraform/ + cd /terraform + COLLECTOR_NAME="kubernetes" terraform init - # Sumo Collector and HTTP sources - terraform import sumologic_collector.collector "$COLLECTOR_NAME" - terraform import sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" - terraform import sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" - terraform import sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" - terraform import sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" - terraform import sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" - terraform import sumologic_http_source.default_metrics_source "$COLLECTOR_NAME/(default-metrics)" - terraform import sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" - terraform import sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" - terraform import sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" - terraform import sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" + # Sumo Logic fields + readonly CREATE_FIELDS="$(should_create_fields)" + if [[ "${CREATE_FIELDS}" -eq 0 ]]; then + echo "Couldn't automatically create fields\n" + echo "There's not enough fields which we could use for collection fields creation" + echo "Please free some of them and rerun the setup job" + else + readonly FIELDS_RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" + + declare -ra FIELDS=("cluster" "container" "deployment" "host" "namespace" "node" "pod" "service") + for FIELD in "${FIELDS[@]}" ; do + FIELD_ID=$( echo "${FIELDS_RESPONSE}" | jq -r "select(.fieldName == \"${FIELD}\") | .fieldId" ) + # Don't try to import non existing fields + if [[ -z "${FIELD_ID}" ]]; then + continue + fi + + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_field."${FIELD}" "${FIELD_ID}" + done + fi + + # Sumo Logic Collector and HTTP sources + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_collector.collector "$COLLECTOR_NAME" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.default_metrics_source "$COLLECTOR_NAME/(default-metrics)" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" # Kubernetes Secret - terraform import kubernetes_secret.sumologic_collection_secret sumologic/sumologic + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + kubernetes_secret.sumologic_collection_secret sumologic/sumologic - terraform apply -auto-approve + # Apply planned changes + terraform apply -auto-approve \ + -var="create_fields=${CREATE_FIELDS}" # Cleanup env variables export SUMOLOGIC_BASE_URL= @@ -200,7 +334,7 @@ data: export SUMOLOGIC_ACCESSID= bash /etc/terraform/custom.sh - variables.tf: |- + variables.tf: | variable "cluster_name" { type = string default = "kubernetes" @@ -215,3 +349,8 @@ data: type = string default = "sumologic" } + + variable "create_fields" { + description = "If set, terraform will attempt to create fields at Sumo Logic" + type = bool + } diff --git a/tests/terraform/static/disable_default_metrics.output.yaml b/tests/terraform/static/disable_default_metrics.output.yaml index 5b69cd32ef..546ff261fe 100644 --- a/tests/terraform/static/disable_default_metrics.output.yaml +++ b/tests/terraform/static/disable_default_metrics.output.yaml @@ -49,6 +49,70 @@ data: done cd "${target}" && bash setup.sh done + fields.tf: | + resource "sumologic_field" "cluster" { + count = var.create_fields ? 1 : 0 + + field_name = "cluster" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "container" { + count = var.create_fields ? 1 : 0 + + field_name = "container" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "deployment" { + count = var.create_fields ? 1 : 0 + + field_name = "deployment" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "host" { + count = var.create_fields ? 1 : 0 + + field_name = "host" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "namespace" { + count = var.create_fields ? 1 : 0 + + field_name = "namespace" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "node" { + count = var.create_fields ? 1 : 0 + + field_name = "node" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "pod" { + count = var.create_fields ? 1 : 0 + + field_name = "pod" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "service" { + count = var.create_fields ? 1 : 0 + + field_name = "service" + data_type = "String" + state = "Enabled" + } locals.tf: | locals { default_events_source = "events" @@ -154,37 +218,105 @@ data: } setup.sh: | #!/bin/bash - cp /etc/terraform/{locals,main,providers,resources,variables}.tf /terraform - cd /terraform # Fix URL to remove "v1" or "v1/" export SUMOLOGIC_BASE_URL=${SUMOLOGIC_BASE_URL%v1*} - # Support proxy for terraform export HTTP_PROXY=${HTTP_PROXY:=""} export HTTPS_PROXY=${HTTPS_PROXY:=""} export NO_PROXY=${NO_PROXY:=""} + function remaining_fields() { + local RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields/quota)" + + echo "${RESPONSE}" | jq '.remaining' + } + + # Check if we'd have at least 10 fields remaining after 8 additional fields + # would be created for the collection + function should_create_fields() { + local REMAINING=$(remaining_fields) + if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then + echo 1 + else + echo 0 + fi + } + + cp /etc/terraform/{locals,main,providers,resources,variables,fields}.tf /terraform/ + cd /terraform + COLLECTOR_NAME="kubernetes" terraform init - # Sumo Collector and HTTP sources - terraform import sumologic_collector.collector "$COLLECTOR_NAME" - terraform import sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" - terraform import sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" - terraform import sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" - terraform import sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" - terraform import sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" - terraform import sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" - terraform import sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" - terraform import sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" - terraform import sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" + # Sumo Logic fields + readonly CREATE_FIELDS="$(should_create_fields)" + if [[ "${CREATE_FIELDS}" -eq 0 ]]; then + echo "Couldn't automatically create fields\n" + echo "There's not enough fields which we could use for collection fields creation" + echo "Please free some of them and rerun the setup job" + else + readonly FIELDS_RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" + + declare -ra FIELDS=("cluster" "container" "deployment" "host" "namespace" "node" "pod" "service") + for FIELD in "${FIELDS[@]}" ; do + FIELD_ID=$( echo "${FIELDS_RESPONSE}" | jq -r "select(.fieldName == \"${FIELD}\") | .fieldId" ) + # Don't try to import non existing fields + if [[ -z "${FIELD_ID}" ]]; then + continue + fi + + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_field."${FIELD}" "${FIELD_ID}" + done + fi + + # Sumo Logic Collector and HTTP sources + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_collector.collector "$COLLECTOR_NAME" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" # Kubernetes Secret - terraform import kubernetes_secret.sumologic_collection_secret sumologic/sumologic + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + kubernetes_secret.sumologic_collection_secret sumologic/sumologic - terraform apply -auto-approve + # Apply planned changes + terraform apply -auto-approve \ + -var="create_fields=${CREATE_FIELDS}" # Cleanup env variables export SUMOLOGIC_BASE_URL= @@ -192,7 +324,7 @@ data: export SUMOLOGIC_ACCESSID= bash /etc/terraform/custom.sh - variables.tf: |- + variables.tf: | variable "cluster_name" { type = string default = "kubernetes" @@ -207,3 +339,8 @@ data: type = string default = "sumologic" } + + variable "create_fields" { + description = "If set, terraform will attempt to create fields at Sumo Logic" + type = bool + } diff --git a/tests/terraform/static/strip_extrapolation.output.yaml b/tests/terraform/static/strip_extrapolation.output.yaml index 52d9520ded..3474a33554 100644 --- a/tests/terraform/static/strip_extrapolation.output.yaml +++ b/tests/terraform/static/strip_extrapolation.output.yaml @@ -49,6 +49,70 @@ data: done cd "${target}" && bash setup.sh done + fields.tf: | + resource "sumologic_field" "cluster" { + count = var.create_fields ? 1 : 0 + + field_name = "cluster" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "container" { + count = var.create_fields ? 1 : 0 + + field_name = "container" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "deployment" { + count = var.create_fields ? 1 : 0 + + field_name = "deployment" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "host" { + count = var.create_fields ? 1 : 0 + + field_name = "host" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "namespace" { + count = var.create_fields ? 1 : 0 + + field_name = "namespace" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "node" { + count = var.create_fields ? 1 : 0 + + field_name = "node" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "pod" { + count = var.create_fields ? 1 : 0 + + field_name = "pod" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "service" { + count = var.create_fields ? 1 : 0 + + field_name = "service" + data_type = "String" + state = "Enabled" + } locals.tf: | locals { default_events_source = "events" @@ -162,38 +226,108 @@ data: } setup.sh: | #!/bin/bash - cp /etc/terraform/{locals,main,providers,resources,variables}.tf /terraform - cd /terraform # Fix URL to remove "v1" or "v1/" export SUMOLOGIC_BASE_URL=${SUMOLOGIC_BASE_URL%v1*} - # Support proxy for terraform export HTTP_PROXY=${HTTP_PROXY:=""} export HTTPS_PROXY=${HTTPS_PROXY:=""} export NO_PROXY=${NO_PROXY:=""} + function remaining_fields() { + local RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields/quota)" + + echo "${RESPONSE}" | jq '.remaining' + } + + # Check if we'd have at least 10 fields remaining after 8 additional fields + # would be created for the collection + function should_create_fields() { + local REMAINING=$(remaining_fields) + if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then + echo 1 + else + echo 0 + fi + } + + cp /etc/terraform/{locals,main,providers,resources,variables,fields}.tf /terraform/ + cd /terraform + COLLECTOR_NAME="kubernetes" terraform init - # Sumo Collector and HTTP sources - terraform import sumologic_collector.collector "$COLLECTOR_NAME" - terraform import sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" - terraform import sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" - terraform import sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" - terraform import sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" - terraform import sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" - terraform import sumologic_http_source.default_metrics_source "$COLLECTOR_NAME/(default-metrics)" - terraform import sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" - terraform import sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" - terraform import sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" - terraform import sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" + # Sumo Logic fields + readonly CREATE_FIELDS="$(should_create_fields)" + if [[ "${CREATE_FIELDS}" -eq 0 ]]; then + echo "Couldn't automatically create fields\n" + echo "There's not enough fields which we could use for collection fields creation" + echo "Please free some of them and rerun the setup job" + else + readonly FIELDS_RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" + + declare -ra FIELDS=("cluster" "container" "deployment" "host" "namespace" "node" "pod" "service") + for FIELD in "${FIELDS[@]}" ; do + FIELD_ID=$( echo "${FIELDS_RESPONSE}" | jq -r "select(.fieldName == \"${FIELD}\") | .fieldId" ) + # Don't try to import non existing fields + if [[ -z "${FIELD_ID}" ]]; then + continue + fi + + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_field."${FIELD}" "${FIELD_ID}" + done + fi + + # Sumo Logic Collector and HTTP sources + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_collector.collector "$COLLECTOR_NAME" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.default_metrics_source "$COLLECTOR_NAME/(default-metrics)" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" # Kubernetes Secret - terraform import kubernetes_secret.sumologic_collection_secret sumologic/sumologic + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + kubernetes_secret.sumologic_collection_secret sumologic/sumologic - terraform apply -auto-approve + # Apply planned changes + terraform apply -auto-approve \ + -var="create_fields=${CREATE_FIELDS}" # Cleanup env variables export SUMOLOGIC_BASE_URL= @@ -201,7 +335,7 @@ data: export SUMOLOGIC_ACCESSID= bash /etc/terraform/custom.sh - variables.tf: |- + variables.tf: | variable "cluster_name" { type = string default = "kubernetes" @@ -216,3 +350,8 @@ data: type = string default = "sumologic" } + + variable "create_fields" { + description = "If set, terraform will attempt to create fields at Sumo Logic" + type = bool + } diff --git a/tests/terraform/static/traces.output.yaml b/tests/terraform/static/traces.output.yaml index 278ff09236..4646bcdcdb 100644 --- a/tests/terraform/static/traces.output.yaml +++ b/tests/terraform/static/traces.output.yaml @@ -49,6 +49,70 @@ data: done cd "${target}" && bash setup.sh done + fields.tf: | + resource "sumologic_field" "cluster" { + count = var.create_fields ? 1 : 0 + + field_name = "cluster" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "container" { + count = var.create_fields ? 1 : 0 + + field_name = "container" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "deployment" { + count = var.create_fields ? 1 : 0 + + field_name = "deployment" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "host" { + count = var.create_fields ? 1 : 0 + + field_name = "host" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "namespace" { + count = var.create_fields ? 1 : 0 + + field_name = "namespace" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "node" { + count = var.create_fields ? 1 : 0 + + field_name = "node" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "pod" { + count = var.create_fields ? 1 : 0 + + field_name = "pod" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "service" { + count = var.create_fields ? 1 : 0 + + field_name = "service" + data_type = "String" + state = "Enabled" + } locals.tf: | locals { default_traces_source = "traces" @@ -98,29 +162,81 @@ data: } setup.sh: | #!/bin/bash - cp /etc/terraform/{locals,main,providers,resources,variables}.tf /terraform - cd /terraform # Fix URL to remove "v1" or "v1/" export SUMOLOGIC_BASE_URL=${SUMOLOGIC_BASE_URL%v1*} - # Support proxy for terraform export HTTP_PROXY=${HTTP_PROXY:=""} export HTTPS_PROXY=${HTTPS_PROXY:=""} export NO_PROXY=${NO_PROXY:=""} + function remaining_fields() { + local RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields/quota)" + + echo "${RESPONSE}" | jq '.remaining' + } + + # Check if we'd have at least 10 fields remaining after 8 additional fields + # would be created for the collection + function should_create_fields() { + local REMAINING=$(remaining_fields) + if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then + echo 1 + else + echo 0 + fi + } + + cp /etc/terraform/{locals,main,providers,resources,variables,fields}.tf /terraform/ + cd /terraform + COLLECTOR_NAME="kubernetes" terraform init - # Sumo Collector and HTTP sources - terraform import sumologic_collector.collector "$COLLECTOR_NAME" - terraform import sumologic_http_source.default_traces_source "$COLLECTOR_NAME/traces" + # Sumo Logic fields + readonly CREATE_FIELDS="$(should_create_fields)" + if [[ "${CREATE_FIELDS}" -eq 0 ]]; then + echo "Couldn't automatically create fields\n" + echo "There's not enough fields which we could use for collection fields creation" + echo "Please free some of them and rerun the setup job" + else + readonly FIELDS_RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" + + declare -ra FIELDS=("cluster" "container" "deployment" "host" "namespace" "node" "pod" "service") + for FIELD in "${FIELDS[@]}" ; do + FIELD_ID=$( echo "${FIELDS_RESPONSE}" | jq -r "select(.fieldName == \"${FIELD}\") | .fieldId" ) + # Don't try to import non existing fields + if [[ -z "${FIELD_ID}" ]]; then + continue + fi + + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_field."${FIELD}" "${FIELD_ID}" + done + fi + + # Sumo Logic Collector and HTTP sources + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_collector.collector "$COLLECTOR_NAME" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.default_traces_source "$COLLECTOR_NAME/traces" # Kubernetes Secret - terraform import kubernetes_secret.sumologic_collection_secret sumologic/sumologic + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + kubernetes_secret.sumologic_collection_secret sumologic/sumologic - terraform apply -auto-approve + # Apply planned changes + terraform apply -auto-approve \ + -var="create_fields=${CREATE_FIELDS}" # Cleanup env variables export SUMOLOGIC_BASE_URL= @@ -128,7 +244,7 @@ data: export SUMOLOGIC_ACCESSID= bash /etc/terraform/custom.sh - variables.tf: |- + variables.tf: | variable "cluster_name" { type = string default = "kubernetes" @@ -143,3 +259,8 @@ data: type = string default = "sumologic" } + + variable "create_fields" { + description = "If set, terraform will attempt to create fields at Sumo Logic" + type = bool + } From 59c962dd2ef8c0e14b01487d15c6aa63aa7f14cc Mon Sep 17 00:00:00 2001 From: Travis CI Date: Wed, 4 Nov 2020 20:08:03 +0000 Subject: [PATCH 03/10] Generate new 'setup-sumologic.yaml.tmpl' --- deploy/kubernetes/setup-sumologic.yaml.tmpl | 175 ++++++++++++++++++-- 1 file changed, 157 insertions(+), 18 deletions(-) diff --git a/deploy/kubernetes/setup-sumologic.yaml.tmpl b/deploy/kubernetes/setup-sumologic.yaml.tmpl index d72de07f9b..8dadbd162f 100644 --- a/deploy/kubernetes/setup-sumologic.yaml.tmpl +++ b/deploy/kubernetes/setup-sumologic.yaml.tmpl @@ -81,6 +81,70 @@ data: done cd "${target}" && bash setup.sh done + fields.tf: | + resource "sumologic_field" "cluster" { + count = var.create_fields ? 1 : 0 + + field_name = "cluster" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "container" { + count = var.create_fields ? 1 : 0 + + field_name = "container" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "deployment" { + count = var.create_fields ? 1 : 0 + + field_name = "deployment" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "host" { + count = var.create_fields ? 1 : 0 + + field_name = "host" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "namespace" { + count = var.create_fields ? 1 : 0 + + field_name = "namespace" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "node" { + count = var.create_fields ? 1 : 0 + + field_name = "node" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "pod" { + count = var.create_fields ? 1 : 0 + + field_name = "pod" + data_type = "String" + state = "Enabled" + } + + resource "sumologic_field" "service" { + count = var.create_fields ? 1 : 0 + + field_name = "service" + data_type = "String" + state = "Enabled" + } locals.tf: | locals { default_events_source = "events" @@ -193,38 +257,108 @@ data: } setup.sh: | #!/bin/bash - cp /etc/terraform/{locals,main,providers,resources,variables}.tf /terraform - cd /terraform # Fix URL to remove "v1" or "v1/" export SUMOLOGIC_BASE_URL=${SUMOLOGIC_BASE_URL%v1*} - # Support proxy for terraform export HTTP_PROXY=${HTTP_PROXY:=""} export HTTPS_PROXY=${HTTPS_PROXY:=""} export NO_PROXY=${NO_PROXY:=""} + function remaining_fields() { + local RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields/quota)" + + echo "${RESPONSE}" | jq '.remaining' + } + + # Check if we'd have at least 10 fields remaining after 8 additional fields + # would be created for the collection + function should_create_fields() { + local REMAINING=$(remaining_fields) + if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then + echo 1 + else + echo 0 + fi + } + + cp /etc/terraform/{locals,main,providers,resources,variables,fields}.tf /terraform/ + cd /terraform + COLLECTOR_NAME="$COLLECTOR_NAME" terraform init - # Sumo Collector and HTTP sources - terraform import sumologic_collector.collector "$COLLECTOR_NAME" - terraform import sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" - terraform import sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" - terraform import sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" - terraform import sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" - terraform import sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" - terraform import sumologic_http_source.default_metrics_source "$COLLECTOR_NAME/(default-metrics)" - terraform import sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" - terraform import sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" - terraform import sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" - terraform import sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" + # Sumo Logic fields + readonly CREATE_FIELDS="$(should_create_fields)" + if [[ "${CREATE_FIELDS}" -eq 0 ]]; then + echo "Couldn't automatically create fields\n" + echo "There's not enough fields which we could use for collection fields creation" + echo "Please free some of them and rerun the setup job" + else + readonly FIELDS_RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" + + declare -ra FIELDS=("cluster" "container" "deployment" "host" "namespace" "node" "pod" "service") + for FIELD in "${FIELDS[@]}" ; do + FIELD_ID=$( echo "${FIELDS_RESPONSE}" | jq -r "select(.fieldName == \"${FIELD}\") | .fieldId" ) + # Don't try to import non existing fields + if [[ -z "${FIELD_ID}" ]]; then + continue + fi + + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_field."${FIELD}" "${FIELD_ID}" + done + fi + + # Sumo Logic Collector and HTTP sources + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_collector.collector "$COLLECTOR_NAME" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.default_metrics_source "$COLLECTOR_NAME/(default-metrics)" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" # Kubernetes Secret - terraform import kubernetes_secret.sumologic_collection_secret $NAMESPACE/sumologic + terraform import \ + -var="create_fields=${CREATE_FIELDS}" \ + kubernetes_secret.sumologic_collection_secret $NAMESPACE/sumologic - terraform apply -auto-approve + # Apply planned changes + terraform apply -auto-approve \ + -var="create_fields=${CREATE_FIELDS}" # Cleanup env variables export SUMOLOGIC_BASE_URL= @@ -232,7 +366,7 @@ data: export SUMOLOGIC_ACCESSID= bash /etc/terraform/custom.sh - variables.tf: |- + variables.tf: | variable "cluster_name" { type = string default = "$CLUSTER_NAME" @@ -247,6 +381,11 @@ data: type = string default = "$NAMESPACE" } + + variable "create_fields" { + description = "If set, terraform will attempt to create fields at Sumo Logic" + type = bool + } --- # Source: sumologic/templates/setup/setup-custom-configmap.yaml apiVersion: v1 From f331e3a32ce48620df265235f1dc7aec7e971f04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patryk=20Ma=C5=82ek?= Date: Thu, 5 Nov 2020 12:29:02 +0100 Subject: [PATCH 04/10] Move fields list to values.yaml at sumologic.logs.fields --- deploy/helm/sumologic/conf/setup/fields.tf | 62 ++----------------- deploy/helm/sumologic/conf/setup/setup.sh | 2 +- deploy/helm/sumologic/templates/_helpers.tpl | 12 ++++ deploy/helm/sumologic/values.yaml | 13 ++++ tests/terraform/static/all_fields.output.yaml | 7 --- .../static/collector_fields.output.yaml | 7 --- .../static/conditional_sources.output.yaml | 7 --- tests/terraform/static/custom.output.yaml | 7 --- tests/terraform/static/default.output.yaml | 7 --- .../disable_default_metrics.output.yaml | 7 --- .../static/strip_extrapolation.output.yaml | 7 --- tests/terraform/static/traces.output.yaml | 7 --- 12 files changed, 30 insertions(+), 115 deletions(-) diff --git a/deploy/helm/sumologic/conf/setup/fields.tf b/deploy/helm/sumologic/conf/setup/fields.tf index 668eadf6b1..c2f782ba23 100644 --- a/deploy/helm/sumologic/conf/setup/fields.tf +++ b/deploy/helm/sumologic/conf/setup/fields.tf @@ -1,63 +1,9 @@ -resource "sumologic_field" "cluster" { +{{- range $value := .Values.sumologic.logs.fields }} +resource "sumologic_field" {{ $value | quote }} { count = var.create_fields ? 1 : 0 - field_name = "cluster" - data_type = "String" - state = "Enabled" -} - -resource "sumologic_field" "container" { - count = var.create_fields ? 1 : 0 - - field_name = "container" - data_type = "String" - state = "Enabled" -} - -resource "sumologic_field" "deployment" { - count = var.create_fields ? 1 : 0 - - field_name = "deployment" - data_type = "String" - state = "Enabled" -} - -resource "sumologic_field" "host" { - count = var.create_fields ? 1 : 0 - - field_name = "host" - data_type = "String" - state = "Enabled" -} - -resource "sumologic_field" "namespace" { - count = var.create_fields ? 1 : 0 - - field_name = "namespace" - data_type = "String" - state = "Enabled" -} - -resource "sumologic_field" "node" { - count = var.create_fields ? 1 : 0 - - field_name = "node" - data_type = "String" - state = "Enabled" -} - -resource "sumologic_field" "pod" { - count = var.create_fields ? 1 : 0 - - field_name = "pod" - data_type = "String" - state = "Enabled" -} - -resource "sumologic_field" "service" { - count = var.create_fields ? 1 : 0 - - field_name = "service" + field_name = {{ $value | quote }} data_type = "String" state = "Enabled" } +{{- end }} diff --git a/deploy/helm/sumologic/conf/setup/setup.sh b/deploy/helm/sumologic/conf/setup/setup.sh index 5a9a4e9de0..247b7f5cb1 100755 --- a/deploy/helm/sumologic/conf/setup/setup.sh +++ b/deploy/helm/sumologic/conf/setup/setup.sh @@ -44,7 +44,7 @@ else -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" - declare -ra FIELDS=("cluster" "container" "deployment" "host" "namespace" "node" "pod" "service") + declare -ra FIELDS=({{ include "helm-toolkit.utils.joinListWithSpaces" .Values.sumologic.logs.fields }}) for FIELD in "${FIELDS[@]}" ; do FIELD_ID=$( echo "${FIELDS_RESPONSE}" | jq -r "select(.fieldName == \"${FIELD}\") | .fieldId" ) # Don't try to import non existing fields diff --git a/deploy/helm/sumologic/templates/_helpers.tpl b/deploy/helm/sumologic/templates/_helpers.tpl index 7d1857e6c3..7462227c43 100644 --- a/deploy/helm/sumologic/templates/_helpers.tpl +++ b/deploy/helm/sumologic/templates/_helpers.tpl @@ -778,3 +778,15 @@ Example: key: {{ template "terraform.sources.config-map-variable" (dict "Type" $type "Context" $ctx "Name" $key) }} {{- end }} {{- end -}} + +{{/* +Generate a space separated list of quoted values: + +Example: + +{{ include "helm-toolkit.utils.joinListWithSpaces" .Values.sumologic.logs.fields }} +*/}} +{{- define "helm-toolkit.utils.joinListWithSpaces" -}} +{{- $local := dict "first" true -}} +{{- range $k, $v := . -}}{{- if not $local.first }} {{ end -}}{{ $v | quote }}{{- $_ := set $local "first" false -}}{{- end -}} +{{- end -}} diff --git a/deploy/helm/sumologic/values.yaml b/deploy/helm/sumologic/values.yaml index 38633a574d..11b3c08145 100644 --- a/deploy/helm/sumologic/values.yaml +++ b/deploy/helm/sumologic/values.yaml @@ -101,6 +101,19 @@ sumologic: logs: enabled: true + ## Fields to be created at Sumo Logic to ensure logs are tagged with + ## relevant metadata. + ## https://help.sumologic.com/Manage/Fields#Manage_fields + fields: + - cluster + - container + - deployment + - host + - namespace + - node + - pod + - service + ### Metrics configuration ## Set the enabled flag to false for disabling metrics ingestion altogether. metrics: diff --git a/tests/terraform/static/all_fields.output.yaml b/tests/terraform/static/all_fields.output.yaml index dcc027ff27..971f515976 100644 --- a/tests/terraform/static/all_fields.output.yaml +++ b/tests/terraform/static/all_fields.output.yaml @@ -57,7 +57,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "container" { count = var.create_fields ? 1 : 0 @@ -65,7 +64,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "deployment" { count = var.create_fields ? 1 : 0 @@ -73,7 +71,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "host" { count = var.create_fields ? 1 : 0 @@ -81,7 +78,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "namespace" { count = var.create_fields ? 1 : 0 @@ -89,7 +85,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "node" { count = var.create_fields ? 1 : 0 @@ -97,7 +92,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "pod" { count = var.create_fields ? 1 : 0 @@ -105,7 +99,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "service" { count = var.create_fields ? 1 : 0 diff --git a/tests/terraform/static/collector_fields.output.yaml b/tests/terraform/static/collector_fields.output.yaml index 2eb5d1cd72..295e056ef0 100644 --- a/tests/terraform/static/collector_fields.output.yaml +++ b/tests/terraform/static/collector_fields.output.yaml @@ -57,7 +57,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "container" { count = var.create_fields ? 1 : 0 @@ -65,7 +64,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "deployment" { count = var.create_fields ? 1 : 0 @@ -73,7 +71,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "host" { count = var.create_fields ? 1 : 0 @@ -81,7 +78,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "namespace" { count = var.create_fields ? 1 : 0 @@ -89,7 +85,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "node" { count = var.create_fields ? 1 : 0 @@ -97,7 +92,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "pod" { count = var.create_fields ? 1 : 0 @@ -105,7 +99,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "service" { count = var.create_fields ? 1 : 0 diff --git a/tests/terraform/static/conditional_sources.output.yaml b/tests/terraform/static/conditional_sources.output.yaml index 778d5dfa08..662fc7cdca 100644 --- a/tests/terraform/static/conditional_sources.output.yaml +++ b/tests/terraform/static/conditional_sources.output.yaml @@ -57,7 +57,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "container" { count = var.create_fields ? 1 : 0 @@ -65,7 +64,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "deployment" { count = var.create_fields ? 1 : 0 @@ -73,7 +71,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "host" { count = var.create_fields ? 1 : 0 @@ -81,7 +78,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "namespace" { count = var.create_fields ? 1 : 0 @@ -89,7 +85,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "node" { count = var.create_fields ? 1 : 0 @@ -97,7 +92,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "pod" { count = var.create_fields ? 1 : 0 @@ -105,7 +99,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "service" { count = var.create_fields ? 1 : 0 diff --git a/tests/terraform/static/custom.output.yaml b/tests/terraform/static/custom.output.yaml index 778d5dfa08..662fc7cdca 100644 --- a/tests/terraform/static/custom.output.yaml +++ b/tests/terraform/static/custom.output.yaml @@ -57,7 +57,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "container" { count = var.create_fields ? 1 : 0 @@ -65,7 +64,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "deployment" { count = var.create_fields ? 1 : 0 @@ -73,7 +71,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "host" { count = var.create_fields ? 1 : 0 @@ -81,7 +78,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "namespace" { count = var.create_fields ? 1 : 0 @@ -89,7 +85,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "node" { count = var.create_fields ? 1 : 0 @@ -97,7 +92,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "pod" { count = var.create_fields ? 1 : 0 @@ -105,7 +99,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "service" { count = var.create_fields ? 1 : 0 diff --git a/tests/terraform/static/default.output.yaml b/tests/terraform/static/default.output.yaml index 56d10267e2..59c8d05732 100644 --- a/tests/terraform/static/default.output.yaml +++ b/tests/terraform/static/default.output.yaml @@ -57,7 +57,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "container" { count = var.create_fields ? 1 : 0 @@ -65,7 +64,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "deployment" { count = var.create_fields ? 1 : 0 @@ -73,7 +71,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "host" { count = var.create_fields ? 1 : 0 @@ -81,7 +78,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "namespace" { count = var.create_fields ? 1 : 0 @@ -89,7 +85,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "node" { count = var.create_fields ? 1 : 0 @@ -97,7 +92,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "pod" { count = var.create_fields ? 1 : 0 @@ -105,7 +99,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "service" { count = var.create_fields ? 1 : 0 diff --git a/tests/terraform/static/disable_default_metrics.output.yaml b/tests/terraform/static/disable_default_metrics.output.yaml index 546ff261fe..0400aae848 100644 --- a/tests/terraform/static/disable_default_metrics.output.yaml +++ b/tests/terraform/static/disable_default_metrics.output.yaml @@ -57,7 +57,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "container" { count = var.create_fields ? 1 : 0 @@ -65,7 +64,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "deployment" { count = var.create_fields ? 1 : 0 @@ -73,7 +71,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "host" { count = var.create_fields ? 1 : 0 @@ -81,7 +78,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "namespace" { count = var.create_fields ? 1 : 0 @@ -89,7 +85,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "node" { count = var.create_fields ? 1 : 0 @@ -97,7 +92,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "pod" { count = var.create_fields ? 1 : 0 @@ -105,7 +99,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "service" { count = var.create_fields ? 1 : 0 diff --git a/tests/terraform/static/strip_extrapolation.output.yaml b/tests/terraform/static/strip_extrapolation.output.yaml index 3474a33554..b0848da134 100644 --- a/tests/terraform/static/strip_extrapolation.output.yaml +++ b/tests/terraform/static/strip_extrapolation.output.yaml @@ -57,7 +57,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "container" { count = var.create_fields ? 1 : 0 @@ -65,7 +64,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "deployment" { count = var.create_fields ? 1 : 0 @@ -73,7 +71,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "host" { count = var.create_fields ? 1 : 0 @@ -81,7 +78,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "namespace" { count = var.create_fields ? 1 : 0 @@ -89,7 +85,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "node" { count = var.create_fields ? 1 : 0 @@ -97,7 +92,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "pod" { count = var.create_fields ? 1 : 0 @@ -105,7 +99,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "service" { count = var.create_fields ? 1 : 0 diff --git a/tests/terraform/static/traces.output.yaml b/tests/terraform/static/traces.output.yaml index 4646bcdcdb..19cbdb5080 100644 --- a/tests/terraform/static/traces.output.yaml +++ b/tests/terraform/static/traces.output.yaml @@ -57,7 +57,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "container" { count = var.create_fields ? 1 : 0 @@ -65,7 +64,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "deployment" { count = var.create_fields ? 1 : 0 @@ -73,7 +71,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "host" { count = var.create_fields ? 1 : 0 @@ -81,7 +78,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "namespace" { count = var.create_fields ? 1 : 0 @@ -89,7 +85,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "node" { count = var.create_fields ? 1 : 0 @@ -97,7 +92,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "pod" { count = var.create_fields ? 1 : 0 @@ -105,7 +99,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "service" { count = var.create_fields ? 1 : 0 From 69a2b02ab3c50e56b1b6f615342b1db0fffd9c52 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Thu, 5 Nov 2020 11:41:13 +0000 Subject: [PATCH 05/10] Generate new 'setup-sumologic.yaml.tmpl' --- deploy/kubernetes/setup-sumologic.yaml.tmpl | 7 ------- 1 file changed, 7 deletions(-) diff --git a/deploy/kubernetes/setup-sumologic.yaml.tmpl b/deploy/kubernetes/setup-sumologic.yaml.tmpl index 8dadbd162f..491076534e 100644 --- a/deploy/kubernetes/setup-sumologic.yaml.tmpl +++ b/deploy/kubernetes/setup-sumologic.yaml.tmpl @@ -89,7 +89,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "container" { count = var.create_fields ? 1 : 0 @@ -97,7 +96,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "deployment" { count = var.create_fields ? 1 : 0 @@ -105,7 +103,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "host" { count = var.create_fields ? 1 : 0 @@ -113,7 +110,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "namespace" { count = var.create_fields ? 1 : 0 @@ -121,7 +117,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "node" { count = var.create_fields ? 1 : 0 @@ -129,7 +124,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "pod" { count = var.create_fields ? 1 : 0 @@ -137,7 +131,6 @@ data: data_type = "String" state = "Enabled" } - resource "sumologic_field" "service" { count = var.create_fields ? 1 : 0 From cfd46a65586d09bd9aa4905b76c7d30f95aaba01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patryk=20Ma=C5=82ek?= Date: Fri, 6 Nov 2020 10:39:50 +0100 Subject: [PATCH 06/10] Review tweaks --- deploy/helm/sumologic/conf/setup/setup.sh | 27 +++----- deploy/helm/sumologic/conf/setup/variables.tf | 3 +- deploy/helm/sumologic/templates/_helpers.tpl | 6 +- deploy/kubernetes/setup-sumologic.yaml.tmpl | 64 ++++++----------- tests/terraform/static/all_fields.output.yaml | 68 ++++++------------- .../static/collector_fields.output.yaml | 64 ++++++----------- .../static/conditional_sources.output.yaml | 24 +++---- tests/terraform/static/custom.output.yaml | 24 +++---- tests/terraform/static/default.output.yaml | 64 ++++++----------- .../disable_default_metrics.output.yaml | 60 ++++++---------- .../static/strip_extrapolation.output.yaml | 64 ++++++----------- tests/terraform/static/traces.output.yaml | 28 ++++---- 12 files changed, 178 insertions(+), 318 deletions(-) diff --git a/deploy/helm/sumologic/conf/setup/setup.sh b/deploy/helm/sumologic/conf/setup/setup.sh index 247b7f5cb1..bef22a1eed 100755 --- a/deploy/helm/sumologic/conf/setup/setup.sh +++ b/deploy/helm/sumologic/conf/setup/setup.sh @@ -15,14 +15,14 @@ function remaining_fields() { echo "${RESPONSE}" | jq '.remaining' } -# Check if we'd have at least 10 fields remaining after 8 additional fields +# Check if we'd have at least 10 fields remaining after additional fields # would be created for the collection function should_create_fields() { local REMAINING=$(remaining_fields) - if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then - echo 1 + if [[ $(( REMAINING - {{ len .Values.sumologic.logs.fields }} )) -ge 10 ]] ; then + return 1 else - echo 0 + return 0 fi } @@ -34,12 +34,13 @@ COLLECTOR_NAME="{{- if .Values.sumologic.collectorName }}{{ .Values.sumologic.co terraform init # Sumo Logic fields -readonly CREATE_FIELDS="$(should_create_fields)" -if [[ "${CREATE_FIELDS}" -eq 0 ]]; then +if should_create_fields ; then + readonly CREATE_FIELDS=0 echo "Couldn't automatically create fields\n" echo "There's not enough fields which we could use for collection fields creation" echo "Please free some of them and rerun the setup job" else + readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" @@ -53,33 +54,27 @@ else fi terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ + -var="create_fields=1" \ sumologic_field."${FIELD}" "${FIELD_ID}" done fi # Sumo Logic Collector and HTTP sources -terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_collector.collector "$COLLECTOR_NAME" +terraform import sumologic_collector.collector "$COLLECTOR_NAME" {{- $ctx := .Values -}} {{- range $type, $sources := .Values.sumologic.sources }} {{- if eq (include "terraform.sources.component_enabled" (dict "Context" $ctx "Type" $type)) "true" }} {{- range $key, $source := $sources }} {{- if eq (include "terraform.sources.to_create" (dict "Context" $ctx "Type" $type "Name" $key)) "true" }} -terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.{{ template "terraform.sources.name" (dict "Name" $key "Type" $type) }} "$COLLECTOR_NAME/{{ $source.name }}" +terraform import sumologic_http_source.{{ template "terraform.sources.name" (dict "Name" $key "Type" $type) }} "$COLLECTOR_NAME/{{ $source.name }}" {{- end }} {{- end }} {{- end }} {{- end }} # Kubernetes Secret -terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - kubernetes_secret.sumologic_collection_secret {{ .Release.Namespace }}/sumologic +terraform import kubernetes_secret.sumologic_collection_secret {{ .Release.Namespace }}/sumologic # Apply planned changes terraform apply -auto-approve \ diff --git a/deploy/helm/sumologic/conf/setup/variables.tf b/deploy/helm/sumologic/conf/setup/variables.tf index 13e04df4f8..7e47002722 100644 --- a/deploy/helm/sumologic/conf/setup/variables.tf +++ b/deploy/helm/sumologic/conf/setup/variables.tf @@ -19,5 +19,6 @@ variable "namespace_name" { variable "create_fields" { description = "If set, terraform will attempt to create fields at Sumo Logic" - type = bool + type = bool + default = false } diff --git a/deploy/helm/sumologic/templates/_helpers.tpl b/deploy/helm/sumologic/templates/_helpers.tpl index 7462227c43..cf8e45e175 100644 --- a/deploy/helm/sumologic/templates/_helpers.tpl +++ b/deploy/helm/sumologic/templates/_helpers.tpl @@ -788,5 +788,9 @@ Example: */}} {{- define "helm-toolkit.utils.joinListWithSpaces" -}} {{- $local := dict "first" true -}} -{{- range $k, $v := . -}}{{- if not $local.first }} {{ end -}}{{ $v | quote }}{{- $_ := set $local "first" false -}}{{- end -}} +{{- range $k, $v := . -}} +{{- if not $local.first }} {{ end -}} +{{- $v | quote -}} +{{- $_ := set $local "first" false -}} +{{- end -}} {{- end -}} diff --git a/deploy/kubernetes/setup-sumologic.yaml.tmpl b/deploy/kubernetes/setup-sumologic.yaml.tmpl index 491076534e..926b89539c 100644 --- a/deploy/kubernetes/setup-sumologic.yaml.tmpl +++ b/deploy/kubernetes/setup-sumologic.yaml.tmpl @@ -266,14 +266,14 @@ data: echo "${RESPONSE}" | jq '.remaining' } - # Check if we'd have at least 10 fields remaining after 8 additional fields + # Check if we'd have at least 10 fields remaining after additional fields # would be created for the collection function should_create_fields() { local REMAINING=$(remaining_fields) if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then - echo 1 + return 1 else - echo 0 + return 0 fi } @@ -285,12 +285,13 @@ data: terraform init # Sumo Logic fields - readonly CREATE_FIELDS="$(should_create_fields)" - if [[ "${CREATE_FIELDS}" -eq 0 ]]; then + if should_create_fields ; then + readonly CREATE_FIELDS=0 echo "Couldn't automatically create fields\n" echo "There's not enough fields which we could use for collection fields creation" echo "Please free some of them and rerun the setup job" else + readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" @@ -304,50 +305,26 @@ data: fi terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ + -var="create_fields=1" \ sumologic_field."${FIELD}" "${FIELD_ID}" done fi # Sumo Logic Collector and HTTP sources - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_collector.collector "$COLLECTOR_NAME" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.default_metrics_source "$COLLECTOR_NAME/(default-metrics)" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" + terraform import sumologic_collector.collector "$COLLECTOR_NAME" + terraform import sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" + terraform import sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" + terraform import sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" + terraform import sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" + terraform import sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" + terraform import sumologic_http_source.default_metrics_source "$COLLECTOR_NAME/(default-metrics)" + terraform import sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" + terraform import sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" + terraform import sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" + terraform import sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" # Kubernetes Secret - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - kubernetes_secret.sumologic_collection_secret $NAMESPACE/sumologic + terraform import kubernetes_secret.sumologic_collection_secret $NAMESPACE/sumologic # Apply planned changes terraform apply -auto-approve \ @@ -377,7 +354,8 @@ data: variable "create_fields" { description = "If set, terraform will attempt to create fields at Sumo Logic" - type = bool + type = bool + default = false } --- # Source: sumologic/templates/setup/setup-custom-configmap.yaml diff --git a/tests/terraform/static/all_fields.output.yaml b/tests/terraform/static/all_fields.output.yaml index 971f515976..03e138d5b0 100644 --- a/tests/terraform/static/all_fields.output.yaml +++ b/tests/terraform/static/all_fields.output.yaml @@ -281,14 +281,14 @@ data: echo "${RESPONSE}" | jq '.remaining' } - # Check if we'd have at least 10 fields remaining after 8 additional fields + # Check if we'd have at least 10 fields remaining after additional fields # would be created for the collection function should_create_fields() { local REMAINING=$(remaining_fields) if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then - echo 1 + return 1 else - echo 0 + return 0 fi } @@ -300,12 +300,13 @@ data: terraform init # Sumo Logic fields - readonly CREATE_FIELDS="$(should_create_fields)" - if [[ "${CREATE_FIELDS}" -eq 0 ]]; then + if should_create_fields ; then + readonly CREATE_FIELDS=0 echo "Couldn't automatically create fields\n" echo "There's not enough fields which we could use for collection fields creation" echo "Please free some of them and rerun the setup job" else + readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" @@ -319,53 +320,27 @@ data: fi terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ + -var="create_fields=1" \ sumologic_field."${FIELD}" "${FIELD_ID}" done fi # Sumo Logic Collector and HTTP sources - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_collector.collector "$COLLECTOR_NAME" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.default_metrics_source "$COLLECTOR_NAME/(default-metrics)" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.test_source_metrics_source "$COLLECTOR_NAME/(Test source)" + terraform import sumologic_collector.collector "$COLLECTOR_NAME" + terraform import sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" + terraform import sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" + terraform import sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" + terraform import sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" + terraform import sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" + terraform import sumologic_http_source.default_metrics_source "$COLLECTOR_NAME/(default-metrics)" + terraform import sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" + terraform import sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" + terraform import sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" + terraform import sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" + terraform import sumologic_http_source.test_source_metrics_source "$COLLECTOR_NAME/(Test source)" # Kubernetes Secret - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - kubernetes_secret.sumologic_collection_secret sumologic/sumologic + terraform import kubernetes_secret.sumologic_collection_secret sumologic/sumologic # Apply planned changes terraform apply -auto-approve \ @@ -395,5 +370,6 @@ data: variable "create_fields" { description = "If set, terraform will attempt to create fields at Sumo Logic" - type = bool + type = bool + default = false } diff --git a/tests/terraform/static/collector_fields.output.yaml b/tests/terraform/static/collector_fields.output.yaml index 295e056ef0..a1d3c1fbfd 100644 --- a/tests/terraform/static/collector_fields.output.yaml +++ b/tests/terraform/static/collector_fields.output.yaml @@ -236,14 +236,14 @@ data: echo "${RESPONSE}" | jq '.remaining' } - # Check if we'd have at least 10 fields remaining after 8 additional fields + # Check if we'd have at least 10 fields remaining after additional fields # would be created for the collection function should_create_fields() { local REMAINING=$(remaining_fields) if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then - echo 1 + return 1 else - echo 0 + return 0 fi } @@ -255,12 +255,13 @@ data: terraform init # Sumo Logic fields - readonly CREATE_FIELDS="$(should_create_fields)" - if [[ "${CREATE_FIELDS}" -eq 0 ]]; then + if should_create_fields ; then + readonly CREATE_FIELDS=0 echo "Couldn't automatically create fields\n" echo "There's not enough fields which we could use for collection fields creation" echo "Please free some of them and rerun the setup job" else + readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" @@ -274,50 +275,26 @@ data: fi terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ + -var="create_fields=1" \ sumologic_field."${FIELD}" "${FIELD_ID}" done fi # Sumo Logic Collector and HTTP sources - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_collector.collector "$COLLECTOR_NAME" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.default_metrics_source "$COLLECTOR_NAME/(default-metrics)" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" + terraform import sumologic_collector.collector "$COLLECTOR_NAME" + terraform import sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" + terraform import sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" + terraform import sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" + terraform import sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" + terraform import sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" + terraform import sumologic_http_source.default_metrics_source "$COLLECTOR_NAME/(default-metrics)" + terraform import sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" + terraform import sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" + terraform import sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" + terraform import sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" # Kubernetes Secret - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - kubernetes_secret.sumologic_collection_secret sumologic/sumologic + terraform import kubernetes_secret.sumologic_collection_secret sumologic/sumologic # Apply planned changes terraform apply -auto-approve \ @@ -347,5 +324,6 @@ data: variable "create_fields" { description = "If set, terraform will attempt to create fields at Sumo Logic" - type = bool + type = bool + default = false } diff --git a/tests/terraform/static/conditional_sources.output.yaml b/tests/terraform/static/conditional_sources.output.yaml index 662fc7cdca..32433710e6 100644 --- a/tests/terraform/static/conditional_sources.output.yaml +++ b/tests/terraform/static/conditional_sources.output.yaml @@ -163,14 +163,14 @@ data: echo "${RESPONSE}" | jq '.remaining' } - # Check if we'd have at least 10 fields remaining after 8 additional fields + # Check if we'd have at least 10 fields remaining after additional fields # would be created for the collection function should_create_fields() { local REMAINING=$(remaining_fields) if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then - echo 1 + return 1 else - echo 0 + return 0 fi } @@ -182,12 +182,13 @@ data: terraform init # Sumo Logic fields - readonly CREATE_FIELDS="$(should_create_fields)" - if [[ "${CREATE_FIELDS}" -eq 0 ]]; then + if should_create_fields ; then + readonly CREATE_FIELDS=0 echo "Couldn't automatically create fields\n" echo "There's not enough fields which we could use for collection fields creation" echo "Please free some of them and rerun the setup job" else + readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" @@ -201,20 +202,16 @@ data: fi terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ + -var="create_fields=1" \ sumologic_field."${FIELD}" "${FIELD_ID}" done fi # Sumo Logic Collector and HTTP sources - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_collector.collector "$COLLECTOR_NAME" + terraform import sumologic_collector.collector "$COLLECTOR_NAME" # Kubernetes Secret - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - kubernetes_secret.sumologic_collection_secret sumologic/sumologic + terraform import kubernetes_secret.sumologic_collection_secret sumologic/sumologic # Apply planned changes terraform apply -auto-approve \ @@ -244,5 +241,6 @@ data: variable "create_fields" { description = "If set, terraform will attempt to create fields at Sumo Logic" - type = bool + type = bool + default = false } diff --git a/tests/terraform/static/custom.output.yaml b/tests/terraform/static/custom.output.yaml index 662fc7cdca..32433710e6 100644 --- a/tests/terraform/static/custom.output.yaml +++ b/tests/terraform/static/custom.output.yaml @@ -163,14 +163,14 @@ data: echo "${RESPONSE}" | jq '.remaining' } - # Check if we'd have at least 10 fields remaining after 8 additional fields + # Check if we'd have at least 10 fields remaining after additional fields # would be created for the collection function should_create_fields() { local REMAINING=$(remaining_fields) if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then - echo 1 + return 1 else - echo 0 + return 0 fi } @@ -182,12 +182,13 @@ data: terraform init # Sumo Logic fields - readonly CREATE_FIELDS="$(should_create_fields)" - if [[ "${CREATE_FIELDS}" -eq 0 ]]; then + if should_create_fields ; then + readonly CREATE_FIELDS=0 echo "Couldn't automatically create fields\n" echo "There's not enough fields which we could use for collection fields creation" echo "Please free some of them and rerun the setup job" else + readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" @@ -201,20 +202,16 @@ data: fi terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ + -var="create_fields=1" \ sumologic_field."${FIELD}" "${FIELD_ID}" done fi # Sumo Logic Collector and HTTP sources - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_collector.collector "$COLLECTOR_NAME" + terraform import sumologic_collector.collector "$COLLECTOR_NAME" # Kubernetes Secret - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - kubernetes_secret.sumologic_collection_secret sumologic/sumologic + terraform import kubernetes_secret.sumologic_collection_secret sumologic/sumologic # Apply planned changes terraform apply -auto-approve \ @@ -244,5 +241,6 @@ data: variable "create_fields" { description = "If set, terraform will attempt to create fields at Sumo Logic" - type = bool + type = bool + default = false } diff --git a/tests/terraform/static/default.output.yaml b/tests/terraform/static/default.output.yaml index 59c8d05732..7ecd5b17a7 100644 --- a/tests/terraform/static/default.output.yaml +++ b/tests/terraform/static/default.output.yaml @@ -234,14 +234,14 @@ data: echo "${RESPONSE}" | jq '.remaining' } - # Check if we'd have at least 10 fields remaining after 8 additional fields + # Check if we'd have at least 10 fields remaining after additional fields # would be created for the collection function should_create_fields() { local REMAINING=$(remaining_fields) if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then - echo 1 + return 1 else - echo 0 + return 0 fi } @@ -253,12 +253,13 @@ data: terraform init # Sumo Logic fields - readonly CREATE_FIELDS="$(should_create_fields)" - if [[ "${CREATE_FIELDS}" -eq 0 ]]; then + if should_create_fields ; then + readonly CREATE_FIELDS=0 echo "Couldn't automatically create fields\n" echo "There's not enough fields which we could use for collection fields creation" echo "Please free some of them and rerun the setup job" else + readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" @@ -272,50 +273,26 @@ data: fi terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ + -var="create_fields=1" \ sumologic_field."${FIELD}" "${FIELD_ID}" done fi # Sumo Logic Collector and HTTP sources - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_collector.collector "$COLLECTOR_NAME" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.default_metrics_source "$COLLECTOR_NAME/(default-metrics)" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" + terraform import sumologic_collector.collector "$COLLECTOR_NAME" + terraform import sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" + terraform import sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" + terraform import sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" + terraform import sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" + terraform import sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" + terraform import sumologic_http_source.default_metrics_source "$COLLECTOR_NAME/(default-metrics)" + terraform import sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" + terraform import sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" + terraform import sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" + terraform import sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" # Kubernetes Secret - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - kubernetes_secret.sumologic_collection_secret sumologic/sumologic + terraform import kubernetes_secret.sumologic_collection_secret sumologic/sumologic # Apply planned changes terraform apply -auto-approve \ @@ -345,5 +322,6 @@ data: variable "create_fields" { description = "If set, terraform will attempt to create fields at Sumo Logic" - type = bool + type = bool + default = false } diff --git a/tests/terraform/static/disable_default_metrics.output.yaml b/tests/terraform/static/disable_default_metrics.output.yaml index 0400aae848..d03351b621 100644 --- a/tests/terraform/static/disable_default_metrics.output.yaml +++ b/tests/terraform/static/disable_default_metrics.output.yaml @@ -227,14 +227,14 @@ data: echo "${RESPONSE}" | jq '.remaining' } - # Check if we'd have at least 10 fields remaining after 8 additional fields + # Check if we'd have at least 10 fields remaining after additional fields # would be created for the collection function should_create_fields() { local REMAINING=$(remaining_fields) if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then - echo 1 + return 1 else - echo 0 + return 0 fi } @@ -246,12 +246,13 @@ data: terraform init # Sumo Logic fields - readonly CREATE_FIELDS="$(should_create_fields)" - if [[ "${CREATE_FIELDS}" -eq 0 ]]; then + if should_create_fields ; then + readonly CREATE_FIELDS=0 echo "Couldn't automatically create fields\n" echo "There's not enough fields which we could use for collection fields creation" echo "Please free some of them and rerun the setup job" else + readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" @@ -265,47 +266,25 @@ data: fi terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ + -var="create_fields=1" \ sumologic_field."${FIELD}" "${FIELD_ID}" done fi # Sumo Logic Collector and HTTP sources - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_collector.collector "$COLLECTOR_NAME" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" + terraform import sumologic_collector.collector "$COLLECTOR_NAME" + terraform import sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" + terraform import sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" + terraform import sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" + terraform import sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" + terraform import sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" + terraform import sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" + terraform import sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" + terraform import sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" + terraform import sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" # Kubernetes Secret - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - kubernetes_secret.sumologic_collection_secret sumologic/sumologic + terraform import kubernetes_secret.sumologic_collection_secret sumologic/sumologic # Apply planned changes terraform apply -auto-approve \ @@ -335,5 +314,6 @@ data: variable "create_fields" { description = "If set, terraform will attempt to create fields at Sumo Logic" - type = bool + type = bool + default = false } diff --git a/tests/terraform/static/strip_extrapolation.output.yaml b/tests/terraform/static/strip_extrapolation.output.yaml index b0848da134..5d8f27dfdb 100644 --- a/tests/terraform/static/strip_extrapolation.output.yaml +++ b/tests/terraform/static/strip_extrapolation.output.yaml @@ -235,14 +235,14 @@ data: echo "${RESPONSE}" | jq '.remaining' } - # Check if we'd have at least 10 fields remaining after 8 additional fields + # Check if we'd have at least 10 fields remaining after additional fields # would be created for the collection function should_create_fields() { local REMAINING=$(remaining_fields) if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then - echo 1 + return 1 else - echo 0 + return 0 fi } @@ -254,12 +254,13 @@ data: terraform init # Sumo Logic fields - readonly CREATE_FIELDS="$(should_create_fields)" - if [[ "${CREATE_FIELDS}" -eq 0 ]]; then + if should_create_fields ; then + readonly CREATE_FIELDS=0 echo "Couldn't automatically create fields\n" echo "There's not enough fields which we could use for collection fields creation" echo "Please free some of them and rerun the setup job" else + readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" @@ -273,50 +274,26 @@ data: fi terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ + -var="create_fields=1" \ sumologic_field."${FIELD}" "${FIELD_ID}" done fi # Sumo Logic Collector and HTTP sources - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_collector.collector "$COLLECTOR_NAME" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.default_metrics_source "$COLLECTOR_NAME/(default-metrics)" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" + terraform import sumologic_collector.collector "$COLLECTOR_NAME" + terraform import sumologic_http_source.default_events_source "$COLLECTOR_NAME/events" + terraform import sumologic_http_source.default_logs_source "$COLLECTOR_NAME/logs" + terraform import sumologic_http_source.apiserver_metrics_source "$COLLECTOR_NAME/apiserver-metrics" + terraform import sumologic_http_source.control_plane_metrics_source "$COLLECTOR_NAME/control-plane-metrics" + terraform import sumologic_http_source.controller_metrics_source "$COLLECTOR_NAME/kube-controller-manager-metrics" + terraform import sumologic_http_source.default_metrics_source "$COLLECTOR_NAME/(default-metrics)" + terraform import sumologic_http_source.kubelet_metrics_source "$COLLECTOR_NAME/kubelet-metrics" + terraform import sumologic_http_source.node_metrics_source "$COLLECTOR_NAME/node-exporter-metrics" + terraform import sumologic_http_source.scheduler_metrics_source "$COLLECTOR_NAME/kube-scheduler-metrics" + terraform import sumologic_http_source.state_metrics_source "$COLLECTOR_NAME/kube-state-metrics" # Kubernetes Secret - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - kubernetes_secret.sumologic_collection_secret sumologic/sumologic + terraform import kubernetes_secret.sumologic_collection_secret sumologic/sumologic # Apply planned changes terraform apply -auto-approve \ @@ -346,5 +323,6 @@ data: variable "create_fields" { description = "If set, terraform will attempt to create fields at Sumo Logic" - type = bool + type = bool + default = false } diff --git a/tests/terraform/static/traces.output.yaml b/tests/terraform/static/traces.output.yaml index 19cbdb5080..c686e54468 100644 --- a/tests/terraform/static/traces.output.yaml +++ b/tests/terraform/static/traces.output.yaml @@ -171,14 +171,14 @@ data: echo "${RESPONSE}" | jq '.remaining' } - # Check if we'd have at least 10 fields remaining after 8 additional fields + # Check if we'd have at least 10 fields remaining after additional fields # would be created for the collection function should_create_fields() { local REMAINING=$(remaining_fields) if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then - echo 1 + return 1 else - echo 0 + return 0 fi } @@ -190,12 +190,13 @@ data: terraform init # Sumo Logic fields - readonly CREATE_FIELDS="$(should_create_fields)" - if [[ "${CREATE_FIELDS}" -eq 0 ]]; then + if should_create_fields ; then + readonly CREATE_FIELDS=0 echo "Couldn't automatically create fields\n" echo "There's not enough fields which we could use for collection fields creation" echo "Please free some of them and rerun the setup job" else + readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" @@ -209,23 +210,17 @@ data: fi terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ + -var="create_fields=1" \ sumologic_field."${FIELD}" "${FIELD_ID}" done fi # Sumo Logic Collector and HTTP sources - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_collector.collector "$COLLECTOR_NAME" - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - sumologic_http_source.default_traces_source "$COLLECTOR_NAME/traces" + terraform import sumologic_collector.collector "$COLLECTOR_NAME" + terraform import sumologic_http_source.default_traces_source "$COLLECTOR_NAME/traces" # Kubernetes Secret - terraform import \ - -var="create_fields=${CREATE_FIELDS}" \ - kubernetes_secret.sumologic_collection_secret sumologic/sumologic + terraform import kubernetes_secret.sumologic_collection_secret sumologic/sumologic # Apply planned changes terraform apply -auto-approve \ @@ -255,5 +250,6 @@ data: variable "create_fields" { description = "If set, terraform will attempt to create fields at Sumo Logic" - type = bool + type = bool + default = false } From bc18a3e2bfe0285484a777a561a38946325b8e34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patryk=20Ma=C5=82ek?= Date: Fri, 6 Nov 2020 16:52:55 +0100 Subject: [PATCH 07/10] Update wording in setup.sh in case of unsufficient fields quota --- deploy/helm/sumologic/conf/setup/setup.sh | 6 +++--- deploy/kubernetes/setup-sumologic.yaml.tmpl | 6 +++--- tests/terraform/static/all_fields.output.yaml | 6 +++--- tests/terraform/static/collector_fields.output.yaml | 6 +++--- tests/terraform/static/conditional_sources.output.yaml | 6 +++--- tests/terraform/static/custom.output.yaml | 6 +++--- tests/terraform/static/default.output.yaml | 6 +++--- tests/terraform/static/disable_default_metrics.output.yaml | 6 +++--- tests/terraform/static/strip_extrapolation.output.yaml | 6 +++--- tests/terraform/static/traces.output.yaml | 6 +++--- 10 files changed, 30 insertions(+), 30 deletions(-) diff --git a/deploy/helm/sumologic/conf/setup/setup.sh b/deploy/helm/sumologic/conf/setup/setup.sh index bef22a1eed..a124fb850a 100755 --- a/deploy/helm/sumologic/conf/setup/setup.sh +++ b/deploy/helm/sumologic/conf/setup/setup.sh @@ -36,9 +36,9 @@ terraform init # Sumo Logic fields if should_create_fields ; then readonly CREATE_FIELDS=0 - echo "Couldn't automatically create fields\n" - echo "There's not enough fields which we could use for collection fields creation" - echo "Please free some of them and rerun the setup job" + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." else readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ diff --git a/deploy/kubernetes/setup-sumologic.yaml.tmpl b/deploy/kubernetes/setup-sumologic.yaml.tmpl index 926b89539c..2f4eb1a910 100644 --- a/deploy/kubernetes/setup-sumologic.yaml.tmpl +++ b/deploy/kubernetes/setup-sumologic.yaml.tmpl @@ -287,9 +287,9 @@ data: # Sumo Logic fields if should_create_fields ; then readonly CREATE_FIELDS=0 - echo "Couldn't automatically create fields\n" - echo "There's not enough fields which we could use for collection fields creation" - echo "Please free some of them and rerun the setup job" + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." else readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ diff --git a/tests/terraform/static/all_fields.output.yaml b/tests/terraform/static/all_fields.output.yaml index 03e138d5b0..2c04361844 100644 --- a/tests/terraform/static/all_fields.output.yaml +++ b/tests/terraform/static/all_fields.output.yaml @@ -302,9 +302,9 @@ data: # Sumo Logic fields if should_create_fields ; then readonly CREATE_FIELDS=0 - echo "Couldn't automatically create fields\n" - echo "There's not enough fields which we could use for collection fields creation" - echo "Please free some of them and rerun the setup job" + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." else readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ diff --git a/tests/terraform/static/collector_fields.output.yaml b/tests/terraform/static/collector_fields.output.yaml index a1d3c1fbfd..9dd02b11db 100644 --- a/tests/terraform/static/collector_fields.output.yaml +++ b/tests/terraform/static/collector_fields.output.yaml @@ -257,9 +257,9 @@ data: # Sumo Logic fields if should_create_fields ; then readonly CREATE_FIELDS=0 - echo "Couldn't automatically create fields\n" - echo "There's not enough fields which we could use for collection fields creation" - echo "Please free some of them and rerun the setup job" + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." else readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ diff --git a/tests/terraform/static/conditional_sources.output.yaml b/tests/terraform/static/conditional_sources.output.yaml index 32433710e6..59733b0208 100644 --- a/tests/terraform/static/conditional_sources.output.yaml +++ b/tests/terraform/static/conditional_sources.output.yaml @@ -184,9 +184,9 @@ data: # Sumo Logic fields if should_create_fields ; then readonly CREATE_FIELDS=0 - echo "Couldn't automatically create fields\n" - echo "There's not enough fields which we could use for collection fields creation" - echo "Please free some of them and rerun the setup job" + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." else readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ diff --git a/tests/terraform/static/custom.output.yaml b/tests/terraform/static/custom.output.yaml index 32433710e6..59733b0208 100644 --- a/tests/terraform/static/custom.output.yaml +++ b/tests/terraform/static/custom.output.yaml @@ -184,9 +184,9 @@ data: # Sumo Logic fields if should_create_fields ; then readonly CREATE_FIELDS=0 - echo "Couldn't automatically create fields\n" - echo "There's not enough fields which we could use for collection fields creation" - echo "Please free some of them and rerun the setup job" + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." else readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ diff --git a/tests/terraform/static/default.output.yaml b/tests/terraform/static/default.output.yaml index 7ecd5b17a7..8d18c1b52d 100644 --- a/tests/terraform/static/default.output.yaml +++ b/tests/terraform/static/default.output.yaml @@ -255,9 +255,9 @@ data: # Sumo Logic fields if should_create_fields ; then readonly CREATE_FIELDS=0 - echo "Couldn't automatically create fields\n" - echo "There's not enough fields which we could use for collection fields creation" - echo "Please free some of them and rerun the setup job" + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." else readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ diff --git a/tests/terraform/static/disable_default_metrics.output.yaml b/tests/terraform/static/disable_default_metrics.output.yaml index d03351b621..3d03947bf1 100644 --- a/tests/terraform/static/disable_default_metrics.output.yaml +++ b/tests/terraform/static/disable_default_metrics.output.yaml @@ -248,9 +248,9 @@ data: # Sumo Logic fields if should_create_fields ; then readonly CREATE_FIELDS=0 - echo "Couldn't automatically create fields\n" - echo "There's not enough fields which we could use for collection fields creation" - echo "Please free some of them and rerun the setup job" + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." else readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ diff --git a/tests/terraform/static/strip_extrapolation.output.yaml b/tests/terraform/static/strip_extrapolation.output.yaml index 5d8f27dfdb..9b63c36fb7 100644 --- a/tests/terraform/static/strip_extrapolation.output.yaml +++ b/tests/terraform/static/strip_extrapolation.output.yaml @@ -256,9 +256,9 @@ data: # Sumo Logic fields if should_create_fields ; then readonly CREATE_FIELDS=0 - echo "Couldn't automatically create fields\n" - echo "There's not enough fields which we could use for collection fields creation" - echo "Please free some of them and rerun the setup job" + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." else readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ diff --git a/tests/terraform/static/traces.output.yaml b/tests/terraform/static/traces.output.yaml index c686e54468..3a8f9daf26 100644 --- a/tests/terraform/static/traces.output.yaml +++ b/tests/terraform/static/traces.output.yaml @@ -192,9 +192,9 @@ data: # Sumo Logic fields if should_create_fields ; then readonly CREATE_FIELDS=0 - echo "Couldn't automatically create fields\n" - echo "There's not enough fields which we could use for collection fields creation" - echo "Please free some of them and rerun the setup job" + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." else readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ From 657970e31cb6c17c2e76fea2f042f9837d6c9f98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patryk=20Ma=C5=82ek?= Date: Mon, 9 Nov 2020 10:38:18 +0100 Subject: [PATCH 08/10] Reorder logic in bash --- deploy/helm/sumologic/conf/setup/setup.sh | 14 +++++++------- deploy/kubernetes/setup-sumologic.yaml.tmpl | 11 +++++------ tests/terraform/static/all_fields.output.yaml | 14 +++++++------- .../terraform/static/collector_fields.output.yaml | 14 +++++++------- .../static/conditional_sources.output.yaml | 14 +++++++------- tests/terraform/static/custom.output.yaml | 14 +++++++------- tests/terraform/static/default.output.yaml | 14 +++++++------- .../static/disable_default_metrics.output.yaml | 14 +++++++------- .../static/strip_extrapolation.output.yaml | 14 +++++++------- tests/terraform/static/traces.output.yaml | 14 +++++++------- 10 files changed, 68 insertions(+), 69 deletions(-) diff --git a/deploy/helm/sumologic/conf/setup/setup.sh b/deploy/helm/sumologic/conf/setup/setup.sh index a124fb850a..a113aeb645 100755 --- a/deploy/helm/sumologic/conf/setup/setup.sh +++ b/deploy/helm/sumologic/conf/setup/setup.sh @@ -20,9 +20,9 @@ function remaining_fields() { function should_create_fields() { local REMAINING=$(remaining_fields) if [[ $(( REMAINING - {{ len .Values.sumologic.logs.fields }} )) -ge 10 ]] ; then - return 1 - else return 0 + else + return 1 fi } @@ -35,11 +35,6 @@ terraform init # Sumo Logic fields if should_create_fields ; then - readonly CREATE_FIELDS=0 - echo "Couldn't automatically create fields" - echo "You do not have enough field capacity to create the required fields automatically." - echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." -else readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ @@ -57,6 +52,11 @@ else -var="create_fields=1" \ sumologic_field."${FIELD}" "${FIELD_ID}" done +else + readonly CREATE_FIELDS=0 + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." fi # Sumo Logic Collector and HTTP sources diff --git a/deploy/kubernetes/setup-sumologic.yaml.tmpl b/deploy/kubernetes/setup-sumologic.yaml.tmpl index 2f4eb1a910..13296a1d1a 100644 --- a/deploy/kubernetes/setup-sumologic.yaml.tmpl +++ b/deploy/kubernetes/setup-sumologic.yaml.tmpl @@ -284,13 +284,7 @@ data: terraform init - # Sumo Logic fields if should_create_fields ; then - readonly CREATE_FIELDS=0 - echo "Couldn't automatically create fields" - echo "You do not have enough field capacity to create the required fields automatically." - echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." - else readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ @@ -308,6 +302,11 @@ data: -var="create_fields=1" \ sumologic_field."${FIELD}" "${FIELD_ID}" done + else + readonly CREATE_FIELDS=0 + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." fi # Sumo Logic Collector and HTTP sources diff --git a/tests/terraform/static/all_fields.output.yaml b/tests/terraform/static/all_fields.output.yaml index 2c04361844..5a69330f63 100644 --- a/tests/terraform/static/all_fields.output.yaml +++ b/tests/terraform/static/all_fields.output.yaml @@ -286,9 +286,9 @@ data: function should_create_fields() { local REMAINING=$(remaining_fields) if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then - return 1 - else return 0 + else + return 1 fi } @@ -301,11 +301,6 @@ data: # Sumo Logic fields if should_create_fields ; then - readonly CREATE_FIELDS=0 - echo "Couldn't automatically create fields" - echo "You do not have enough field capacity to create the required fields automatically." - echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." - else readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ @@ -323,6 +318,11 @@ data: -var="create_fields=1" \ sumologic_field."${FIELD}" "${FIELD_ID}" done + else + readonly CREATE_FIELDS=0 + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." fi # Sumo Logic Collector and HTTP sources diff --git a/tests/terraform/static/collector_fields.output.yaml b/tests/terraform/static/collector_fields.output.yaml index 9dd02b11db..1bfa6ed8e1 100644 --- a/tests/terraform/static/collector_fields.output.yaml +++ b/tests/terraform/static/collector_fields.output.yaml @@ -241,9 +241,9 @@ data: function should_create_fields() { local REMAINING=$(remaining_fields) if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then - return 1 - else return 0 + else + return 1 fi } @@ -256,11 +256,6 @@ data: # Sumo Logic fields if should_create_fields ; then - readonly CREATE_FIELDS=0 - echo "Couldn't automatically create fields" - echo "You do not have enough field capacity to create the required fields automatically." - echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." - else readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ @@ -278,6 +273,11 @@ data: -var="create_fields=1" \ sumologic_field."${FIELD}" "${FIELD_ID}" done + else + readonly CREATE_FIELDS=0 + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." fi # Sumo Logic Collector and HTTP sources diff --git a/tests/terraform/static/conditional_sources.output.yaml b/tests/terraform/static/conditional_sources.output.yaml index 59733b0208..64de2d96b0 100644 --- a/tests/terraform/static/conditional_sources.output.yaml +++ b/tests/terraform/static/conditional_sources.output.yaml @@ -168,9 +168,9 @@ data: function should_create_fields() { local REMAINING=$(remaining_fields) if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then - return 1 - else return 0 + else + return 1 fi } @@ -183,11 +183,6 @@ data: # Sumo Logic fields if should_create_fields ; then - readonly CREATE_FIELDS=0 - echo "Couldn't automatically create fields" - echo "You do not have enough field capacity to create the required fields automatically." - echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." - else readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ @@ -205,6 +200,11 @@ data: -var="create_fields=1" \ sumologic_field."${FIELD}" "${FIELD_ID}" done + else + readonly CREATE_FIELDS=0 + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." fi # Sumo Logic Collector and HTTP sources diff --git a/tests/terraform/static/custom.output.yaml b/tests/terraform/static/custom.output.yaml index 59733b0208..64de2d96b0 100644 --- a/tests/terraform/static/custom.output.yaml +++ b/tests/terraform/static/custom.output.yaml @@ -168,9 +168,9 @@ data: function should_create_fields() { local REMAINING=$(remaining_fields) if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then - return 1 - else return 0 + else + return 1 fi } @@ -183,11 +183,6 @@ data: # Sumo Logic fields if should_create_fields ; then - readonly CREATE_FIELDS=0 - echo "Couldn't automatically create fields" - echo "You do not have enough field capacity to create the required fields automatically." - echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." - else readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ @@ -205,6 +200,11 @@ data: -var="create_fields=1" \ sumologic_field."${FIELD}" "${FIELD_ID}" done + else + readonly CREATE_FIELDS=0 + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." fi # Sumo Logic Collector and HTTP sources diff --git a/tests/terraform/static/default.output.yaml b/tests/terraform/static/default.output.yaml index 8d18c1b52d..f5dff21017 100644 --- a/tests/terraform/static/default.output.yaml +++ b/tests/terraform/static/default.output.yaml @@ -239,9 +239,9 @@ data: function should_create_fields() { local REMAINING=$(remaining_fields) if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then - return 1 - else return 0 + else + return 1 fi } @@ -254,11 +254,6 @@ data: # Sumo Logic fields if should_create_fields ; then - readonly CREATE_FIELDS=0 - echo "Couldn't automatically create fields" - echo "You do not have enough field capacity to create the required fields automatically." - echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." - else readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ @@ -276,6 +271,11 @@ data: -var="create_fields=1" \ sumologic_field."${FIELD}" "${FIELD_ID}" done + else + readonly CREATE_FIELDS=0 + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." fi # Sumo Logic Collector and HTTP sources diff --git a/tests/terraform/static/disable_default_metrics.output.yaml b/tests/terraform/static/disable_default_metrics.output.yaml index 3d03947bf1..fa034e8df8 100644 --- a/tests/terraform/static/disable_default_metrics.output.yaml +++ b/tests/terraform/static/disable_default_metrics.output.yaml @@ -232,9 +232,9 @@ data: function should_create_fields() { local REMAINING=$(remaining_fields) if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then - return 1 - else return 0 + else + return 1 fi } @@ -247,11 +247,6 @@ data: # Sumo Logic fields if should_create_fields ; then - readonly CREATE_FIELDS=0 - echo "Couldn't automatically create fields" - echo "You do not have enough field capacity to create the required fields automatically." - echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." - else readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ @@ -269,6 +264,11 @@ data: -var="create_fields=1" \ sumologic_field."${FIELD}" "${FIELD_ID}" done + else + readonly CREATE_FIELDS=0 + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." fi # Sumo Logic Collector and HTTP sources diff --git a/tests/terraform/static/strip_extrapolation.output.yaml b/tests/terraform/static/strip_extrapolation.output.yaml index 9b63c36fb7..ca412c7391 100644 --- a/tests/terraform/static/strip_extrapolation.output.yaml +++ b/tests/terraform/static/strip_extrapolation.output.yaml @@ -240,9 +240,9 @@ data: function should_create_fields() { local REMAINING=$(remaining_fields) if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then - return 1 - else return 0 + else + return 1 fi } @@ -255,11 +255,6 @@ data: # Sumo Logic fields if should_create_fields ; then - readonly CREATE_FIELDS=0 - echo "Couldn't automatically create fields" - echo "You do not have enough field capacity to create the required fields automatically." - echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." - else readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ @@ -277,6 +272,11 @@ data: -var="create_fields=1" \ sumologic_field."${FIELD}" "${FIELD_ID}" done + else + readonly CREATE_FIELDS=0 + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." fi # Sumo Logic Collector and HTTP sources diff --git a/tests/terraform/static/traces.output.yaml b/tests/terraform/static/traces.output.yaml index 3a8f9daf26..0a30996e67 100644 --- a/tests/terraform/static/traces.output.yaml +++ b/tests/terraform/static/traces.output.yaml @@ -176,9 +176,9 @@ data: function should_create_fields() { local REMAINING=$(remaining_fields) if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then - return 1 - else return 0 + else + return 1 fi } @@ -191,11 +191,6 @@ data: # Sumo Logic fields if should_create_fields ; then - readonly CREATE_FIELDS=0 - echo "Couldn't automatically create fields" - echo "You do not have enough field capacity to create the required fields automatically." - echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." - else readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ @@ -213,6 +208,11 @@ data: -var="create_fields=1" \ sumologic_field."${FIELD}" "${FIELD_ID}" done + else + readonly CREATE_FIELDS=0 + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." fi # Sumo Logic Collector and HTTP sources From 084f172cd1baeb601743c028b654f95cd5cbbc4f Mon Sep 17 00:00:00 2001 From: Travis CI Date: Mon, 9 Nov 2020 09:46:13 +0000 Subject: [PATCH 09/10] Generate new 'setup-sumologic.yaml.tmpl' --- deploy/kubernetes/setup-sumologic.yaml.tmpl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/deploy/kubernetes/setup-sumologic.yaml.tmpl b/deploy/kubernetes/setup-sumologic.yaml.tmpl index 13296a1d1a..a6b6ec9b49 100644 --- a/deploy/kubernetes/setup-sumologic.yaml.tmpl +++ b/deploy/kubernetes/setup-sumologic.yaml.tmpl @@ -271,9 +271,9 @@ data: function should_create_fields() { local REMAINING=$(remaining_fields) if [[ $(( REMAINING - 8 )) -ge 10 ]] ; then - return 1 - else return 0 + else + return 1 fi } @@ -284,6 +284,7 @@ data: terraform init + # Sumo Logic fields if should_create_fields ; then readonly CREATE_FIELDS=1 readonly FIELDS_RESPONSE="$(curl -XGET -s \ From 2f9a5ef2f952297ed8229f5177707929c5486dae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patryk=20Ma=C5=82ek?= Date: Mon, 9 Nov 2020 12:13:02 +0100 Subject: [PATCH 10/10] Change terraform create fields variable to default to true --- deploy/helm/sumologic/conf/setup/variables.tf | 2 +- deploy/kubernetes/setup-sumologic.yaml.tmpl | 2 +- tests/terraform/static/all_fields.output.yaml | 2 +- tests/terraform/static/collector_fields.output.yaml | 2 +- tests/terraform/static/conditional_sources.output.yaml | 2 +- tests/terraform/static/custom.output.yaml | 2 +- tests/terraform/static/default.output.yaml | 2 +- tests/terraform/static/disable_default_metrics.output.yaml | 2 +- tests/terraform/static/strip_extrapolation.output.yaml | 2 +- tests/terraform/static/traces.output.yaml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/deploy/helm/sumologic/conf/setup/variables.tf b/deploy/helm/sumologic/conf/setup/variables.tf index 7e47002722..60f648cb93 100644 --- a/deploy/helm/sumologic/conf/setup/variables.tf +++ b/deploy/helm/sumologic/conf/setup/variables.tf @@ -20,5 +20,5 @@ variable "namespace_name" { variable "create_fields" { description = "If set, terraform will attempt to create fields at Sumo Logic" type = bool - default = false + default = true } diff --git a/deploy/kubernetes/setup-sumologic.yaml.tmpl b/deploy/kubernetes/setup-sumologic.yaml.tmpl index a6b6ec9b49..909ef8e7cb 100644 --- a/deploy/kubernetes/setup-sumologic.yaml.tmpl +++ b/deploy/kubernetes/setup-sumologic.yaml.tmpl @@ -355,7 +355,7 @@ data: variable "create_fields" { description = "If set, terraform will attempt to create fields at Sumo Logic" type = bool - default = false + default = true } --- # Source: sumologic/templates/setup/setup-custom-configmap.yaml diff --git a/tests/terraform/static/all_fields.output.yaml b/tests/terraform/static/all_fields.output.yaml index 5a69330f63..517334f677 100644 --- a/tests/terraform/static/all_fields.output.yaml +++ b/tests/terraform/static/all_fields.output.yaml @@ -371,5 +371,5 @@ data: variable "create_fields" { description = "If set, terraform will attempt to create fields at Sumo Logic" type = bool - default = false + default = true } diff --git a/tests/terraform/static/collector_fields.output.yaml b/tests/terraform/static/collector_fields.output.yaml index 1bfa6ed8e1..62a802cebb 100644 --- a/tests/terraform/static/collector_fields.output.yaml +++ b/tests/terraform/static/collector_fields.output.yaml @@ -325,5 +325,5 @@ data: variable "create_fields" { description = "If set, terraform will attempt to create fields at Sumo Logic" type = bool - default = false + default = true } diff --git a/tests/terraform/static/conditional_sources.output.yaml b/tests/terraform/static/conditional_sources.output.yaml index 64de2d96b0..5310c33f72 100644 --- a/tests/terraform/static/conditional_sources.output.yaml +++ b/tests/terraform/static/conditional_sources.output.yaml @@ -242,5 +242,5 @@ data: variable "create_fields" { description = "If set, terraform will attempt to create fields at Sumo Logic" type = bool - default = false + default = true } diff --git a/tests/terraform/static/custom.output.yaml b/tests/terraform/static/custom.output.yaml index 64de2d96b0..5310c33f72 100644 --- a/tests/terraform/static/custom.output.yaml +++ b/tests/terraform/static/custom.output.yaml @@ -242,5 +242,5 @@ data: variable "create_fields" { description = "If set, terraform will attempt to create fields at Sumo Logic" type = bool - default = false + default = true } diff --git a/tests/terraform/static/default.output.yaml b/tests/terraform/static/default.output.yaml index f5dff21017..56c58308c1 100644 --- a/tests/terraform/static/default.output.yaml +++ b/tests/terraform/static/default.output.yaml @@ -323,5 +323,5 @@ data: variable "create_fields" { description = "If set, terraform will attempt to create fields at Sumo Logic" type = bool - default = false + default = true } diff --git a/tests/terraform/static/disable_default_metrics.output.yaml b/tests/terraform/static/disable_default_metrics.output.yaml index fa034e8df8..64d56e0188 100644 --- a/tests/terraform/static/disable_default_metrics.output.yaml +++ b/tests/terraform/static/disable_default_metrics.output.yaml @@ -315,5 +315,5 @@ data: variable "create_fields" { description = "If set, terraform will attempt to create fields at Sumo Logic" type = bool - default = false + default = true } diff --git a/tests/terraform/static/strip_extrapolation.output.yaml b/tests/terraform/static/strip_extrapolation.output.yaml index ca412c7391..dc08a55fc6 100644 --- a/tests/terraform/static/strip_extrapolation.output.yaml +++ b/tests/terraform/static/strip_extrapolation.output.yaml @@ -324,5 +324,5 @@ data: variable "create_fields" { description = "If set, terraform will attempt to create fields at Sumo Logic" type = bool - default = false + default = true } diff --git a/tests/terraform/static/traces.output.yaml b/tests/terraform/static/traces.output.yaml index 0a30996e67..4dd65115bf 100644 --- a/tests/terraform/static/traces.output.yaml +++ b/tests/terraform/static/traces.output.yaml @@ -251,5 +251,5 @@ data: variable "create_fields" { description = "If set, terraform will attempt to create fields at Sumo Logic" type = bool - default = false + default = true }