Repository navigation
feat(gcp): add Cloud Scheduler adapter to Cloud Explorer - #185
Conversation
|
| Filename | Overview |
|---|---|
| packages/api/src/adapter-gcp/GcpSchedulerAdapter.ts | Implements Cloud Scheduler CRUD, pagination, search, validation, and normalized resource mapping without an eligible follow-up defect. |
| packages/api/src/cloud-spi/schedulerSchema.ts | Defines schema-driven scheduler fields, actions, filters, and metadata-backed columns aligned with the adapter. |
| packages/api/src/cloud-spi/serviceCatalog.ts | Registers Cloud Scheduler navigation metadata, with the corresponding generated README matrix now synchronized. |
| packages/api/src/cloudProxy.ts | Registers the GCP scheduler adapter in the generic cloud-proxy dispatch path. |
| packages/frontend/src/types/resource.ts | Mirrors scheduler-job in the frontend resource union while preserving the existing dynamodb-table member. |
| README.md | Updates the generated service matrix consistently with the current catalog and registry. |
Sequence Diagram
sequenceDiagram
participant UI as Cloud Explorer
participant API as Cloud Proxy
participant Adapter as GcpSchedulerAdapter
participant Runtime as Floci-GCP
UI->>API: Scheduler resource operation
API->>Adapter: Dispatch by gcp/scheduler
Adapter->>Runtime: Cloud Scheduler v1 request
Runtime-->>Adapter: Job or paginated job list
Adapter-->>API: Normalized CloudResource
API-->>UI: Scheduler job response
Reviews (3): Last reviewed commit: "chore(gcp): merge main into Cloud Schedu..." | Re-trigger Greptile
hectorvent
left a comment
There was a problem hiding this comment.
Thank you for this, and welcome! I ran it against a live runtime: creating a job returned a proper scheduler job with its cron expression, time zone and target URI, a missing name came back as a typed 400 rather than a 500, and a missing job gave a clean 404. The table you built is more useful than the minimum, showing the schedule and target rather than just a name.
Greptile has two open threads and I checked both. They are right:
(blocking) The README service matrix needs regenerating, since adding a catalog row changes the navigation: cd packages/api && bun run scripts/service-matrix.ts.
(blocking) The backend emits scheduler-job, but the frontend keeps its own copy of that union in packages/frontend/src/types/resource.ts and it does not list it yet. Adding it there keeps the two in step, which is what the other adapters do.
Also, this now conflicts with main because four PRs landed today. That one is on us, and a rebase is all it needs.
# Conflicts: # packages/api/src/cloud-spi/types.ts
hectorvent
left a comment
There was a problem hiding this comment.
Thank you for turning that around so quickly. I rebuilt the stack at 9e2a4a7: the README row matches what service-matrix.ts generates, scheduler-job is in the frontend union, and creating a job through the console still comes back ENABLED with its schedule, time zone and target, and renders in the table. Both threads are resolved and the rebase is clean against today's main.
I have released the workflow runs on this push, and all of the checks came back green. No blockers from my side.
|
🎉 This PR is included in version 0.5.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
# [0.5.0](floci-io/floci-ui@0.4.0...0.5.0) (2026-09-15) ### Bug Fixes * **ci:** allow floci-ui to run on older cpus ([floci-io#189](floci-io#189)) ([1ee7b51](floci-io@1ee7b51)), closes [floci-io#188](floci-io#188) * **frontend:** align dynamic form fields to top ([floci-io#202](floci-io#202)) ([9031bb6](floci-io@9031bb6)) * **frontend:** derive create-button label from schema capability ([floci-io#165](floci-io#165)) ([ffaddf0](floci-io@ffaddf0)), closes [floci-io#163](floci-io#163) * **s3:** include bucket tags in storage resource metadata ([floci-io#203](floci-io#203)) ([234a933](floci-io@234a933)) ### Features * **cloud-spi:** add vendor-neutral child collections with AWS CloudWatch Logs ([floci-io#170](floci-io#170)) ([0de1513](floci-io@0de1513)), closes [floci-io#160](floci-io#160) [floci-io#162](floci-io#162) * **containers:** add a containers category with GCP Cloud Run ([floci-io#160](floci-io#160)) ([95f0cc2](floci-io@95f0cc2)), closes [floci-io#156](floci-io#156) [floci-io#157](floci-io#157) [floci-io#158](floci-io#158) [floci-io#159](floci-io#159) * **gcp:** add Cloud Scheduler adapter to Cloud Explorer ([floci-io#185](floci-io#185)) ([eb3214f](floci-io@eb3214f)), closes [floci-io#103](floci-io#103) * **k8s:** add an Azure AKS adapter ([floci-io#164](floci-io#164)) ([12f344a](floci-io@12f344a)) * **kms:** add an AWS KMS adapter ([floci-io#158](floci-io#158)) ([c85d189](floci-io@c85d189)), closes [floci-io#156](floci-io#156) [floci-io#157](floci-io#157) * **nosql:** add record creation ([floci-io#208](floci-io#208)) ([77cd563](floci-io@77cd563)), closes [floci-io#207](floci-io#207) * **parameters:** add an AWS SSM Parameter Store adapter ([floci-io#159](floci-io#159)) ([8a28c2f](floci-io@8a28c2f)), closes [floci-io#156](floci-io#156) [floci-io#157](floci-io#157) [floci-io#158](floci-io#158) * **rds:** implement RDS database and snapshot explorer ([floci-io#210](floci-io#210)) ([e2c8d5c](floci-io@e2c8d5c)), closes [floci-io#105](floci-io#105) [floci-io#211](floci-io#211) * **rds:** support RDS instance updates and edit modal ([floci-io#211](floci-io#211)) ([e5cd879](floci-io@e5cd879)), closes [floci-io#210](floci-io#210) [floci-io#210](floci-io#210) * **secrets:** add a secrets category with Secrets Manager and Secret Manager ([floci-io#156](floci-io#156)) ([a655e88](floci-io@a655e88)), closes [floci-io#155](floci-io#155) [floci-io#157](floci-io#157) [floci-io#157](floci-io#157) * **workflows:** add an AWS Step Functions adapter ([floci-io#167](floci-io#167)) ([d443ddc](floci-io@d443ddc)), closes [floci-io#154](floci-io#154) [floci-io#154](floci-io#154) [floci-io#154](floci-io#154)
Summary
Adds Google Cloud Scheduler to the Cloud Explorer for GCP, providing job listing, inspection, creation, deletion, search filtering, and pagination against the Floci-GCP runtime emulator.
Closes #103
Backend (
packages/api)packages/api/src/cloud-spi/schedulerSchema.tswith schema definition, field validations, and table column descriptors for Cloud Scheduler.packages/api/src/adapter-gcp/GcpSchedulerAdapter.tscoveringlist,get,create, anddeleteagainst/v1/projects/{project}/locations/{location}/jobswithnextPageTokenpagination and search filtering.GcpSchedulerAdapterincloudProxy.tsand addedschedulertoserviceCatalog.tsunder theIntegrationgroup with'scheduler-job'resource typing.packages/api/src/adapter-gcp/GcpSchedulerAdapter.test.ts.Frontend (
packages/frontend)schedulertoKnownCloudServiceTypeinpackages/frontend/src/types/cloud.ts.schedulericon mapping inpackages/frontend/src/components/serviceIcons.ts.Test Plan
pnpm test(all 493 tests pass).pnpm type-check(passes cleanly).pnpm run build(vite build succeeds).pnpm run lint(clean, 0 warnings).