stackdriver_handlers.py 文件源码

python
阅读 18 收藏 0 点赞 0 评论 0

项目:spinnaker-monitoring 作者: spinnaker 项目源码 文件源码
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)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号