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_custom_pages/types'
|
|
5
|
+
require 'pangea/resource_registry'
|
|
6
|
+
|
|
7
|
+
module Pangea::Resources
|
|
8
|
+
module CloudflareCustomPages
|
|
9
|
+
def cloudflare_custom_pages(name, attributes = {})
|
|
10
|
+
attrs = Cloudflare::Types::CustomPagesAttributes.new(attributes)
|
|
11
|
+
resource(:cloudflare_custom_pages, 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_pages',
|
|
17
|
+
name: name,
|
|
18
|
+
resource_attributes: attrs.to_h,
|
|
19
|
+
outputs: { id: "${cloudflare_custom_pages.\#{name}.id}" }
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
module Cloudflare
|
|
24
|
+
include CloudflareCustomPages
|
|
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 CustomPagesAttributes < 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
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'pangea/resources/base'
|
|
3
|
+
require 'pangea/resources/reference'
|
|
4
|
+
require 'pangea/resources/cloudflare_custom_ssl/types'
|
|
5
|
+
require 'pangea/resource_registry'
|
|
6
|
+
|
|
7
|
+
module Pangea::Resources
|
|
8
|
+
module CloudflareCustomSsl
|
|
9
|
+
def cloudflare_custom_ssl(name, attributes = {})
|
|
10
|
+
attrs = Cloudflare::Types::CustomSslAttributes.new(attributes)
|
|
11
|
+
resource(:cloudflare_custom_ssl, name) do
|
|
12
|
+
zone_id attrs.zone_id
|
|
13
|
+
certificate attrs.certificate if attrs.certificate
|
|
14
|
+
private_key attrs.private_key if attrs.private_key
|
|
15
|
+
bundle_method attrs.bundle_method if attrs.bundle_method
|
|
16
|
+
geo_restrictions attrs.geo_restrictions if attrs.geo_restrictions
|
|
17
|
+
type attrs.type if attrs.type
|
|
18
|
+
policy attrs.policy if attrs.policy
|
|
19
|
+
end
|
|
20
|
+
ResourceReference.new(
|
|
21
|
+
type: 'cloudflare_custom_ssl',
|
|
22
|
+
name: name,
|
|
23
|
+
resource_attributes: attrs.to_h,
|
|
24
|
+
outputs: {
|
|
25
|
+
id: "${cloudflare_custom_ssl.#{name}.id}",
|
|
26
|
+
status: "${cloudflare_custom_ssl.#{name}.status}",
|
|
27
|
+
expires_on: "${cloudflare_custom_ssl.#{name}.expires_on}"
|
|
28
|
+
}
|
|
29
|
+
)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
module Cloudflare
|
|
33
|
+
include CloudflareCustomSsl
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'dry-struct'
|
|
3
|
+
require 'pangea/resources/types'
|
|
4
|
+
|
|
5
|
+
module Pangea::Resources::Cloudflare::Types
|
|
6
|
+
class CustomSslAttributes < Dry::Struct
|
|
7
|
+
transform_keys(&:to_sym)
|
|
8
|
+
attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId
|
|
9
|
+
attribute :certificate, Dry::Types['strict.string'].optional.default(nil)
|
|
10
|
+
attribute :private_key, Dry::Types['strict.string'].optional.default(nil)
|
|
11
|
+
attribute :bundle_method, Dry::Types['strict.string'].enum('ubiquitous', 'optimal', 'force').optional.default(nil)
|
|
12
|
+
attribute :geo_restrictions, Dry::Types['strict.hash'].optional.default(nil)
|
|
13
|
+
attribute :type, Dry::Types['strict.string'].enum('legacy_custom', 'sni_custom').optional.default(nil)
|
|
14
|
+
attribute :policy, Dry::Types['strict.string'].optional.default(nil)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,92 @@
|
|
|
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_d1_database/types'
|
|
20
|
+
require 'pangea/resource_registry'
|
|
21
|
+
|
|
22
|
+
module Pangea
|
|
23
|
+
module Resources
|
|
24
|
+
# Cloudflare D1 Database resource module that self-registers
|
|
25
|
+
module CloudflareD1Database
|
|
26
|
+
# Create a Cloudflare D1 Database
|
|
27
|
+
#
|
|
28
|
+
# D1 is Cloudflare's serverless SQL database built on SQLite.
|
|
29
|
+
# Provides global low-latency access with automatic replication.
|
|
30
|
+
#
|
|
31
|
+
# @param name [Symbol] The resource name
|
|
32
|
+
# @param attributes [Hash] Database attributes
|
|
33
|
+
# @option attributes [String] :account_id Cloudflare account ID (required)
|
|
34
|
+
# @option attributes [String] :name Database name (required)
|
|
35
|
+
# @option attributes [String] :primary_location_hint Primary region (optional: wnam, enam, weur, eeur, apac, oc)
|
|
36
|
+
#
|
|
37
|
+
# @return [ResourceReference] Reference object with outputs
|
|
38
|
+
#
|
|
39
|
+
# @example Create a production database
|
|
40
|
+
# d1_database(:users_db, {
|
|
41
|
+
# account_id: "a" * 32,
|
|
42
|
+
# name: "users-production",
|
|
43
|
+
# primary_location_hint: "wnam"
|
|
44
|
+
# })
|
|
45
|
+
#
|
|
46
|
+
# @example Create database for EU data residency
|
|
47
|
+
# d1_database(:gdpr_db, {
|
|
48
|
+
# account_id: "a" * 32,
|
|
49
|
+
# name: "eu-customer-data",
|
|
50
|
+
# primary_location_hint: "weur"
|
|
51
|
+
# })
|
|
52
|
+
#
|
|
53
|
+
# @example Create database with automatic location
|
|
54
|
+
# d1_database(:cache_db, {
|
|
55
|
+
# account_id: "a" * 32,
|
|
56
|
+
# name: "edge-cache"
|
|
57
|
+
# })
|
|
58
|
+
def cloudflare_d1_database(name, attributes = {})
|
|
59
|
+
# Validate attributes using dry-struct
|
|
60
|
+
db_attrs = Cloudflare::Types::D1DatabaseAttributes.new(attributes)
|
|
61
|
+
|
|
62
|
+
# Generate terraform resource block via terraform-synthesizer
|
|
63
|
+
resource(:cloudflare_d1_database, name) do
|
|
64
|
+
account_id db_attrs.account_id
|
|
65
|
+
name db_attrs.name
|
|
66
|
+
primary_location_hint db_attrs.primary_location_hint if db_attrs.primary_location_hint
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Return resource reference with available outputs
|
|
70
|
+
ResourceReference.new(
|
|
71
|
+
type: 'cloudflare_d1_database',
|
|
72
|
+
name: name,
|
|
73
|
+
resource_attributes: db_attrs.to_h,
|
|
74
|
+
outputs: {
|
|
75
|
+
id: "${cloudflare_d1_database.#{name}.id}",
|
|
76
|
+
database_id: "${cloudflare_d1_database.#{name}.id}",
|
|
77
|
+
database_name: "${cloudflare_d1_database.#{name}.name}",
|
|
78
|
+
version: "${cloudflare_d1_database.#{name}.version}"
|
|
79
|
+
}
|
|
80
|
+
)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Maintain backward compatibility by extending Cloudflare module
|
|
85
|
+
module Cloudflare
|
|
86
|
+
include CloudflareD1Database
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Auto-register this module when it's loaded
|
|
92
|
+
Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
|
|
@@ -0,0 +1,110 @@
|
|
|
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 'dry-struct'
|
|
18
|
+
require 'pangea/resources/types'
|
|
19
|
+
|
|
20
|
+
module Pangea
|
|
21
|
+
module Resources
|
|
22
|
+
module Cloudflare
|
|
23
|
+
module Types
|
|
24
|
+
# D1 database primary location hint enum
|
|
25
|
+
CloudflareD1Location = Dry::Types['strict.string'].enum(
|
|
26
|
+
'wnam', # Western North America
|
|
27
|
+
'enam', # Eastern North America
|
|
28
|
+
'weur', # Western Europe
|
|
29
|
+
'eeur', # Eastern Europe
|
|
30
|
+
'apac', # Asia-Pacific
|
|
31
|
+
'oc' # Oceania
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
# Type-safe attributes for Cloudflare D1 Database
|
|
35
|
+
#
|
|
36
|
+
# D1 is Cloudflare's serverless SQL database built on SQLite.
|
|
37
|
+
# Perfect for relational data with global low-latency access.
|
|
38
|
+
#
|
|
39
|
+
# @example Create a D1 database
|
|
40
|
+
# D1DatabaseAttributes.new(
|
|
41
|
+
# account_id: "a" * 32,
|
|
42
|
+
# name: "production-db",
|
|
43
|
+
# primary_location_hint: "wnam"
|
|
44
|
+
# )
|
|
45
|
+
class D1DatabaseAttributes < Dry::Struct
|
|
46
|
+
transform_keys(&:to_sym)
|
|
47
|
+
|
|
48
|
+
# @!attribute account_id
|
|
49
|
+
# @return [String] The Cloudflare account ID
|
|
50
|
+
attribute :account_id, ::Pangea::Resources::Types::CloudflareAccountId
|
|
51
|
+
|
|
52
|
+
# @!attribute name
|
|
53
|
+
# @return [String] Database name (human-readable identifier)
|
|
54
|
+
attribute :name, Dry::Types['strict.string'].constrained(
|
|
55
|
+
min_size: 1,
|
|
56
|
+
max_size: 256
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
# @!attribute primary_location_hint
|
|
60
|
+
# @return [String, nil] Primary location hint for database
|
|
61
|
+
attribute :primary_location_hint, CloudflareD1Location.optional.default(nil)
|
|
62
|
+
|
|
63
|
+
# Get the full region name from location code
|
|
64
|
+
# @return [String, nil] Human-readable region name
|
|
65
|
+
def region_name
|
|
66
|
+
case primary_location_hint
|
|
67
|
+
when 'wnam'
|
|
68
|
+
'Western North America'
|
|
69
|
+
when 'enam'
|
|
70
|
+
'Eastern North America'
|
|
71
|
+
when 'weur'
|
|
72
|
+
'Western Europe'
|
|
73
|
+
when 'eeur'
|
|
74
|
+
'Eastern Europe'
|
|
75
|
+
when 'apac'
|
|
76
|
+
'Asia-Pacific'
|
|
77
|
+
when 'oc'
|
|
78
|
+
'Oceania'
|
|
79
|
+
else
|
|
80
|
+
'Automatic'
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Extract environment from name if present
|
|
85
|
+
# @return [String, nil] Environment name if detected
|
|
86
|
+
def environment
|
|
87
|
+
case name.downcase
|
|
88
|
+
when /production|prod/
|
|
89
|
+
'production'
|
|
90
|
+
when /staging|stage/
|
|
91
|
+
'staging'
|
|
92
|
+
when /development|dev/
|
|
93
|
+
'development'
|
|
94
|
+
when /test/
|
|
95
|
+
'test'
|
|
96
|
+
else
|
|
97
|
+
nil
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# Check if this is a production database based on naming
|
|
102
|
+
# @return [Boolean] true if appears to be production
|
|
103
|
+
def production?
|
|
104
|
+
environment == 'production'
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
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_dns_firewall/types'
|
|
5
|
+
require 'pangea/resource_registry'
|
|
6
|
+
|
|
7
|
+
module Pangea::Resources
|
|
8
|
+
module CloudflareDnsFirewall
|
|
9
|
+
def cloudflare_dns_firewall(name, attributes = {})
|
|
10
|
+
attrs = Cloudflare::Types::DnsFirewallAttributes.new(attributes)
|
|
11
|
+
resource(:cloudflare_dns_firewall, 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_dns_firewall',
|
|
17
|
+
name: name,
|
|
18
|
+
resource_attributes: attrs.to_h,
|
|
19
|
+
outputs: { id: "${cloudflare_dns_firewall.\#{name}.id}" }
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
module Cloudflare
|
|
24
|
+
include CloudflareDnsFirewall
|
|
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 DnsFirewallAttributes < 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
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'pangea/resources/base'
|
|
3
|
+
require 'pangea/resources/reference'
|
|
4
|
+
require 'pangea/resources/cloudflare_dns_zone_transfers_acl/types'
|
|
5
|
+
require 'pangea/resource_registry'
|
|
6
|
+
|
|
7
|
+
module Pangea::Resources
|
|
8
|
+
module CloudflareDnsZoneTransfersAcl
|
|
9
|
+
def cloudflare_dns_zone_transfers_acl(name, attributes = {})
|
|
10
|
+
attrs = Cloudflare::Types::DnsZoneTransfersAclAttributes.new(attributes)
|
|
11
|
+
resource(:cloudflare_dns_zone_transfers_acl, 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_dns_zone_transfers_acl',
|
|
17
|
+
name: name,
|
|
18
|
+
resource_attributes: attrs.to_h,
|
|
19
|
+
outputs: { id: "${cloudflare_dns_zone_transfers_acl.\#{name}.id}" }
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
module Cloudflare
|
|
24
|
+
include CloudflareDnsZoneTransfersAcl
|
|
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 DnsZoneTransfersAclAttributes < 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
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'pangea/resources/base'
|
|
3
|
+
require 'pangea/resources/reference'
|
|
4
|
+
require 'pangea/resources/cloudflare_dns_zone_transfers_incoming/types'
|
|
5
|
+
require 'pangea/resource_registry'
|
|
6
|
+
|
|
7
|
+
module Pangea::Resources
|
|
8
|
+
module CloudflareDnsZoneTransfersIncoming
|
|
9
|
+
def cloudflare_dns_zone_transfers_incoming(name, attributes = {})
|
|
10
|
+
attrs = Cloudflare::Types::DnsZoneTransfersIncomingAttributes.new(attributes)
|
|
11
|
+
resource(:cloudflare_dns_zone_transfers_incoming, 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_dns_zone_transfers_incoming',
|
|
17
|
+
name: name,
|
|
18
|
+
resource_attributes: attrs.to_h,
|
|
19
|
+
outputs: { id: "${cloudflare_dns_zone_transfers_incoming.\#{name}.id}" }
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
module Cloudflare
|
|
24
|
+
include CloudflareDnsZoneTransfersIncoming
|
|
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 DnsZoneTransfersIncomingAttributes < 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
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'pangea/resources/base'
|
|
3
|
+
require 'pangea/resources/reference'
|
|
4
|
+
require 'pangea/resources/cloudflare_dns_zone_transfers_outgoing/types'
|
|
5
|
+
require 'pangea/resource_registry'
|
|
6
|
+
|
|
7
|
+
module Pangea::Resources
|
|
8
|
+
module CloudflareDnsZoneTransfersOutgoing
|
|
9
|
+
def cloudflare_dns_zone_transfers_outgoing(name, attributes = {})
|
|
10
|
+
attrs = Cloudflare::Types::DnsZoneTransfersOutgoingAttributes.new(attributes)
|
|
11
|
+
resource(:cloudflare_dns_zone_transfers_outgoing, name) do
|
|
12
|
+
zone_id attrs.zone_id
|
|
13
|
+
end
|
|
14
|
+
ResourceReference.new(
|
|
15
|
+
type: 'cloudflare_dns_zone_transfers_outgoing',
|
|
16
|
+
name: name,
|
|
17
|
+
resource_attributes: attrs.to_h,
|
|
18
|
+
outputs: { id: "${cloudflare_dns_zone_transfers_outgoing.\#{name}.id}" }
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
module Cloudflare
|
|
23
|
+
include CloudflareDnsZoneTransfersOutgoing
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'dry-struct'
|
|
3
|
+
require 'pangea/resources/types'
|
|
4
|
+
|
|
5
|
+
module Pangea::Resources::Cloudflare::Types
|
|
6
|
+
class DnsZoneTransfersOutgoingAttributes < Dry::Struct
|
|
7
|
+
transform_keys(&:to_sym)
|
|
8
|
+
attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'pangea/resources/base'
|
|
3
|
+
require 'pangea/resources/reference'
|
|
4
|
+
require 'pangea/resources/cloudflare_dns_zone_transfers_peer/types'
|
|
5
|
+
require 'pangea/resource_registry'
|
|
6
|
+
|
|
7
|
+
module Pangea::Resources
|
|
8
|
+
module CloudflareDnsZoneTransfersPeer
|
|
9
|
+
def cloudflare_dns_zone_transfers_peer(name, attributes = {})
|
|
10
|
+
attrs = Cloudflare::Types::DnsZoneTransfersPeerAttributes.new(attributes)
|
|
11
|
+
resource(:cloudflare_dns_zone_transfers_peer, name) do
|
|
12
|
+
zone_id attrs.zone_id
|
|
13
|
+
end
|
|
14
|
+
ResourceReference.new(
|
|
15
|
+
type: 'cloudflare_dns_zone_transfers_peer',
|
|
16
|
+
name: name,
|
|
17
|
+
resource_attributes: attrs.to_h,
|
|
18
|
+
outputs: { id: "${cloudflare_dns_zone_transfers_peer.\#{name}.id}" }
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
module Cloudflare
|
|
23
|
+
include CloudflareDnsZoneTransfersPeer
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'dry-struct'
|
|
3
|
+
require 'pangea/resources/types'
|
|
4
|
+
|
|
5
|
+
module Pangea::Resources::Cloudflare::Types
|
|
6
|
+
class DnsZoneTransfersPeerAttributes < Dry::Struct
|
|
7
|
+
transform_keys(&:to_sym)
|
|
8
|
+
attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'pangea/resources/base'
|
|
3
|
+
require 'pangea/resources/reference'
|
|
4
|
+
require 'pangea/resources/cloudflare_dns_zone_transfers_tsig/types'
|
|
5
|
+
require 'pangea/resource_registry'
|
|
6
|
+
|
|
7
|
+
module Pangea::Resources
|
|
8
|
+
module CloudflareDnsZoneTransfersTsig
|
|
9
|
+
def cloudflare_dns_zone_transfers_tsig(name, attributes = {})
|
|
10
|
+
attrs = Cloudflare::Types::DnsZoneTransfersTsigAttributes.new(attributes)
|
|
11
|
+
resource(:cloudflare_dns_zone_transfers_tsig, name) do
|
|
12
|
+
zone_id attrs.zone_id
|
|
13
|
+
end
|
|
14
|
+
ResourceReference.new(
|
|
15
|
+
type: 'cloudflare_dns_zone_transfers_tsig',
|
|
16
|
+
name: name,
|
|
17
|
+
resource_attributes: attrs.to_h,
|
|
18
|
+
outputs: { id: "${cloudflare_dns_zone_transfers_tsig.\#{name}.id}" }
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
module Cloudflare
|
|
23
|
+
include CloudflareDnsZoneTransfersTsig
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'dry-struct'
|
|
3
|
+
require 'pangea/resources/types'
|
|
4
|
+
|
|
5
|
+
module Pangea::Resources::Cloudflare::Types
|
|
6
|
+
class DnsZoneTransfersTsigAttributes < Dry::Struct
|
|
7
|
+
transform_keys(&:to_sym)
|
|
8
|
+
attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'pangea/resources/base'
|
|
3
|
+
require 'pangea/resources/reference'
|
|
4
|
+
require 'pangea/resources/cloudflare_email_routing_address/types'
|
|
5
|
+
require 'pangea/resource_registry'
|
|
6
|
+
|
|
7
|
+
module Pangea::Resources
|
|
8
|
+
module CloudflareEmailRoutingAddress
|
|
9
|
+
def cloudflare_email_routing_address(name, attributes = {})
|
|
10
|
+
attrs = Cloudflare::Types::EmailRoutingAddressAttributes.new(attributes)
|
|
11
|
+
resource(:cloudflare_email_routing_address, name) do
|
|
12
|
+
zone_id attrs.zone_id
|
|
13
|
+
end
|
|
14
|
+
ResourceReference.new(
|
|
15
|
+
type: 'cloudflare_email_routing_address',
|
|
16
|
+
name: name,
|
|
17
|
+
resource_attributes: attrs.to_h,
|
|
18
|
+
outputs: { id: "${cloudflare_email_routing_address.\#{name}.id}" }
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
module Cloudflare
|
|
23
|
+
include CloudflareEmailRoutingAddress
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'dry-struct'
|
|
3
|
+
require 'pangea/resources/types'
|
|
4
|
+
|
|
5
|
+
module Pangea::Resources::Cloudflare::Types
|
|
6
|
+
class EmailRoutingAddressAttributes < Dry::Struct
|
|
7
|
+
transform_keys(&:to_sym)
|
|
8
|
+
attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'pangea/resources/base'
|
|
3
|
+
require 'pangea/resources/reference'
|
|
4
|
+
require 'pangea/resources/cloudflare_email_routing_catch_all/types'
|
|
5
|
+
require 'pangea/resource_registry'
|
|
6
|
+
|
|
7
|
+
module Pangea::Resources
|
|
8
|
+
module CloudflareEmailRoutingCatchAll
|
|
9
|
+
def cloudflare_email_routing_catch_all(name, attributes = {})
|
|
10
|
+
attrs = Cloudflare::Types::EmailRoutingCatchAllAttributes.new(attributes)
|
|
11
|
+
resource(:cloudflare_email_routing_catch_all, name) do
|
|
12
|
+
zone_id attrs.zone_id
|
|
13
|
+
end
|
|
14
|
+
ResourceReference.new(
|
|
15
|
+
type: 'cloudflare_email_routing_catch_all',
|
|
16
|
+
name: name,
|
|
17
|
+
resource_attributes: attrs.to_h,
|
|
18
|
+
outputs: { id: "${cloudflare_email_routing_catch_all.\#{name}.id}" }
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
module Cloudflare
|
|
23
|
+
include CloudflareEmailRoutingCatchAll
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'dry-struct'
|
|
3
|
+
require 'pangea/resources/types'
|
|
4
|
+
|
|
5
|
+
module Pangea::Resources::Cloudflare::Types
|
|
6
|
+
class EmailRoutingCatchAllAttributes < Dry::Struct
|
|
7
|
+
transform_keys(&:to_sym)
|
|
8
|
+
attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId
|
|
9
|
+
end
|
|
10
|
+
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_email_routing_dns/types'
|
|
5
|
+
require 'pangea/resource_registry'
|
|
6
|
+
|
|
7
|
+
module Pangea::Resources
|
|
8
|
+
module CloudflareEmailRoutingDns
|
|
9
|
+
def cloudflare_email_routing_dns(name, attributes = {})
|
|
10
|
+
attrs = Cloudflare::Types::EmailRoutingDnsAttributes.new(attributes)
|
|
11
|
+
resource(:cloudflare_email_routing_dns, 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_email_routing_dns',
|
|
17
|
+
name: name,
|
|
18
|
+
resource_attributes: attrs.to_h,
|
|
19
|
+
outputs: { id: "${cloudflare_email_routing_dns.\#{name}.id}" }
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
module Cloudflare
|
|
24
|
+
include CloudflareEmailRoutingDns
|
|
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 EmailRoutingDnsAttributes < 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
|