-
Notifications
You must be signed in to change notification settings - Fork 7
/
MetricsManagerV1.ts
116 lines (97 loc) · 2.77 KB
/
MetricsManagerV1.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/**
Juju MetricsManager version 1.
This facade is available on:
Controller-machine-agent
NOTE: This file was generated using the Juju schema
from Juju 3.3 at the git SHA 65fa4c1ee5.
Do not manually edit this file.
*/
import type { JujuRequest } from "../../../generator/interfaces.js";
import { ConnectionInfo, Transport } from "../../client.js";
import { Facade } from "../../types.js";
import { autoBind } from "../../utils.js";
export interface Entities {
entities: Entity[];
}
export interface Entity {
tag: string;
}
export interface Error {
code: string;
info?: AdditionalProperties;
message: string;
}
export interface ErrorResult {
error?: Error;
}
export interface ErrorResults {
results: ErrorResult[];
}
export interface AdditionalProperties {
[key: string]: any;
}
/**
MetricsManagerAPI implements the metrics manager interface and is the concrete
implementation of the api end point.
*/
class MetricsManagerV1 implements Facade {
static NAME = "MetricsManager";
static VERSION = 1;
NAME = "MetricsManager";
VERSION = 1;
_transport: Transport;
_info: ConnectionInfo;
constructor(transport: Transport, info: ConnectionInfo) {
this._transport = transport;
this._info = info;
// Automatically bind all methods to instances.
autoBind(this);
}
/**
AddJujuMachineMetrics adds a metric that counts the number of
non-container machines in the current model.
*/
addJujuMachineMetrics(params: any): Promise<any> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "MetricsManager",
request: "AddJujuMachineMetrics",
version: 1,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
/**
CleanupOldMetrics removes old metrics from the collection.
The single arg params is expected to contain and model uuid.
Even though the call will delete all metrics across models
it serves to validate that the connection has access to at least one model.
*/
cleanupOldMetrics(params: Entities): Promise<ErrorResults> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "MetricsManager",
request: "CleanupOldMetrics",
version: 1,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
/**
SendMetrics will send any unsent metrics onto the metric collection service.
*/
sendMetrics(params: Entities): Promise<ErrorResults> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "MetricsManager",
request: "SendMetrics",
version: 1,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
}
export default MetricsManagerV1;