Exemple #1
0
def delete_snapshot_nodes(cluster_name, node_path, recursive='0'):
    """删除快照节点所有信息,包括树结构信息(zd_snapshot_tree)和快照数据(zd_znode_snapshot)
    """
    if recursive == '0' and not _is_tree_leaf_node(cluster_name, node_path):
        return "无法删除非叶子节点!"

    node = ZdSnapshotTree.one(cluster_name=cluster_name, node_path=node_path)
    if not node:
        return "节点不存在!"

    # 删除快照节点,同时维护树结构
    slot_left, slot_right = node.left, node.right
    slot_width = slot_right - slot_left
    del_query = ZdSnapshotTree.delete().where(
        (ZdSnapshotTree.left.between(slot_left, slot_right)) &
        (ZdSnapshotTree.cluster_name == cluster_name)
    )
    update_left_query = ZdSnapshotTree.update(left=ZdSnapshotTree.left - slot_width).where(
        (ZdSnapshotTree.left > slot_right) &
        (ZdSnapshotTree.cluster_name == cluster_name)
    )
    update_right_query = ZdSnapshotTree.update(right=ZdSnapshotTree.right - slot_width).where(
        (ZdSnapshotTree.right > slot_right) &
        (ZdSnapshotTree.cluster_name == cluster_name)
    )
    del_query.execute()
    update_left_query.execute()
    update_right_query.execute()
    # 删除快照信息
    delete_snapshots(cluster_name, node_path, recursive)
Exemple #2
0
def delete_snapshot_nodes(cluster_name, node_path, recursive="0"):
    """删除快照节点所有信息,包括树结构信息(zd_snapshot_tree)和快照数据(zd_znode_snapshot)
    """
    if recursive == "0" and not _is_tree_leaf_node(cluster_name, node_path):
        return "无法删除非叶子节点!"

    node = ZdSnapshotTree.one(cluster_name=cluster_name, node_path=node_path)
    if not node:
        return "节点不存在!"

    # 删除快照节点,同时维护树结构
    slot_left, slot_right = node.left, node.right
    slot_width = slot_right - slot_left
    del_query = ZdSnapshotTree.delete().where(
        (ZdSnapshotTree.left.between(slot_left, slot_right)) & (ZdSnapshotTree.cluster_name == cluster_name)
    )
    update_left_query = ZdSnapshotTree.update(left=ZdSnapshotTree.left - slot_width).where(
        (ZdSnapshotTree.left > slot_right) & (ZdSnapshotTree.cluster_name == cluster_name)
    )
    update_right_query = ZdSnapshotTree.update(right=ZdSnapshotTree.right - slot_width).where(
        (ZdSnapshotTree.right > slot_right) & (ZdSnapshotTree.cluster_name == cluster_name)
    )
    del_query.execute()
    update_left_query.execute()
    update_right_query.execute()
    # 删除快照信息
    delete_snapshots(cluster_name, node_path, recursive)
Exemple #3
0
def _add_tree_node(cluster_name, parent_node, node_path):
    """增加树形结构普通节点,需要保持树形结构
    """
    slot_left = parent_node.left
    # update left and right value
    update_left_query = ZdSnapshotTree.update(left=ZdSnapshotTree.left + 2).where(
        (ZdSnapshotTree.left > slot_left) & (ZdSnapshotTree.cluster_name == cluster_name)
    )
    update_right_query = ZdSnapshotTree.update(right=ZdSnapshotTree.right + 2).where(
        (ZdSnapshotTree.right > slot_left) & (ZdSnapshotTree.cluster_name == cluster_name)
    )
    update_left_query.execute()
    update_right_query.execute()
    # create new node
    child_node = ZdSnapshotTree(cluster_name=cluster_name, node_path=node_path, left=slot_left + 1, right=slot_left + 2)
    child_node.save()
Exemple #4
0
def _add_tree_node(cluster_name, parent_node, node_path):
    """增加树形结构普通节点,需要保持树形结构
    """
    slot_left = parent_node.left
    # update left and right value
    update_left_query = ZdSnapshotTree.update(
        left=ZdSnapshotTree.left +
        2).where((ZdSnapshotTree.left > slot_left)
                 & (ZdSnapshotTree.cluster_name == cluster_name))
    update_right_query = ZdSnapshotTree.update(
        right=ZdSnapshotTree.right +
        2).where((ZdSnapshotTree.right > slot_left)
                 & (ZdSnapshotTree.cluster_name == cluster_name))
    update_left_query.execute()
    update_right_query.execute()
    # create new node
    child_node = ZdSnapshotTree(cluster_name=cluster_name,
                                node_path=node_path,
                                left=slot_left + 1,
                                right=slot_left + 2)
    child_node.save()