pangea-cloudflare 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +6 -0
- data/.rspec_status +504 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +88 -0
- data/LICENSE +201 -0
- data/Rakefile +8 -0
- data/flake.lock +835 -0
- data/flake.nix +60 -0
- data/gemset.nix +272 -0
- data/lib/pangea/resources/cloudflare.rb +213 -0
- data/lib/pangea/resources/cloudflare_access_rule/resource.rb +71 -0
- data/lib/pangea/resources/cloudflare_access_rule/types.rb +93 -0
- data/lib/pangea/resources/cloudflare_account/resource.rb +28 -0
- data/lib/pangea/resources/cloudflare_account/types.rb +12 -0
- data/lib/pangea/resources/cloudflare_account_dns_settings/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_account_dns_settings/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_account_dns_settings_internal_view/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_account_dns_settings_internal_view/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_account_member/resource.rb +29 -0
- data/lib/pangea/resources/cloudflare_account_member/types.rb +13 -0
- data/lib/pangea/resources/cloudflare_account_subscription/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_account_subscription/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_account_token/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_account_token/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_address_map/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_address_map/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_api_shield/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_api_shield/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_api_shield_discovery_operation/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_api_shield_discovery_operation/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_api_shield_operation/resource.rb +30 -0
- data/lib/pangea/resources/cloudflare_api_shield_operation/types.rb +13 -0
- data/lib/pangea/resources/cloudflare_api_shield_operation_schema_validation_settings/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_api_shield_operation_schema_validation_settings/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_api_shield_schema/resource.rb +30 -0
- data/lib/pangea/resources/cloudflare_api_shield_schema/types.rb +14 -0
- data/lib/pangea/resources/cloudflare_api_shield_schema_validation_settings/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_api_shield_schema_validation_settings/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_api_token/resource.rb +33 -0
- data/lib/pangea/resources/cloudflare_api_token/types.rb +14 -0
- data/lib/pangea/resources/cloudflare_argo/resource.rb +91 -0
- data/lib/pangea/resources/cloudflare_argo/types.rb +92 -0
- data/lib/pangea/resources/cloudflare_authenticated_origin_pulls/resource.rb +29 -0
- data/lib/pangea/resources/cloudflare_authenticated_origin_pulls/types.rb +13 -0
- data/lib/pangea/resources/cloudflare_authenticated_origin_pulls_certificate/resource.rb +33 -0
- data/lib/pangea/resources/cloudflare_authenticated_origin_pulls_certificate/types.rb +13 -0
- data/lib/pangea/resources/cloudflare_authenticated_origin_pulls_settings/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_authenticated_origin_pulls_settings/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_bot_management/resource.rb +31 -0
- data/lib/pangea/resources/cloudflare_bot_management/types.rb +15 -0
- data/lib/pangea/resources/cloudflare_byo_ip_prefix/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_byo_ip_prefix/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_calls_sfu_app/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_calls_sfu_app/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_calls_turn_app/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_calls_turn_app/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_certificate_pack/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_certificate_pack/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_cloud_connector_rules/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_cloud_connector_rules/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_cloudforce_one_request/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_cloudforce_one_request/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_cloudforce_one_request_asset/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_cloudforce_one_request_asset/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_cloudforce_one_request_message/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_cloudforce_one_request_message/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_cloudforce_one_request_priority/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_cloudforce_one_request_priority/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_content_scanning/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_content_scanning/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_content_scanning_expression/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_content_scanning_expression/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_custom_hostname/resource.rb +158 -0
- data/lib/pangea/resources/cloudflare_custom_hostname/types/ssl_types.rb +145 -0
- data/lib/pangea/resources/cloudflare_custom_hostname/types.rb +107 -0
- data/lib/pangea/resources/cloudflare_custom_hostname_fallback_origin/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_custom_hostname_fallback_origin/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_custom_pages/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_custom_pages/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_custom_ssl/resource.rb +36 -0
- data/lib/pangea/resources/cloudflare_custom_ssl/types.rb +16 -0
- data/lib/pangea/resources/cloudflare_d1_database/resource.rb +92 -0
- data/lib/pangea/resources/cloudflare_d1_database/types.rb +110 -0
- data/lib/pangea/resources/cloudflare_dns_firewall/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_dns_firewall/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_dns_zone_transfers_acl/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_dns_zone_transfers_acl/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_dns_zone_transfers_incoming/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_dns_zone_transfers_incoming/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_dns_zone_transfers_outgoing/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_dns_zone_transfers_outgoing/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_dns_zone_transfers_peer/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_dns_zone_transfers_peer/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_dns_zone_transfers_tsig/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_dns_zone_transfers_tsig/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_email_routing_address/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_email_routing_address/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_email_routing_catch_all/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_email_routing_catch_all/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_email_routing_dns/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_email_routing_dns/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_email_routing_rule/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_email_routing_rule/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_email_routing_settings/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_email_routing_settings/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_email_security_block_sender/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_email_security_block_sender/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_email_security_impersonation_registry/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_email_security_impersonation_registry/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_email_security_trusted_domains/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_email_security_trusted_domains/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_filter/resource.rb +64 -0
- data/lib/pangea/resources/cloudflare_filter/types.rb +54 -0
- data/lib/pangea/resources/cloudflare_firewall_rule/resource.rb +70 -0
- data/lib/pangea/resources/cloudflare_firewall_rule/types.rb +64 -0
- data/lib/pangea/resources/cloudflare_healthcheck/resource.rb +139 -0
- data/lib/pangea/resources/cloudflare_healthcheck/types.rb +192 -0
- data/lib/pangea/resources/cloudflare_hostname_tls_setting/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_hostname_tls_setting/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_hyperdrive_config/resource.rb +176 -0
- data/lib/pangea/resources/cloudflare_hyperdrive_config/types/attributes.rb +125 -0
- data/lib/pangea/resources/cloudflare_hyperdrive_config/types/caching.rb +52 -0
- data/lib/pangea/resources/cloudflare_hyperdrive_config/types/enums.rb +37 -0
- data/lib/pangea/resources/cloudflare_hyperdrive_config/types/mtls.rb +52 -0
- data/lib/pangea/resources/cloudflare_hyperdrive_config/types/origin.rb +89 -0
- data/lib/pangea/resources/cloudflare_hyperdrive_config/types.rb +23 -0
- data/lib/pangea/resources/cloudflare_image/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_image/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_image_variant/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_image_variant/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_keyless_certificate/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_keyless_certificate/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_leaked_credential_check/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_leaked_credential_check/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_leaked_credential_check_rule/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_leaked_credential_check_rule/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_list/resource.rb +57 -0
- data/lib/pangea/resources/cloudflare_list/types.rb +49 -0
- data/lib/pangea/resources/cloudflare_list_item/resource.rb +130 -0
- data/lib/pangea/resources/cloudflare_list_item/types.rb +183 -0
- data/lib/pangea/resources/cloudflare_load_balancer/resource.rb +97 -0
- data/lib/pangea/resources/cloudflare_load_balancer/types.rb +75 -0
- data/lib/pangea/resources/cloudflare_load_balancer_monitor/resource.rb +78 -0
- data/lib/pangea/resources/cloudflare_load_balancer_monitor/types.rb +62 -0
- data/lib/pangea/resources/cloudflare_load_balancer_pool/resource.rb +78 -0
- data/lib/pangea/resources/cloudflare_load_balancer_pool/types.rb +81 -0
- data/lib/pangea/resources/cloudflare_logpull_retention/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_logpull_retention/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_logpush_job/resource.rb +40 -0
- data/lib/pangea/resources/cloudflare_logpush_job/types.rb +24 -0
- data/lib/pangea/resources/cloudflare_logpush_ownership_challenge/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_logpush_ownership_challenge/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_magic_network_monitoring_configuration/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_magic_network_monitoring_configuration/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_magic_network_monitoring_rule/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_magic_network_monitoring_rule/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_magic_transit_connector/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_magic_transit_connector/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_magic_transit_site/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_magic_transit_site/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_magic_transit_site_acl/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_magic_transit_site_acl/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_magic_transit_site_lan/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_magic_transit_site_lan/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_magic_transit_site_wan/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_magic_transit_site_wan/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_magic_wan_gre_tunnel/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_magic_wan_gre_tunnel/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_magic_wan_ipsec_tunnel/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_magic_wan_ipsec_tunnel/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_magic_wan_static_route/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_magic_wan_static_route/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_managed_transforms/resource.rb +36 -0
- data/lib/pangea/resources/cloudflare_managed_transforms/types.rb +12 -0
- data/lib/pangea/resources/cloudflare_mtls_certificate/resource.rb +34 -0
- data/lib/pangea/resources/cloudflare_mtls_certificate/types.rb +14 -0
- data/lib/pangea/resources/cloudflare_notification_policy/resource.rb +34 -0
- data/lib/pangea/resources/cloudflare_notification_policy/types.rb +18 -0
- data/lib/pangea/resources/cloudflare_notification_policy_webhooks/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_notification_policy_webhooks/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_observatory_scheduled_test/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_observatory_scheduled_test/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_organization/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_organization/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_organization_profile/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_organization_profile/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_origin_ca_certificate/resource.rb +97 -0
- data/lib/pangea/resources/cloudflare_origin_ca_certificate/types.rb +125 -0
- data/lib/pangea/resources/cloudflare_page_rule/resource.rb +78 -0
- data/lib/pangea/resources/cloudflare_page_rule/types.rb +71 -0
- data/lib/pangea/resources/cloudflare_page_shield_policy/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_page_shield_policy/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_pages_domain/resource.rb +28 -0
- data/lib/pangea/resources/cloudflare_pages_domain/types.rb +12 -0
- data/lib/pangea/resources/cloudflare_pages_project/resource/deployment_config.rb +80 -0
- data/lib/pangea/resources/cloudflare_pages_project/resource/main.rb +75 -0
- data/lib/pangea/resources/cloudflare_pages_project/resource.rb +19 -0
- data/lib/pangea/resources/cloudflare_pages_project/types/attributes.rb +51 -0
- data/lib/pangea/resources/cloudflare_pages_project/types/bindings.rb +38 -0
- data/lib/pangea/resources/cloudflare_pages_project/types/build_config.rb +55 -0
- data/lib/pangea/resources/cloudflare_pages_project/types/deployment_config.rb +83 -0
- data/lib/pangea/resources/cloudflare_pages_project/types.rb +27 -0
- data/lib/pangea/resources/cloudflare_queue/resource.rb +108 -0
- data/lib/pangea/resources/cloudflare_queue/types.rb +132 -0
- data/lib/pangea/resources/cloudflare_queue_consumer/resource.rb +31 -0
- data/lib/pangea/resources/cloudflare_queue_consumer/types.rb +15 -0
- data/lib/pangea/resources/cloudflare_r2_bucket/resource.rb +91 -0
- data/lib/pangea/resources/cloudflare_r2_bucket/types.rb +101 -0
- data/lib/pangea/resources/cloudflare_r2_bucket_cors/resource.rb +130 -0
- data/lib/pangea/resources/cloudflare_r2_bucket_cors/types/attributes.rb +105 -0
- data/lib/pangea/resources/cloudflare_r2_bucket_cors/types/cors_allowed.rb +59 -0
- data/lib/pangea/resources/cloudflare_r2_bucket_cors/types/cors_method.rb +34 -0
- data/lib/pangea/resources/cloudflare_r2_bucket_cors/types/cors_rule.rb +74 -0
- data/lib/pangea/resources/cloudflare_r2_bucket_cors/types.rb +22 -0
- data/lib/pangea/resources/cloudflare_r2_bucket_event_notification/resource.rb +31 -0
- data/lib/pangea/resources/cloudflare_r2_bucket_event_notification/types.rb +15 -0
- data/lib/pangea/resources/cloudflare_r2_bucket_lifecycle/resource.rb +31 -0
- data/lib/pangea/resources/cloudflare_r2_bucket_lifecycle/types.rb +26 -0
- data/lib/pangea/resources/cloudflare_r2_bucket_lock/resource.rb +29 -0
- data/lib/pangea/resources/cloudflare_r2_bucket_lock/types.rb +13 -0
- data/lib/pangea/resources/cloudflare_r2_bucket_sippy/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_r2_bucket_sippy/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_r2_custom_domain/resource.rb +28 -0
- data/lib/pangea/resources/cloudflare_r2_custom_domain/types.rb +12 -0
- data/lib/pangea/resources/cloudflare_r2_managed_domain/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_r2_managed_domain/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_rate_limit/resource.rb +129 -0
- data/lib/pangea/resources/cloudflare_rate_limit/types.rb +143 -0
- data/lib/pangea/resources/cloudflare_record/resource.rb +91 -0
- data/lib/pangea/resources/cloudflare_record/types.rb +114 -0
- data/lib/pangea/resources/cloudflare_regional_hostname/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_regional_hostname/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_regional_tiered_cache/resource.rb +82 -0
- data/lib/pangea/resources/cloudflare_regional_tiered_cache/types.rb +73 -0
- data/lib/pangea/resources/cloudflare_registrar_domain/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_registrar_domain/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_ruleset/resource.rb +113 -0
- data/lib/pangea/resources/cloudflare_ruleset/types/ruleset_rule.rb +84 -0
- data/lib/pangea/resources/cloudflare_ruleset/types.rb +155 -0
- data/lib/pangea/resources/cloudflare_schema_validation_operation_settings/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_schema_validation_operation_settings/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_schema_validation_schemas/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_schema_validation_schemas/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_schema_validation_settings/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_schema_validation_settings/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_snippet/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_snippet/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_snippet_rules/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_snippet_rules/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_spectrum_application/resource.rb +122 -0
- data/lib/pangea/resources/cloudflare_spectrum_application/types.rb +147 -0
- data/lib/pangea/resources/cloudflare_static_route/resource.rb +119 -0
- data/lib/pangea/resources/cloudflare_static_route/types.rb +131 -0
- data/lib/pangea/resources/cloudflare_stream/resource.rb +35 -0
- data/lib/pangea/resources/cloudflare_stream/types.rb +15 -0
- data/lib/pangea/resources/cloudflare_stream_audio_track/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_stream_audio_track/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_stream_caption_language/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_stream_caption_language/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_stream_download/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_stream_download/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_stream_key/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_stream_key/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_stream_live_input/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_stream_live_input/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_stream_watermark/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_stream_watermark/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_stream_webhook/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_stream_webhook/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_tiered_cache/resource.rb +83 -0
- data/lib/pangea/resources/cloudflare_tiered_cache/types.rb +74 -0
- data/lib/pangea/resources/cloudflare_total_tls/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_total_tls/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_turnstile_widget/resource.rb +34 -0
- data/lib/pangea/resources/cloudflare_turnstile_widget/types.rb +15 -0
- data/lib/pangea/resources/cloudflare_url_normalization_settings/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_url_normalization_settings/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_user/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_user/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_user_agent_blocking_rule/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_user_agent_blocking_rule/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_waiting_room/resource.rb +122 -0
- data/lib/pangea/resources/cloudflare_waiting_room/types.rb +171 -0
- data/lib/pangea/resources/cloudflare_waiting_room_event/resource.rb +118 -0
- data/lib/pangea/resources/cloudflare_waiting_room_event/types.rb +153 -0
- data/lib/pangea/resources/cloudflare_waiting_room_rules/resource.rb +40 -0
- data/lib/pangea/resources/cloudflare_waiting_room_rules/types.rb +32 -0
- data/lib/pangea/resources/cloudflare_waiting_room_settings/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_waiting_room_settings/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_web3_hostname/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_web3_hostname/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_web_analytics_rule/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_web_analytics_rule/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_web_analytics_site/resource.rb +33 -0
- data/lib/pangea/resources/cloudflare_web_analytics_site/types.rb +13 -0
- data/lib/pangea/resources/cloudflare_worker/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_worker/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_worker_route/resource.rb +62 -0
- data/lib/pangea/resources/cloudflare_worker_route/types.rb +50 -0
- data/lib/pangea/resources/cloudflare_worker_script/resource.rb +90 -0
- data/lib/pangea/resources/cloudflare_worker_script/types.rb +109 -0
- data/lib/pangea/resources/cloudflare_worker_version/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_worker_version/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_workers_cron_trigger/resource.rb +94 -0
- data/lib/pangea/resources/cloudflare_workers_cron_trigger/types.rb +102 -0
- data/lib/pangea/resources/cloudflare_workers_custom_domain/resource.rb +93 -0
- data/lib/pangea/resources/cloudflare_workers_custom_domain/types.rb +93 -0
- data/lib/pangea/resources/cloudflare_workers_deployment/resource.rb +28 -0
- data/lib/pangea/resources/cloudflare_workers_deployment/types.rb +12 -0
- data/lib/pangea/resources/cloudflare_workers_for_platforms_dispatch_namespace/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_workers_for_platforms_dispatch_namespace/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_workers_kv/resource.rb +98 -0
- data/lib/pangea/resources/cloudflare_workers_kv/types.rb +103 -0
- data/lib/pangea/resources/cloudflare_workers_kv_namespace/resource.rb +84 -0
- data/lib/pangea/resources/cloudflare_workers_kv_namespace/types.rb +74 -0
- data/lib/pangea/resources/cloudflare_workers_script_subdomain/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_workers_script_subdomain/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_workflow/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_workflow/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_application/block_builders.rb +116 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_application/resource.rb +161 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_application/types/attributes.rb +102 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_application/types/cors_headers.rb +37 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_application/types/destination.rb +37 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_application/types/enums.rb +31 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_application/types/footer_link.rb +31 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_application/types/landing_page_design.rb +34 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_application/types/saas_app.rb +44 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_application/types/scim_config.rb +35 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_application/types.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_custom_page/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_custom_page/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_group/resource.rb +31 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_group/types.rb +15 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_identity_provider/resource.rb +31 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_identity_provider/types.rb +15 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_infrastructure_target/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_infrastructure_target/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_key_configuration/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_key_configuration/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_mtls_certificate/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_mtls_certificate/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_mtls_hostname_settings/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_mtls_hostname_settings/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_policy/resource.rb +39 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_policy/types.rb +23 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_service_token/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_service_token/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_short_lived_certificate/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_short_lived_certificate/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_tag/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_access_tag/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_device_custom_profile/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_device_custom_profile/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_device_custom_profile_local_domain_fallback/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_device_custom_profile_local_domain_fallback/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_device_default_profile/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_device_default_profile/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_device_default_profile_certificates/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_device_default_profile_certificates/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_device_default_profile_local_domain_fallback/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_device_default_profile_local_domain_fallback/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_device_managed_networks/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_device_managed_networks/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_device_posture_integration/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_device_posture_integration/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_device_posture_rule/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_device_posture_rule/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_device_settings/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_device_settings/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_dex_test/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_dex_test/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_dlp_custom_entry/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_dlp_custom_entry/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_dlp_custom_profile/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_dlp_custom_profile/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_dlp_dataset/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_dlp_dataset/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_dlp_entry/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_dlp_entry/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_dlp_integration_entry/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_dlp_integration_entry/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_dlp_predefined_entry/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_dlp_predefined_entry/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_dlp_predefined_profile/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_dlp_predefined_profile/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_dns_location/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_dns_location/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_gateway_certificate/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_gateway_certificate/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_gateway_logging/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_gateway_logging/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_gateway_policy/resource.rb +34 -0
- data/lib/pangea/resources/cloudflare_zero_trust_gateway_policy/types.rb +18 -0
- data/lib/pangea/resources/cloudflare_zero_trust_gateway_proxy_endpoint/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_gateway_proxy_endpoint/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_gateway_settings/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_gateway_settings/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_list/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_list/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_network_hostname_route/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_network_hostname_route/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_organization/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_organization/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_risk_behavior/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_risk_behavior/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_risk_scoring_integration/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_risk_scoring_integration/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_tunnel_cloudflared/resource.rb +33 -0
- data/lib/pangea/resources/cloudflare_zero_trust_tunnel_cloudflared/types.rb +13 -0
- data/lib/pangea/resources/cloudflare_zero_trust_tunnel_cloudflared_config/resource.rb +28 -0
- data/lib/pangea/resources/cloudflare_zero_trust_tunnel_cloudflared_config/types.rb +12 -0
- data/lib/pangea/resources/cloudflare_zero_trust_tunnel_cloudflared_route/resource.rb +30 -0
- data/lib/pangea/resources/cloudflare_zero_trust_tunnel_cloudflared_route/types.rb +14 -0
- data/lib/pangea/resources/cloudflare_zero_trust_tunnel_cloudflared_virtual_network/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_tunnel_cloudflared_virtual_network/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zero_trust_tunnel_warp_connector/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zero_trust_tunnel_warp_connector/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zone/resource.rb +71 -0
- data/lib/pangea/resources/cloudflare_zone/types.rb +62 -0
- data/lib/pangea/resources/cloudflare_zone_cache_reserve/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_zone_cache_reserve/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_zone_cache_variants/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_zone_cache_variants/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_zone_dns_settings/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_zone_dns_settings/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_zone_dnssec/resource.rb +96 -0
- data/lib/pangea/resources/cloudflare_zone_dnssec/types.rb +81 -0
- data/lib/pangea/resources/cloudflare_zone_hold/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zone_hold/types.rb +10 -0
- data/lib/pangea/resources/cloudflare_zone_lockdown/resource.rb +27 -0
- data/lib/pangea/resources/cloudflare_zone_lockdown/types.rb +11 -0
- data/lib/pangea/resources/cloudflare_zone_settings_override/resource.rb +80 -0
- data/lib/pangea/resources/cloudflare_zone_settings_override/types.rb +64 -0
- data/lib/pangea/resources/cloudflare_zone_subscription/resource.rb +26 -0
- data/lib/pangea/resources/cloudflare_zone_subscription/types.rb +10 -0
- data/lib/pangea/resources/types/cloudflare/core.rb +130 -0
- data/lib/pangea/resources/types/cloudflare/load_balancing.rb +104 -0
- data/lib/pangea/resources/types/cloudflare/security.rb +107 -0
- data/lib/pangea/resources/types/cloudflare/workers.rb +60 -0
- data/lib/pangea-cloudflare/version.rb +5 -0
- data/lib/pangea-cloudflare.rb +215 -0
- data/pangea-cloudflare.gemspec +33 -0
- metadata +586 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'pangea/resources/base'
|
|
3
|
+
require 'pangea/resources/reference'
|
|
4
|
+
require 'pangea/resources/cloudflare_cloudforce_one_request_asset/types'
|
|
5
|
+
require 'pangea/resource_registry'
|
|
6
|
+
|
|
7
|
+
module Pangea::Resources
|
|
8
|
+
module CloudflareCloudforceOneRequestAsset
|
|
9
|
+
def cloudflare_cloudforce_one_request_asset(name, attributes = {})
|
|
10
|
+
attrs = Cloudflare::Types::CloudforceOneRequestAssetAttributes.new(attributes)
|
|
11
|
+
resource(:cloudflare_cloudforce_one_request_asset, name) do
|
|
12
|
+
account_id attrs.account_id if attrs.account_id
|
|
13
|
+
zone_id attrs.zone_id if attrs.zone_id
|
|
14
|
+
end
|
|
15
|
+
ResourceReference.new(
|
|
16
|
+
type: 'cloudflare_cloudforce_one_request_asset',
|
|
17
|
+
name: name,
|
|
18
|
+
resource_attributes: attrs.to_h,
|
|
19
|
+
outputs: { id: "${cloudflare_cloudforce_one_request_asset.\#{name}.id}" }
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
module Cloudflare
|
|
24
|
+
include CloudflareCloudforceOneRequestAsset
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'dry-struct'
|
|
3
|
+
require 'pangea/resources/types'
|
|
4
|
+
|
|
5
|
+
module Pangea::Resources::Cloudflare::Types
|
|
6
|
+
class CloudforceOneRequestAssetAttributes < Dry::Struct
|
|
7
|
+
transform_keys(&:to_sym)
|
|
8
|
+
attribute :account_id, ::Pangea::Resources::Types::CloudflareAccountId.optional.default(nil)
|
|
9
|
+
attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId.optional.default(nil)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'pangea/resources/base'
|
|
3
|
+
require 'pangea/resources/reference'
|
|
4
|
+
require 'pangea/resources/cloudflare_cloudforce_one_request_message/types'
|
|
5
|
+
require 'pangea/resource_registry'
|
|
6
|
+
|
|
7
|
+
module Pangea::Resources
|
|
8
|
+
module CloudflareCloudforceOneRequestMessage
|
|
9
|
+
def cloudflare_cloudforce_one_request_message(name, attributes = {})
|
|
10
|
+
attrs = Cloudflare::Types::CloudforceOneRequestMessageAttributes.new(attributes)
|
|
11
|
+
resource(:cloudflare_cloudforce_one_request_message, name) do
|
|
12
|
+
account_id attrs.account_id if attrs.account_id
|
|
13
|
+
zone_id attrs.zone_id if attrs.zone_id
|
|
14
|
+
end
|
|
15
|
+
ResourceReference.new(
|
|
16
|
+
type: 'cloudflare_cloudforce_one_request_message',
|
|
17
|
+
name: name,
|
|
18
|
+
resource_attributes: attrs.to_h,
|
|
19
|
+
outputs: { id: "${cloudflare_cloudforce_one_request_message.\#{name}.id}" }
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
module Cloudflare
|
|
24
|
+
include CloudflareCloudforceOneRequestMessage
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'dry-struct'
|
|
3
|
+
require 'pangea/resources/types'
|
|
4
|
+
|
|
5
|
+
module Pangea::Resources::Cloudflare::Types
|
|
6
|
+
class CloudforceOneRequestMessageAttributes < Dry::Struct
|
|
7
|
+
transform_keys(&:to_sym)
|
|
8
|
+
attribute :account_id, ::Pangea::Resources::Types::CloudflareAccountId.optional.default(nil)
|
|
9
|
+
attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId.optional.default(nil)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'pangea/resources/base'
|
|
3
|
+
require 'pangea/resources/reference'
|
|
4
|
+
require 'pangea/resources/cloudflare_cloudforce_one_request_priority/types'
|
|
5
|
+
require 'pangea/resource_registry'
|
|
6
|
+
|
|
7
|
+
module Pangea::Resources
|
|
8
|
+
module CloudflareCloudforceOneRequestPriority
|
|
9
|
+
def cloudflare_cloudforce_one_request_priority(name, attributes = {})
|
|
10
|
+
attrs = Cloudflare::Types::CloudforceOneRequestPriorityAttributes.new(attributes)
|
|
11
|
+
resource(:cloudflare_cloudforce_one_request_priority, name) do
|
|
12
|
+
account_id attrs.account_id if attrs.account_id
|
|
13
|
+
zone_id attrs.zone_id if attrs.zone_id
|
|
14
|
+
end
|
|
15
|
+
ResourceReference.new(
|
|
16
|
+
type: 'cloudflare_cloudforce_one_request_priority',
|
|
17
|
+
name: name,
|
|
18
|
+
resource_attributes: attrs.to_h,
|
|
19
|
+
outputs: { id: "${cloudflare_cloudforce_one_request_priority.\#{name}.id}" }
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
module Cloudflare
|
|
24
|
+
include CloudflareCloudforceOneRequestPriority
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'dry-struct'
|
|
3
|
+
require 'pangea/resources/types'
|
|
4
|
+
|
|
5
|
+
module Pangea::Resources::Cloudflare::Types
|
|
6
|
+
class CloudforceOneRequestPriorityAttributes < Dry::Struct
|
|
7
|
+
transform_keys(&:to_sym)
|
|
8
|
+
attribute :account_id, ::Pangea::Resources::Types::CloudflareAccountId.optional.default(nil)
|
|
9
|
+
attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId.optional.default(nil)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'pangea/resources/base'
|
|
3
|
+
require 'pangea/resources/reference'
|
|
4
|
+
require 'pangea/resources/cloudflare_content_scanning/types'
|
|
5
|
+
require 'pangea/resource_registry'
|
|
6
|
+
|
|
7
|
+
module Pangea::Resources
|
|
8
|
+
module CloudflareContentScanning
|
|
9
|
+
def cloudflare_content_scanning(name, attributes = {})
|
|
10
|
+
attrs = Cloudflare::Types::ContentScanningAttributes.new(attributes)
|
|
11
|
+
resource(:cloudflare_content_scanning, name) do
|
|
12
|
+
account_id attrs.account_id if attrs.account_id
|
|
13
|
+
zone_id attrs.zone_id if attrs.zone_id
|
|
14
|
+
end
|
|
15
|
+
ResourceReference.new(
|
|
16
|
+
type: 'cloudflare_content_scanning',
|
|
17
|
+
name: name,
|
|
18
|
+
resource_attributes: attrs.to_h,
|
|
19
|
+
outputs: { id: "${cloudflare_content_scanning.\#{name}.id}" }
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
module Cloudflare
|
|
24
|
+
include CloudflareContentScanning
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'dry-struct'
|
|
3
|
+
require 'pangea/resources/types'
|
|
4
|
+
|
|
5
|
+
module Pangea::Resources::Cloudflare::Types
|
|
6
|
+
class ContentScanningAttributes < Dry::Struct
|
|
7
|
+
transform_keys(&:to_sym)
|
|
8
|
+
attribute :account_id, ::Pangea::Resources::Types::CloudflareAccountId.optional.default(nil)
|
|
9
|
+
attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId.optional.default(nil)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'pangea/resources/base'
|
|
3
|
+
require 'pangea/resources/reference'
|
|
4
|
+
require 'pangea/resources/cloudflare_content_scanning_expression/types'
|
|
5
|
+
require 'pangea/resource_registry'
|
|
6
|
+
|
|
7
|
+
module Pangea::Resources
|
|
8
|
+
module CloudflareContentScanningExpression
|
|
9
|
+
def cloudflare_content_scanning_expression(name, attributes = {})
|
|
10
|
+
attrs = Cloudflare::Types::ContentScanningExpressionAttributes.new(attributes)
|
|
11
|
+
resource(:cloudflare_content_scanning_expression, name) do
|
|
12
|
+
account_id attrs.account_id if attrs.account_id
|
|
13
|
+
zone_id attrs.zone_id if attrs.zone_id
|
|
14
|
+
end
|
|
15
|
+
ResourceReference.new(
|
|
16
|
+
type: 'cloudflare_content_scanning_expression',
|
|
17
|
+
name: name,
|
|
18
|
+
resource_attributes: attrs.to_h,
|
|
19
|
+
outputs: { id: "${cloudflare_content_scanning_expression.\#{name}.id}" }
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
module Cloudflare
|
|
24
|
+
include CloudflareContentScanningExpression
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'dry-struct'
|
|
3
|
+
require 'pangea/resources/types'
|
|
4
|
+
|
|
5
|
+
module Pangea::Resources::Cloudflare::Types
|
|
6
|
+
class ContentScanningExpressionAttributes < Dry::Struct
|
|
7
|
+
transform_keys(&:to_sym)
|
|
8
|
+
attribute :account_id, ::Pangea::Resources::Types::CloudflareAccountId.optional.default(nil)
|
|
9
|
+
attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId.optional.default(nil)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# Copyright 2025 The Pangea Authors
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
require 'pangea/resources/base'
|
|
18
|
+
require 'pangea/resources/reference'
|
|
19
|
+
require 'pangea/resources/cloudflare_custom_hostname/types'
|
|
20
|
+
require 'pangea/resource_registry'
|
|
21
|
+
|
|
22
|
+
module Pangea
|
|
23
|
+
module Resources
|
|
24
|
+
# Cloudflare Custom Hostname resource module that self-registers
|
|
25
|
+
module CloudflareCustomHostname
|
|
26
|
+
# Create a Cloudflare Custom Hostname
|
|
27
|
+
#
|
|
28
|
+
# Custom hostnames allow customers to use their own domains with
|
|
29
|
+
# Cloudflare services via CNAME records (also known as SSL for SaaS).
|
|
30
|
+
#
|
|
31
|
+
# Supports automatic SSL certificate provisioning via Let's Encrypt,
|
|
32
|
+
# DigiCert, or Google Trust Services, with multiple validation methods.
|
|
33
|
+
#
|
|
34
|
+
# @param name [Symbol] The resource name
|
|
35
|
+
# @param attributes [Hash] Custom hostname attributes
|
|
36
|
+
# @option attributes [String] :zone_id Zone ID (required)
|
|
37
|
+
# @option attributes [String] :hostname Custom hostname (required, e.g., "app.customer.com")
|
|
38
|
+
# @option attributes [Hash] :ssl SSL configuration
|
|
39
|
+
# @option attributes [String] :custom_origin_server Custom origin server
|
|
40
|
+
# @option attributes [String] :custom_origin_sni Custom origin SNI
|
|
41
|
+
# @option attributes [Hash] :custom_metadata Custom metadata key-value pairs
|
|
42
|
+
# @option attributes [Boolean] :wait_for_ssl_pending_validation Wait for SSL validation
|
|
43
|
+
#
|
|
44
|
+
# @return [ResourceReference] Reference object with outputs
|
|
45
|
+
#
|
|
46
|
+
# @example Basic custom hostname with HTTP validation
|
|
47
|
+
# cloudflare_custom_hostname(:customer_app, {
|
|
48
|
+
# zone_id: "023e105f4ecef8ad9ca31a8372d0c353",
|
|
49
|
+
# hostname: "app.customer.com",
|
|
50
|
+
# ssl: {
|
|
51
|
+
# method: "http",
|
|
52
|
+
# type: "dv",
|
|
53
|
+
# certificate_authority: "lets_encrypt"
|
|
54
|
+
# }
|
|
55
|
+
# })
|
|
56
|
+
#
|
|
57
|
+
# @example Custom hostname with custom origin
|
|
58
|
+
# cloudflare_custom_hostname(:saas_app, {
|
|
59
|
+
# zone_id: "023e105f4ecef8ad9ca31a8372d0c353",
|
|
60
|
+
# hostname: "branded.customer.com",
|
|
61
|
+
# ssl: {
|
|
62
|
+
# method: "txt",
|
|
63
|
+
# certificate_authority: "digicert",
|
|
64
|
+
# bundle_method: "ubiquitous"
|
|
65
|
+
# },
|
|
66
|
+
# custom_origin_server: "origin.myapp.com",
|
|
67
|
+
# custom_origin_sni: "sni.myapp.com"
|
|
68
|
+
# })
|
|
69
|
+
#
|
|
70
|
+
# @example Wildcard custom hostname
|
|
71
|
+
# cloudflare_custom_hostname(:wildcard, {
|
|
72
|
+
# zone_id: "023e105f4ecef8ad9ca31a8372d0c353",
|
|
73
|
+
# hostname: "*.customer.com",
|
|
74
|
+
# ssl: {
|
|
75
|
+
# method: "txt",
|
|
76
|
+
# type: "dv_wildcard",
|
|
77
|
+
# wildcard: true
|
|
78
|
+
# }
|
|
79
|
+
# })
|
|
80
|
+
def cloudflare_custom_hostname(name, attributes = {})
|
|
81
|
+
# Validate attributes using dry-struct
|
|
82
|
+
hostname_attrs = Cloudflare::Types::CustomHostnameAttributes.new(attributes)
|
|
83
|
+
|
|
84
|
+
# Generate terraform resource block via terraform-synthesizer
|
|
85
|
+
resource(:cloudflare_custom_hostname, name) do
|
|
86
|
+
zone_id hostname_attrs.zone_id
|
|
87
|
+
hostname hostname_attrs.hostname
|
|
88
|
+
|
|
89
|
+
# SSL configuration
|
|
90
|
+
if hostname_attrs.ssl
|
|
91
|
+
ssl do
|
|
92
|
+
# method is a Kernel method, must use hash access and method_missing
|
|
93
|
+
method_missing(:method, hostname_attrs.ssl[:method]) if hostname_attrs.ssl[:method]
|
|
94
|
+
type hostname_attrs.ssl.type if hostname_attrs.ssl.type
|
|
95
|
+
certificate_authority hostname_attrs.ssl.certificate_authority if hostname_attrs.ssl.certificate_authority
|
|
96
|
+
bundle_method hostname_attrs.ssl.bundle_method if hostname_attrs.ssl.bundle_method
|
|
97
|
+
wildcard hostname_attrs.ssl.wildcard if hostname_attrs.ssl.wildcard
|
|
98
|
+
|
|
99
|
+
custom_certificate hostname_attrs.ssl.custom_certificate if hostname_attrs.ssl.custom_certificate
|
|
100
|
+
custom_key hostname_attrs.ssl.custom_key if hostname_attrs.ssl.custom_key
|
|
101
|
+
|
|
102
|
+
# SSL settings
|
|
103
|
+
if hostname_attrs.ssl.settings
|
|
104
|
+
settings do
|
|
105
|
+
min_tls_version hostname_attrs.ssl.settings.min_tls_version if hostname_attrs.ssl.settings.min_tls_version
|
|
106
|
+
early_hints hostname_attrs.ssl.settings.early_hints if hostname_attrs.ssl.settings.early_hints
|
|
107
|
+
http2 hostname_attrs.ssl.settings.http2 if hostname_attrs.ssl.settings.http2
|
|
108
|
+
tls13 hostname_attrs.ssl.settings.tls13 if hostname_attrs.ssl.settings.tls13
|
|
109
|
+
ciphers hostname_attrs.ssl.settings.ciphers if hostname_attrs.ssl.settings.ciphers
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# Custom origin configuration
|
|
116
|
+
custom_origin_server hostname_attrs.custom_origin_server if hostname_attrs.custom_origin_server
|
|
117
|
+
custom_origin_sni hostname_attrs.custom_origin_sni if hostname_attrs.custom_origin_sni
|
|
118
|
+
|
|
119
|
+
# Custom metadata
|
|
120
|
+
if hostname_attrs.custom_metadata
|
|
121
|
+
custom_metadata do
|
|
122
|
+
hostname_attrs.custom_metadata.each do |key, value|
|
|
123
|
+
send(key.to_sym, value)
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# Wait for SSL validation
|
|
129
|
+
wait_for_ssl_pending_validation hostname_attrs.wait_for_ssl_pending_validation if hostname_attrs.wait_for_ssl_pending_validation
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
# Return resource reference with available outputs
|
|
133
|
+
ResourceReference.new(
|
|
134
|
+
type: 'cloudflare_custom_hostname',
|
|
135
|
+
name: name,
|
|
136
|
+
resource_attributes: hostname_attrs.to_h,
|
|
137
|
+
outputs: {
|
|
138
|
+
id: "${cloudflare_custom_hostname.#{name}.id}",
|
|
139
|
+
status: "${cloudflare_custom_hostname.#{name}.status}",
|
|
140
|
+
ownership_verification: "${cloudflare_custom_hostname.#{name}.ownership_verification}",
|
|
141
|
+
ownership_verification_http: "${cloudflare_custom_hostname.#{name}.ownership_verification_http}",
|
|
142
|
+
ssl_status: "${cloudflare_custom_hostname.#{name}.ssl.0.status}",
|
|
143
|
+
ssl_validation_errors: "${cloudflare_custom_hostname.#{name}.ssl.0.validation_errors}",
|
|
144
|
+
ssl_validation_records: "${cloudflare_custom_hostname.#{name}.ssl.0.validation_records}"
|
|
145
|
+
}
|
|
146
|
+
)
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
# Maintain backward compatibility by extending Cloudflare module
|
|
151
|
+
module Cloudflare
|
|
152
|
+
include CloudflareCustomHostname
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
# Auto-register this module when it's loaded
|
|
158
|
+
Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# Copyright 2025 The Pangea Authors
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
|
|
16
|
+
require 'dry-struct'
|
|
17
|
+
|
|
18
|
+
module Pangea
|
|
19
|
+
module Resources
|
|
20
|
+
module Cloudflare
|
|
21
|
+
module Types
|
|
22
|
+
# SSL validation method for custom hostnames
|
|
23
|
+
CloudflareCustomHostnameSSLMethod = Dry::Types['strict.string'].enum(
|
|
24
|
+
'http', # HTTP token validation
|
|
25
|
+
'txt', # DNS TXT record validation
|
|
26
|
+
'email' # Email validation
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
# SSL certificate type
|
|
30
|
+
CloudflareCustomHostnameSSLType = Dry::Types['strict.string'].enum(
|
|
31
|
+
'dv', # Domain Validation (default)
|
|
32
|
+
'dv_wildcard' # Domain Validation with wildcard support
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
# Certificate authority
|
|
36
|
+
CloudflareCustomHostnameSSLCA = Dry::Types['strict.string'].enum(
|
|
37
|
+
'digicert', # DigiCert
|
|
38
|
+
'lets_encrypt', # Let's Encrypt
|
|
39
|
+
'google' # Google Trust Services
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
# Bundle method for certificate chain
|
|
43
|
+
CloudflareCustomHostnameSSLBundleMethod = Dry::Types['strict.string'].enum(
|
|
44
|
+
'ubiquitous', # Most compatible (default)
|
|
45
|
+
'optimal', # Balanced
|
|
46
|
+
'force' # Smallest bundle
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
# Minimum TLS version
|
|
50
|
+
CloudflareMinTLSVersion = Dry::Types['strict.string'].enum(
|
|
51
|
+
'1.0',
|
|
52
|
+
'1.1',
|
|
53
|
+
'1.2',
|
|
54
|
+
'1.3'
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
# SSL settings for custom hostname
|
|
58
|
+
class CustomHostnameSSLSettings < Dry::Struct
|
|
59
|
+
transform_keys(&:to_sym)
|
|
60
|
+
|
|
61
|
+
# @!attribute min_tls_version
|
|
62
|
+
# @return [String, nil] Minimum TLS version
|
|
63
|
+
attribute :min_tls_version, CloudflareMinTLSVersion.optional.default(nil)
|
|
64
|
+
|
|
65
|
+
# @!attribute early_hints
|
|
66
|
+
# @return [String, nil] Early Hints support ('on' or 'off')
|
|
67
|
+
attribute :early_hints, Dry::Types['strict.string']
|
|
68
|
+
.enum('on', 'off')
|
|
69
|
+
.optional
|
|
70
|
+
.default(nil)
|
|
71
|
+
|
|
72
|
+
# @!attribute http2
|
|
73
|
+
# @return [String, nil] HTTP/2 support ('on' or 'off')
|
|
74
|
+
attribute :http2, Dry::Types['strict.string']
|
|
75
|
+
.enum('on', 'off')
|
|
76
|
+
.optional
|
|
77
|
+
.default(nil)
|
|
78
|
+
|
|
79
|
+
# @!attribute tls13
|
|
80
|
+
# @return [String, nil] TLS 1.3 support ('on' or 'off')
|
|
81
|
+
attribute :tls13, Dry::Types['strict.string']
|
|
82
|
+
.enum('on', 'off')
|
|
83
|
+
.optional
|
|
84
|
+
.default(nil)
|
|
85
|
+
|
|
86
|
+
# @!attribute ciphers
|
|
87
|
+
# @return [Array<String>, nil] List of allowed cipher suites
|
|
88
|
+
attribute :ciphers, Dry::Types['strict.array']
|
|
89
|
+
.of(Dry::Types['strict.string'])
|
|
90
|
+
.optional
|
|
91
|
+
.default(nil)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# SSL configuration for custom hostname
|
|
95
|
+
class CustomHostnameSSL < Dry::Struct
|
|
96
|
+
transform_keys(&:to_sym)
|
|
97
|
+
|
|
98
|
+
# @!attribute method
|
|
99
|
+
# @return [String, nil] Validation method
|
|
100
|
+
attribute :method, CloudflareCustomHostnameSSLMethod.optional.default(nil)
|
|
101
|
+
|
|
102
|
+
# @!attribute type
|
|
103
|
+
# @return [String, nil] Certificate type (defaults to 'dv')
|
|
104
|
+
attribute :type, CloudflareCustomHostnameSSLType.optional.default(nil)
|
|
105
|
+
|
|
106
|
+
# @!attribute certificate_authority
|
|
107
|
+
# @return [String, nil] Certificate authority
|
|
108
|
+
attribute :certificate_authority, CloudflareCustomHostnameSSLCA.optional.default(nil)
|
|
109
|
+
|
|
110
|
+
# @!attribute bundle_method
|
|
111
|
+
# @return [String, nil] Certificate bundle method
|
|
112
|
+
attribute :bundle_method, CloudflareCustomHostnameSSLBundleMethod.optional.default(nil)
|
|
113
|
+
|
|
114
|
+
# @!attribute wildcard
|
|
115
|
+
# @return [Boolean, nil] Enable wildcard certificate
|
|
116
|
+
attribute :wildcard, Dry::Types['strict.bool'].optional.default(nil)
|
|
117
|
+
|
|
118
|
+
# @!attribute custom_certificate
|
|
119
|
+
# @return [String, nil] Custom certificate PEM
|
|
120
|
+
attribute :custom_certificate, Dry::Types['strict.string'].optional.default(nil)
|
|
121
|
+
|
|
122
|
+
# @!attribute custom_key
|
|
123
|
+
# @return [String, nil] Custom private key PEM
|
|
124
|
+
attribute :custom_key, Dry::Types['strict.string'].optional.default(nil)
|
|
125
|
+
|
|
126
|
+
# @!attribute settings
|
|
127
|
+
# @return [CustomHostnameSSLSettings, nil] SSL settings
|
|
128
|
+
attribute :settings, CustomHostnameSSLSettings.optional.default(nil)
|
|
129
|
+
|
|
130
|
+
# Check if using custom certificate
|
|
131
|
+
# @return [Boolean] true if custom certificate provided
|
|
132
|
+
def custom_certificate?
|
|
133
|
+
!custom_certificate.nil? && !custom_key.nil?
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
# Check if wildcard enabled
|
|
137
|
+
# @return [Boolean] true if wildcard certificate requested
|
|
138
|
+
def wildcard?
|
|
139
|
+
wildcard == true
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# Copyright 2025 The Pangea Authors
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
|
|
16
|
+
require 'dry-struct'
|
|
17
|
+
require 'pangea/resources/types'
|
|
18
|
+
require_relative 'types/ssl_types'
|
|
19
|
+
|
|
20
|
+
module Pangea
|
|
21
|
+
module Resources
|
|
22
|
+
module Cloudflare
|
|
23
|
+
module Types
|
|
24
|
+
# Type-safe attributes for Cloudflare Custom Hostname
|
|
25
|
+
#
|
|
26
|
+
# Custom hostnames allow customers to use their own domains
|
|
27
|
+
# with Cloudflare services via CNAME records.
|
|
28
|
+
#
|
|
29
|
+
# @example Basic custom hostname
|
|
30
|
+
# CustomHostnameAttributes.new(
|
|
31
|
+
# zone_id: "023e105f4ecef8ad9ca31a8372d0c353",
|
|
32
|
+
# hostname: "app.customer.com",
|
|
33
|
+
# ssl: { method: "http", type: "dv" }
|
|
34
|
+
# )
|
|
35
|
+
#
|
|
36
|
+
# @example Custom hostname with custom origin
|
|
37
|
+
# CustomHostnameAttributes.new(
|
|
38
|
+
# zone_id: "023e105f4ecef8ad9ca31a8372d0c353",
|
|
39
|
+
# hostname: "app.customer.com",
|
|
40
|
+
# ssl: { method: "txt", certificate_authority: "lets_encrypt" },
|
|
41
|
+
# custom_origin_server: "origin.customer.com",
|
|
42
|
+
# custom_origin_sni: "sni.customer.com"
|
|
43
|
+
# )
|
|
44
|
+
class CustomHostnameAttributes < Dry::Struct
|
|
45
|
+
transform_keys(&:to_sym)
|
|
46
|
+
|
|
47
|
+
# @!attribute zone_id
|
|
48
|
+
# @return [String] The zone ID
|
|
49
|
+
attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId
|
|
50
|
+
|
|
51
|
+
# @!attribute hostname
|
|
52
|
+
# @return [String] The custom hostname (e.g., "app.customer.com")
|
|
53
|
+
attribute :hostname, Dry::Types['strict.string'].constrained(
|
|
54
|
+
format: /\A(\*\.)?[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*\z/i
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
# @!attribute ssl
|
|
58
|
+
# @return [CustomHostnameSSL, nil] SSL configuration
|
|
59
|
+
attribute :ssl, CustomHostnameSSL.optional.default(nil)
|
|
60
|
+
|
|
61
|
+
# @!attribute custom_origin_server
|
|
62
|
+
# @return [String, nil] Custom origin server hostname
|
|
63
|
+
attribute :custom_origin_server, Dry::Types['strict.string'].optional.default(nil)
|
|
64
|
+
|
|
65
|
+
# @!attribute custom_origin_sni
|
|
66
|
+
# @return [String, nil] Custom origin SNI hostname
|
|
67
|
+
attribute :custom_origin_sni, Dry::Types['strict.string'].optional.default(nil)
|
|
68
|
+
|
|
69
|
+
# @!attribute custom_metadata
|
|
70
|
+
# @return [Hash, nil] Custom metadata (string keys and values)
|
|
71
|
+
attribute :custom_metadata, Dry::Types['strict.hash']
|
|
72
|
+
.map(Dry::Types['strict.string'], Dry::Types['strict.string'])
|
|
73
|
+
.optional
|
|
74
|
+
.default(nil)
|
|
75
|
+
|
|
76
|
+
# @!attribute wait_for_ssl_pending_validation
|
|
77
|
+
# @return [Boolean, nil] Wait for SSL validation before returning
|
|
78
|
+
attribute :wait_for_ssl_pending_validation, Dry::Types['strict.bool'].optional.default(nil)
|
|
79
|
+
|
|
80
|
+
# Check if SSL is configured
|
|
81
|
+
# @return [Boolean] true if SSL configuration provided
|
|
82
|
+
def ssl_configured?
|
|
83
|
+
!ssl.nil?
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# Check if custom origin is configured
|
|
87
|
+
# @return [Boolean] true if custom origin server provided
|
|
88
|
+
def custom_origin?
|
|
89
|
+
!custom_origin_server.nil?
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# Check if custom metadata is provided
|
|
93
|
+
# @return [Boolean] true if custom metadata exists
|
|
94
|
+
def has_custom_metadata?
|
|
95
|
+
!custom_metadata.nil? && !custom_metadata.empty?
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# Check if wildcard hostname
|
|
99
|
+
# @return [Boolean] true if hostname starts with wildcard
|
|
100
|
+
def wildcard?
|
|
101
|
+
hostname.start_with?('*.')
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'pangea/resources/base'
|
|
3
|
+
require 'pangea/resources/reference'
|
|
4
|
+
require 'pangea/resources/cloudflare_custom_hostname_fallback_origin/types'
|
|
5
|
+
require 'pangea/resource_registry'
|
|
6
|
+
|
|
7
|
+
module Pangea::Resources
|
|
8
|
+
module CloudflareCustomHostnameFallbackOrigin
|
|
9
|
+
def cloudflare_custom_hostname_fallback_origin(name, attributes = {})
|
|
10
|
+
attrs = Cloudflare::Types::CustomHostnameFallbackOriginAttributes.new(attributes)
|
|
11
|
+
resource(:cloudflare_custom_hostname_fallback_origin, name) do
|
|
12
|
+
zone_id attrs.zone_id if attrs.zone_id
|
|
13
|
+
account_id attrs.account_id if attrs.account_id
|
|
14
|
+
end
|
|
15
|
+
ResourceReference.new(
|
|
16
|
+
type: 'cloudflare_custom_hostname_fallback_origin',
|
|
17
|
+
name: name,
|
|
18
|
+
resource_attributes: attrs.to_h,
|
|
19
|
+
outputs: { id: "${cloudflare_custom_hostname_fallback_origin.\#{name}.id}" }
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
module Cloudflare
|
|
24
|
+
include CloudflareCustomHostnameFallbackOrigin
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'dry-struct'
|
|
3
|
+
require 'pangea/resources/types'
|
|
4
|
+
|
|
5
|
+
module Pangea::Resources::Cloudflare::Types
|
|
6
|
+
class CustomHostnameFallbackOriginAttributes < Dry::Struct
|
|
7
|
+
transform_keys(&:to_sym)
|
|
8
|
+
attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId.optional.default(nil)
|
|
9
|
+
attribute :account_id, ::Pangea::Resources::Types::CloudflareAccountId.optional.default(nil)
|
|
10
|
+
end
|
|
11
|
+
end
|