PCD Manager is a Next.js application that helps Platform9 teams manage Private Cloud Director (PCDs) across multiple environments. It provides visibility and control over Infra and workload regions, their metadata, lease cycles, and task states. The app is intended for use by internal teams with OAuth-based Google login and Slack integration.
- Google OAuth Login is used (via
next-auth). - Login is restricted to allowed Google accounts.
- Fetches and displays a list of all regions across selected environments.
- Each region is grouped by customer shortname.
- Real-time updates with chart URLs, lease info, tags, etc.
- Quickly search and filter regions by FQDN, owner, tags, etc.
- You can reset the
task_stateof any region toreadyvia API.
- Add descriptive tags to regions to indicate ownership, purpose, or status.
- Remove tags when no longer needed.
- Creates a new customer and a root region (infra region).
- Sets owner, lease date, chart URL, and other metadata.
- Adds new workload regions under an existing PCD (customer).
- Uses same metadata structure as Infra regions.
- Fires a request to delete a region.
- If it's an Infra region, also deletes the customer.
- Updates the
lease_dateand increments thelease_counter. - Can include optional notes.
- Provides links to the correct Tempus page for initiating a region upgrade.
A scheduled API endpoint is available for:
- Fetches all regions from Bork.
- Compares each region's
lease_dateto current date - Automatically triggers deletion for expired regions
-
Sends Slack batch messages to a dedicated channel pcd-lease-notices
-
Tags all region owners whose regions will expire in 7 days or 1 day
-
Message includes a table with:
- FQDN
- Owner email
- Lease Date
- Frontend: Next.js (App Router)
- Backend APIs:
/app/apiwith full TypeScript support - OAuth: next-auth with Google provider
- Slack: Slack Web API for notifications
- Dockerized: Single image with
standaloneoutput for optimal deployment
/app
/api # All backend API routes
/utils # Slack, etc.
/components # UI components
/constants # Environment config
/types # Shared TS types
/home # home page
/control-panel # control panel page
🚀 Deployment Summary
Docker build & push
K8s deployment with volume-mounted secrets
HTTPS via Let's Encrypt
Ingress and Service YAMLs provided. Check out k8s_manifest file.
For issues, questions or feature requests, contact ssaladi@platform9.com