-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathRebootV2.ts
148 lines (124 loc) · 3.44 KB
/
RebootV2.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
/**
Juju Reboot version 2.
This facade is available on:
Controller-machine-agent
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 NotifyWatchResult {
NotifyWatcherId: string;
error?: Error;
}
export interface RebootActionResult {
error?: Error;
result?: string;
}
export interface RebootActionResults {
results?: RebootActionResult[];
}
export interface AdditionalProperties {
[key: string]: any;
}
/**
RebootAPI provides access to the Upgrader API facade.
*/
class RebootV2 implements Facade {
static NAME = "Reboot";
static VERSION = 2;
NAME = "Reboot";
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);
}
/**
ClearReboot will clear the reboot flag on provided machines, if it exists.
*/
clearReboot(params: Entities): Promise<ErrorResults> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "Reboot",
request: "ClearReboot",
version: 2,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
/**
GetRebootAction returns the action a machine agent should take.
If a reboot flag is set on the machine, then that machine is
expected to reboot (params.ShouldReboot).
a reboot flag set on the machine parent or grandparent, will
cause the machine to shutdown (params.ShouldShutdown).
If no reboot flag is set, the machine should do nothing (params.ShouldDoNothing).
*/
getRebootAction(params: Entities): Promise<RebootActionResults> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "Reboot",
request: "GetRebootAction",
version: 2,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
/**
RequestReboot sets the reboot flag on the provided machines
*/
requestReboot(params: Entities): Promise<ErrorResults> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "Reboot",
request: "RequestReboot",
version: 2,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
/**
WatchForRebootEvent starts a watcher to track if there is a new
reboot request on the machines ID or any of its parents (in case we are a container).
*/
watchForRebootEvent(params: any): Promise<NotifyWatchResult> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "Reboot",
request: "WatchForRebootEvent",
version: 2,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
}
export default RebootV2;