enable.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package enable_cluster_preview_envs
  2. import (
  3. "github.com/porter-dev/porter/internal/features"
  4. "github.com/porter-dev/porter/internal/models"
  5. lr "github.com/porter-dev/porter/pkg/logger"
  6. _gorm "gorm.io/gorm"
  7. )
  8. // EnableClusterPreviewEnvs enables preview environments for clusters where it is enabled for the project
  9. func EnableClusterPreviewEnvs(db *_gorm.DB, client *features.Client, logger *lr.Logger) error {
  10. logger.Info().Msg("starting to enable preview envs for existing clusters whose parent projects have preview envs enabled")
  11. var clusters []*models.Cluster
  12. if err := db.Find(&clusters).Error; err != nil {
  13. logger.Error().Msgf("failed to get clusters: %v", err)
  14. return err
  15. }
  16. for _, c := range clusters {
  17. project := &models.Project{}
  18. if err := db.Model(project).Where("id = ?", c.ProjectID).First(project).Error; err != nil {
  19. logger.Error().Msgf("failed to get project ID %d for cluster ID %d: %v", c.ProjectID, c.ID, err)
  20. continue
  21. }
  22. if project.GetFeatureFlag(models.PreviewEnvsEnabled, client) {
  23. c.PreviewEnvsEnabled = true
  24. if err := db.Save(c).Error; err != nil {
  25. logger.Error().Msgf("failed to update cluster ID %d: %v", c.ID, err)
  26. return err
  27. }
  28. logger.Info().Msgf("enabled preview envs for cluster ID %d", c.ID)
  29. }
  30. }
  31. logger.Info().Msg("cluster preview envs migration completed")
  32. return nil
  33. }