-
Notifications
You must be signed in to change notification settings - Fork 7
/
SSHClientV3.ts
175 lines (147 loc) · 4 KB
/
SSHClientV3.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
/**
Juju SSHClient version 3.
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.0-beta4 at the git SHA a13ab81a.
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 SSHAddressResult {
address?: string;
error?: Error;
}
export interface SSHAddressResults {
results: SSHAddressResult[];
}
export interface SSHAddressesResult {
addresses: string[];
error?: Error;
}
export interface SSHAddressesResults {
results: SSHAddressesResult[];
}
export interface SSHProxyResult {
"use-proxy": boolean;
}
export interface SSHPublicKeysResult {
error?: Error;
"public-keys"?: string[];
}
export interface SSHPublicKeysResults {
results: SSHPublicKeysResult[];
}
export interface AdditionalProperties {
[key: string]: any;
}
/**
Facade implements the API required by the sshclient worker.
*/
class SSHClientV3 implements Facade {
static NAME = "SSHClient";
static VERSION = 3;
NAME = "SSHClient";
VERSION = 3;
_transport: Transport;
_info: ConnectionInfo;
constructor(transport: Transport, info: ConnectionInfo) {
this._transport = transport;
this._info = info;
// Automatically bind all methods to instances.
autoBind(this);
}
/**
AllAddresses reports all addresses that might have SSH listening for each
entity in args. The result is sorted with public addresses first.
Machines and units are supported as entity types.
*/
allAddresses(params: Entities): Promise<SSHAddressesResults> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "SSHClient",
request: "AllAddresses",
version: 3,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
/**
PrivateAddress reports the preferred private network address for one or
more entities. Machines and units are supported.
*/
privateAddress(params: Entities): Promise<SSHAddressResults> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "SSHClient",
request: "PrivateAddress",
version: 3,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
/**
Proxy returns whether SSH connections should be proxied through the
controller hosts for the model associated with the API connection.
*/
proxy(params: any): Promise<SSHProxyResult> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "SSHClient",
request: "Proxy",
version: 3,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
/**
PublicAddress reports the preferred public network address for one
or more entities. Machines and units are supported.
*/
publicAddress(params: Entities): Promise<SSHAddressResults> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "SSHClient",
request: "PublicAddress",
version: 3,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
/**
PublicKeys returns the public SSH hosts for one or more
entities. Machines and units are supported.
*/
publicKeys(params: Entities): Promise<SSHPublicKeysResults> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "SSHClient",
request: "PublicKeys",
version: 3,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
}
export default SSHClientV3;