Skip to content

[Phase 1] Disable project creation endpoint in backend for single-namespace mode #3

@jeremyeder

Description

@jeremyeder

Epic: #1
Phase: 1 - Foundation & Code Changes
Dependencies: None (parallel with #2)
Estimate: 3 hours

Description

Disable the CreateProject endpoint in the backend API when running in single-namespace mode, since the backend cannot create namespaces without cluster-wide permissions.

Critical Issues Addressed

Implementation Tasks

1. Add SINGLE_NAMESPACE_MODE Environment Variable

File: components/backend/internal/handlers/projects.go

Modify CreateProject() function (line ~98):

func CreateProject(c *gin.Context) {
    // Check if running in single-namespace mode
    if os.Getenv("SINGLE_NAMESPACE_MODE") == "true" {
        c.JSON(http.StatusNotImplemented, gin.H{
            "error": "Project creation disabled in single-namespace mode",
            "message": "This deployment only supports the namespace: vteam--test1",
            "contact": "Contact platform administrator to provision additional namespaces",
        })
        return
    }
    
    // ... existing implementation for multi-namespace mode ...
}

2. Update Backend Deployment Manifest

File: components/manifests/backend-deployment.yaml (to be updated in Phase 3)

Add environment variable:

env:
- name: SINGLE_NAMESPACE_MODE
  value: "false"  # Default to multi-namespace mode

Testing Requirements

  • Backend returns HTTP 501 when SINGLE_NAMESPACE_MODE=true
  • Error message is clear and actionable
  • Existing functionality works when SINGLE_NAMESPACE_MODE=false
  • Frontend handles 501 response gracefully

Acceptance Criteria

  • CreateProject returns 501 in single-namespace mode
  • Error message includes helpful guidance
  • Existing multi-namespace functionality unchanged
  • Environment variable documented
  • Code reviewed and tested

Files Changed

  • components/backend/internal/handlers/projects.go

Future Work (Phase 2)

  • Frontend feature flag to hide "Create Project" button
  • UI message explaining single-namespace limitation

Branch

feature/mpp-single-namespace-mode

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions