Skip to content

F5 XC Terraform Provider - Gap Analysis Report

F5 XC Terraform Provider - Gap Analysis Report

Section titled “F5 XC Terraform Provider - Gap Analysis Report”
StatusCount
CONSUMED16
DEFINED_UNUSED4
DOMAIN_ONLY12
NOT_EMITTED8
PARSED_NOT_RENDERED16
UNKNOWN1
RankGapPriorityImpactReachEffort
1Consume x-f5xc-constraints to generate Terraform validators3.0332
2Implement ConflictsWith validators2.5322
3Emit and replace hardcoded maps2.5232
4Consume for Required field accuracy2.0222
5Generate stringvalidator.OneOf from enum fields2.0312
6Render in generated code2.0222
7Fix struct shape mismatch and embed in docs2.0132
8Audit 49 orphan data source files2.0111
9Consume operation-level extensions for destruction warnings1.3223
10Wire up index-derived dependency map or remove1.0112
ExtensionStatus
x-f5xc-acronymsDOMAIN_ONLY
x-f5xc-api-urlNOT_EMITTED
x-f5xc-best-practicesCONSUMED
x-f5xc-categoryCONSUMED
x-f5xc-cli-domainDOMAIN_ONLY
x-f5xc-cli-metadataDOMAIN_ONLY
x-f5xc-completionPARSED_NOT_RENDERED
x-f5xc-complexityCONSUMED
x-f5xc-conditionsPARSED_NOT_RENDERED
x-f5xc-confirmation-requiredCONSUMED
x-f5xc-conflicts-withCONSUMED
x-f5xc-constraintsCONSUMED
x-f5xc-critical-resourcesDOMAIN_ONLY
x-f5xc-danger-levelCONSUMED
x-f5xc-defaultsPARSED_NOT_RENDERED
x-f5xc-deprecatedPARSED_NOT_RENDERED
x-f5xc-descriptionCONSUMED
x-f5xc-description-longDEFINED_UNUSED
x-f5xc-description-mediumCONSUMED
x-f5xc-description-shortCONSUMED
x-f5xc-discovered-atNOT_EMITTED
x-f5xc-discovered-error-catalogNOT_EMITTED
x-f5xc-discovered-rate-limitsNOT_EMITTED
x-f5xc-discovered-response-timeUNKNOWN
x-f5xc-display-namePARSED_NOT_RENDERED
x-f5xc-displayorderPARSED_NOT_RENDERED
x-f5xc-doc-sectionDOMAIN_ONLY
x-f5xc-enriched-versionNOT_EMITTED
x-f5xc-error-resolutionDEFINED_UNUSED
x-f5xc-exampleCONSUMED
x-f5xc-examplesPARSED_NOT_RENDERED
x-f5xc-glossaryDOMAIN_ONLY
x-f5xc-guided-workflowsDOMAIN_ONLY
x-f5xc-iconDOMAIN_ONLY
x-f5xc-is-previewCONSUMED
x-f5xc-logo-svgDOMAIN_ONLY
x-f5xc-minimum-configurationPARSED_NOT_RENDERED
x-f5xc-namespace-scopeDEFINED_UNUSED
x-f5xc-operation-metadataPARSED_NOT_RENDERED
x-f5xc-primary-resourcesDOMAIN_ONLY
x-f5xc-recommended-oneof-variantPARSED_NOT_RENDERED
x-f5xc-recommended-valuePARSED_NOT_RENDERED
x-f5xc-related-domainsDOMAIN_ONLY
x-f5xc-required-fieldsPARSED_NOT_RENDERED
x-f5xc-required-forCONSUMED
x-f5xc-required-for-operationsPARSED_NOT_RENDERED
x-f5xc-requires-tierCONSUMED
x-f5xc-response-time-msNOT_EMITTED
x-f5xc-server-defaultCONSUMED
x-f5xc-side-effectsCONSUMED
x-f5xc-summaryDEFINED_UNUSED
x-f5xc-terraform-resourcePARSED_NOT_RENDERED
x-f5xc-uniquenessPARSED_NOT_RENDERED
x-f5xc-upstream-etagNOT_EMITTED
x-f5xc-upstream-timestampNOT_EMITTED
x-f5xc-use-casesDOMAIN_ONLY
x-f5xc-validationPARSED_NOT_RENDERED
ResourceTotal FieldsConstraints %Descriptions %Enums %
ai_gateway00%0%0%
ai_policy00%0%0%
ResourceTotal FieldsConstraints %Descriptions %Enums %
aws_vpc_site00%0%0%
azure_vnet_site00%0%0%
cloud_credentials7127%38%0%
container_registry4935%41%0%
endpoint6828%31%0%
fleet_config20549%56%0%
gcp_vpc_site00%0%0%
k8s_cluster_role10332%45%0%
mk8s_cluster00%0%0%
pod_security_policy00%0%0%
registration_token9243%46%0%
service_discovery00%0%0%
site47453%36%0%
site_config00%0%0%
site_mesh_group00%0%0%
virtual_k8s6430%41%0%
virtual_site4330%33%0%
workload2020%10%0%
ResourceTotal FieldsConstraints %Descriptions %Enums %
app_firewall13721%24%0%
cdn_loadbalancer22320%23%0%
cdn_origin_pool00%0%0%
dns_domain5931%32%0%
dns_load_balancer8531%47%0%
dns_zone26348%43%0%
healthcheck7041%51%0%
http_loadbalancer25811%12%0%
malicious_user_detection00%0%0%
network_connector5616%27%0%
origin_pool5330%30%0%
rate_limit_threshold4825%42%0%
rate_limiter5725%40%0%
rate_limiter_policy4916%39%0%
service_policy16928%37%0%
tcp_loadbalancer8012%24%0%
virtual_network8233%44%0%
ResourceTotal FieldsConstraints %Descriptions %Enums %
alert00%0%0%
alert_policy00%0%0%
analytics_query00%0%0%
audit_log00%0%0%
dashboard00%0%0%
data_export00%0%0%
insight_query00%0%0%
log_receiver00%0%0%
metrics_receiver00%0%0%
saved_query00%0%0%
support_case6846%54%0%
telemetry_receiver00%0%0%
ResourceTotal FieldsConstraints %Descriptions %Enums %
api_credential9858%44%0%
authentication_policy00%0%0%
bigip_device00%0%0%
bigip_pool00%0%0%
bucket00%0%0%
marketplace_item956%56%0%
namespace_role00%0%0%
nginx_config00%0%0%
nginx_upstream00%0%0%
node_config00%0%0%
object_store5351%40%0%
otp_policy00%0%0%
quota5417%46%0%
session00%0%0%
static_asset00%0%0%
subscription00%0%0%
token00%0%0%
ui_component00%0%0%
usage_report5370%38%0%
user00%0%0%
user_profile00%0%0%
user_role00%0%0%
vpm_config00%0%0%
ResourceTotal FieldsConstraints %Descriptions %Enums %
api_definition1963%53%0%
api_endpoint2730%56%0%
api_rate_limit00%0%0%
blindfold_secret00%0%0%
bot_defense_instance2030%55%0%
ca_certificate4127%44%0%
certificate9821%37%0%
certificate_chain4025%42%0%
data_classification6128%46%0%
ddos_mitigation_rule20120%28%0%
ddos_protection78335%37%0%
forward_proxy_policy240%0%0%
malicious_user_rule4918%35%0%
mitigation_policy4918%35%0%
network_firewall6419%30%0%
network_policy22629%38%0%
policy_document5932%36%0%
secret_policy9731%40%0%
sensitive_data_policy3523%40%0%
shape_app_firewall00%0%0%
shape_recognizer00%0%0%
threat_campaign_policy19857%66%0%
threat_category4328%44%0%
  • Constraint validators available: 1800 fields across 95 resources
  • Enum validators available: 0 fields with enum values that could generate stringvalidator.OneOf
  • ConflictsWith validators available: 77 fields with conflict declarations
  • 41 of 57 extensions are not fully consumed
  • 3338 fields lack enriched descriptions (of 5347 total)
  • 3707 of 3707 operations have danger level annotations (100%)
Config FilePurposePriority
extension_constants.pyExtension registryHigh
index.jsonResource-to-domain mapHigh
Domain spec filesPer-field extensionsMedium
Operation metadataOperation-level annotationsMedium
ConsumerImpact AreaDependency
terraform-provider-f5xcSchema generationapi-specs-enriched
terraform-provider-f5xcValidator generationx-f5xc-constraints, enum
terraform-provider-f5xcDocumentationx-f5xc-description-*, x-f5xc-best-practices
api-specs-enrichedExtension emissionextension_constants.py
RankActionRepoPriority Score
1Consume x-f5xc-constraints to generate Terraform validatorsterraform-provider-f5xc3.0
2Implement ConflictsWith validatorsterraform-provider-f5xc2.5
3Emit and replace hardcoded mapsboth2.5
4Consume for Required field accuracyterraform-provider-f5xc2.0
5Generate stringvalidator.OneOf from enum fieldsterraform-provider-f5xc2.0
6Render in generated codeterraform-provider-f5xc2.0
7Fix struct shape mismatch and embed in docsterraform-provider-f5xc2.0
8Audit 49 orphan data source filesterraform-provider-f5xc2.0
9Consume operation-level extensions for destruction warningsterraform-provider-f5xc1.3
10Wire up index-derived dependency map or removeterraform-provider-f5xc1.0

Consume x-f5xc-constraints to generate Terraform validators

Section titled “Consume x-f5xc-constraints to generate Terraform validators”

Repo: terraform-provider-f5xc Priority Score: 3.0 User Impact: 3 | Downstream Reach: 3 | Effort: 2

The x-f5xc-constraints extension is parsed into Go structs but never rendered into Terraform validation logic. Consuming this extension would auto-generate validators for min/max, pattern, and custom constraints.

Repo: terraform-provider-f5xc Priority Score: 2.5 User Impact: 3 | Downstream Reach: 2 | Effort: 2

The x-f5xc-conflicts-with extension is parsed but not rendered. Generating ConflictsWith validators would prevent users from setting mutually exclusive fields.

Repo: both Priority Score: 2.5 User Impact: 2 | Downstream Reach: 3 | Effort: 2

The x-f5xc-namespace-scope extension is registered but not emitted in any spec file. Once emitted, it can replace the hardcoded namespace scope maps in the Terraform provider.

Repo: terraform-provider-f5xc Priority Score: 2.0 User Impact: 2 | Downstream Reach: 2 | Effort: 2

The x-f5xc-minimum-configuration extension defines the minimal set of fields needed for a valid resource. Consuming it would improve Required field accuracy in the Terraform schema.

Generate stringvalidator.OneOf from enum fields

Section titled “Generate stringvalidator.OneOf from enum fields”

Repo: terraform-provider-f5xc Priority Score: 2.0 User Impact: 3 | Downstream Reach: 1 | Effort: 2

Enum fields in the spec define valid string values. Generating stringvalidator.OneOf validators from these would catch invalid values at plan time instead of apply time.

Repo: terraform-provider-f5xc Priority Score: 2.0 User Impact: 2 | Downstream Reach: 2 | Effort: 2

The x-f5xc-required-for extension is parsed but not rendered. Rendering it would document which fields are required for specific operations (create, update, etc.).

Fix struct shape mismatch and embed in docs

Section titled “Fix struct shape mismatch and embed in docs”

Repo: terraform-provider-f5xc Priority Score: 2.0 User Impact: 1 | Downstream Reach: 3 | Effort: 2

The x-f5xc-best-practices extension has a struct shape mismatch between the spec definition and the Go struct. Fixing this and embedding best practices in generated documentation would guide users toward optimal configurations.

Repo: terraform-provider-f5xc Priority Score: 2.0 User Impact: 1 | Downstream Reach: 1 | Effort: 1

There are approximately 49 data source files that are not connected to any primary resource in index.json. These should be audited and either connected or removed.

Consume operation-level extensions for destruction warnings

Section titled “Consume operation-level extensions for destruction warnings”

Repo: terraform-provider-f5xc Priority Score: 1.3 User Impact: 2 | Downstream Reach: 2 | Effort: 3

The x-f5xc-danger-level extension marks operations that may cause service disruption. Consuming it would add destruction warnings and confirmation prompts to dangerous operations.

Wire up index-derived dependency map or remove

Section titled “Wire up index-derived dependency map or remove”

Repo: terraform-provider-f5xc Priority Score: 1.0 User Impact: 1 | Downstream Reach: 1 | Effort: 2

The dependency map derived from index.json is computed but never wired into the provider. It should either be connected to resource ordering logic or removed as dead code.