@canonical/jujulib
Version:
Juju API client
367 lines (319 loc) • 7.88 kB
text/typescript
/**
Juju Client version 6.
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.2 at the git SHA 3a098707a1.
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 AllWatcherId {
"watcher-id": string;
}
export interface ApplicationOfferStatus {
"active-connected-count": number;
"application-name": string;
charm: string;
endpoints: Record<string, RemoteEndpoint>;
err?: Error;
"offer-name": string;
"total-connected-count": number;
}
export interface ApplicationStatus {
base: Base;
"can-upgrade-to": string;
charm: string;
"charm-channel"?: string;
"charm-profile": string;
"charm-version": string;
"endpoint-bindings": Record<string, string>;
err?: Error;
exposed: boolean;
"exposed-endpoints"?: Record<string, ExposedEndpoint>;
int?: number;
life: string;
"meter-statuses": Record<string, MeterStatus>;
"provider-id"?: string;
"public-address": string;
relations: Record<string, string[]>;
status: DetailedStatus;
"subordinate-to": string[];
units: Record<string, UnitStatus>;
"workload-version": string;
}
export interface Base {
channel: string;
name: string;
}
export interface Binary {
Arch: string;
Build: number;
Major: number;
Minor: number;
Number: Number;
Patch: number;
Release: string;
Tag: string;
}
export interface BranchStatus {
"assigned-units": Record<string, string[]>;
created: number;
"created-by": string;
}
export interface DetailedStatus {
data: AdditionalProperties;
err?: Error;
info: string;
kind: string;
life: string;
since: string;
status: string;
version: string;
}
export interface EndpointStatus {
application: string;
name: string;
role: string;
subordinate: boolean;
}
export interface Error {
code: string;
info?: AdditionalProperties;
message: string;
}
export interface ExposedEndpoint {
"expose-to-cidrs"?: string[];
"expose-to-spaces"?: string[];
}
export interface FindToolsParams {
agentstream: string;
arch: string;
major: number;
number: Number;
"os-type": string;
}
export interface FindToolsResult {
error?: Error;
list: Tools[];
}
export interface FullStatus {
applications: Record<string, ApplicationStatus>;
branches: Record<string, BranchStatus>;
"controller-timestamp": string;
machines: Record<string, MachineStatus>;
model: ModelStatusInfo;
offers: Record<string, ApplicationOfferStatus>;
relations: RelationStatus[];
"remote-applications": Record<string, RemoteApplicationStatus>;
}
export interface History {
error?: Error;
statuses: DetailedStatus[];
}
export interface LXDProfile {
config: Record<string, string>;
description: string;
devices: Record<string, Record<string, string>>;
}
export interface MachineStatus {
"agent-status": DetailedStatus;
base: Base;
constraints: string;
containers: Record<string, MachineStatus>;
"display-name": string;
"dns-name": string;
hardware: string;
"has-vote": boolean;
hostname?: string;
id: string;
"instance-id": string;
"instance-status": DetailedStatus;
"ip-addresses"?: string[];
jobs: string[];
"lxd-profiles"?: Record<string, LXDProfile>;
"modification-status": DetailedStatus;
"network-interfaces"?: Record<string, NetworkInterface>;
"primary-controller-machine"?: boolean;
"wants-vote": boolean;
}
export interface MeterStatus {
color: string;
message: string;
}
export interface ModelStatusInfo {
"available-version": string;
"cloud-tag": string;
"meter-status": MeterStatus;
"model-status": DetailedStatus;
name: string;
region?: string;
sla: string;
type: string;
version: string;
}
export interface NetworkInterface {
"dns-nameservers"?: string[];
gateway?: string;
"ip-addresses": string[];
"is-up": boolean;
"mac-address": string;
space?: string;
}
export interface Number {
Build: number;
Major: number;
Minor: number;
Patch: number;
Tag: string;
}
export interface RelationStatus {
endpoints: EndpointStatus[];
id: number;
interface: string;
key: string;
scope: string;
status: DetailedStatus;
}
export interface RemoteApplicationStatus {
endpoints: RemoteEndpoint[];
err?: Error;
life: string;
"offer-name": string;
"offer-url": string;
relations: Record<string, string[]>;
status: DetailedStatus;
}
export interface RemoteEndpoint {
interface: string;
limit: number;
name: string;
role: string;
}
export interface StatusHistoryFilter {
date: string;
delta: number;
exclude: string[];
size: number;
}
export interface StatusHistoryRequest {
filter: StatusHistoryFilter;
historyKind: string;
size: number;
tag: string;
}
export interface StatusHistoryRequests {
requests: StatusHistoryRequest[];
}
export interface StatusHistoryResult {
error?: Error;
history: History;
}
export interface StatusHistoryResults {
results: StatusHistoryResult[];
}
export interface StatusParams {
patterns: string[];
}
export interface Tools {
sha256?: string;
size: number;
url: string;
version: Binary;
}
export interface UnitStatus {
address?: string;
"agent-status": DetailedStatus;
charm: string;
leader?: boolean;
machine: string;
"opened-ports": string[];
"provider-id"?: string;
"public-address": string;
subordinates: Record<string, UnitStatus>;
"workload-status": DetailedStatus;
"workload-version": string;
}
export interface AdditionalProperties {
[key: string]: any;
}
/**
Client serves client-specific API methods.
*/
class ClientV6 implements Facade {
static NAME = "Client";
static VERSION = 6;
NAME = "Client";
VERSION = 6;
_transport: Transport;
_info: ConnectionInfo;
constructor(transport: Transport, info: ConnectionInfo) {
this._transport = transport;
this._info = info;
// Automatically bind all methods to instances.
autoBind(this);
}
/**
FindTools returns a List containing all tools matching the given parameters.
TODO(juju 3.1) - remove, used by 2.9 client only
*/
findTools(params: FindToolsParams): Promise<FindToolsResult> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "Client",
request: "FindTools",
version: 6,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
/**
FullStatus gives the information needed for juju status over the api
*/
fullStatus(params: StatusParams): Promise<FullStatus> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "Client",
request: "FullStatus",
version: 6,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
/**
StatusHistory returns a slice of past statuses for several entities.
*/
statusHistory(params: StatusHistoryRequests): Promise<StatusHistoryResults> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "Client",
request: "StatusHistory",
version: 6,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
/**
WatchAll initiates a watcher for entities in the connected model.
*/
watchAll(params: any): Promise<AllWatcherId> {
return new Promise((resolve, reject) => {
const req: JujuRequest = {
type: "Client",
request: "WatchAll",
version: 6,
params: params,
};
this._transport.write(req, resolve, reject);
});
}
}
export default ClientV6;