DataDog / datadog-api-client-typescript

Typescript client for the Datadog API

Home Page:http://datadoghq.dev/datadog-api-client-typescript/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

HostsApi method listHosts results in a deserialization error

VDubber opened this issue · comments

Describe the bug
The listHosts function fails to deserialize the response, resulting in the following error:

TypeError: unknown type 'string'
at Function.ObjectSerializer.deserialize (/Users/graph-datadog/node_modules/@datadog/datadog-api-client/packages/datadog-api-client-v1/models/ObjectSerializer.ts:2163:15)
at Function.ObjectSerializer.deserialize (/Users/graph-datadog/node_modules/@datadog/datadog-api-client/packages/datadog-api-client-v1/models/ObjectSerializer.ts:2105:28)
at Function.ObjectSerializer.deserialize (/Users/graph-datadog/node_modules/@datadog/datadog-api-client/packages/datadog-api-client-v1/models/ObjectSerializer.ts:2171:52)
at Function.ObjectSerializer.deserialize (/Users/graph-datadog/node_modules/@datadog/datadog-api-client/packages/datadog-api-client-v1/models/ObjectSerializer.ts:2171:52)
at Function.ObjectSerializer.deserialize (/Users/graph-datadog/node_modules/@datadog/datadog-api-client/packages/datadog-api-client-v1/models/ObjectSerializer.ts:2105:28)
at Function.ObjectSerializer.deserialize (/Users/graph-datadog/node_modules/@datadog/datadog-api-client/packages/datadog-api-client-v1/models/ObjectSerializer.ts:2171:52)
at HostsApiResponseProcessor.<anonymous> (/Users/graph-datadog/node_modules/@datadog/datadog-api-client/packages/datadog-api-client-v1/apis/HostsApi.ts:312:38)
at step (/Users/graph-datadog/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/apis/HostsApi.js:48:23)
at Object.next (/Users/graph-datadog/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/apis/HostsApi.js:29:53)
at fulfilled (/Users/graph-datadog/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/apis/HostsApi.js:20:58)

To Reproduce
Steps to reproduce the behavior:

  1. Create file called hostTest.ts
  2. Add the following code:
import { client, v1 } from '@datadog/datadog-api-client';
import fetch from "node-fetch"


(async () => {
  const configuration = client.createConfiguration({
    authMethods: {
      apiKeyAuth: 'xxx',
      appKeyAuth: 'xxx',
    },
    debug: true,
  });

  client.setServerVariables(configuration, {
    site: 'us5.datadoghq.com',
  });

  const a = new v1.HostsApi(configuration);
  const r = await a.listHosts().catch(e => console.error(e))

  console.log(r)

  // Using node-fetch

  const nodeR = await fetch(
    'https://api.us5.datadoghq.com/api/v1/hosts', 
    { 
      method: 'GET', 
      headers: {
        Accept: 'application/json',
        "DD-API-KEY": 'xxx',
        "DD-APPLICATION-KEY": 'xxx'
      }
    })
  console.log(await nodeR.json())

})();
  1. Execute with ts-node (provide dependencies)

Expected behavior
I expect to receive back an object with hosts similar to what node-fetch produces.

Screenshots
If applicable, add screenshots to help explain your problem.

Environment and Versions (please complete the following information):
Using node v14
Using @datadog/datadog-api-client@1.8.0
MacOS Ventura 13.1

Additional context
Add any other context about the problem here.

Thanks for opening this issue. Could you curl the endpoint or log the http response by setting debug to true and share the result. Please redact any sensitive information.

Additionally, could you try the 1.9.0 of the library as well which was released today. We recently merged #1003 which might be related to this issue. Thanks again!

I gave 1.9.0 a go and it works great. Thanks!

If it is helpful, here is the result of the curl. It was failing on the MBP host. I added the docker host later.

{
  "host_list": [
    {
      "id": 2323,
      "tags_by_source": { "Datadog": ["host:s-MBP.local"] },
      "aliases": ["s-MBP.local"],
      "apps": ["ntp", "agent"],
      "sources": ["agent"],
      "name": "s-MBP.local",
      "host_name": "s-MBP.local",
      "up": true,
      "last_reported_time": 1675971295,
      "is_muted": false,
      "mute_timeout": null,
      "meta": {
        "cpuCores": 8,
        "socket-hostname": "s-MBP.local",
        "agent_flavor": "agent",
        "install_method": {
          "tool": "install_script_mac",
          "installer_version": "install_script_mac-1.1.0",
          "tool_version": "install_script_mac"
        },
        "processor": "Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz",
        "macV": ["13.1", ["", "", ""], "amd64"],
        "nixV": [null, null, null],
        "agent_checks": [
          ["ntp", "ntp", "ntp:xxx", "OK", "", ""],
          ["network", "network", "network:xxx", "OK", "", ""],
          ["load", "load", "load", "OK", "", ""],
          ["disk", "disk", "disk:xxx", "OK", "", ""],
          ["uptime", "uptime", "uptime", "OK", "", ""],
          ["memory", "memory", "memory", "OK", "", ""],
          ["io", "io", "io", "OK", "", ""],
          ["cpu", "cpu", "cpu", "OK", "", ""]
        ],
        "pythonV": "3.xxx.16",
        "machine": "amd64",
        "winV": [null, null, null],
        "fbsdV": [null, null, null],
        "network": null,
        "agent_version": "7.42.1",
        "socket-fqdn": "localhost",
        "platform": "darwin",
        "logs_agent": {
          "auto_multi_line_detection_enabled": false,
          "transport": ""
        },
        "timezones": ["MST"],
        "host_id": 22322323
      },
      "metrics": { "cpu": 8.535383, "iowait": 0, "load": 0.24775222 }
    },
    {
      "id": 444,
      "tags_by_source": { "Datadog": ["host:docker-desktop"] },
      "aliases": ["docker-desktop"],
      "apps": ["ntp", "agent", "container", "docker"],
      "sources": ["agent"],
      "name": "docker-desktop",
      "host_name": "docker-desktop",
      "up": true,
      "last_reported_time": 1675971637,
      "is_muted": false,
      "mute_timeout": null,
      "meta": {
        "agent_version": "7.42.1",
        "winV": ["", "", ""],
        "fbsdV": ["", "", ""],
        "socket-hostname": "dcef9da35b3a",
        "container_meta": {
          "docker_swarm": "inactive",
          "docker_version": "20.10.10"
        },
        "pythonV": "3.8.16",
        "nixV": ["ubuntu", "22.04", ""],
        "processor": "Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz",
        "logs_agent": {
          "auto_multi_line_detection_enabled": false,
          "transport": ""
        },
        "agent_flavor": "agent",
        "platform": "linux",
        "network": null,
        "agent_checks": [
          ["container", "container", "container", "OK", "", ""],
          ["network", "network", "network:xx", "OK", "", ""],
          ["load", "load", "load", "OK", "", ""],
          ["cpu", "cpu", "cpu", "OK", "", ""],
          ["ntp", "ntp", "ntp:xxx", "OK", "", ""],
          ["file_handle", "file_handle", "file_handle", "OK", "", ""],
          ["memory", "memory", "memory", "OK", "", ""],
          ["io", "io", "io", "OK", "", ""],
          ["disk", "disk", "disk:xxx", "OK", "", ""],
          ["uptime", "uptime", "uptime", "OK", "", ""],
          ["docker", "docker", "docker", "OK", "", ""]
        ],
        "install_method": {
          "tool": "docker",
          "installer_version": "docker",
          "tool_version": "docker"
        },
        "socket-fqdn": "xxx",
        "cpuCores": 1,
        "timezones": ["UTC"],
        "machine": "amd64",
        "macV": ["", "", ""],
        "host_id": 333
      },
      "metrics": {
        "cpu": 1.5874131,
        "iowait": 0.0051527563,
        "load": 0.029211111
      }
    }
  ],
  "total_returned": 2,
  "total_matching": 2,
  "exact_total_matching": true
}

I've reencountered this error 1.9.0. It was resolved for the above dataset but when run against our customer's data, it is failing with the same error. Unfortunately I can't provide the customer's data to additional insights.

TypeError: unknown type 'string'
at Function.ObjectSerializer.deserialize (/opt/jupiterone/app/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/models/ObjectSerializer.js:2091:23)
at Function.ObjectSerializer.deserialize (/opt/jupiterone/app/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/models/ObjectSerializer.js:2038:55)
at Function.ObjectSerializer.deserialize (/opt/jupiterone/app/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/models/ObjectSerializer.js:2097:60)
at Function.ObjectSerializer.deserialize (/opt/jupiterone/app/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/models/ObjectSerializer.js:2097:60)
at Function.ObjectSerializer.deserialize (/opt/jupiterone/app/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/models/ObjectSerializer.js:2038:55)
at Function.ObjectSerializer.deserialize (/opt/jupiterone/app/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/models/ObjectSerializer.js:2097:60)
at HostsApiResponseProcessor.<anonymous> (/opt/jupiterone/app/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/apis/HostsApi.js:283:37)
at step (/opt/jupiterone/app/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/apis/HostsApi.js:48:23)
at Object.next (/opt/jupiterone/app/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/apis/HostsApi.js:29:53)
at fulfilled (/opt/jupiterone/app/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/apis/HostsApi.js:20:58)
Caused by: TypeError: unknown type 'string'
at Function.ObjectSerializer.deserialize (/opt/jupiterone/app/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/models/ObjectSerializer.js:2091:23)
at Function.ObjectSerializer.deserialize (/opt/jupiterone/app/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/models/ObjectSerializer.js:2038:55)
at Function.ObjectSerializer.deserialize (/opt/jupiterone/app/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/models/ObjectSerializer.js:2097:60)
at Function.ObjectSerializer.deserialize (/opt/jupiterone/app/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/models/ObjectSerializer.js:2097:60)
at Function.ObjectSerializer.deserialize (/opt/jupiterone/app/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/models/ObjectSerializer.js:2038:55)
at Function.ObjectSerializer.deserialize (/opt/jupiterone/app/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/models/ObjectSerializer.js:2097:60)
at HostsApiResponseProcessor.<anonymous> (/opt/jupiterone/app/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/apis/HostsApi.js:283:37)
at step (/opt/jupiterone/app/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/apis/HostsApi.js:48:23)
at Object.next (/opt/jupiterone/app/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/apis/HostsApi.js:29:53)
at fulfilled (/opt/jupiterone/app/node_modules/@datadog/datadog-api-client/dist/packages/datadog-api-client-v1/apis/HostsApi.js:20:58)

We just merged: #1022
This should relax the constraints around hosts versions a bit and resolve this issue. I will follow up here once the new client version has been released. Otherwise, you are able to install the client from latest master.

👋 we just released v1.10.0 which includes the previously mentioned fixed.

I'm going to close this issue but feel free to re-open if the issue persists. Thanks!