DataDog / ansible-datadog-callback

Ansible callback to get stats & events directly into Datadog http://datadoghq.com
MIT License
93 stars 47 forks source link

cast api_key as str in datadog.initialize #54

Closed jueyaye closed 4 years ago

jueyaye commented 4 years ago

When using a vaulted variable the API key is returned with the type: ansible.parsing.yaml.objects.AnsibleVaultEncryptedUnicode (ref), where as datadogpy expects the type: String (ref). The result is that the API fails to parse the Ansible type and the following (403) error is returned by API:

{
    "status": "error",
    "code": 403,
    "errors": [
        "Forbidden"
    ],
    "statuspage": "http://status.datadoghq.com",
    "twitter": "http://twitter.com/datadogops",
    "email": "support@datadoghq.com"
}

While the AnsibleVaultEncryptedUnicode can not be a considered a String most common python string actions will now work as expected (ref). Casting the API key to a String before it is used to initialise datadogpy seems to resolve the issue where the API returns 403.

=> Relevant test on Ansible Repo: https://github.com/ansible/ansible/blob/4856ab0e681f799ed4f893a34deb6a50e6d2400e/test/units/config/test_manager.py#L147-L157