Skip to content

Commit 86fe2fd

Browse files
authored
refactor(cloud): unify cloud and serverless under single cloud namespace (#199)
* refactor(cloud): unify cloud and serverless under single `cloud` namespace Partial revert of #131. Merges the top-level `serverless` command back under `cloud` to match customer mental model where both Hosted Deployments and Serverless Projects are offerings of the same product (Elastic Cloud). New command tree: - `elastic cloud {account,authentication,organizations,user-role-assignments}` — cross-cutting APIs promoted to direct children. - `elastic cloud hosted <namespace>` — Hosted deployments, templates, extensions, stack versions, trusted envs, billing. - `elastic cloud serverless <...>` — Serverless projects (es, observability, security) plus regions, traffic-filters, linked-projects, etc. Top-level `serverless` command is removed. Clean break, no aliases (project is 0.1.0-alpha.1 and the old split landed in a recent PR). Closes #193 * fix(test): replace any with typed CommandNode in alias-check Replaces the inline `any[]` on the recursive visit helper with a local CommandNode interface, so the test conforms to the repo's @typescript-eslint/no-explicit-any rule.
1 parent 59c7a18 commit 86fe2fd

5 files changed

Lines changed: 364 additions & 290 deletions

File tree

README.md

Lines changed: 44 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -224,55 +224,69 @@ elastic es update --index my-index --id abc123
224224

225225
Run `elastic es <command> --help` for all available options on any command.
226226

227-
### `cloud` - Elastic Cloud (hosted)
227+
### `cloud` - Elastic Cloud
228228

229-
Manage Elastic Cloud hosted deployments.
229+
Manage Elastic Cloud: Hosted deployments and Serverless projects.
230230
Requires a `cloud` service block in the active context.
231231

232-
#### `cloud deployments`
232+
The tree has three kinds of children:
233+
234+
- Cross-cutting namespaces as direct children of `cloud` (APIs that apply to
235+
both Hosted and Serverless).
236+
- `cloud hosted …` for Hosted-Deployment APIs.
237+
- `cloud serverless …` for Serverless-Project APIs.
238+
239+
#### Cross-cutting (account, auth, orgs, roles)
233240

234241
```bash
235-
elastic cloud deployments list-deployments
236-
elastic cloud deployments get-deployment --id <id>
237-
elastic cloud deployments shutdown-deployment --id <id>
238-
elastic cloud deployments create-deployment <<< '{"name":"my-deployment",...}'
242+
elastic cloud accounts get-current-account
243+
elastic cloud authentication get-api-keys
244+
elastic cloud organizations list-organizations
245+
elastic cloud organizations get-organization --organization-id <id>
246+
elastic cloud user-role-assignments add-role-assignments --user-id <id> <<< '{...}'
239247
```
240248

241-
Run `elastic cloud --help` for all available namespace groups (accounts,
242-
billing-costs-analysis, deployment-templates, extensions, organizations, etc.).
249+
#### `cloud hosted` - Hosted Deployments
243250

244-
### `serverless` - Elastic Serverless
251+
```bash
252+
elastic cloud hosted deployments list-deployments
253+
elastic cloud hosted deployments get-deployment --id <id>
254+
elastic cloud hosted deployments shutdown-deployment --id <id>
255+
elastic cloud hosted deployments create-deployment <<< '{"name":"my-deployment",...}'
256+
elastic cloud hosted deployment-templates list-deployment-templates
257+
elastic cloud hosted extensions list-extensions
258+
elastic cloud hosted stack get-version-stacks
259+
```
245260

246-
Manage Elastic Serverless projects and resources.
247-
Requires a `cloud` service block in the active context.
261+
Run `elastic cloud hosted --help` for all available namespace groups
262+
(billing-costs-analysis, deployment-templates, deployments, deployments-traffic-filter,
263+
extensions, stack, trusted-environments).
248264

249-
#### `serverless es projects` - Elasticsearch projects
265+
#### `cloud serverless` - Serverless Projects
250266

251267
```bash
252-
elastic serverless es projects list
253-
elastic serverless es projects create <<< '{"name":"demo","region_id":"aws-us-east-1"}'
254-
elastic serverless es projects create --wait <<< '{"name":"demo","region_id":"aws-us-east-1"}'
255-
elastic serverless es projects get --id <id>
256-
elastic serverless es projects delete --id <id>
257-
elastic serverless es projects get-status --id <id>
258-
elastic serverless es projects get-roles --id <id>
259-
elastic serverless es projects reset-credentials --id <id>
268+
elastic cloud serverless es projects list
269+
elastic cloud serverless es projects create <<< '{"name":"demo","region_id":"aws-us-east-1"}'
270+
elastic cloud serverless es projects create --wait <<< '{"name":"demo","region_id":"aws-us-east-1"}'
271+
elastic cloud serverless es projects get --id <id>
272+
elastic cloud serverless es projects delete --id <id>
273+
elastic cloud serverless es projects get-status --id <id>
274+
elastic cloud serverless es projects get-roles --id <id>
275+
elastic cloud serverless es projects reset-credentials --id <id>
260276
```
261277

262-
#### `serverless observability projects` / `serverless security projects`
263-
264-
Same commands as `es projects` but for Observability and Security project types:
278+
Same commands are available under `observability` and `security`:
265279

266280
```bash
267-
elastic serverless observability projects list
268-
elastic serverless security projects create --wait <<< '{"name":"demo","region_id":"aws-us-east-1"}'
281+
elastic cloud serverless observability projects list
282+
elastic cloud serverless security projects create --wait <<< '{"name":"demo","region_id":"aws-us-east-1"}'
269283
```
270284

271-
#### Other serverless resources
285+
Other serverless resources:
272286

273287
```bash
274-
elastic serverless regions list-regions
275-
elastic serverless traffic-filters list-traffic-filters
288+
elastic cloud serverless regions list-regions
289+
elastic cloud serverless traffic-filters list-traffic-filters
276290
```
277291

278-
Run `elastic serverless --help` for all available groups.
292+
Run `elastic cloud serverless --help` for all available groups.

src/cli.ts

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,7 @@ if (firstArg === 'cloud') {
7171
const { registerCloudCommands } = await import('./cloud/register.ts')
7272
program.addCommand(registerCloudCommands())
7373
} else {
74-
program.addCommand(defineGroup({ name: 'cloud', description: 'Manage Elastic Cloud deployments' }))
75-
}
76-
77-
if (firstArg === 'serverless') {
78-
const { registerServerlessCommands } = await import('./cloud/register.ts')
79-
program.addCommand(registerServerlessCommands())
80-
} else {
81-
program.addCommand(defineGroup({ name: 'serverless', description: 'Manage Elastic Serverless projects and resources' }))
74+
program.addCommand(defineGroup({ name: 'cloud', description: 'Manage Elastic Cloud (hosted deployments and serverless projects)' }))
8275
}
8376

8477
if (firstArg === 'docs') {

0 commit comments

Comments
 (0)