takoform_worker_bundle
Immutable content-addressed module bundle of one worker build: a main module plus additional modules, each pinned by size and digest and resolved through the content-addressed artifact upload API (decision 0012). Different bytes are a different bundle.
This is a revision resource: an immutable snapshot. It is create-only — every desired attribute forces replacement, and rollback means pointing a deployment at an earlier revision, never editing this one.
This resource speaks the Host API v1alpha3 lane and requires provider v2.1.0 or later (source candidate; not yet published). The configured host selects and operates the concrete backend; no attribute names a vendor, target, credential, price, or implementation. See the complete example.
Arguments
name(String, required, forces replacement) — Portable resource name (metadata.name).main_module(String, required, forces replacement) — Relative path of the ES module the runtime instantiates first; it must name one declared module.modules(List of Object, required, forces replacement) — Every module of the bundle. Each entry declaresname,content_type(one of the five closed media types), andcontent_file(a local file path). The provider reads each file, computes its exactsizeand sha256digest(both computed attributes), uploads the bytes through the content-addressed artifact API, and pins the module by digest. File paths stay in state; file bytes never do. At every plan against existing state the provider re-reads and re-hashes eachcontent_file: changed bytes at an unchanged path change the planned digest and force replacement.space(String, optional, forces replacement) — Exact opaque SpaceID; overrides the provider default.create_timeout/delete_timeout(String, optional) — Go durations bounding each operation (defaults20m/30m). Changing only these provider-side timeouts is applied in place without any host call.
Read-only attributes
uid— host-issued immutable resource identity; delete and re-create yields a new UID.generation— desired-state generation; increments only when the portable desired spec changes; a revision has no spec-changing update — every desired attribute forces replacement instead.revision— representation revision; increments whenever the representation changes — a spec-changing update, new status, or new outputs. Deletes fence on it viaIf-Match.ready— true when the closedReadycondition reportsTrue.outputs_json— JSON-serializedstatus.outputsdocument ("{}"when empty).form_api_version,form_kind,form_definition_version,form_schema_digest— the exact immutable FormRef this state is bound to; reads dispatch on it.form_package_digest— audit-only package provenance; never part of resource identity, queries, or fences.
Import
terraform import takoform_worker_bundle.example NAME
terraform import takoform_worker_bundle.example SPACE/NAMEImport is supported for adoption, but an imported bundle cannot converge with local content_file authoring: the wire does not echo local file paths, so imported state carries no authored modules and the first plan after import proposes replacement. The replacement re-uploads your authored files; byte-identical files pin the same content-addressed digests.