Skip to content

Commit 695609b

Browse files
authored
fix object deserialization for undo actions (#3030)
1 parent 30818e6 commit 695609b

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

features/support/undo.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import fs from "fs";
22
import path from "path";
3+
import log from "loglevel";
4+
35
import { getProperty, pathLookup } from "./templating";
6+
import { ScenariosModelMappings } from "./scenarios_model_mapping";
47
import * as datadogApiClient from "../../index";
58

6-
import log from "loglevel";
79
const logger = log.getLogger("testing")
810
logger.setLevel(process.env.DEBUG ? logger.levels.DEBUG : logger.levels.INFO);
911

10-
1112
interface iOperationParameter {
1213
name: string;
1314
origin: string;
@@ -99,14 +100,19 @@ function buildUndoFor(
99100
opts[p.name.toAttributeName()] = pathLookup(dataSource, p.source);
100101
} else if (p.template !== undefined) {
101102
const data = JSON.parse(p.template.templated(dataSource));
102-
const param: { [key: string]: any } = {};
103-
for (const [key, value] of Object.entries(data)) {
104-
param[key.toAttributeName()] = value;
105-
}
106-
opts[p.name.toAttributeName()] = param;
103+
opts[p.name.toAttributeName()] = data;
107104
}
108105
}
109106

107+
const objectSerializer = getProperty(datadogApiClient, apiVersion).ObjectSerializer;
108+
Object.keys(opts).forEach(key => {
109+
opts[key] = objectSerializer.deserialize(
110+
opts[key],
111+
ScenariosModelMappings[`${apiVersion}.${operationUndo.undo.operationId}`][key].type,
112+
ScenariosModelMappings[`${apiVersion}.${operationUndo.undo.operationId}`][key].format
113+
)
114+
});
115+
110116
try {
111117
await apiInstance[operationName](opts);
112118
} catch (error) {

0 commit comments

Comments
 (0)