IGA-4180: add Terraform access profile types in v1.6.0 - #261
Conversation
highb
left a comment
There was a problem hiding this comment.
There's an unrelated change to recurrence_rule.frequency that will break on customer upgrades because it now enforces not null.
🤖 details
The PR adds speakeasy_stringvalidators.NotNull() to access_review_template.recurrence_rule.frequency — an
attribute that was previously Optional + Computed. Proven live:
┌─────────────────────────────┬─────────────────────────────────┬───────────────────────────────────────┐
│ Test │ Baseline (v1.5.0) │ PR (v1.5.1) │
├─────────────────────────────┼─────────────────────────────────┼───────────────────────────────────────┤
│ recurrence_rule present, │ ✅ plans; apply succeeds; API │ ❌ hard error: │
│ frequency omitted → plan │ stores FREQUENCY_UNSPECIFIED │ recurrence_rule.frequency: value must │
│ │ │ be configured │
├─────────────────────────────┼─────────────────────────────────┼───────────────────────────────────────┤
│ Same config + existing │ ✅ │ ❌ same hard error — plan/apply fails │
│ state (created by baseline) │ │ on state refresh │
│ → plan │ │ │
└─────────────────────────────┴─────────────────────────────────┴───────────────────────────────────────┘
This is the exact shape a customer who set recurrence_rule = { interval = 1, start_date = ... } has on
disk today. Their first terraform plan after upgrading errors out, and there is no path to a clean plan
except editing their config to add frequency = "FREQUENCY_NONE" (a semantic change: it alters
is_campaign_schedule_enabled behavior) or removing recurrence_rule entirely. Since terraform plan fails,
even users who don't manage ARTs in this root module but share the provider can be wedged.
Why it happened: the SDK regeneration changed shared.RecurrenceRule.Frequency from *Frequency to
non-pointer Frequency (OpenAPI now marks it required), and the generator emitted the matching NotNull
validator. The PR description only mentions the access-profile type work — this validator change is
undocumented.
Fix options (author's call): (a) drop the NotNull validator and keep frequency Optional + Computed,
sending the zero value only when the block is present but frequency is omitted (baseline-compatible,
matches API which accepts omission); or (b) keep it and cut a major version + changelog callout — but
that contradicts this PR's 1.5.1 semver bump.```
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
698b5bf to
88f4baa
Compare
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
|
Addressed the
Verification: pinned Speakeasy generation passed, the focused recurrence test passed, and full This comment was written by openai/gpt-5.6-sol, not a human. |
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
|
Updated the release from v1.5.1 to v1.6.0. Adding the optional The pinned Speakeasy regeneration now emits v1.6.0 consistently in This comment was written by openai/gpt-5.6-sol, not a human. |
|
✅ SDK Test Report: conductorone-terraform — tests passed View Report |
Summary
conductorone_access_profile.typeas optional and computedaccess_review_template.recurrence_rule.frequencyomission contract through a durable overlay, preventing an unrelated upgrade-time validation failure.genignore, and exactmake gennow completesTest plan
make genfor v1.6.0 with pinned Speakeasy 1.762.0: https://github.com/ConductorOne/terraform-provider-conductorone/actions/runs/33457717916GOTOOLCHAIN=go1.25.8 make pre-commitwith golangci-lint 2.11.4 (build, 0 lint issues, unit suite, docs generation, pagination check)make validate-docsmake check && make verify-pagination(make checkretained the existing 46 unregistered-constructor warnings)TestAccessReviewTemplateRecurrenceFrequencyRemainsOptionalproves frequency remains Optional+Computed without the NotNull validatorplan -refresh=false -detailed-exitcodeagainst legacy access-profile state with omittedtypeand stored Blended type: no changesTF_ACC=1matrix against the local c1dev Squire Envoy endpoint withACCESS_PROFILE_TYPEStemporarily enabled: all 10 leaf cases passedterraform-access-profile-type-*profiles or fixture apps remain;ACCESS_PROFILE_TYPESrestored to its original disabled/unbound stateCONDUCTORONE_ACCESS_PROFILE_TYPES_ENABLED=1guard so a tenant feature-gate error cannot masquerade as a capability diagnosticRelease Notes
Provider v1.6.0 adds create-time selection of Requestable, Birthright, or Blended type on
conductorone_access_profile. Existing configurations that omit type remain Blended and plan without replacement.