Example #1
0
def delete_znodes(cluster_name, path, recursive=False, del_snapshots=True):
    """delete znodes' meta info in mysql
    """
    del_znode_query = del_snapshot_query = None
    if recursive:
        # monkey patch for delete znodes recursively
        target_path = path.rstrip("/") + "/"
        del_znode_query = ZdZnode.delete().where(
            (ZdZnode.cluster_name == cluster_name) &
            ((ZdZnode.path.startswith(target_path)) | (ZdSnapshot.path == path))
        )
        del_snapshot_query = ZdSnapshot.delete().where(
            (ZdSnapshot.cluster_name == cluster_name) &
            ((ZdSnapshot.path.startswith(target_path)) | (ZdSnapshot.path == path))
        )
    else:
        del_znode_query = ZdZnode.delete().where(
            (ZdZnode.cluster_name == cluster_name) &
            (ZdZnode.path == path)
        )
        del_snapshot_query = ZdSnapshot.delete().where(
            (ZdSnapshot.cluster_name == cluster_name) &
            (ZdSnapshot.path == path)
        )
    del_znode_query.execute()
    if del_snapshots:
        del_snapshot_query.execute()
Example #2
0
    def response(self):
        """返回指定zookeeper集群的znode信息, 响应ajax请求
        """
        nodes = []
        normalized_path = normalize_path(self.path)

        if USE_QCONF:
            ZnodeService.get_znode_tree_from_qconf(self.cluster_name, normalized_path, nodes)
        else:
            zoo_client = ZookeeperService.get_zoo_client(self.cluster_name)
            if not zoo_client:
                return self.ajax_popup(code=300, msg="连接zookeeper出错!")
            ZnodeService.get_znode_tree(zoo_client, normalized_path, nodes)

        if normalized_path != "/" and len(nodes) <= 1:
            return self.ajax_popup(code=300, msg="对不起,该节点路径下(%s)无数据!" % self.path)

        for node in nodes:
            zk_node = ZdZnode.one(path=node["path"], cluster_name=self.cluster_name)
            if zk_node:
                node['type'] = zk_node.type
                node['business'] = zk_node.business
                node['data'] = ZookeeperService.get(self.cluster_name, node["path"])

        znodes_data = json.dumps(nodes)
        return self.render('config/znode/displaytree.html',
                           cluster_name=self.cluster_name,
                           znodes_data=znodes_data)
Example #3
0
def save_znode_tree(cluster_name,node_path,new_node_path):
    data = ZookeeperService.get(cluster_name, node_path)
    znode = ZdZnode.one(cluster_name=cluster_name, path=node_path, deleted="0")
    if znode is None:
        return False
    set_znode(cluster_name, new_node_path, data, znode_type=znode.type, business=znode.business)
    return True;
Example #4
0
    def response(self):
        """返回指定zookeeper集群的znode信息, 响应ajax请求
        """
        nodes = []
        normalized_path = normalize_path(self.path)

        if USE_QCONF:
            ZnodeService.get_znode_tree_from_qconf(self.cluster_name,
                                                   normalized_path, nodes)
        else:
            zoo_client = ZookeeperService.get_zoo_client(self.cluster_name)
            if not zoo_client:
                return self.ajax_popup(code=300, msg="连接zookeeper出错!")
            ZnodeService.get_znode_tree(zoo_client, normalized_path, nodes)

        if normalized_path != "/" and len(nodes) <= 1:
            return self.ajax_popup(code=300,
                                   msg="对不起,该节点路径下(%s)无数据!" % self.path)

        for node in nodes:
            zk_node = ZdZnode.one(path=node["path"],
                                  cluster_name=self.cluster_name)
            if zk_node:
                node['type'] = zk_node.type
                node['business'] = zk_node.business
                node['data'] = ZookeeperService.get(self.cluster_name,
                                                    node["path"])

        znodes_data = json.dumps(nodes)
        return self.render('config/znode/displaytree.html',
                           cluster_name=self.cluster_name,
                           znodes_data=znodes_data)
Example #5
0
    def response(self):
        """edit
        """
        node_type = data = download_link = ""

        normalized_path = normalize_path(self.path)
        znode = ZdZnode.one(path=normalized_path, cluster_name=self.cluster_name, deleted="0")
        business = ""
        if znode:
            node_type = znode.type
            business = znode.business

        # "0"代表普通节点, "1"代表文本节点
        if node_type == "1":
            # 文件节点提供下载路径
            download_link = "/config/znode/download?path={0}&cluster_name={1}".format(self.path, self.cluster_name)

        else:
            data = ZookeeperService.get(self.cluster_name, self.path)

        return self.render(
            "config/znode/edit.html",
            action="/config/znode/save",
            cluster_name=self.cluster_name,
            path=normalized_path,
            data=data,
            business=business,
            download_link=download_link,
        )
Example #6
0
    def response(self):
        """返回指定zookeeper集群的znode信息, 响应ajax请求
        """
        nodes = []
        normalized_path = normalize_path(self.path)

        zoo_client = ZookeeperService.get_zoo_client(self.cluster_name)
        if not zoo_client:
            return self.ajax_popup(code=300, msg="连接zookeeper出错!")
        ZnodeService.get_znode_tree(zoo_client, normalized_path, nodes)

        #if normalized_path != "/" and len(nodes) <= 1:
        #    return self.ajax_popup(
        #        code=300, msg="对不起,该节点路径下(%s)无数据!" % self.path)

        for node in nodes:
            zk_node = ZdZnode.one(path=node["path"],
                                  cluster_name=self.cluster_name)
            if zk_node:
                node['description'] = zk_node.description
                node['data'] = ZookeeperService.get(self.cluster_name,
                                                    node["path"])

        znodes_data = json.dumps(nodes)
        return self.render('config/znode/displaytree.html',
                           cluster_name=self.cluster_name,
                           service_name=self.service_name,
                           znodes_data=znodes_data)
Example #7
0
    def response(self):
        '''edit
        '''
        node_type = data = download_link = ""

        normalized_path = normalize_path(self.path)
        znode = ZdZnode.one(path=normalized_path,
                            cluster_name=self.cluster_name,
                            deleted='0')
        description = ""
        if znode:
            #node_type = znode.type
            description = znode.description

        # "0"代表普通节点, "1"代表文本节点
        #if node_type == "1":
        #    # 文件节点提供下载路径
        #    download_link = "/config/znode/download?path={0}&cluster_name={1}".format(
        #        self.path, self.cluster_name)

        #else:
        #    data = ZookeeperService.get(self.cluster_name, self.path)

        data = ZookeeperService.get(self.cluster_name, self.path)
        return self.render('config/znode/edit.html',
                           action='/config/znode/save',
                           cluster_name=self.cluster_name,
                           path=normalized_path,
                           data=data,
                           description=description,
                           download_link=download_link)
Example #8
0
    def response(self):
        '''edit
        '''
        node_type = data = download_link = ""

        normalized_path = normalize_path(self.path)
        znode = ZdZnode.one(path=normalized_path, cluster_name=self.cluster_name, deleted='0')
        if znode:
            node_type = znode.type

        # "0"代表普通节点, "1"代表文本节点
        if node_type == "1":
            # 文件节点提供下载路径
            download_link = "/config/znode/download?path={0}&cluster_name={1}".format(
                self.path, self.cluster_name)

        else:
            data = ZookeeperService.get(self.cluster_name, self.path)

        return self.render('config/znode/edit.html',
                           action='/config/znode/save',
                           cluster_name=self.cluster_name,
                           path=normalized_path,
                           data=data,
                           download_link=download_link)
Example #9
0
    def response(self):
        '''edit
        '''
        node_type = data = download_link = ""

        normalized_path = normalize_path(self.path)
        znode = ZdZnode.one(path=normalized_path,
                            cluster_name=self.cluster_name,
                            deleted='0')
        business = ""
        if znode:
            node_type = znode.type
            business = znode.business

        # "0"代表普通节点, "1"代表文本节点
        if node_type == "1":
            # 文件节点提供下载路径
            download_link = "/config/znode/download?path={0}&cluster_name={1}".format(
                self.path, self.cluster_name)

        else:
            data = ZookeeperService.get(self.cluster_name, self.path)

        return self.render('config/znode/edit.html',
                           action='/config/znode/save',
                           cluster_name=self.cluster_name,
                           path=normalized_path,
                           data=data,
                           business=business,
                           download_link=download_link)
Example #10
0
 def response(self):
     """获取zookeeper节点的元数据信息
     """
     metainfo = dict()
     zk_node = ZdZnode.one(path=self.path, cluster_name=self.cluster_name)
     if zk_node:
         metainfo['type'] = zk_node.type
         metainfo['business'] = zk_node.business
     return json.dumps(metainfo)
Example #11
0
 def response(self):
     """获取zookeeper节点的元数据信息
     """
     metainfo = dict()
     zk_node = ZdZnode.one(path=self.path, cluster_name=self.cluster_name)
     if zk_node:
         metainfo['type'] = zk_node.type
         metainfo['business'] = zk_node.business
     return json.dumps(metainfo)
Example #12
0
def save_znode_tree(cluster_name, node_path, new_node_path):
    data = ZookeeperService.get(cluster_name, node_path)
    znode = ZdZnode.one(cluster_name=cluster_name, path=node_path, deleted="0")
    if znode is None:
        return False
    set_znode(cluster_name,
              new_node_path,
              data,
              znode_type=znode.type,
              business=znode.business)
    return True
Example #13
0
def delete_znodes(cluster_name, path, recursive=False, del_snapshots=True):
    """delete znodes' meta info in mysql
    """
    del_znode_query = del_snapshot_query = None
    if recursive:
        # monkey patch for delete znodes recursively
        target_path = path.rstrip("/") + "/"
        del_znode_query = ZdZnode.delete().where(
            (ZdZnode.cluster_name == cluster_name)
            & ((ZdZnode.path.startswith(target_path))
               | (ZdSnapshot.path == path)))
        del_snapshot_query = ZdSnapshot.delete().where(
            (ZdSnapshot.cluster_name == cluster_name)
            & ((ZdSnapshot.path.startswith(target_path))
               | (ZdSnapshot.path == path)))
    else:
        del_znode_query = ZdZnode.delete().where(
            (ZdZnode.cluster_name == cluster_name) & (ZdZnode.path == path))
        del_snapshot_query = ZdSnapshot.delete().where(
            (ZdSnapshot.cluster_name == cluster_name)
            & (ZdSnapshot.path == path))
    del_znode_query.execute()
    if del_snapshots:
        del_snapshot_query.execute()
Example #14
0
    def response(self):
        """获取zookeeper节点的节点值
        """
        download_link = data = node_type = ""

        znode = ZdZnode.one(path=self.path, cluster_name=self.cluster_name, deleted="0")
        if znode:
            node_type = znode.type

        # 0代表普通节点,1代表文本节点
        if node_type == "1":
            download_link = "/config/znode/download?path={0}&cluster_name={1}".format(self.path, self.cluster_name)
        else:
            data = ZookeeperService.get(self.cluster_name, self.path)

        return self.render("config/znode/view.html", data=data, download_link=download_link)
Example #15
0
    def response(self):
        """获取zookeeper节点的节点值
        """
        download_link = data = node_type = ""

        znode = ZdZnode.one(path=self.path, cluster_name=self.cluster_name, deleted="0")
        if znode:
            node_type = znode.type

        # 0代表普通节点,1代表文本节点
        if node_type == "1":
            download_link = "/config/znode/download?path={0}&cluster_name={1}".format(
                self.path, self.cluster_name)
        else:
            data = ZookeeperService.get(self.cluster_name, self.path)

        return self.render('config/znode/view.html',
                           data=data,
                           download_link=download_link)
Example #16
0
def set_znode(cluster_name, path, data, znode_type='0', business=''):
    """更新或增加znode节点,包括存储于mysql的元数据和存储于zookeeper上的data
    """
    path = normalize_path(path)

    ZookeeperService.set_or_create(cluster_name, path, data)

    # 在mysql上存储znode的相关元数据,节点类型和业务说明
    znode = ZdZnode.one(cluster_name=cluster_name, path=path, deleted="0")
    if znode is None:
        znode = ZdZnode(cluster_name=cluster_name, path=path)
    znode.type = znode_type
    znode.business = business
    znode.save()

    try:
        # 自动快照(如果配置信息没有变更,实际不会进行快照)
        SnapshotService.make_snapshot(cluster_name, path, data)
    except MakeSnapshotError as exc:
        log.error('make snapshot error: %s', str(exc))
Example #17
0
def set_znode(cluster_name, path, data, znode_type='0', business=''):
    """更新或增加znode节点,包括存储于mysql的元数据和存储于zookeeper上的data
    """
    path = normalize_path(path)

    ZookeeperService.set_or_create(cluster_name, path, data)

    # 在mysql上存储znode的相关元数据,节点类型和业务说明
    znode = ZdZnode.one(cluster_name=cluster_name, path=path, deleted="0")
    if znode is None:
        znode = ZdZnode(cluster_name=cluster_name, path=path)
    znode.type = znode_type
    znode.business = business
    znode.save()

    try:
        # 自动快照(如果配置信息没有变更,实际不会进行快照)
        SnapshotService.make_snapshot(cluster_name, path, data)
    except MakeSnapshotError as exc:
        log.error('make snapshot error: %s', str(exc))