typescript 编写的 Cloudtower SDK。
npm install cloudtower-node-sdk
import { CloudTowerClient, UserSource } from "cloudtower-node-sdk";
const client = new CloudTowerClient(
{
username: "username",
password: "password",
source: UserSource.LOCAL,
},
{
baseURL: "http://<path-to-tower>/v2/api",
},
);const api = new VmApi(client);
const data = await api.getVms({
first: 10,
});
console.log(data);CloudTower 在 4.9.0 引入了多管理 IP 主备部署,如果需要访问此类 CloudTower,可以使用 ActivePassiveClient 配置同一个主备集群的多个 endpoint。同一时间预期最多只有一个 active endpoint,传入顺序不代表主备关系,客户端会通过探测结果选择当前 active endpoint。
import { ActivePassiveClient, UserSource } from "cloudtower-node-sdk";
const client = new ActivePassiveClient(
{
username: "username",
password: "password",
source: UserSource.LOCAL,
},
{
endpoints: ["https://tower-a.example.com", "https://tower-b.example.com"],
},
);ActivePassiveClient 支持以下故障切换策略:
AUTO_FAILOVER:默认的策略,当没有缓存的 active endpoint 时,会尝试探测并缓存当前 active endpoint;请求返回 307 后自动重新探测并重试一次;请求发生网络 I/O 异常后清空缓存,但不会自动重试。MANUAL_FAILOVER:请求返回 307 后不自动重新探测和重试,清空缓存由调用方处理故障切换,其余业务逻辑和AUTO_FAILOVER一致。ALWAYS_PROBE:不缓存 active endpoint,每次请求前都重新探测 active endpoint;请求返回 307 后不自动重试。
如果需要指定故障切换策略,可以在创建实例时传入:
import {
ActivePassiveClient,
UserSource,
ActivePassiveFailoverStrategy,
} from "cloudtower-node-sdk";
const client = new ActivePassiveClient(
{
username: "username",
password: "password",
source: UserSource.LOCAL,
},
{
endpoints: ["https://tower-a.example.com", "https://tower-b.example.com"],
failoverStrategy: ActivePassiveFailoverStrategy.ManualFailover,
},
);