@@ -108,15 +108,17 @@ def delete_notification_channels(project_name, channel_ids, force=None):
108
108
109
109
110
110
# [START monitoring_alert_backup_policies]
111
- def backup (project_name ):
111
+ def backup (project_name , backup_filename ):
112
112
alert_client = monitoring_v3 .AlertPolicyServiceClient ()
113
113
channel_client = monitoring_v3 .NotificationChannelServiceClient ()
114
114
record = {'project_name' : project_name ,
115
115
'policies' : list (alert_client .list_alert_policies (project_name )),
116
116
'channels' : list (channel_client .list_notification_channels (
117
117
project_name ))}
118
- json .dump (record , open ('backup.json' , 'wt' ), cls = ProtoEncoder , indent = 2 )
119
- print ('Backed up alert policies and notification channels to backup.json.' )
118
+ json .dump (record , open (backup_filename , 'wt' ), cls = ProtoEncoder , indent = 2 )
119
+ print ('Backed up alert policies and notification channels to {}.' .format (
120
+ backup_filename )
121
+ )
120
122
121
123
122
124
class ProtoEncoder (json .JSONEncoder ):
@@ -136,9 +138,11 @@ def default(self, obj):
136
138
# [START monitoring_alert_create_channel]
137
139
# [START monitoring_alert_update_channel]
138
140
# [START monitoring_alert_enable_channel]
139
- def restore (project_name ):
140
- print ('Loading alert policies and notification channels from backup.json.' )
141
- record = json .load (open ('backup.json' , 'rt' ))
141
+ def restore (project_name , backup_filename ):
142
+ print ('Loading alert policies and notification channels from {}.' .format (
143
+ backup_filename )
144
+ )
145
+ record = json .load (open (backup_filename , 'rt' ))
142
146
is_same_project = project_name == record ['project_name' ]
143
147
# Convert dicts to AlertPolicies.
144
148
policies_json = [json .dumps (policy ) for policy in record ['policies' ]]
@@ -299,11 +303,19 @@ def project_name():
299
303
'backup' ,
300
304
help = backup .__doc__
301
305
)
306
+ backup_parser .add_argument (
307
+ '--backup_to_filename' ,
308
+ required = True
309
+ )
302
310
303
311
restore_parser = subparsers .add_parser (
304
312
'restore' ,
305
313
help = restore .__doc__
306
314
)
315
+ restore_parser .add_argument (
316
+ '--restore_from_filename' ,
317
+ required = True
318
+ )
307
319
308
320
args = parser .parse_args ()
309
321
@@ -325,7 +337,7 @@ def project_name():
325
337
args .notification_channel_id )
326
338
327
339
elif args .command == 'backup' :
328
- backup (project_name ())
340
+ backup (project_name (), args . backup_to_filename )
329
341
330
342
elif args .command == 'restore' :
331
- restore (project_name ())
343
+ restore (project_name (), args . restore_from_filename )
0 commit comments