-
Notifications
You must be signed in to change notification settings - Fork 7
/
MeterStatusV2.ts
183 lines (154 loc) · 4.13 KB
/
MeterStatusV2.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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
/**
Juju MeterStatus version 2.
This facade is available on:
Controller-machine-agent
Machine-agent
Unit-agent
Models
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 MeterStatusResult {
code: string;
error?: Error;
info: string;
}
export interface MeterStatusResults {
results: MeterStatusResult[];
}
export interface NotifyWatchResult {
NotifyWatcherId: string;
error?: Error;
}
export interface NotifyWatchResults {
results: NotifyWatchResult[];
}
export interface SetUnitStateArg {
"charm-state"?: Record<string, string>;
"meter-status-state"?: string;
"relation-state"?: Record<string, string>;
"secret-state"?: string;
"storage-state"?: string;
tag: string;
"uniter-state"?: string;
}
export interface SetUnitStateArgs {
args: SetUnitStateArg[];
}
export interface UnitStateResult {
"charm-state"?: Record<string, string>;
error?: Error;
"meter-status-state"?: string;
"relation-state"?: Record<string, string>;
"secret-state"?: string;
"storage-state"?: string;
"uniter-state"?: string;
}
export interface UnitStateResults {
results: UnitStateResult[];
}
export interface AdditionalProperties {
[key: string]: any;
}
/**
MeterStatusAPI implements the MeterStatus interface and is the concrete
implementation of the API endpoint. Additionally, it embeds
common.UnitStateAPI to allow meter status workers to access their
controller-backed internal state.
*/
class MeterStatusV2 implements Facade {
static NAME = "MeterStatus";
static VERSION = 2;
NAME = "MeterStatus";
VERSION = 2;
_transport: Transport;
_info: ConnectionInfo;
constructor(transport: Transport, info: ConnectionInfo) {
this._transport = transport;
this._info = info;
// Automatically bind all methods to instances.
autoBind(this);
}
/**
GetMeterStatus returns meter status information for each unit.
*/
getMeterStatus(params: Entities): Promise<MeterStatusResults> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "MeterStatus",
request: "GetMeterStatus",
version: 2,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
/**
SetState sets the state persisted by the charm running in this unit
and the state internal to the uniter for this unit.
*/
setState(params: SetUnitStateArgs): Promise<ErrorResults> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "MeterStatus",
request: "SetState",
version: 2,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
/**
State returns the state persisted by the charm running in this unit
and the state internal to the uniter for this unit.
*/
state(params: Entities): Promise<UnitStateResults> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "MeterStatus",
request: "State",
version: 2,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
/**
WatchMeterStatus returns a NotifyWatcher for observing changes
to each unit's meter status.
*/
watchMeterStatus(params: Entities): Promise<NotifyWatchResults> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "MeterStatus",
request: "WatchMeterStatus",
version: 2,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
}
export default MeterStatusV2;