@takashito/linode-mcp-server
Version:
MCP server for Linode API
147 lines (146 loc) • 5.13 kB
TypeScript
import { AxiosInstance } from 'axios';
import { PaginatedResponse, PaginationParams } from './common';
export interface NodeBalancer {
id: number;
label: string;
hostname: string;
client_conn_throttle: number;
region: string;
ipv4: string;
ipv6: string | null;
created: string;
updated: string;
transfer: {
total: number;
out: number;
in: number;
};
tags: string[];
type?: NodeBalancerType;
configs?: NodeBalancerConfig[];
}
export interface NodeBalancerConfig {
id: number;
port: number;
protocol: string;
algorithm: string;
stickiness: string;
check: string;
check_interval: number;
check_timeout: number;
check_attempts: number;
check_path: string;
check_body: string;
check_passive: boolean;
cipher_suite: string;
ssl_cert: string | null;
ssl_key: string | null;
nodes_status: {
up: number;
down: number;
};
nodes?: NodeBalancerNode[];
}
export interface NodeBalancerNode {
id: number;
address: string;
label: string;
status: string;
weight: number;
mode: string;
config_id: number;
nodebalancer_id: number;
}
export interface NodeBalancerType {
id: string;
label: string;
price: {
hourly: number;
monthly: number;
};
transfer: number;
client_conn_throttle: number;
}
export interface CreateNodeBalancerRequest {
region: string;
label?: string;
client_conn_throttle?: number;
configs?: CreateNodeBalancerConfigRequest[];
tags?: string[];
}
export interface UpdateNodeBalancerRequest {
label?: string;
client_conn_throttle?: number;
tags?: string[];
}
export interface CreateNodeBalancerConfigRequest {
port: number;
protocol: string;
algorithm?: string;
stickiness?: string;
check?: string;
check_interval?: number;
check_timeout?: number;
check_attempts?: number;
check_path?: string;
check_body?: string;
check_passive?: boolean;
cipher_suite?: string;
ssl_cert?: string;
ssl_key?: string;
nodes?: CreateNodeBalancerNodeRequest[];
}
export interface UpdateNodeBalancerConfigRequest {
port?: number;
protocol?: string;
algorithm?: string;
stickiness?: string;
check?: string;
check_interval?: number;
check_timeout?: number;
check_attempts?: number;
check_path?: string;
check_body?: string;
check_passive?: boolean;
cipher_suite?: string;
ssl_cert?: string;
ssl_key?: string;
}
export interface CreateNodeBalancerNodeRequest {
address: string;
label: string;
weight?: number;
mode?: string;
}
export interface UpdateNodeBalancerNodeRequest {
address?: string;
label?: string;
weight?: number;
mode?: string;
}
export interface UpdateNodeBalancerFirewallsRequest {
ids: number[];
}
export interface LinodeNodeBalancersClient {
getNodeBalancers: (params?: PaginationParams) => Promise<PaginatedResponse<NodeBalancer>>;
getNodeBalancer: (id: number) => Promise<NodeBalancer>;
createNodeBalancer: (data: CreateNodeBalancerRequest) => Promise<NodeBalancer>;
updateNodeBalancer: (id: number, data: UpdateNodeBalancerRequest) => Promise<NodeBalancer>;
deleteNodeBalancer: (id: number) => Promise<{}>;
getNodeBalancerConfigs: (nodeBalancerId: number) => Promise<PaginatedResponse<NodeBalancerConfig>>;
getNodeBalancerConfig: (nodeBalancerId: number, configId: number) => Promise<NodeBalancerConfig>;
createNodeBalancerConfig: (nodeBalancerId: number, data: CreateNodeBalancerConfigRequest) => Promise<NodeBalancerConfig>;
updateNodeBalancerConfig: (nodeBalancerId: number, configId: number, data: UpdateNodeBalancerConfigRequest) => Promise<NodeBalancerConfig>;
deleteNodeBalancerConfig: (nodeBalancerId: number, configId: number) => Promise<{}>;
rebuildNodeBalancerConfig: (nodeBalancerId: number, configId: number) => Promise<{}>;
getNodeBalancerConfigNodes: (nodeBalancerId: number, configId: number) => Promise<PaginatedResponse<NodeBalancerNode>>;
getNodeBalancerConfigNode: (nodeBalancerId: number, configId: number, nodeId: number) => Promise<NodeBalancerNode>;
createNodeBalancerConfigNode: (nodeBalancerId: number, configId: number, data: CreateNodeBalancerNodeRequest) => Promise<NodeBalancerNode>;
updateNodeBalancerConfigNode: (nodeBalancerId: number, configId: number, nodeId: number, data: UpdateNodeBalancerNodeRequest) => Promise<NodeBalancerNode>;
deleteNodeBalancerConfigNode: (nodeBalancerId: number, configId: number, nodeId: number) => Promise<{}>;
getNodeBalancerStats: (id: number) => Promise<any>;
getNodeBalancerTypes: () => Promise<PaginatedResponse<NodeBalancerType>>;
getNodeBalancerFirewalls: (nodeBalancerId: number, params?: PaginationParams) => Promise<PaginatedResponse<any>>;
updateNodeBalancerFirewalls: (nodeBalancerId: number, data: UpdateNodeBalancerFirewallsRequest) => Promise<any>;
}
export declare function createNodeBalancersClient(axios: AxiosInstance): LinodeNodeBalancersClient;