Skip to content

feat: enhance error messaging for environment secrets fetching permission#1930

Merged
jeremybeard merged 2 commits intoastronomer:mainfrom
coleheflin:improve-secrets-fetching-error
Sep 4, 2025
Merged

feat: enhance error messaging for environment secrets fetching permission#1930
jeremybeard merged 2 commits intoastronomer:mainfrom
coleheflin:improve-secrets-fetching-error

Conversation

@coleheflin
Copy link
Contributor

@coleheflin coleheflin commented Sep 3, 2025

Problem

Users encountering environment secrets fetching permission errors during astro dev start --deployment-id XXX receive a cryptic error message that provides no actionable guidance for resolution.

Current Error Message:

Error: showSecrets on organization with id clt4farh34gm801n753x80fo8 is not allowed

This error occurs when the organization does not have "Environment Secrets Fetching" enabled in organization settings, but users have no way to understand what this means or how to resolve it.

Solution

Enhanced error handling in the environment objects listing flow to detect secrets fetching permission errors and provide specific, actionable troubleshooting guidance.

New Error Message:

Error: environment secrets fetching is not enabled for this organization.

To resolve this issue:
• Ask an organization administrator to enable "Environment Secrets Fetching" in organization settings
• Navigate to Organization Settings > General > Environment Secrets Fetching
• Toggle the setting to "Enabled"

This setting controls whether deployments can access organization environment secrets during local development.

Without this setting enabled, you can still use 'astro dev start' without the --deployment-id flag for local development.

Technical Implementation

Changes Made

Enhanced Error Detection (cloud/environment/environment.go):

  • Added isSecretsFetchingNotAllowedError() helper function to detect API permission errors
  • Enhanced listEnvironmentObjects() to intercept and transform secrets permission errors
  • Implemented error chain checking to handle wrapped errors properly

Comprehensive Testing (cloud/environment/environment_test.go):

  • Added TestIsSecretsFetchingNotAllowedError() with 11 test cases covering:
    • Exact error message matching
    • Case-insensitive matching
    • Wrapped error handling
    • False positive prevention
    • Edge cases (nil, empty errors)

Error Detection Logic

The detection function checks for errors containing all three key components:

  • "showsecrets" (case-insensitive)
  • "organization" (case-insensitive)
  • "not allowed" (case-insensitive)

This ensures precise matching while avoiding false positives from other organization or secrets-related errors.

Testing

Unit Tests

go test -v ./cloud/environment
# All 16 test cases pass, including comprehensive error detection scenarios

End-to-End Testing

Tested with real deployment ID that triggers the permission error:

./astro dev start --deployment-id cmf4jvuwd3a7u01p561iekhzn
# ✅ Enhanced error message displays correctly
# ✅ Provides clear actionable guidance
# ✅ Explains the setting location and purpose
Screenshot 2025-09-03 at 3 48 35 PM ### Code Quality - ✅ All linter checks pass (gofumpt, golangci-lint) - ✅ Follows Go error handling conventions - ✅ Maintains backward compatibility

This enhancement transforms a confusing technical error into helpful user guidance, improving the developer experience for users setting up local Airflow development with Astro deployments.

@jeremybeard jeremybeard merged commit ec06a79 into astronomer:main Sep 4, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants