-
Notifications
You must be signed in to change notification settings - Fork 7
/
KeyUpdaterV1.ts
112 lines (93 loc) · 2.72 KB
/
KeyUpdaterV1.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
/**
Juju KeyUpdater version 1.
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 NotifyWatchResult {
NotifyWatcherId: string;
error?: Error;
}
export interface NotifyWatchResults {
results: NotifyWatchResult[];
}
export interface StringsResult {
error?: Error;
result?: string[];
}
export interface StringsResults {
results: StringsResult[];
}
export interface AdditionalProperties {
[key: string]: any;
}
/**
KeyUpdaterAPI implements the KeyUpdater interface and is the concrete
implementation of the api end point.
*/
class KeyUpdaterV1 implements Facade {
static NAME = "KeyUpdater";
static VERSION = 1;
NAME = "KeyUpdater";
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);
}
/**
AuthorisedKeys reports the authorised ssh keys for the specified machines.
The current implementation relies on global authorised keys being stored in the model config.
This will change as new user management and authorisation functionality is added.
*/
authorisedKeys(params: Entities): Promise<StringsResults> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "KeyUpdater",
request: "AuthorisedKeys",
version: 1,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
/**
WatchAuthorisedKeys starts a watcher to track changes to the authorised ssh keys
for the specified machines.
The current implementation relies on global authorised keys being stored in the model config.
This will change as new user management and authorisation functionality is added.
*/
watchAuthorisedKeys(params: Entities): Promise<NotifyWatchResults> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "KeyUpdater",
request: "WatchAuthorisedKeys",
version: 1,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
}
export default KeyUpdaterV1;