def __do_batch_update(self, project, update_list, original_type_map):
"""Orchestrate updates of existing descriptors.
Args:
project: [string] The project we're updating in.
update_list: [list of descriptors] The new descriptor definitions.
original_type_map: [type to descriptor] The original definitions in
case we need to restore them.
"""
get_descriptor_name = lambda descriptor: descriptor['name']
delete_errors = []
create_errors = []
restore_errors = []
failed_list = []
create_list = []
success_list = []
restore_list = []
not_updated_list = []
lost_list = []
if update_list:
self.__do_batch_update_delete_helper(
project, update_list, create_list, failed_list, delete_errors)
if create_list:
self.__do_batch_update_create_helper(
project, create_list, success_list, restore_list, create_errors)
restore_list = [original_type_map[elem['type']] for elem in restore_list]
if restore_list:
# If we successfully restore, we left it in the original unupdated state.
# If we failed to restore, then we've lost the descriptor entirely.
self.__do_batch_update_create_helper(
project, restore_list, not_updated_list, lost_list, restore_errors)
response_code = (httplib.OK if len(failed_list) + len(create_errors) == 0
else httplib.INTERNAL_SERVER_ERROR)
bodies = []
for elem in success_list:
bodies.append('Updated {0} to {1}'.format(elem['type'], elem))
for index, elem in enumerate(failed_list):
bodies.append('Failed to update {0} to {1}: {2}'.format(
elem['type'], elem, delete_errors[index]))
for index, elem in enumerate(restore_list):
bodies.append('Failed to update {0} to {1}: {2}'.format(
elem['type'], elem, create_errors[index]))
for index, elem in enumerate(lost_list):
bodies.append('Lost {0}. It used to be {1}: {2}'.format(
elem['type'], elem, restore_errors[index]))
return response_code, {'Content-Type': 'text/plain'}, '\n'.join(bodies)
stackdriver_handlers.py 文件源码
python
阅读 18
收藏 0
点赞 0
评论 0
评论列表
文章目录