@@ -96,6 +96,22 @@ Set the value to 0 to use the default value.`,
9696 Optional : true ,
9797 Description : `When set to true, no runs are scheduled for a given transfer.` ,
9898 },
99+ "email_preferences" : {
100+ Type : schema .TypeList ,
101+ Optional : true ,
102+ Description : `Email notifications will be sent according to these preferences to the
103+ email address of the user who owns this transfer config.` ,
104+ MaxItems : 1 ,
105+ Elem : & schema.Resource {
106+ Schema : map [string ]* schema.Schema {
107+ "enable_failure_email" : {
108+ Type : schema .TypeBool ,
109+ Required : true ,
110+ Description : `If true, email notifications will be sent on transfer run failures.` ,
111+ },
112+ },
113+ },
114+ },
99115 "location" : {
100116 Type : schema .TypeString ,
101117 Optional : true ,
@@ -248,6 +264,12 @@ func resourceBigqueryDataTransferConfigCreate(d *schema.ResourceData, meta inter
248264 } else if v , ok := d .GetOkExists ("schedule_options" ); ! isEmptyValue (reflect .ValueOf (scheduleOptionsProp )) && (ok || ! reflect .DeepEqual (v , scheduleOptionsProp )) {
249265 obj ["scheduleOptions" ] = scheduleOptionsProp
250266 }
267+ emailPreferencesProp , err := expandBigqueryDataTransferConfigEmailPreferences (d .Get ("email_preferences" ), d , config )
268+ if err != nil {
269+ return err
270+ } else if v , ok := d .GetOkExists ("email_preferences" ); ! isEmptyValue (reflect .ValueOf (emailPreferencesProp )) && (ok || ! reflect .DeepEqual (v , emailPreferencesProp )) {
271+ obj ["emailPreferences" ] = emailPreferencesProp
272+ }
251273 notificationPubsubTopicProp , err := expandBigqueryDataTransferConfigNotificationPubsubTopic (d .Get ("notification_pubsub_topic" ), d , config )
252274 if err != nil {
253275 return err
@@ -399,6 +421,9 @@ func resourceBigqueryDataTransferConfigRead(d *schema.ResourceData, meta interfa
399421 if err := d .Set ("schedule_options" , flattenBigqueryDataTransferConfigScheduleOptions (res ["scheduleOptions" ], d , config )); err != nil {
400422 return fmt .Errorf ("Error reading Config: %s" , err )
401423 }
424+ if err := d .Set ("email_preferences" , flattenBigqueryDataTransferConfigEmailPreferences (res ["emailPreferences" ], d , config )); err != nil {
425+ return fmt .Errorf ("Error reading Config: %s" , err )
426+ }
402427 if err := d .Set ("notification_pubsub_topic" , flattenBigqueryDataTransferConfigNotificationPubsubTopic (res ["notificationPubsubTopic" ], d , config )); err != nil {
403428 return fmt .Errorf ("Error reading Config: %s" , err )
404429 }
@@ -449,6 +474,12 @@ func resourceBigqueryDataTransferConfigUpdate(d *schema.ResourceData, meta inter
449474 } else if v , ok := d .GetOkExists ("schedule_options" ); ! isEmptyValue (reflect .ValueOf (v )) && (ok || ! reflect .DeepEqual (v , scheduleOptionsProp )) {
450475 obj ["scheduleOptions" ] = scheduleOptionsProp
451476 }
477+ emailPreferencesProp , err := expandBigqueryDataTransferConfigEmailPreferences (d .Get ("email_preferences" ), d , config )
478+ if err != nil {
479+ return err
480+ } else if v , ok := d .GetOkExists ("email_preferences" ); ! isEmptyValue (reflect .ValueOf (v )) && (ok || ! reflect .DeepEqual (v , emailPreferencesProp )) {
481+ obj ["emailPreferences" ] = emailPreferencesProp
482+ }
452483 notificationPubsubTopicProp , err := expandBigqueryDataTransferConfigNotificationPubsubTopic (d .Get ("notification_pubsub_topic" ), d , config )
453484 if err != nil {
454485 return err
@@ -499,6 +530,10 @@ func resourceBigqueryDataTransferConfigUpdate(d *schema.ResourceData, meta inter
499530 updateMask = append (updateMask , "scheduleOptions" )
500531 }
501532
533+ if d .HasChange ("email_preferences" ) {
534+ updateMask = append (updateMask , "emailPreferences" )
535+ }
536+
502537 if d .HasChange ("notification_pubsub_topic" ) {
503538 updateMask = append (updateMask , "notificationPubsubTopic" )
504539 }
@@ -635,6 +670,23 @@ func flattenBigqueryDataTransferConfigScheduleOptionsEndTime(v interface{}, d *s
635670 return v
636671}
637672
673+ func flattenBigqueryDataTransferConfigEmailPreferences (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
674+ if v == nil {
675+ return nil
676+ }
677+ original := v .(map [string ]interface {})
678+ if len (original ) == 0 {
679+ return nil
680+ }
681+ transformed := make (map [string ]interface {})
682+ transformed ["enable_failure_email" ] =
683+ flattenBigqueryDataTransferConfigEmailPreferencesEnableFailureEmail (original ["enableFailureEmail" ], d , config )
684+ return []interface {}{transformed }
685+ }
686+ func flattenBigqueryDataTransferConfigEmailPreferencesEnableFailureEmail (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
687+ return v
688+ }
689+
638690func flattenBigqueryDataTransferConfigNotificationPubsubTopic (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
639691 return v
640692}
@@ -735,6 +787,29 @@ func expandBigqueryDataTransferConfigScheduleOptionsEndTime(v interface{}, d Ter
735787 return v , nil
736788}
737789
790+ func expandBigqueryDataTransferConfigEmailPreferences (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
791+ l := v .([]interface {})
792+ if len (l ) == 0 || l [0 ] == nil {
793+ return nil , nil
794+ }
795+ raw := l [0 ]
796+ original := raw .(map [string ]interface {})
797+ transformed := make (map [string ]interface {})
798+
799+ transformedEnableFailureEmail , err := expandBigqueryDataTransferConfigEmailPreferencesEnableFailureEmail (original ["enable_failure_email" ], d , config )
800+ if err != nil {
801+ return nil , err
802+ } else if val := reflect .ValueOf (transformedEnableFailureEmail ); val .IsValid () && ! isEmptyValue (val ) {
803+ transformed ["enableFailureEmail" ] = transformedEnableFailureEmail
804+ }
805+
806+ return transformed , nil
807+ }
808+
809+ func expandBigqueryDataTransferConfigEmailPreferencesEnableFailureEmail (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
810+ return v , nil
811+ }
812+
738813func expandBigqueryDataTransferConfigNotificationPubsubTopic (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
739814 return v , nil
740815}
0 commit comments