get_log.go 923 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package grpc
  2. import (
  3. "fmt"
  4. "github.com/porter-dev/porter/provisioner/integrations/redis_stream"
  5. "github.com/porter-dev/porter/provisioner/pb"
  6. )
  7. func (s *ProvisionerServer) GetLog(infra *pb.Infra, server pb.Provisioner_GetLogServer) error {
  8. name, ok := verifyStaticTokenContext(s.config, server.Context())
  9. if !ok {
  10. return fmt.Errorf("unauthorized")
  11. }
  12. modelInfra, err := s.config.Repo.Infra().ReadInfra(name.ProjectID, name.InfraID)
  13. if err != nil {
  14. return err
  15. }
  16. operation, err := s.config.Repo.Infra().ReadOperation(name.InfraID, name.OperationUID)
  17. if err != nil {
  18. return err
  19. }
  20. // if the operation is completed, close the connection
  21. if operation.Status == "completed" {
  22. return nil
  23. }
  24. sendFnc := func(log string) error {
  25. return server.Send(&pb.LogString{
  26. Log: log,
  27. })
  28. }
  29. return redis_stream.StreamOperationLogs(server.Context(), s.config.RedisClient, modelInfra, operation, sendFnc)
  30. }