goss-org / goss

Quick and Easy server testing/validation
https://goss.rocks
Apache License 2.0
5.61k stars 472 forks source link

DNS checks should have hostname as attribute, not key #518

Closed sshipway closed 1 year ago

sshipway commented 4 years ago

Describe the feature: Currently, DNS checks specify the hostname to resolve as a key. The server name to use for resolving is an attribute. However, if you want to test the same item resolving on multiple DNS servers you cannot do it as the resolving hostname is a unique key in the heira.

Describe the solution you'd like As previously done with the exec resource, I would like to add a new attribute 'resolve' which optionally holds the hostname to resolve, overriding the key. This will allow structures such as:

dns:
  primaryserver:
    resolve: myhost.company.com
    server: ns0.company.com
    resolveable: yes
  secondaryserver:
    resolve: myhost.company.com
    server: ns1.company.com
    resolveable: yes

which will allow you to check correct name resolution from multiple DNS hosts, which is not currently possible.

I also believe that keeping the keys as symbolic only is a better way to work, with all the test definition held in the attributes, as this allows better control when merging.

Describe alternatives you've considered It would be possible to use different resolution targets on different DNS servers, but this seems untidy, and may cause automation or scaling problems.

sshipway commented 4 years ago

The same issue affects HTTP tests, as well, since the URL is held in the key and this prevents you from running the same URL test against different backends or with different header sets.

aelsabbahy commented 4 years ago

Please see the great work @sshipway has already done for command :)

In all seriousness, this feature request is approved. Also, add addr to the mix, since there's a PR (#344) that adds localaddress to define source address.

I'll mark this as approved, feel free to work on it if you have time.

sshipway commented 4 years ago

I'll try doing something on this over xmas, I'm stuck in the office on call while everything's quiet.

aelsabbahy commented 4 years ago

Thinking this should be done for all resources at this point.

Another usecases: https://github.com/aelsabbahy/goss/issues/339

Maybe this ticket should be a generic one for all resources?

sshipway commented 2 years ago

Two years and I've still not been able to work on this. I blame covid for giving me more work, and lack of motivation...
I still think this is an important enhancement, hopefully I'll be able to find some time to work on it. I'd hate to see goss wither from lack of love.