Skip to content

Diffs are hard to read #367

@errm

Description

@errm

Terraform Version

Terraform v0.14.6
+ provider registry.terraform.io/fastly/fastly v0.24.0

Affected Resource(s)

  • fastly_service_v1

Expected Behavior

What should have happened?

When making a change to attributes in a backend block, or a few lines of a custom vcl I would like to see a diff that explained what changed.

e.g.

  # fastly_service_v1.example will be updated in-place
  ~ resource "fastly_service_v1" "example" {
        id             = "redacted"
        name           = "example.example.org"
        # (5 unchanged attributes hidden)

      ~ backend {
          ~ first_byte_timeout    = 21000 -> 1500
          # (n unchanged attributes hidden)
        }

        # (8 unchanged blocks hidden)
    }

Actual Behavior

What actually happened?

changing any attribute in a block shows it being replaced. This makes it much harder to review the changes being made to the service by looking at the diff.

The user experiance e.g. when looking at the diff in the fastly web UI is much nicer.


  # fastly_service_v1.global-api-test will be updated in-place
  ~ resource "fastly_service_v1" "example" {
        id             = "redacted"
        name           = "example.example.org"
        # (5 unchanged attributes hidden)

      + backend {
          + address               = "backend.example.org"
          + auto_loadbalance      = false
          + between_bytes_timeout = 10000
          + connect_timeout       = 1000
          + error_threshold       = 0
          + first_byte_timeout    = 1500
          + max_conn              = 200
          + name                  = "example-backend"
          + port                  = 443
        }
      - backend {
          - address               = "backend.example.org" -> null
          - auto_loadbalance      = false -> null
          - between_bytes_timeout = 10000 -> null
          - connect_timeout       = 1000 -> null
          - error_threshold       = 0 -> null
          - first_byte_timeout    = 21000 -> null
          - max_conn              = 200 -> null
          - name                  = "example-backend" -> null
          - port                  = 443 -> null
        }

        # (8 unchanged blocks hidden)
    }

I am not totally sure if this is technically possible, but I don't recall this kind of experiance e.g. when using the AWS provider.

Presumably if the blocks were keyed of their name it would be possible to diff the old and the new block in a more useful way than is currently output.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions