terraform-provider-grafana icon indicating copy to clipboard operation
terraform-provider-grafana copied to clipboard

cloudprovider: update regions behavior for cloudwatch jobs

Open tristanburgess opened this issue 1 year ago • 1 comments

This PR implements the Terraform changes needed to accommodate the breaking out of request and response models for CloudWatch scrape jobs. It supports the regionsSubsetOverride field on request, and the return of roleARN, regions, and regionsSubsetOverrideUsed on response.

regionsSubsetOverride not used (default account regions used)

scrape_job = {
  "aws_account_resource_id" = "2"
  "custom_namespace" = tolist([
    {
      "metric" = tolist([
        {
          "name" = "CoolMetric"
          "statistics" = toset([
            "Maximum",
            "Sum",
          ])
        },
      ])
      "name" = "CoolApp"
      "scrape_interval_seconds" = 300
    },
  ])
  "disabled_reason" = ""
  "enabled" = true
  "export_tags" = true
  "id" = "1:my-cloudwatch-scrape-job"
  "name" = "my-cloudwatch-scrape-job"
  "regions_subset_override" = toset([])
  "service" = tolist([
    {
      "metric" = tolist([
        {
          "name" = "CPUUtilization"
          "statistics" = toset([
            "Average",
          ])
        },
        {
          "name" = "StatusCheckFailed"
          "statistics" = toset([
            "Maximum",
          ])
        },
      ])
      "name" = "AWS/EC2"
      "resource_discovery_tag_filter" = tolist([
        {
          "key" = "k8s.io/cluster-autoscaler/enabled"
          "value" = "true"
        },
      ])
      "scrape_interval_seconds" = 300
      "tags_to_add_to_metrics" = toset([
        "eks:cluster-name",
      ])
    },
  ])
  "stack_id" = "1"
}
scrape_job_data = {
  "aws_account_resource_id" = "2"
  "custom_namespace" = tolist([
    {
      "metric" = tolist([
        {
          "name" = "CoolMetric"
          "statistics" = toset([
            "Maximum",
            "Sum",
          ])
        },
      ])
      "name" = "CoolApp"
      "scrape_interval_seconds" = 300
    },
  ])
  "disabled_reason" = ""
  "enabled" = true
  "export_tags" = true
  "id" = "1:my-cloudwatch-scrape-job"
  "name" = "my-cloudwatch-scrape-job"
  "regions" = toset([
    "ap-southeast-1",
    "eu-west-3",
    "us-east-2",
  ])
  "regions_subset_override_used" = false
  "role_arn" = "arn:aws:iam<removed for PR text>"
  "service" = tolist([
    {
      "metric" = tolist([
        {
          "name" = "CPUUtilization"
          "statistics" = toset([
            "Average",
          ])
        },
        {
          "name" = "StatusCheckFailed"
          "statistics" = toset([
            "Maximum",
          ])
        },
      ])
      "name" = "AWS/EC2"
      "resource_discovery_tag_filter" = tolist([
        {
          "key" = "k8s.io/cluster-autoscaler/enabled"
          "value" = "true"
        },
      ])
      "scrape_interval_seconds" = 300
      "tags_to_add_to_metrics" = toset([
        "eks:cluster-name",
      ])
    },
  ])
  "stack_id" = "1"
}

regionsSubsetOverride used

scrape_job = {
  "aws_account_resource_id" = "2"
  "custom_namespace" = tolist([
    {
      "metric" = tolist([
        {
          "name" = "CoolMetric"
          "statistics" = toset([
            "Maximum",
            "Sum",
          ])
        },
      ])
      "name" = "CoolApp"
      "scrape_interval_seconds" = 300
    },
  ])
  "disabled_reason" = "disabled_by_user"
  "enabled" = false
  "export_tags" = true
  "id" = "1:my-cloudwatch-scrape-job"
  "name" = "my-cloudwatch-scrape-job"
  "regions_subset_override" = toset([
    "eu-west-3",
    "us-east-2",
  ])
  "service" = tolist([
    {
      "metric" = tolist([
        {
          "name" = "CPUUtilization"
          "statistics" = toset([
            "Average",
          ])
        },
        {
          "name" = "StatusCheckFailed"
          "statistics" = toset([
            "Maximum",
          ])
        },
      ])
      "name" = "AWS/EC2"
      "resource_discovery_tag_filter" = tolist([
        {
          "key" = "k8s.io/cluster-autoscaler/enabled"
          "value" = "true"
        },
      ])
      "scrape_interval_seconds" = 300
      "tags_to_add_to_metrics" = toset([
        "eks:cluster-name",
      ])
    },
  ])
  "stack_id" = "1"
}
scrape_job_data = {
  "aws_account_resource_id" = "2"
  "custom_namespace" = tolist([
    {
      "metric" = tolist([
        {
          "name" = "CoolMetric"
          "statistics" = toset([
            "Maximum",
            "Sum",
          ])
        },
      ])
      "name" = "CoolApp"
      "scrape_interval_seconds" = 300
    },
  ])
  "disabled_reason" = "disabled_by_user"
  "enabled" = false
  "export_tags" = true
  "id" = "1:my-cloudwatch-scrape-job"
  "name" = "my-cloudwatch-scrape-job"
  "regions" = toset([
    "eu-west-3",
    "us-east-2",
  ])
  "regions_subset_override_used" = true
  "role_arn" = "arn:aws:iam<removed for PR text>"
  "service" = tolist([
    {
      "metric" = tolist([
        {
          "name" = "CPUUtilization"
          "statistics" = toset([
            "Average",
          ])
        },
        {
          "name" = "StatusCheckFailed"
          "statistics" = toset([
            "Maximum",
          ])
        },
      ])
      "name" = "AWS/EC2"
      "resource_discovery_tag_filter" = tolist([
        {
          "key" = "k8s.io/cluster-autoscaler/enabled"
          "value" = "true"
        },
      ])
      "scrape_interval_seconds" = 300
      "tags_to_add_to_metrics" = toset([
        "eks:cluster-name",
      ])
    },
  ])
  "stack_id" = "1"
}

tristanburgess avatar Oct 15 '24 12:10 tristanburgess