npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

cloudtower-node-sdk

v2.23.0

Published

CloudTower Node.js SDK in TypeScript

Downloads

237

Readme

Cloudtower Node Sdk

typescript 编写的 Cloudtower SDK。

安装

npm install cloudtower-node-sdk

使用

创建Client并鉴权

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);

创建 ActivePassiveClient 实例

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,
  },
);