def list(cls, label=None, cluster_id=None, state=None, page=None, per_page=None):
        """
        List existing clusters present in your account.

        Kwargs:
            `state`: list only those clusters which are in this state
            `page`: page number
            `per_page`: number of clusters to be retrieved per page

        Returns:
            List of clusters satisfying the given criteria
        """
        if cluster_id is not None:
            return cls.show(cluster_id)
        if label is not None:
            return cls.show(label)
        params = {}
        if page:
            params['page'] = page
        if per_page:
            params['per_page'] = per_page
        params = None if not params else params
        conn = Qubole.agent(version="v2")
        cluster_list = conn.get(cls.rest_entity_path)
        if state is None:
            # return the complete list since state is None
            return conn.get(cls.rest_entity_path, params=params)
        # filter clusters based on state
        result = []
        if 'clusters' in cluster_list:
            for cluster in cluster_list['clusters']:
                if state.lower() == cluster['state'].lower():
                    result.append(cluster)
        return result
List existing clusters present in your account.

        Kwargs:
            `state`: list only those clusters which are in this state
            `page`: page number
            `per_page`: number of clusters to be retrieved per page

        Returns:
            List of clusters satisfying the given criteria