nvoi 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.claude/todo/refactor/00-overview.md +171 -0
- data/.claude/todo/refactor/01-objects.md +96 -0
- data/.claude/todo/refactor/02-utils.md +143 -0
- data/.claude/todo/refactor/03-external-cloud.md +164 -0
- data/.claude/todo/refactor/04-external-dns.md +104 -0
- data/.claude/todo/refactor/05-external.md +133 -0
- data/.claude/todo/refactor/06-cli.md +123 -0
- data/.claude/todo/refactor/07-cli-deploy-command.md +177 -0
- data/.claude/todo/refactor/08-cli-deploy-steps.md +201 -0
- data/.claude/todo/refactor/09-cli-delete-command.md +169 -0
- data/.claude/todo/refactor/10-cli-exec-command.md +157 -0
- data/.claude/todo/refactor/11-cli-credentials-command.md +190 -0
- data/.claude/todo/refactor/12-cli-db-command.md +128 -0
- data/.claude/todo/refactor/_target.md +79 -0
- data/.claude/todo/refactor-execution/00-entrypoint.md +49 -0
- data/.claude/todo/refactor-execution/01-objects.md +42 -0
- data/.claude/todo/refactor-execution/02-utils.md +41 -0
- data/.claude/todo/refactor-execution/03-external-cloud.md +38 -0
- data/.claude/todo/refactor-execution/04-external-dns.md +35 -0
- data/.claude/todo/refactor-execution/05-external-other.md +46 -0
- data/.claude/todo/refactor-execution/06-cli-deploy.md +45 -0
- data/.claude/todo/refactor-execution/07-cli-delete.md +43 -0
- data/.claude/todo/refactor-execution/08-cli-exec.md +30 -0
- data/.claude/todo/refactor-execution/09-cli-credentials.md +34 -0
- data/.claude/todo/refactor-execution/10-cli-db.md +31 -0
- data/.claude/todo/refactor-execution/11-cli-router.md +44 -0
- data/.claude/todo/refactor-execution/12-cleanup.md +120 -0
- data/.claude/todo/refactor-execution/_monitoring-strategy.md +126 -0
- data/.claude/todo/scaleway.impl.md +644 -0
- data/.claude/todo/scaleway.reference.md +520 -0
- data/.claude/todos.md +550 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +46 -5
- data/Rakefile +1 -1
- data/doc/config-schema.yaml +44 -11
- data/examples/golang/deploy.enc +0 -0
- data/examples/golang/main.go +18 -0
- data/exe/nvoi +3 -1
- data/ingest +0 -0
- data/lib/nvoi/cli/config/command.rb +219 -0
- data/lib/nvoi/cli/credentials/edit/command.rb +384 -0
- data/lib/nvoi/cli/credentials/show/command.rb +35 -0
- data/lib/nvoi/cli/db/command.rb +308 -0
- data/lib/nvoi/cli/delete/command.rb +75 -0
- data/lib/nvoi/cli/delete/steps/detach_volumes.rb +98 -0
- data/lib/nvoi/cli/delete/steps/teardown_dns.rb +50 -0
- data/lib/nvoi/cli/delete/steps/teardown_firewall.rb +46 -0
- data/lib/nvoi/cli/delete/steps/teardown_network.rb +30 -0
- data/lib/nvoi/cli/delete/steps/teardown_server.rb +50 -0
- data/lib/nvoi/cli/delete/steps/teardown_tunnel.rb +44 -0
- data/lib/nvoi/cli/delete/steps/teardown_volume.rb +61 -0
- data/lib/nvoi/cli/deploy/command.rb +184 -0
- data/lib/nvoi/cli/deploy/steps/build_image.rb +27 -0
- data/lib/nvoi/cli/deploy/steps/cleanup_images.rb +42 -0
- data/lib/nvoi/cli/deploy/steps/configure_tunnel.rb +102 -0
- data/lib/nvoi/cli/deploy/steps/deploy_service.rb +399 -0
- data/lib/nvoi/cli/deploy/steps/provision_network.rb +44 -0
- data/lib/nvoi/cli/deploy/steps/provision_server.rb +143 -0
- data/lib/nvoi/cli/deploy/steps/provision_volume.rb +171 -0
- data/lib/nvoi/cli/deploy/steps/setup_k3s.rb +490 -0
- data/lib/nvoi/cli/exec/command.rb +173 -0
- data/lib/nvoi/cli/logs/command.rb +66 -0
- data/lib/nvoi/cli/onboard/command.rb +761 -0
- data/lib/nvoi/cli/unlock/command.rb +72 -0
- data/lib/nvoi/cli.rb +339 -141
- data/lib/nvoi/config_api/actions/app.rb +53 -0
- data/lib/nvoi/config_api/actions/compute_provider.rb +55 -0
- data/lib/nvoi/config_api/actions/database.rb +70 -0
- data/lib/nvoi/config_api/actions/domain_provider.rb +40 -0
- data/lib/nvoi/config_api/actions/env.rb +32 -0
- data/lib/nvoi/config_api/actions/init.rb +67 -0
- data/lib/nvoi/config_api/actions/secret.rb +32 -0
- data/lib/nvoi/config_api/actions/server.rb +66 -0
- data/lib/nvoi/config_api/actions/service.rb +52 -0
- data/lib/nvoi/config_api/actions/volume.rb +40 -0
- data/lib/nvoi/config_api/base.rb +38 -0
- data/lib/nvoi/config_api/result.rb +26 -0
- data/lib/nvoi/config_api.rb +93 -0
- data/lib/nvoi/errors.rb +68 -50
- data/lib/nvoi/external/cloud/aws.rb +450 -0
- data/lib/nvoi/external/cloud/base.rb +99 -0
- data/lib/nvoi/external/cloud/factory.rb +48 -0
- data/lib/nvoi/external/cloud/hetzner.rb +402 -0
- data/lib/nvoi/external/cloud/scaleway.rb +559 -0
- data/lib/nvoi/external/cloud.rb +15 -0
- data/lib/nvoi/external/containerd.rb +86 -0
- data/lib/nvoi/external/database/mysql.rb +84 -0
- data/lib/nvoi/external/database/postgres.rb +82 -0
- data/lib/nvoi/external/database/provider.rb +65 -0
- data/lib/nvoi/external/database/sqlite.rb +72 -0
- data/lib/nvoi/external/database.rb +22 -0
- data/lib/nvoi/external/dns/cloudflare.rb +310 -0
- data/lib/nvoi/external/kubectl.rb +65 -0
- data/lib/nvoi/external/ssh.rb +106 -0
- data/lib/nvoi/objects/config_override.rb +60 -0
- data/lib/nvoi/objects/configuration.rb +483 -0
- data/lib/nvoi/objects/database.rb +56 -0
- data/lib/nvoi/objects/dns.rb +14 -0
- data/lib/nvoi/objects/firewall.rb +11 -0
- data/lib/nvoi/objects/network.rb +11 -0
- data/lib/nvoi/objects/server.rb +14 -0
- data/lib/nvoi/objects/service_spec.rb +26 -0
- data/lib/nvoi/objects/tunnel.rb +14 -0
- data/lib/nvoi/objects/volume.rb +17 -0
- data/lib/nvoi/utils/config_loader.rb +172 -0
- data/lib/nvoi/utils/constants.rb +61 -0
- data/lib/nvoi/{credentials/manager.rb → utils/credential_store.rb} +16 -16
- data/lib/nvoi/{credentials → utils}/crypto.rb +8 -5
- data/lib/nvoi/{config → utils}/env_resolver.rb +10 -2
- data/lib/nvoi/utils/logger.rb +84 -0
- data/lib/nvoi/{config/naming.rb → utils/namer.rb} +37 -25
- data/lib/nvoi/{deployer → utils}/retry.rb +23 -3
- data/lib/nvoi/utils/templates.rb +62 -0
- data/lib/nvoi/version.rb +1 -1
- data/lib/nvoi.rb +27 -55
- data/templates/app-ingress.yaml.erb +3 -1
- data/templates/error-backend.yaml.erb +134 -0
- metadata +121 -44
- data/examples/golang/deploy.yml +0 -54
- data/lib/nvoi/cloudflare/client.rb +0 -287
- data/lib/nvoi/config/config.rb +0 -248
- data/lib/nvoi/config/loader.rb +0 -102
- data/lib/nvoi/config/ssh_keys.rb +0 -82
- data/lib/nvoi/config/types.rb +0 -274
- data/lib/nvoi/constants.rb +0 -59
- data/lib/nvoi/credentials/editor.rb +0 -272
- data/lib/nvoi/deployer/cleaner.rb +0 -36
- data/lib/nvoi/deployer/image_builder.rb +0 -23
- data/lib/nvoi/deployer/infrastructure.rb +0 -126
- data/lib/nvoi/deployer/orchestrator.rb +0 -146
- data/lib/nvoi/deployer/service_deployer.rb +0 -311
- data/lib/nvoi/deployer/tunnel_manager.rb +0 -57
- data/lib/nvoi/deployer/types.rb +0 -8
- data/lib/nvoi/k8s/renderer.rb +0 -44
- data/lib/nvoi/k8s/templates.rb +0 -29
- data/lib/nvoi/logger.rb +0 -72
- data/lib/nvoi/providers/aws.rb +0 -403
- data/lib/nvoi/providers/base.rb +0 -111
- data/lib/nvoi/providers/hetzner.rb +0 -288
- data/lib/nvoi/providers/hetzner_client.rb +0 -170
- data/lib/nvoi/remote/docker_manager.rb +0 -203
- data/lib/nvoi/remote/ssh_executor.rb +0 -72
- data/lib/nvoi/remote/volume_manager.rb +0 -103
- data/lib/nvoi/service/delete.rb +0 -234
- data/lib/nvoi/service/deploy.rb +0 -80
- data/lib/nvoi/service/exec.rb +0 -144
- data/lib/nvoi/service/provider.rb +0 -36
- data/lib/nvoi/steps/application_deployer.rb +0 -26
- data/lib/nvoi/steps/database_provisioner.rb +0 -60
- data/lib/nvoi/steps/k3s_cluster_setup.rb +0 -105
- data/lib/nvoi/steps/k3s_provisioner.rb +0 -351
- data/lib/nvoi/steps/server_provisioner.rb +0 -43
- data/lib/nvoi/steps/services_provisioner.rb +0 -29
- data/lib/nvoi/steps/tunnel_configurator.rb +0 -66
- data/lib/nvoi/steps/volume_provisioner.rb +0 -154
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Monitoring Strategy
|
|
2
|
+
|
|
3
|
+
## Per-Step Validation
|
|
4
|
+
|
|
5
|
+
### After Every Step
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
bundle exec rake test # Must pass
|
|
9
|
+
ruby -c lib/nvoi.rb # Syntax check
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Step-Specific Assertions
|
|
15
|
+
|
|
16
|
+
### 01-objects
|
|
17
|
+
- [ ] `Objects::Server.new(id: "1", name: "x", status: "running", public_ipv4: "1.2.3.4")` works
|
|
18
|
+
- [ ] All Structs accessible under `Nvoi::Objects::`
|
|
19
|
+
- [ ] Old Struct definitions removed from source files
|
|
20
|
+
- [ ] All references updated to `Objects::`
|
|
21
|
+
- [ ] `grep -r "Providers::Server" lib/` returns nothing
|
|
22
|
+
|
|
23
|
+
### 02-utils
|
|
24
|
+
- [ ] `Utils::Logger.new` works
|
|
25
|
+
- [ ] `Utils::Namer.new(config).hostname("app", "example.com")` returns `"app.example.com"`
|
|
26
|
+
- [ ] `Utils::ConfigLoader.new.load(path)` returns config
|
|
27
|
+
- [ ] `Utils::Crypto` encrypts/decrypts
|
|
28
|
+
- [ ] Old files deleted: `logger.rb`, `constants.rb`, `errors.rb`, `config/naming.rb`, etc.
|
|
29
|
+
- [ ] `grep -r "Config::ResourceNamer" lib/` returns nothing
|
|
30
|
+
|
|
31
|
+
### 03-external-cloud
|
|
32
|
+
- [ ] `External::Cloud.for(config)` returns correct provider
|
|
33
|
+
- [ ] `External::Cloud::Hetzner.new(token)` instantiates
|
|
34
|
+
- [ ] Provider methods work: `find_server`, `create_server`, etc.
|
|
35
|
+
- [ ] `providers/` directory deleted
|
|
36
|
+
- [ ] `grep -r "Providers::Hetzner" lib/` returns nothing
|
|
37
|
+
|
|
38
|
+
### 04-external-dns
|
|
39
|
+
- [ ] `External::DNS::Cloudflare.new(token, account_id)` instantiates
|
|
40
|
+
- [ ] `setup_tunnel` method exists and callable
|
|
41
|
+
- [ ] `cloudflare/` directory deleted
|
|
42
|
+
- [ ] `grep -r "Cloudflare::Client" lib/` returns nothing
|
|
43
|
+
|
|
44
|
+
### 05-external-other
|
|
45
|
+
- [ ] `External::SSH.new(ip, key)` instantiates
|
|
46
|
+
- [ ] `External::Kubectl.new(ssh)` instantiates
|
|
47
|
+
- [ ] `External::Containerd.new(ssh)` instantiates
|
|
48
|
+
- [ ] `External::Database.provider_for("postgres")` returns provider
|
|
49
|
+
- [ ] `remote/` directory deleted
|
|
50
|
+
- [ ] `k8s/` directory deleted
|
|
51
|
+
- [ ] `database/` directory deleted
|
|
52
|
+
- [ ] `grep -r "Remote::SSHExecutor" lib/` returns nothing
|
|
53
|
+
|
|
54
|
+
### 06-cli-deploy
|
|
55
|
+
- [ ] `CLI::Deploy::Command.new(options).run` callable
|
|
56
|
+
- [ ] All steps in `cli/deploy/steps/` load without error
|
|
57
|
+
- [ ] Step order matches original flow
|
|
58
|
+
- [ ] `service/deploy.rb` deleted
|
|
59
|
+
- [ ] `steps/` directory deleted
|
|
60
|
+
- [ ] `deployer/` directory deleted
|
|
61
|
+
- [ ] `grep -r "Service::DeployService" lib/` returns nothing
|
|
62
|
+
|
|
63
|
+
### 07-cli-delete
|
|
64
|
+
- [ ] `CLI::Delete::Command.new(options).run` callable
|
|
65
|
+
- [ ] Teardown order preserved (detach → delete servers → delete volumes → etc.)
|
|
66
|
+
- [ ] `service/delete.rb` deleted
|
|
67
|
+
- [ ] `grep -r "Service::DeleteService" lib/` returns nothing
|
|
68
|
+
|
|
69
|
+
### 08-cli-exec
|
|
70
|
+
- [ ] `CLI::Exec::Command.new(options).run(["ls"])` callable
|
|
71
|
+
- [ ] `--all` flag works
|
|
72
|
+
- [ ] `-i` interactive works
|
|
73
|
+
- [ ] `service/exec.rb` deleted
|
|
74
|
+
|
|
75
|
+
### 09-cli-credentials
|
|
76
|
+
- [ ] `CLI::Credentials::Edit::Command.new(options).run` callable
|
|
77
|
+
- [ ] `CLI::Credentials::Show::Command.new(options).run` callable
|
|
78
|
+
- [ ] `credentials/` directory deleted
|
|
79
|
+
|
|
80
|
+
### 10-cli-db
|
|
81
|
+
- [ ] `CLI::Db::Command.new(options).branch_create` callable
|
|
82
|
+
- [ ] `branch_list`, `branch_restore`, `branch_download` callable
|
|
83
|
+
- [ ] `service/db.rb` deleted
|
|
84
|
+
|
|
85
|
+
### 11-cli-router
|
|
86
|
+
- [ ] `nvoi deploy --help` works
|
|
87
|
+
- [ ] `nvoi delete --help` works
|
|
88
|
+
- [ ] `nvoi exec --help` works
|
|
89
|
+
- [ ] `nvoi credentials --help` works
|
|
90
|
+
- [ ] `nvoi db --help` works
|
|
91
|
+
- [ ] `cli.rb` is < 100 lines
|
|
92
|
+
- [ ] `service/` directory deleted (should be empty by now)
|
|
93
|
+
|
|
94
|
+
### 12-cleanup
|
|
95
|
+
- [ ] No empty directories remain
|
|
96
|
+
- [ ] `tree lib/nvoi -L 2` matches expected structure
|
|
97
|
+
- [ ] Full test suite passes
|
|
98
|
+
- [ ] No orphan requires in `lib/nvoi.rb`
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Integration Smoke Test (End)
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Dry run (no actual cloud calls)
|
|
106
|
+
nvoi deploy --help
|
|
107
|
+
nvoi delete --help
|
|
108
|
+
nvoi exec --help
|
|
109
|
+
nvoi credentials show --help
|
|
110
|
+
nvoi db branch --help
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
If all help commands work → routing is correct.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Rollback
|
|
118
|
+
|
|
119
|
+
If any step fails:
|
|
120
|
+
```bash
|
|
121
|
+
git checkout HEAD~1 -- .
|
|
122
|
+
# or
|
|
123
|
+
git reset --hard HEAD~1
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Single commit = single rollback.
|