Immediate Jobs
Overview
The Immediate Jobs panel provides comprehensive management of one-time pipeline jobs in the Shakudo Dashboard. It enables users to create, monitor, and control data pipeline jobs that execute immediately upon creation, without a recurring schedule. Users can manage jobs across both the primary cluster and satellite clusters, with full filtering, monitoring, and action capabilities.
Access & Location
- Route:
?panel=jobs
- Navigation: Workloads → Jobs
- Access Requirements: None (public access, role-based filtering applies)
- Feature Flags: None
Key Capabilities
Create Immediate Jobs
Create and execute one-time pipeline jobs with comprehensive configuration options including environment settings, git integration, resource allocation, notification setup, and custom parameters. Jobs can be created for the primary cluster or satellite clusters.
Monitor Job Execution
View real-time status of running jobs and historical records of completed jobs. Track job progress, duration, resource utilization, and execution logs through integrated Grafana dashboards and event monitoring.
Manage Job Lifecycle
Control job execution with actions including:
- Clone existing jobs with configuration preservation
- Convert immediate jobs to scheduled jobs
- Terminate running or pending jobs
- Pin important jobs for quick access
- Publish jobs for team visibility
- Clone with customized Pod YAML specifications
Filter and Search
Apply advanced filtering across multiple dimensions including status, job name, environment configuration, parameters, timeframes, duration, owner, billing project, and custom search across names, paths, IDs, and authors.
Multi-Cluster Support
Manage jobs across the primary Kubernetes cluster and satellite clusters with dedicated views and cluster-specific configurations.
User Interface
Main View
The panel presents a dual-tab interface for cluster selection (Primary Cluster / Satellite Clusters) and job type (Running / History). Each view includes:
- Create Immediate Job button (top-right)
- Filter chips for active filters with reset option
- Parameter filtering dialog for complex parameter queries
- Pagination controls (20 jobs per page)
- Real-time data refresh capabilities
Dialogs & Modals
Create Immediate Job Dialog
- Purpose: Configure and launch a new immediate pipeline job
- Fields: Job name, environment config, pipeline path, working directory, git settings (branch/commit), timeout settings, retry configuration, parameters, notifications, secrets, billing project, service account, cloud SQL proxy settings
- Actions: Create job, clone from existing, cancel
Job Details Dialog
- Purpose: View comprehensive information about a specific job
- Fields: All job metadata, execution logs, events, parameters, resource allocations, custom configurations
- Actions: Access via clicking job name in table
Events and Logs Dialog
- Purpose: Real-time monitoring of job execution logs and Kubernetes events
- Fields: Pod events, container logs, timestamps
- Actions: Available for running jobs in the "Logs" column
Cancel Job Dialog
- Purpose: Terminate a running or pending job
- Actions: Confirm termination (available via Actions menu)
Parameters Filter Dialog
- Purpose: Filter jobs by specific parameter key-value pairs
- Fields: Multiple parameter pairs (key/value combinations)
- Actions: Apply filters, accessible via info chip in filter bar
Tables & Data Grids
Running Jobs Table (Current Immediate Jobs)
- Columns (visible): Actions, Name (with pin), Status, Logs (events/Grafana), Env Config, ID, Pipeline Path, Created, Duration
- Columns (hidden): Custom Image URL, Output Notebooks Path, Billing Project ID, Service Account ID, Status Reason, Schedule, Owner, Branch, Commit ID, Active Timeout, Max Tries
- Actions: View details, pin/unpin, actions menu (clone, convert to scheduled, terminate)
- Filtering: Quick search, advanced filters via toolbar, status auto-filtered to 'in progress' and 'pending'
- Features: Real-time updates, copy-to-clipboard for IDs and paths, published job indicators
History Jobs Table (Past Immediate Jobs)
- Columns (visible): Actions, Name (with pin), Status (with failure reason tooltips), Logs (Grafana), Env Config, ID, Pipeline Path, Created, End, Duration
- Columns (hidden): Same as Running Jobs table
- Actions: View details, pin/unpin, clone, convert to scheduled, publish/unpublish
- Filtering: Quick search, advanced filters via toolbar, status auto-filtered to exclude 'in progress' and 'pending'
- Features: Status reason tooltips for failed jobs, historical job analysis, duration tracking
Both tables support:
- Column visibility management (show/hide columns)
- Pinned columns (Actions pinned to right)
- Row pinning (pinned jobs appear at top)
- Pagination with page count display
- Loading states with circular progress indicators
- Error handling with user-friendly messages
Technical Details
GraphQL Operations
Queries:
getImmediateJobs
- Retrieves paginated list of immediate jobs with comprehensive filtering, ordered by pinned status and start timecountJobs
- Returns total count of jobs matching filter criteria for paginationgetImmediateSatelliteJobs
- Retrieves immediate jobs from a specific satellite cluster (polls every 5 seconds)countJobsOnSatelliteCluster
- Returns count of satellite cluster jobs for paginationgetSatelliteClusters
- Retrieves satellite cluster information for job operations
Mutations:
createPipelineJobWithAlerting
- Creates a new immediate job with full configuration including alerting setupcancelPipelineJob
- Terminates a running or pending immediate jobupdateOnePipelineJob
(pinJob) - Toggles pin status for a jobcreateSatellitePipelineJobWithAlerting
- Creates immediate job on satellite cluster
Subscriptions:
- None (uses polling for satellite cluster jobs at 5-second intervals)
Component Structure
- Main Component:
/components/Jobs/Immediate/ImmediateJobsPanel.tsx
- Tables:
/components/Jobs/Immediate/Tables/CurrentImmediateJobsTable.tsx
/components/Jobs/Immediate/Tables/PastImmediateJobsTable.tsx
- Main Table Component:
/components/Jobs/Immediate/ImmediateJobsTables.tsx
- Dialogs:
/components/Jobs/Immediate/ImmediateJobDialog.tsx
(create/clone)/components/Jobs/Immediate/satelliteCluster/ImmediateSatelliteJobDialog.tsx
(satellite jobs)/components/Jobs/shared/Details/satelliteCluster/SatelliteJobsDetailsDialog.tsx
/components/Jobs/shared/EventsAndLogsDialog.tsx
/components/Jobs/shared/SatelliteEventsAndLogsDialog.tsx
- Actions:
/components/Jobs/Immediate/ImmediateJobActionsMenu.tsx
- Loader:
/components/Jobs/shared/JobsLoader.tsx
State Management
Uses Jotai atoms for global state:
JobsPanelSectionAtom
- Controls current view (table/create/details/clone)CurrentImmediateJobsAtom
/PastImmediateJobsAtom
- Job data storageCurrentJobFiltersAtom
/PastJobFiltersAtom
- Active filter statesCurrentImmediateJobsTablePageAtom
/PastImmediateJobsTablePageAtom
- Pagination stateCurrentJobsDataLoadingAtom
/PastJobsDataLoadingAtom
- Loading statesimmediateJobsClusterTypeTabAtom
- Cluster tab selection (0=primary, 1=satellite)immediateJobsTableTypeTabAtom
- Job type tab selection (0=running, 1=history)selectedSatelliteClusterAtom
/selectedSatelliteClusterIdAtom
- Satellite cluster selection
Filter System
Advanced filtering supports:
- Quick Search: Searches across job name, pipeline path, ID, owner, and user email
- Status: Filters by job status (automatically applied per table)
- Timeframe: Filter by recent time ranges (last hour, day, week, etc.)
- Timeline: Filter by specific start/completion date ranges
- Duration: Filter by execution duration (more than / less than)
- Parameters: Filter by custom parameter key-value pairs
- Job Type: Filter by environment configuration
- Owner/Group: Filter by job ownership
- Billing Project: Filter by billing project ID
- User: Role-based filtering (non-admins see only their own jobs unless published)
Filters persist in URL query parameters for shareable links and browser navigation.
Role-Based Access
- Email Filter: Users without
WorkloadRoles.filters.email
permission automatically see only their own jobs and published jobs - Public Jobs: Jobs marked as "published" are visible to all users
- Filter enforcement happens at GraphQL query level with
user
filter parameter
Common Workflows
Create and Run a New Job
- Click "Create Immediate Job" button in top-right
- Configure job settings (name, environment, git, parameters)
- Set optional notifications and resource allocations
- Click "Create" to launch the job
- Job appears in "Running" tab with "in progress" or "pending" status
- Monitor logs via "Logs" column (events dialog or Grafana link)
- Upon completion, job moves to "History" tab
Clone an Existing Job
- Navigate to desired job in Running or History table
- Click "Actions" menu on the job row
- Select "Clone" from dropdown
- Modify configuration in pre-populated dialog
- Create the cloned job
- New job starts with same configuration as original
Monitor Job Progress
- Find job in "Running" tab
- Click job name to view detailed information
- Use "Logs" column to access real-time events
- Click Grafana icon to view comprehensive logs in Grafana dashboard
- Monitor status, duration, and resource utilization
- Terminate job if needed via Actions menu
Filter Jobs by Parameters
- Apply filters via toolbar filter options
- Click on parameter chip (if parameters already filtered)
- Add/edit parameter key-value pairs in dialog
- Apply filters to see matching jobs
- Clear filters using "Reset Filters" button
Convert to Scheduled Job
- Locate immediate job in table
- Click "Actions" menu
- Select "Convert to Scheduled"
- Configure schedule settings (cron expression, timezone)
- Save to create scheduled version of job
Publish a Job for Team Access
- Find your job in the History or Running table
- Click "Actions" menu
- Select "Publish" to make job visible to all team members
- Published jobs show "published" chip indicator
- Other users can now view and clone your job
Related Features
- Scheduled Jobs - Recurring jobs with cron schedules
- Services - Long-running microservices with exposed ports
- Sessions - Interactive development environments
- Environment Configs - Job runtime configurations
- Satellite Clusters - Remote cluster management
Notes & Tips
Performance Optimization
- Tables load 20 jobs per page to balance performance and usability
- Satellite cluster jobs poll every 5 seconds for status updates
- Primary cluster jobs use standard GraphQL queries without polling
- Filter operations include email-based scoping to reduce query load
Job Status Lifecycle
- pending: Job created, waiting for resources
- in progress: Job actively running
- done: Job completed successfully
- failed: Job encountered errors (check Status Reason tooltip)
- cancelled: Job manually terminated
Status Reason Interpretation
- "Timed out":
BackoffLimitExceeded
- Job exceeded retry limit - "All retries failed":
DeadlineExceeded
- Job exceeded active timeout - Custom reasons displayed as-is from Kubernetes
Best Practices
- Pin Important Jobs: Use pin feature to keep critical jobs at top of list
- Use Descriptive Names: Job names appear in all views and should be meaningful
- Set Appropriate Timeouts: Configure both timeout (total) and activeTimeout (per retry)
- Leverage Parameters: Use parameters for flexible, reusable job configurations
- Monitor Billing: Use Billing Project ID to track costs per project
- Enable Notifications: Configure alerts for long-running or critical jobs
- Publish for Collaboration: Share successful job configurations with team via publish feature
Limitations
- Jobs cannot be edited after creation (clone and modify instead)
- Maximum 20 jobs displayed per page
- Status updates for primary cluster jobs not real-time (refresh manually)
- Satellite cluster jobs limited to available satellite clusters
- Filter persistence tied to URL (clearing browser history loses filters)
Grafana Integration
- Grafana links automatically generated for jobs with logs
- Links include time range scoping based on job start/completion times
- Satellite cluster Grafana uses cluster-specific domain
- Jobs must have completed or be running to generate valid links
Satellite Cluster Considerations
- Must select a satellite cluster before creating jobs
- Satellite jobs have separate configuration dialog
- Pod specs and resources validated against satellite cluster capabilities
- Clone operations preserve satellite cluster context
- Satellite jobs cannot be converted to primary cluster jobs