docker-swarm 0.7.2 → 0.8.0
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/CHANGELOG.md +12 -0
- data/README.md +14 -7
- data/docs/behavior/behavior.md +58 -3
- data/docs/consumed/docker-engine-api.md +116 -0
- data/docs/errors/errors.md +103 -0
- data/docs/glossary/glossary.md +23 -23
- data/docs/interface/interface.md +118 -0
- data/docs/release/release.md +54 -0
- data/docs/test/testing.md +100 -0
- data/docs/topology/topology.md +55 -0
- data/lib/docker_swarm/api.rb +8 -4
- data/lib/docker_swarm/concerns/creatable.rb +13 -6
- data/lib/docker_swarm/concerns/updatable.rb +15 -4
- data/lib/docker_swarm/connection.rb +6 -6
- data/lib/docker_swarm/log_helper.rb +26 -3
- data/lib/docker_swarm/models/image.rb +85 -1
- data/lib/docker_swarm/registry_auth.rb +48 -0
- data/lib/docker_swarm/version.rb +1 -1
- data/lib/docker_swarm.rb +1 -0
- data/skill/SKILL.md +14 -8
- metadata +10 -3
data/lib/docker_swarm.rb
CHANGED
|
@@ -44,6 +44,7 @@ require_relative "docker_swarm/middleware/response_json_parser"
|
|
|
44
44
|
require_relative "docker_swarm/middleware/error_handler"
|
|
45
45
|
require_relative "docker_swarm/connection"
|
|
46
46
|
require_relative "docker_swarm/api"
|
|
47
|
+
require_relative "docker_swarm/registry_auth"
|
|
47
48
|
|
|
48
49
|
# Concerns deben cargarse antes que Base si Base los incluye
|
|
49
50
|
require_relative "docker_swarm/concerns/creatable"
|
data/skill/SKILL.md
CHANGED
|
@@ -9,10 +9,10 @@ description: >-
|
|
|
9
9
|
cuando el caller necesita orquestar Docker desde Ruby — listar/crear/
|
|
10
10
|
actualizar/eliminar recursos del cluster, leer logs de services/tasks/
|
|
11
11
|
containers, hacer health-check del daemon (System.up/info/df), filtrar por
|
|
12
|
-
labels,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
labels, pullear imágenes (incl. de registries privados vía X-Registry-Auth),
|
|
13
|
+
o capturar errores tipados de Docker (Conflict/NotFound/Communication). NO
|
|
14
|
+
activar para builds de imágenes (no implementado) o flujos que no son Swarm
|
|
15
|
+
(Docker Compose, raw containers).
|
|
16
16
|
triggers:
|
|
17
17
|
- "DockerSwarm::"
|
|
18
18
|
- "docker-swarm gem"
|
|
@@ -55,11 +55,11 @@ Defaults son razonables: en local sin TLS, no necesitás bloque `configure`.
|
|
|
55
55
|
|
|
56
56
|
| Modelo | Class methods | Instance methods | Notas |
|
|
57
57
|
|---|---|---|---|
|
|
58
|
-
| `Service` | `all(filters)`, `find(id)`, `where(filters)`, `create(attrs)` | `update(attrs)`, `restart`, `destroy`, `logs(query)`, `reload`, `persisted?`, `id` | CRUD completo + force-recreate de tasks |
|
|
58
|
+
| `Service` | `all(filters)`, `find(id)`, `where(filters)`, `create(attrs)` | `update(attrs)`, `restart`, `destroy`, `logs(query)`, `reload`, `persisted?`, `id` | CRUD completo + force-recreate de tasks; `create`/`update` aceptan `registry_auth:` (+ `update`: `registry_auth_from:`) para auth de registry privado |
|
|
59
59
|
| `Node` | `all(filters)`, `find(id)`, `where(filters)` | `update(attrs)`, `destroy` | No `create` (los nodos se unen fuera de la gema) |
|
|
60
60
|
| `Task` | `all(filters)`, `find(id)`, `where(filters)` | `logs(query)`, `reload` | Read-only (generados por orquestador) |
|
|
61
61
|
| `Container` | `all(filters)`, `find(id)`, `where(filters)` | `start`, `stop`, `destroy`, `logs(query)` | **No `create`** (gap conocido, fuera F1) |
|
|
62
|
-
| `Image` | `all(filters)`, `find(id)`, `
|
|
62
|
+
| `Image` | `all(filters)`, `find(id)`, `pull(image_reference, registry_auth:)` | `destroy` | **No `create`** (retirado; `Image` ya no es Creatable). `pull` = pull explícito síncrono → `{status, image_ref, digest?}`; **soporta `X-Registry-Auth`** para registries privados |
|
|
63
63
|
| `Network` | `all(filters)`, `find(id)`, `create(attrs)` | `update(attrs)`, `destroy` | CRUD completo |
|
|
64
64
|
| `Volume` | `all(filters)`, `find(id)`, `create(attrs)` | `destroy` | No `update` (Docker no lo soporta). Respuesta wrapped vía `root_key = "Volumes"` |
|
|
65
65
|
| `Config` | `all(filters)`, `find(id)`, `create(attrs)` | `destroy` | No `update` — recrear |
|
|
@@ -131,7 +131,8 @@ Todas heredan de `DockerSwarm::Error`. Tres formas de acceso equivalentes: `Dock
|
|
|
131
131
|
- **`Spec` se mergea con `deep_merge` en updates**, no se reemplaza. Pasale sólo los campos que cambian: `service.update(Mode: {...})`, no `service.update(Spec: {...completo})`.
|
|
132
132
|
- **`assign_attributes` muta antes de validar.** Si `update` falla por `valid?` o por el API, la instancia local quedó mutada. Hacé `reload` si necesitás estado limpio.
|
|
133
133
|
- **`Container.create` no existe** en la gema (gap intencional F1). Si necesitás crear containers standalone, usá `DockerSwarm.request(method: :post, path: "containers/create", ...)` directo.
|
|
134
|
-
-
|
|
134
|
+
- **`Image.create` retirado (breaking).** Ya no existe (`Image` dejó de ser Creatable; el `create` estaba roto y sin consumidores). Usá `Image.pull(image_reference, registry_auth:)`.
|
|
135
|
+
- **Auth de registry privado soportado** vía credencial opaca base64url en `registry_auth:` — `Image.pull(ref, registry_auth:)`, `Service.create(..., registry_auth:)` y `Service#update(..., registry_auth:` / `registry_auth_from:)`. Viaja por header `X-Registry-Auth` (o query `registryAuthFrom`: `spec`\|`previous-spec`, excluyentes); la gema no la mintea ni decodifica. Ver flujos 3.9/3.10 de `docs/behavior/behavior.md`.
|
|
135
136
|
- **`destroy` es graceful con 404** (retorna `nil`), no con 409. Si el recurso está en uso, `Conflict` se propaga.
|
|
136
137
|
- **Logs sensibles enmascarados** automáticamente: keys matching `password|pass|passwd|secret|token|api_key|auth|\bdata\b` → `[FILTERED]`. `\bdata\b` evita filtrar `metadata`/`database`.
|
|
137
138
|
|
|
@@ -164,11 +165,16 @@ Logs salen en formato KV (`component=docker_swarm.connection event=request_succe
|
|
|
164
165
|
|
|
165
166
|
## Índice de artefactos
|
|
166
167
|
|
|
168
|
+
- [`docs/interface/interface.md`](docs/interface/interface.md) — API Ruby pública (11 modelos + `Base` + concerns + `Api`/`Connection`). La tabla de símbolos de arriba es el resumen; el detalle por símbolo acá.
|
|
169
|
+
- [`docs/errors/errors.md`](docs/errors/errors.md) — jerarquía de excepciones + mapeo status HTTP → excepción. La tabla de errores de arriba es el resumen.
|
|
170
|
+
- [`docs/consumed/docker-engine-api.md`](docs/consumed/docker-engine-api.md) — superficie del Docker Engine API consumida (`Api::ENDPOINTS`) + política de retry estructural.
|
|
167
171
|
- [`docs/glossary/glossary.md`](docs/glossary/glossary.md) — definición de términos (primitivas Docker + conceptos internos).
|
|
168
172
|
- [`docs/behavior/behavior.md`](docs/behavior/behavior.md) — secuencias load-bearing (create+reload, update+Version, retry-policy, error-mapping, etc.).
|
|
169
173
|
- [`docs/config/configuracion.md`](docs/config/configuracion.md) — inventario de configuración runtime (7 opciones del bloque `configure`, sin env vars, ninguna secreta). El bloque de arriba es el resumen; shape/defaults/consumidores en el detalle.
|
|
174
|
+
- [`docs/topology/topology.md`](docs/topology/topology.md) — dependencias runtime (3) + grafo de contexto.
|
|
175
|
+
- [`docs/test/testing.md`](docs/test/testing.md) — estructura de la suite RSpec (unit + integration) y comandos de corrida.
|
|
170
176
|
- `docs/data/` — `n/a` (gema sin DB).
|
|
171
|
-
- `docs/api
|
|
177
|
+
- `docs/api/` (operaciones), `docs/events/` — `n/a` (la gema no expone superficie HTTP/CLI/eventos propia; su superficie pública es la interfaz Ruby).
|
|
172
178
|
|
|
173
179
|
## Versionado del contrato
|
|
174
180
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: docker-swarm
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.8.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Gabriel
|
|
@@ -92,7 +92,13 @@ files:
|
|
|
92
92
|
- README.md
|
|
93
93
|
- docs/behavior/behavior.md
|
|
94
94
|
- docs/config/configuracion.md
|
|
95
|
+
- docs/consumed/docker-engine-api.md
|
|
96
|
+
- docs/errors/errors.md
|
|
95
97
|
- docs/glossary/glossary.md
|
|
98
|
+
- docs/interface/interface.md
|
|
99
|
+
- docs/release/release.md
|
|
100
|
+
- docs/test/testing.md
|
|
101
|
+
- docs/topology/topology.md
|
|
96
102
|
- lib/docker-swarm.rb
|
|
97
103
|
- lib/docker_swarm.rb
|
|
98
104
|
- lib/docker_swarm/api.rb
|
|
@@ -120,6 +126,7 @@ files:
|
|
|
120
126
|
- lib/docker_swarm/models/system.rb
|
|
121
127
|
- lib/docker_swarm/models/task.rb
|
|
122
128
|
- lib/docker_swarm/models/volume.rb
|
|
129
|
+
- lib/docker_swarm/registry_auth.rb
|
|
123
130
|
- lib/docker_swarm/version.rb
|
|
124
131
|
- skill/SKILL.md
|
|
125
132
|
homepage: https://github.com/gedera/docker-swarm
|
|
@@ -128,9 +135,9 @@ licenses:
|
|
|
128
135
|
metadata:
|
|
129
136
|
homepage_uri: https://github.com/gedera/docker-swarm
|
|
130
137
|
source_code_uri: https://github.com/gedera/docker-swarm
|
|
131
|
-
changelog_uri: https://github.com/gedera/docker-swarm/blob/v0.
|
|
138
|
+
changelog_uri: https://github.com/gedera/docker-swarm/blob/v0.8.0/CHANGELOG.md
|
|
132
139
|
bug_tracker_uri: https://github.com/gedera/docker-swarm/issues
|
|
133
|
-
documentation_uri: https://github.com/gedera/docker-swarm/blob/v0.
|
|
140
|
+
documentation_uri: https://github.com/gedera/docker-swarm/blob/v0.8.0/skill/SKILL.md
|
|
134
141
|
rubygems_mfa_required: 'true'
|
|
135
142
|
rdoc_options: []
|
|
136
143
|
require_paths:
|