Refresh the sumologic provider and microsite (provider-utils 0.7.9, Makefile pipeline, snake_case surface, GitHub Pages docs) - #2
Merged
Conversation
The generator writes providerServices in filesystem readdir order, which is sorted on Windows (NTFS) but not on Linux, so the tree generated locally and the one CI regenerates differed in the order of log_searches and logs_data_forwarding and the generation-drift gate failed. post_process.mjs now rewrites providerServices in byte order; provider.yaml regenerated under Linux (WSL) so it matches CI. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The website lockfile resolves mermaid 12 (via @docusaurus/theme-mermaid), which requires Node >= 22.12, so `yarn install --frozen-lockfile` failed on the Node 20 runners of the web workflows. Both web workflows now use Node 22 (current LTS); website/package.json declares the engine and the README / CLAUDE.md note that the provider pipeline itself still runs on Node >= 20. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Rebuilds the
sumologicprovider from the current vendor OpenAPI document plus a hand-authored Collector Management API spec, on the same repository pattern as theclickhouseandgithubprovider repos: a deterministicmakepipeline, a durable operation-mapping CSV, offline / mock-integration / meta-route test layers, a live smoke suite, aCLAUDE.md, and a Docusaurus 3.10 microsite deployed with GitHub Pages.Provider
provider-dev/config/spec_pin.json):https://api.sumologic.com/docs/sumologic-api.yaml, OpenAPI 3.0.0, 305 paths, 443 operations, 58 tags. The oldsumologic-openapi.yamlURL is a 404.sumologic_collector/sumologic_*_sourceuse) is not in the vendor document; it is maintained inprovider-dev/downloaded/sumologic-collector-management-api.yaml(18 operations) and merged at split time.provider-dev/config/service_names.json, pluscollectors), 163 resources, 451 methods: 199 SELECT, 50 INSERT, 53 UPDATE, 1 REPLACE, 49 DELETE, 99 EXEC, 10 reason-coded skips (deprecated v1 source templates, multipart lookup upload, PDF report result).SUMOLOGIC_ACCESSID/SUMOLOGIC_ACCESSKEY(Terraform parity).regionserver variable onhttps://api.{region}.sumologic.com/api, enum of the 11 deployments,x-stackQL-envVar: SUMOLOGIC_ENVIRONMENT(Terraform's variable), defaultus2kept from the previous release; aWHERE regionvalue wins.snake_case_aliases: trueon the provider config plusrequest.nativeCasing: camelper method (post-process). Body-less EXEC methods carry norequestblock (stackql's EXEC analyzer fails on a request block without a body schema).--naive-req-body-translate. The Collector API wraps bodies incollector/sourceobjects, so those INSERTs take one JSON-valued column.token(query) /next(body) config, with post-process overrides fornextToken(data archiving, logs data forwarding),token(saved log searches) and the POST-driven OpenTelemetry collectors list whose cursor travels in the request body.WHEREparameter sent on the wire (email,name,filter,query,ids,If-Match, ...).users.unlock,partitions.decommission,scheduled_views.pause,roles.assign_user); async triads are<x>_jobs(EXECstart+ SELECT status) and<x>_results. Seven EXEC-only resources remain, all genuinely action-only._v2suffix on the newer surface (roles_v2,apps_v2,metrics_searches_v2), matching the Terraform resource names.GET /v1/account/accountOwnerreturns a bare JSON string; post-process wraps it with a response transform so it projects a row.Mapping contract
provider-dev/config/all_services.csvis committed as the durable record of every operation's resource, method, SQL verb and object key.map_operations.mjsis fill-only by default (new operations derived, retired rows pruned, committed rows untouched);--rebuildre-derives everything for deliberate renames and--checkreports rule drift without writing. Verified stable across repeatedmake mappingsruns.compare_predecessor.mjsdispositions every method of the previous release against this build and writes the README "Breaking changes" section: 151 carried, 105 moved, 11 retired, 195 new; 92 resource renames listed.Tooling
@stackql/provider-utils0.7.9,@stackql/pgwire-lite1.0.2, Node >= 20.Makefile:make all(deps, spec refresh, split, pre-normalize, normalize, mappings, generate + post-process, compare, offline + integration + meta-route tests, docs, site build),make spec-check(fail on drift),make smoke-test/make smoke-test-live/make smoke-cleanup.bin/split.mjsfails on any tag missing from the service map;pre_normalize.mjsunwraps the spec's Redoc-relative anchors;post_process.mjsvalidates and fails without writing..github/workflows/build-and-test.yml: build from the pinned spec, generation-drift check, Breaking Changes check, all non-live tests, docs generation; secret-gated live smoke on pushes; weekly spec-drift job that opens an issue.CLAUDE.md,.env.example, refreshed.gitignore(provider-dev/sourceandwebsite/docsare committed, generated artefacts are reviewable diffs).Tests
tests/offline_validation.mjs(SHOW / DESCRIBE against the file registry)tests/integration/(mock Sumo Logic API, row-level: auth, region resolution, pagination across pages, pushdown, snake -> camel on the wire, user / role / collector / source lifecycles, EXECs, SCIM, scalar, 404 envelope)bin/test-meta-routes.cjs(SHOW / DESCRIBE over every resource viastackql srv)websitebuildRun under WSL with stackql v0.11.669. The live smoke suite (
tests/smoke_test.mjs) has not been run in this PR - the maintainer's account is locked out; it needs.envwithSUMOLOGIC_ACCESSID,SUMOLOGIC_ACCESSKEY,SUMOLOGIC_ENVIRONMENT:It creates only free objects (a hosted collector with an HTTP source, a role, a personal folder, a monitor folder), all named
stackql-smoke-*and swept before and after the run.Docs microsite
stackql/docusaurus-config(vendored at build time);showLastUpdateTimeenabled so every page carries a "Last updated on ..." stamp.provider-dev/docgen/provider-data/headerContent1.txt/headerContent2.txt: installation, authentication, deployment, casing, pagination and pushdown, and getting-started queries (users and roles, collectors and sources, content and monitors, partitions and budgets, provision / mutate / tear down, lifecycle EXECs, async jobs).--snake-case-aliases;website/scripts/sanitize-docs.mjsescapes MDX-hostile description text and annotatesregionas "required unless SUMOLOGIC_ENVIRONMENT is set".prod-web-deploy.yml(pushes tomaintouchingwebsite/**);website/static/CNAMEnow pinssumologic-provider.stackql.io(the previous file carried the snowflake hostname). No Netlify, nogh-pagesbranch. One-time repo setup: Pages source = GitHub Actions, custom domain, enforce HTTPS; DNSCNAME sumologic-provider.stackql.io -> stackql.github.io..Behaviour notes for reviewers
default. WithSUMOLOGIC_ENVIRONMENTunset a SELECT still falls back tous2, but INSERT / UPDATE / DELETE / EXEC must supplyregion. Documented on the landing page and in the README.SETmust be quoted (is_active = 'false'); the stackql parser rejects a baretrue/false. Documented with an example.select/list/aggregatedList/geton resources with no SQL verbs; the mapping validator now rejects those names on EXEC methods.Follow-ups
make smoke-testwith a working account and fix anything it surfaces.provider-dev/openapi/src/sumologictoproviders/srcinstackql-provider-registry(dev branch), thenmake smoke-test-live.🤖 Generated with Claude Code