@@ -68,6 +68,37 @@ last character, which cannot be a dash.`,
6868 MaxItems : 1 ,
6969 Elem : & schema.Resource {
7070 Schema : map [string ]* schema.Schema {
71+ "cache_key_policy" : {
72+ Type : schema .TypeList ,
73+ Optional : true ,
74+ Description : `The CacheKeyPolicy for this CdnPolicy.` ,
75+ MaxItems : 1 ,
76+ Elem : & schema.Resource {
77+ Schema : map [string ]* schema.Schema {
78+ "include_http_headers" : {
79+ Type : schema .TypeList ,
80+ Optional : true ,
81+ Description : `Allows HTTP request headers (by name) to be used in the
82+ cache key.` ,
83+ Elem : & schema.Schema {
84+ Type : schema .TypeString ,
85+ },
86+ AtLeastOneOf : []string {"cdn_policy.0.cache_key_policy.0.query_string_whitelist" , "cdn_policy.0.cache_key_policy.0.include_http_headers" },
87+ },
88+ "query_string_whitelist" : {
89+ Type : schema .TypeList ,
90+ Optional : true ,
91+ Description : `Names of query string parameters to include in cache keys.
92+ Default parameters are always included. '&' and '=' will
93+ be percent encoded and not treated as delimiters.` ,
94+ Elem : & schema.Schema {
95+ Type : schema .TypeString ,
96+ },
97+ AtLeastOneOf : []string {"cdn_policy.0.cache_key_policy.0.query_string_whitelist" , "cdn_policy.0.cache_key_policy.0.include_http_headers" },
98+ },
99+ },
100+ },
101+ },
71102 "cache_mode" : {
72103 Type : schema .TypeString ,
73104 Computed : true ,
@@ -558,6 +589,8 @@ func flattenComputeBackendBucketCdnPolicy(v interface{}, d *schema.ResourceData,
558589 return nil
559590 }
560591 transformed := make (map [string ]interface {})
592+ transformed ["cache_key_policy" ] =
593+ flattenComputeBackendBucketCdnPolicyCacheKeyPolicy (original ["cacheKeyPolicy" ], d , config )
561594 transformed ["signed_url_cache_max_age_sec" ] =
562595 flattenComputeBackendBucketCdnPolicySignedUrlCacheMaxAgeSec (original ["signedUrlCacheMaxAgeSec" ], d , config )
563596 transformed ["default_ttl" ] =
@@ -576,6 +609,29 @@ func flattenComputeBackendBucketCdnPolicy(v interface{}, d *schema.ResourceData,
576609 flattenComputeBackendBucketCdnPolicyServeWhileStale (original ["serveWhileStale" ], d , config )
577610 return []interface {}{transformed }
578611}
612+ func flattenComputeBackendBucketCdnPolicyCacheKeyPolicy (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
613+ if v == nil {
614+ return nil
615+ }
616+ original := v .(map [string ]interface {})
617+ if len (original ) == 0 {
618+ return nil
619+ }
620+ transformed := make (map [string ]interface {})
621+ transformed ["query_string_whitelist" ] =
622+ flattenComputeBackendBucketCdnPolicyCacheKeyPolicyQueryStringWhitelist (original ["queryStringWhitelist" ], d , config )
623+ transformed ["include_http_headers" ] =
624+ flattenComputeBackendBucketCdnPolicyCacheKeyPolicyIncludeHttpHeaders (original ["includeHttpHeaders" ], d , config )
625+ return []interface {}{transformed }
626+ }
627+ func flattenComputeBackendBucketCdnPolicyCacheKeyPolicyQueryStringWhitelist (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
628+ return v
629+ }
630+
631+ func flattenComputeBackendBucketCdnPolicyCacheKeyPolicyIncludeHttpHeaders (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
632+ return v
633+ }
634+
579635func flattenComputeBackendBucketCdnPolicySignedUrlCacheMaxAgeSec (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
580636 // Handles the string fixed64 format
581637 if strVal , ok := v .(string ); ok {
@@ -759,6 +815,13 @@ func expandComputeBackendBucketCdnPolicy(v interface{}, d TerraformResourceData,
759815 original := raw .(map [string ]interface {})
760816 transformed := make (map [string ]interface {})
761817
818+ transformedCacheKeyPolicy , err := expandComputeBackendBucketCdnPolicyCacheKeyPolicy (original ["cache_key_policy" ], d , config )
819+ if err != nil {
820+ return nil , err
821+ } else if val := reflect .ValueOf (transformedCacheKeyPolicy ); val .IsValid () && ! isEmptyValue (val ) {
822+ transformed ["cacheKeyPolicy" ] = transformedCacheKeyPolicy
823+ }
824+
762825 transformedSignedUrlCacheMaxAgeSec , err := expandComputeBackendBucketCdnPolicySignedUrlCacheMaxAgeSec (original ["signed_url_cache_max_age_sec" ], d , config )
763826 if err != nil {
764827 return nil , err
@@ -818,6 +881,40 @@ func expandComputeBackendBucketCdnPolicy(v interface{}, d TerraformResourceData,
818881 return transformed , nil
819882}
820883
884+ func expandComputeBackendBucketCdnPolicyCacheKeyPolicy (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
885+ l := v .([]interface {})
886+ if len (l ) == 0 || l [0 ] == nil {
887+ return nil , nil
888+ }
889+ raw := l [0 ]
890+ original := raw .(map [string ]interface {})
891+ transformed := make (map [string ]interface {})
892+
893+ transformedQueryStringWhitelist , err := expandComputeBackendBucketCdnPolicyCacheKeyPolicyQueryStringWhitelist (original ["query_string_whitelist" ], d , config )
894+ if err != nil {
895+ return nil , err
896+ } else {
897+ transformed ["queryStringWhitelist" ] = transformedQueryStringWhitelist
898+ }
899+
900+ transformedIncludeHttpHeaders , err := expandComputeBackendBucketCdnPolicyCacheKeyPolicyIncludeHttpHeaders (original ["include_http_headers" ], d , config )
901+ if err != nil {
902+ return nil , err
903+ } else {
904+ transformed ["includeHttpHeaders" ] = transformedIncludeHttpHeaders
905+ }
906+
907+ return transformed , nil
908+ }
909+
910+ func expandComputeBackendBucketCdnPolicyCacheKeyPolicyQueryStringWhitelist (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
911+ return v , nil
912+ }
913+
914+ func expandComputeBackendBucketCdnPolicyCacheKeyPolicyIncludeHttpHeaders (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
915+ return v , nil
916+ }
917+
821918func expandComputeBackendBucketCdnPolicySignedUrlCacheMaxAgeSec (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
822919 return v , nil
823920}
0 commit comments