-
-
Notifications
You must be signed in to change notification settings - Fork 24
feat: cluster based deployment, rollback, restart across services #425
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…d more methods wrapper for future integrations for multi server management
WalkthroughIntroduces Docker Swarm cluster management APIs and wires them into DockerService initialization. Migrates deployment task handlers from container-level operations to swarm service operations for run, restart, delete, and rollback. Adds service health checks, event streaming, and node/cluster introspection. Updates repository interface to expose new swarm methods. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant User
participant TaskService
participant DeployTasks
participant DockerRepo as DockerRepository (Swarm)
participant DockerEngine as Docker Engine
rect rgba(230,245,255,0.6)
note over User,DeployTasks: Deploy/Update flow (service-based)
User->>TaskService: Enqueue Run/Update
TaskService->>DeployTasks: HandleRun (AtomicUpdateContainer)
DeployTasks->>DockerRepo: GetClusterServices
alt Service exists
DeployTasks->>DockerRepo: UpdateService(serviceID, serviceSpec, rollback=none)
else New service
DeployTasks->>DockerRepo: CreateService(serviceSpec)
end
DeployTasks->>DockerRepo: GetServiceByID / GetServiceHealth
DockerRepo->>DockerEngine: Swarm API calls
DockerEngine-->>DockerRepo: Specs/Health
DockerRepo-->>DeployTasks: Health OK/err
DeployTasks-->>TaskService: Mark success/failure
end
sequenceDiagram
autonumber
participant User
participant TaskService
participant RestartTasks as Restart Handler
participant DockerRepo as DockerRepository (Swarm)
participant DockerEngine as Docker Engine
rect rgba(240,255,240,0.6)
note over User,RestartTasks: Restart via service update
User->>TaskService: Enqueue Restart
TaskService->>RestartTasks: HandleRestart
RestartTasks->>DockerRepo: GetClusterServices
alt Service found
RestartTasks->>DockerRepo: UpdateService(serviceID, currentSpec, rollback=none)
else Not found
RestartTasks-->>TaskService: ErrContainerNotRunning
end
DockerRepo->>DockerEngine: Service Update
DockerEngine-->>DockerRepo: Update ACK
DockerRepo-->>RestartTasks: OK/err
end
sequenceDiagram
autonumber
participant User
participant TaskService
participant RollbackTasks as Rollback Handler
participant DockerRepo as DockerRepository (Swarm)
participant DockerEngine as Docker Engine
rect rgba(255,245,230,0.6)
note over User,RollbackTasks: Native swarm rollback
User->>TaskService: Enqueue Rollback
TaskService->>RollbackTasks: HandleRollback
RollbackTasks->>DockerRepo: RollbackService(serviceID)
DockerRepo->>DockerEngine: Service Rollback
DockerEngine-->>DockerRepo: Rollback ACK
RollbackTasks->>DockerRepo: GetServiceByID / GetServiceHealth
DockerRepo-->>RollbackTasks: Health status
RollbackTasks-->>TaskService: Success/ErrFailedToUpdateContainer
end
sequenceDiagram
autonumber
participant User
participant TaskService
participant DeleteTasks as Delete Handler
participant DockerRepo as DockerRepository (Swarm)
rect rgba(255,240,245,0.6)
note over User,DeleteTasks: Service deletion
User->>TaskService: Enqueue Delete
TaskService->>DeleteTasks: HandleDelete
DeleteTasks->>DockerRepo: GetClusterServices
DeleteTasks->>DockerRepo: DeleteService(matching name)
DeleteTasks->>DockerRepo: RemoveImage(...) [per deployment]
DeleteTasks-->>TaskService: Cleanup complete
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Suggested labels
Poem
✨ Finishing touches
🧪 Generate unit tests
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (6)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
@coderabbitai summary |
✅ Actions performedSummary regeneration triggered. |
@coderabbitai summary |
✅ Actions performedSummary regeneration triggered. |
Summary by CodeRabbit
New Features
Refactor