StartDeployment starts a deployment by ID.
(ctx context.Context, req *adminv1.StartDeploymentRequest)
| 391 | |
| 392 | // StartDeployment starts a deployment by ID. |
| 393 | func (s *Server) StartDeployment(ctx context.Context, req *adminv1.StartDeploymentRequest) (*adminv1.StartDeploymentResponse, error) { |
| 394 | observability.AddRequestAttributes(ctx, |
| 395 | attribute.String("args.deployment_id", req.DeploymentId), |
| 396 | ) |
| 397 | |
| 398 | depl, err := s.admin.DB.FindDeployment(ctx, req.DeploymentId) |
| 399 | if err != nil { |
| 400 | return nil, err |
| 401 | } |
| 402 | |
| 403 | proj, err := s.admin.DB.FindProject(ctx, depl.ProjectID) |
| 404 | if err != nil { |
| 405 | return nil, err |
| 406 | } |
| 407 | |
| 408 | claims := auth.GetClaims(ctx) |
| 409 | permissions := claims.ProjectPermissions(ctx, proj.OrganizationID, proj.ID) |
| 410 | if depl.Environment == "dev" { |
| 411 | if !permissions.ManageDev { |
| 412 | return nil, status.Error(codes.PermissionDenied, "does not have permission to manage dev deployment") |
| 413 | } |
| 414 | } else { |
| 415 | if !permissions.ManageProd { |
| 416 | return nil, status.Error(codes.PermissionDenied, "does not have permission to manage prod deployment") |
| 417 | } |
| 418 | } |
| 419 | |
| 420 | depl, err = s.admin.StartDeployment(ctx, depl) |
| 421 | if err != nil { |
| 422 | return nil, err |
| 423 | } |
| 424 | |
| 425 | s.admin.Used.Deployment(depl.ID) |
| 426 | |
| 427 | return &adminv1.StartDeploymentResponse{ |
| 428 | Deployment: deploymentToDTO(depl), |
| 429 | }, nil |
| 430 | } |
| 431 | |
| 432 | // StopDeployment stops a deployment by ID. |
| 433 | func (s *Server) StopDeployment(ctx context.Context, req *adminv1.StopDeploymentRequest) (*adminv1.StopDeploymentResponse, error) { |
nothing calls this directly
no test coverage detected