@hpcc-js/comms 2.70.0 → 2.72.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es6.js +269 -24
- package/dist/index.es6.js.map +1 -1
- package/dist/index.js +270 -24
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/index.node.js +270 -24
- package/dist/index.node.js.map +1 -1
- package/dist/index.node.min.js +1 -1
- package/dist/index.node.min.js.map +1 -1
- package/lib-es6/__package__.js +2 -2
- package/lib-es6/ecl/machine.js +13 -3
- package/lib-es6/ecl/machine.js.map +1 -1
- package/lib-es6/ecl/targetCluster.js +4 -4
- package/lib-es6/ecl/targetCluster.js.map +1 -1
- package/lib-es6/index-common.js +1 -0
- package/lib-es6/index-common.js.map +1 -1
- package/lib-es6/services/wsAccess.js +11 -0
- package/lib-es6/services/wsAccess.js.map +1 -0
- package/lib-es6/services/wsMachine.js +12 -23
- package/lib-es6/services/wsMachine.js.map +1 -1
- package/lib-es6/services/wsdl/ws_access/v1.16/ws_access.js +203 -0
- package/lib-es6/services/wsdl/ws_access/v1.16/ws_access.js.map +1 -0
- package/lib-es6/services/wsdl/ws_machine/v1.17/ws_machine.js +41 -0
- package/lib-es6/services/wsdl/ws_machine/v1.17/ws_machine.js.map +1 -0
- package/package.json +2 -2
- package/src/__package__.ts +2 -2
- package/src/ecl/machine.ts +15 -13
- package/src/ecl/targetCluster.ts +10 -10
- package/src/index-common.ts +1 -0
- package/src/services/wsAccess.ts +8 -0
- package/src/services/wsMachine.ts +17 -293
- package/src/services/wsdl/ws_access/v1.16/ws_access.ts +1086 -0
- package/src/services/wsdl/ws_machine/v1.17/ws_machine.ts +567 -0
- package/types/__package__.d.ts +2 -2
- package/types/ecl/machine.d.ts +12 -10
- package/types/ecl/machine.d.ts.map +1 -1
- package/types/ecl/targetCluster.d.ts +6 -6
- package/types/ecl/targetCluster.d.ts.map +1 -1
- package/types/index-common.d.ts +1 -0
- package/types/index-common.d.ts.map +1 -1
- package/types/services/wsAccess.d.ts +5 -0
- package/types/services/wsAccess.d.ts.map +1 -0
- package/types/services/wsMachine.d.ts +9 -235
- package/types/services/wsMachine.d.ts.map +1 -1
- package/types/services/wsdl/ws_access/v1.16/ws_access.d.ts +778 -0
- package/types/services/wsdl/ws_access/v1.16/ws_access.d.ts.map +1 -0
- package/types/services/wsdl/ws_machine/v1.17/ws_machine.d.ts +470 -0
- package/types/services/wsdl/ws_machine/v1.17/ws_machine.d.ts.map +1 -0
- package/types-3.4/__package__.d.ts +2 -2
- package/types-3.4/ecl/machine.d.ts +12 -10
- package/types-3.4/ecl/targetCluster.d.ts +6 -6
- package/types-3.4/index-common.d.ts +1 -0
- package/types-3.4/services/wsAccess.d.ts +5 -0
- package/types-3.4/services/wsMachine.d.ts +9 -235
- package/types-3.4/services/wsdl/ws_access/v1.16/ws_access.d.ts +778 -0
- package/types-3.4/services/wsdl/ws_machine/v1.17/ws_machine.d.ts +470 -0
package/src/ecl/targetCluster.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Cache, StateObject } from "@hpcc-js/util";
|
|
2
2
|
import { IConnection, IOptions } from "../connection";
|
|
3
|
-
import {
|
|
3
|
+
import { WsMachine, WsMachineEx, MachineServiceEx } from "../services/wsMachine";
|
|
4
4
|
import { TopologyService, TpListTargetClusters, TpTargetClusterQuery } from "../services/wsTopology";
|
|
5
5
|
import { Machine } from "./machine";
|
|
6
6
|
|
|
@@ -14,14 +14,14 @@ export class TargetClusterCache extends Cache<{ BaseUrl: string, Name: string },
|
|
|
14
14
|
const _targetCluster = new TargetClusterCache();
|
|
15
15
|
|
|
16
16
|
export interface TpTargetClusterEx {
|
|
17
|
-
MachineInfoEx:
|
|
17
|
+
MachineInfoEx: WsMachine.MachineInfoEx[];
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
export type UTargetClusterState = TpTargetClusterQuery.TpTargetCluster & TpListTargetClusters.TpClusterNameType & TpTargetClusterEx;
|
|
21
21
|
export type ITargetClusterState = TpTargetClusterQuery.TpTargetCluster | TpListTargetClusters.TpClusterNameType | TpTargetClusterEx;
|
|
22
22
|
export class TargetCluster extends StateObject<UTargetClusterState, ITargetClusterState> implements UTargetClusterState {
|
|
23
23
|
protected connection: TopologyService;
|
|
24
|
-
protected machineConnection:
|
|
24
|
+
protected machineConnection: MachineServiceEx;
|
|
25
25
|
get BaseUrl() { return this.connection.baseUrl; }
|
|
26
26
|
|
|
27
27
|
get Name(): string { return this.get("Name"); }
|
|
@@ -33,7 +33,7 @@ export class TargetCluster extends StateObject<UTargetClusterState, ITargetClust
|
|
|
33
33
|
get TpEclServers(): TpTargetClusterQuery.TpEclServers { return this.get("TpEclServers"); }
|
|
34
34
|
get TpEclAgents(): TpTargetClusterQuery.TpEclAgents { return this.get("TpEclAgents"); }
|
|
35
35
|
get TpEclSchedulers(): TpTargetClusterQuery.TpEclSchedulers { return this.get("TpEclSchedulers"); }
|
|
36
|
-
get MachineInfoEx():
|
|
36
|
+
get MachineInfoEx(): WsMachine.MachineInfoEx[] { return this.get("MachineInfoEx", []); }
|
|
37
37
|
get CMachineInfoEx(): Machine[] {
|
|
38
38
|
return this.MachineInfoEx.map(machineInfoEx => Machine.attach(this.machineConnection, machineInfoEx.Address, machineInfoEx));
|
|
39
39
|
}
|
|
@@ -54,24 +54,24 @@ export class TargetCluster extends StateObject<UTargetClusterState, ITargetClust
|
|
|
54
54
|
super();
|
|
55
55
|
if (optsConnection instanceof TopologyService) {
|
|
56
56
|
this.connection = optsConnection;
|
|
57
|
-
this.machineConnection = new
|
|
57
|
+
this.machineConnection = new MachineServiceEx(optsConnection.connectionOptions());
|
|
58
58
|
} else {
|
|
59
59
|
this.connection = new TopologyService(optsConnection);
|
|
60
|
-
this.machineConnection = new
|
|
60
|
+
this.machineConnection = new MachineServiceEx(optsConnection);
|
|
61
61
|
}
|
|
62
62
|
this.clear({
|
|
63
63
|
Name: name
|
|
64
64
|
});
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
fetchMachines(request:
|
|
67
|
+
fetchMachines(request: WsMachine.GetTargetClusterInfoRequest = {}): Promise<Machine[]> {
|
|
68
68
|
return this.machineConnection.GetTargetClusterInfo({
|
|
69
69
|
TargetClusters: {
|
|
70
70
|
Item: [`${this.Type}:${this.Name}`]
|
|
71
71
|
},
|
|
72
72
|
...request
|
|
73
73
|
}).then(response => {
|
|
74
|
-
const retVal:
|
|
74
|
+
const retVal: WsMachine.MachineInfoEx[] = [];
|
|
75
75
|
for (const machineInfo of response.TargetClusterInfoList.TargetClusterInfo) {
|
|
76
76
|
for (const machineInfoEx of machineInfo.Processes.MachineInfoEx) {
|
|
77
77
|
retVal.push(machineInfoEx);
|
|
@@ -102,8 +102,8 @@ export class TargetCluster extends StateObject<UTargetClusterState, ITargetClust
|
|
|
102
102
|
};
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
fetchUsage(): Promise<
|
|
106
|
-
return this.machineConnection.GetTargetClusterUsageEx([this.Name]);
|
|
105
|
+
fetchUsage(): Promise<WsMachineEx.TargetClusterUsage[]> {
|
|
106
|
+
return this.machineConnection.GetTargetClusterUsageEx({ TargetClusters: { Item: [this.Name] } });
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
|
package/src/index-common.ts
CHANGED
|
@@ -1,327 +1,51 @@
|
|
|
1
1
|
import { exists } from "@hpcc-js/util";
|
|
2
2
|
import { max as d3Max, mean as d3Mean } from "d3-array";
|
|
3
|
-
import { IConnection, IOptions } from "../connection";
|
|
4
|
-
import { ESPConnection } from "../espConnection";
|
|
5
3
|
|
|
6
|
-
|
|
7
|
-
Response structures generated via:
|
|
8
|
-
* http://192.168.3.22:8010/ws_machine/GetTargetClusterInfo?respjson_
|
|
9
|
-
* http://json2ts.com/
|
|
10
|
-
*/
|
|
4
|
+
import { MachineService, WsMachine } from "./wsdl/ws_machine/v1.17/ws_machine";
|
|
11
5
|
|
|
12
|
-
export
|
|
6
|
+
export {
|
|
7
|
+
WsMachine
|
|
8
|
+
};
|
|
13
9
|
|
|
14
|
-
|
|
15
|
-
Item: string[];
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export interface Request {
|
|
19
|
-
TargetClusters?: TargetClusters;
|
|
20
|
-
AddProcessesToFilter?: string;
|
|
21
|
-
ApplyProcessFilter?: boolean;
|
|
22
|
-
GetProcessorInfo?: boolean;
|
|
23
|
-
GetStorageInfo?: boolean;
|
|
24
|
-
LocalFileSystemsOnly?: boolean;
|
|
25
|
-
GetSoftwareInfo?: boolean;
|
|
26
|
-
MemThreshold?: number;
|
|
27
|
-
DiskThreshold?: number;
|
|
28
|
-
CpuThreshold?: number;
|
|
29
|
-
AutoRefresh?: number;
|
|
30
|
-
MemThresholdType?: string;
|
|
31
|
-
DiskThresholdType?: string;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export interface Exception {
|
|
35
|
-
Code: string;
|
|
36
|
-
Audience: string;
|
|
37
|
-
Source: string;
|
|
38
|
-
Message: string;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export interface Exceptions {
|
|
42
|
-
Source: string;
|
|
43
|
-
Exception: Exception[];
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export interface Columns {
|
|
47
|
-
Item: string[];
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export interface Addresses {
|
|
51
|
-
Item: string[];
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export interface RequestInfo {
|
|
55
|
-
Addresses: Addresses;
|
|
56
|
-
ClusterType: string;
|
|
57
|
-
Cluster: string;
|
|
58
|
-
OldIP: string;
|
|
59
|
-
Path: string;
|
|
60
|
-
AddProcessesToFilter: string;
|
|
61
|
-
ApplyProcessFilter: boolean;
|
|
62
|
-
GetProcessorInfo: boolean;
|
|
63
|
-
GetStorageInfo: boolean;
|
|
64
|
-
LocalFileSystemsOnly: boolean;
|
|
65
|
-
GetSoftwareInfo: boolean;
|
|
66
|
-
MemThreshold: number;
|
|
67
|
-
DiskThreshold: number;
|
|
68
|
-
CpuThreshold: number;
|
|
69
|
-
AutoRefresh: number;
|
|
70
|
-
MemThresholdType: string;
|
|
71
|
-
DiskThresholdType: string;
|
|
72
|
-
SecurityString: string;
|
|
73
|
-
UserName: string;
|
|
74
|
-
Password: string;
|
|
75
|
-
EnableSNMP: boolean;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
export interface ProcessorInfo {
|
|
79
|
-
Type: string;
|
|
80
|
-
Load: number;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
export interface Processors {
|
|
84
|
-
ProcessorInfo: ProcessorInfo[];
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
export interface StorageInfo {
|
|
88
|
-
Description: string;
|
|
89
|
-
Type: string;
|
|
90
|
-
Available: number;
|
|
91
|
-
PercentAvail: number;
|
|
92
|
-
Total: number;
|
|
93
|
-
Failures: number;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
export interface Storage {
|
|
97
|
-
StorageInfo: StorageInfo[];
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
export interface SWRunInfo {
|
|
101
|
-
Name: string;
|
|
102
|
-
Instances: number;
|
|
103
|
-
State: number;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
export interface Running {
|
|
107
|
-
SWRunInfo: SWRunInfo[];
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
export interface PhysicalMemory {
|
|
111
|
-
Description: string;
|
|
112
|
-
Type: string;
|
|
113
|
-
Available: number;
|
|
114
|
-
PercentAvail: number;
|
|
115
|
-
Total: number;
|
|
116
|
-
Failures: number;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
export interface VirtualMemory {
|
|
120
|
-
Description: string;
|
|
121
|
-
Type: string;
|
|
122
|
-
Available: number;
|
|
123
|
-
PercentAvail: number;
|
|
124
|
-
Total: number;
|
|
125
|
-
Failures: number;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
export interface ComponentInfo {
|
|
129
|
-
Condition: number;
|
|
130
|
-
State: number;
|
|
131
|
-
UpTime: string;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
export interface MachineInfoEx {
|
|
135
|
-
Address: string;
|
|
136
|
-
ConfigAddress: string;
|
|
137
|
-
Name: string;
|
|
138
|
-
ProcessType: string;
|
|
139
|
-
DisplayType: string;
|
|
140
|
-
Description: string;
|
|
141
|
-
AgentVersion: string;
|
|
142
|
-
Contact: string;
|
|
143
|
-
Location: string;
|
|
144
|
-
UpTime: string;
|
|
145
|
-
ComponentName: string;
|
|
146
|
-
ComponentPath: string;
|
|
147
|
-
RoxieState: string;
|
|
148
|
-
RoxieStateDetails: string;
|
|
149
|
-
OS: number;
|
|
150
|
-
ProcessNumber: number;
|
|
151
|
-
Processors: Processors;
|
|
152
|
-
Storage: Storage;
|
|
153
|
-
Running: Running;
|
|
154
|
-
PhysicalMemory: PhysicalMemory;
|
|
155
|
-
VirtualMemory: VirtualMemory;
|
|
156
|
-
ComponentInfo: ComponentInfo;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
export interface Processes {
|
|
160
|
-
MachineInfoEx: MachineInfoEx[];
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
export interface TargetClusterInfo {
|
|
164
|
-
Name: string;
|
|
165
|
-
Type: string;
|
|
166
|
-
Processes: Processes;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
export interface TargetClusterInfoList {
|
|
170
|
-
TargetClusterInfo: TargetClusterInfo[];
|
|
171
|
-
}
|
|
10
|
+
export namespace WsMachineEx {
|
|
172
11
|
|
|
173
|
-
export interface
|
|
174
|
-
Exceptions: Exceptions;
|
|
175
|
-
Columns: Columns;
|
|
176
|
-
RequestInfo: RequestInfo;
|
|
177
|
-
TargetClusterInfoList: TargetClusterInfoList;
|
|
178
|
-
TimeStamp: string;
|
|
179
|
-
AcceptLanguage: string;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
export namespace GetTargetClusterUsage {
|
|
184
|
-
|
|
185
|
-
export interface TargetClusters {
|
|
186
|
-
Item: string[];
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
export interface Request {
|
|
190
|
-
TargetClusters?: TargetClusters;
|
|
191
|
-
BypassCachedResult: boolean;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
export interface Exception {
|
|
195
|
-
Code: string;
|
|
196
|
-
Audience: string;
|
|
197
|
-
Source: string;
|
|
198
|
-
Message: string;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
export interface Exceptions {
|
|
202
|
-
Source: string;
|
|
203
|
-
Exception: Exception[];
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
export interface DiskUsage {
|
|
207
|
-
Name: string;
|
|
208
|
-
Path: string;
|
|
209
|
-
Description: string;
|
|
210
|
-
InUse: number;
|
|
211
|
-
Available: number;
|
|
212
|
-
PercentAvailable: number;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
export interface DiskUsages {
|
|
216
|
-
DiskUsage: DiskUsage[];
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
export interface MachineUsage {
|
|
220
|
-
Name: string;
|
|
221
|
-
NetAddress: string;
|
|
222
|
-
Description: string;
|
|
223
|
-
DiskUsages: DiskUsages;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
export interface MachineUsages {
|
|
227
|
-
MachineUsage: MachineUsage[];
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
export interface ComponentUsage {
|
|
231
|
-
Type: string;
|
|
232
|
-
Name: string;
|
|
233
|
-
Description: string;
|
|
234
|
-
MachineUsages: MachineUsages;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
export interface ComponentUsages {
|
|
238
|
-
ComponentUsage: ComponentUsage[];
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
export interface TargetClusterUsage {
|
|
242
|
-
Name: string;
|
|
243
|
-
Description: string;
|
|
244
|
-
ComponentUsages: ComponentUsages;
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
export interface TargetClusterUsages {
|
|
248
|
-
TargetClusterUsage: TargetClusterUsage[];
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
export interface Response {
|
|
252
|
-
Exceptions: Exceptions;
|
|
253
|
-
TargetClusterUsages: TargetClusterUsages;
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
export namespace GetTargetClusterUsageEx {
|
|
258
|
-
|
|
259
|
-
export interface DiskUsage {
|
|
260
|
-
Name: string;
|
|
261
|
-
Path: string;
|
|
262
|
-
Description: string;
|
|
263
|
-
InUse: number;
|
|
264
|
-
Available: number;
|
|
12
|
+
export interface DiskUsage extends WsMachine.DiskUsage {
|
|
265
13
|
Total: number;
|
|
266
|
-
PercentAvailable: number;
|
|
267
14
|
PercentUsed: number;
|
|
268
15
|
}
|
|
269
16
|
|
|
270
|
-
export interface MachineUsage {
|
|
271
|
-
Name: string;
|
|
272
|
-
NetAddress: string;
|
|
273
|
-
Description: string;
|
|
17
|
+
export interface MachineUsage extends Omit<WsMachine.MachineUsage, "DiskUsages"> {
|
|
274
18
|
DiskUsages: DiskUsage[];
|
|
275
19
|
mean: number;
|
|
276
20
|
max: number;
|
|
277
21
|
}
|
|
278
22
|
|
|
279
|
-
export interface ComponentUsage {
|
|
280
|
-
Type: string;
|
|
281
|
-
Name: string;
|
|
282
|
-
Description: string;
|
|
23
|
+
export interface ComponentUsage extends Omit<WsMachine.ComponentUsage, "MachineUsages"> {
|
|
283
24
|
MachineUsages: MachineUsage[];
|
|
284
25
|
MachineUsagesDescription: string;
|
|
285
26
|
mean: number;
|
|
286
27
|
max: number;
|
|
287
28
|
}
|
|
288
29
|
|
|
289
|
-
export interface TargetClusterUsage {
|
|
290
|
-
Name: string;
|
|
291
|
-
Description: string;
|
|
30
|
+
export interface TargetClusterUsage extends Omit<WsMachine.TargetClusterUsage, "ComponentUsages"> {
|
|
292
31
|
ComponentUsages: ComponentUsage[];
|
|
293
32
|
ComponentUsagesDescription: string;
|
|
294
33
|
mean: number;
|
|
295
34
|
max: number;
|
|
296
35
|
}
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
export class MachineService {
|
|
300
|
-
private _connection: ESPConnection;
|
|
301
36
|
|
|
302
|
-
|
|
303
|
-
this._connection = new ESPConnection(optsConnection, "ws_machine", "1.13");
|
|
304
|
-
}
|
|
37
|
+
}
|
|
305
38
|
|
|
306
|
-
|
|
307
|
-
return this._connection.send("GetTargetClusterInfo", request);
|
|
308
|
-
}
|
|
39
|
+
export class MachineServiceEx extends MachineService {
|
|
309
40
|
|
|
310
|
-
|
|
311
|
-
return this._connection.send("GetTargetClusterUsage", {
|
|
312
|
-
TargetClusters: targetClusters ? { Item: targetClusters } : {},
|
|
313
|
-
BypassCachedResult: bypassCachedResult
|
|
314
|
-
}).then(response => {
|
|
41
|
+
GetTargetClusterUsageEx(request: WsMachine.GetTargetClusterUsageRequest): Promise<WsMachineEx.TargetClusterUsage[]> {
|
|
42
|
+
return this._connection.send("GetTargetClusterUsage", request).then(response => {
|
|
315
43
|
return exists("TargetClusterUsages.TargetClusterUsage", response) ? response.TargetClusterUsages.TargetClusterUsage : [];
|
|
316
|
-
})
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
GetTargetClusterUsageEx(targetClusters?: string[], bypassCachedResult: boolean = false): Promise<GetTargetClusterUsageEx.TargetClusterUsage[]> {
|
|
320
|
-
return this.GetTargetClusterUsage(targetClusters, bypassCachedResult).then(response => {
|
|
44
|
+
}).then(response => {
|
|
321
45
|
return response.filter(tcu => !!tcu.ComponentUsages).map(tcu => {
|
|
322
|
-
const ComponentUsages:
|
|
323
|
-
const MachineUsages = (cu.MachineUsages && cu.MachineUsages.MachineUsage ? cu.MachineUsages.MachineUsage : []).map(mu => {
|
|
324
|
-
const DiskUsages:
|
|
46
|
+
const ComponentUsages: WsMachineEx.ComponentUsage[] = tcu.ComponentUsages.ComponentUsage.map(cu => {
|
|
47
|
+
const MachineUsages: WsMachineEx.MachineUsage[] = (cu.MachineUsages && cu.MachineUsages.MachineUsage ? cu.MachineUsages.MachineUsage : []).map(mu => {
|
|
48
|
+
const DiskUsages: WsMachineEx.DiskUsage[] = mu.DiskUsages && mu.DiskUsages.DiskUsage ? mu.DiskUsages.DiskUsage.map(du => {
|
|
325
49
|
return {
|
|
326
50
|
...du,
|
|
327
51
|
Total: du.InUse + du.Available,
|