예제 #1
0
    def set_key(self, keyVals):

        req_msg = kv_store_types.Request(kv_store_types.Command.KEY_SET)
        req_msg.keySetParams = kv_store_types.KeySetParams(keyVals)
        self._kv_store_cmd_socket.send_thrift_obj(req_msg)

        return self._kv_store_cmd_socket.recv()
예제 #2
0
    def dump_peers(self):
        """  dump the entries of kvstore whose key matches the given prefix
             if prefix is an empty string, the full KV store is dumped
        """

        req_msg = kv_store_types.Request(kv_store_types.Command.PEER_DUMP)
        return self.send_and_recv_thrift_obj(req_msg, kv_store_types.PeerCmdReply)
예제 #3
0
    def dump_key_with_prefix(self, prefix=""):
        """  dump the hashes of kvstore whose key matches the given prefix
             if prefix is an empty string, the full KV hash is dumped
        """

        req_msg = kv_store_types.Request(kv_store_types.Command.HASH_DUMP)
        req_msg.keyDumpParams = kv_store_types.KeyDumpParams(prefix)

        return self.send_and_recv_thrift_obj(req_msg, kv_store_types.Publication)
예제 #4
0
    def get_keys(self, keys):
        """ Get values corresponding to keys from KvStore.
            It gets from local snapshot KeyVals of the kvstore.
        """

        req_msg = kv_store_types.Request(kv_store_types.Command.KEY_GET)
        req_msg.keyGetParams = kv_store_types.KeyGetParams(keys)

        return self.send_and_recv_thrift_obj(req_msg, kv_store_types.Publication)
예제 #5
0
    def dump_peers(self):
        '''  dump the entries of kvstore whose key matches the given prefix
             if prefix is an empty string, the full KV store is dumped
        '''

        req_msg = kv_store_types.Request(kv_store_types.Command.PEER_DUMP)
        self._kv_store_cmd_socket.send_thrift_obj(req_msg)

        return self._kv_store_cmd_socket.recv_thrift_obj(
            kv_store_types.PeerCmdReply)
예제 #6
0
    def dump_all_with_prefix(self, prefix=""):
        '''  dump the entries of kvstore whose key matches the given prefix
             if prefix is an empty string, the full KV store is dumped
        '''

        req_msg = kv_store_types.Request(kv_store_types.Command.KEY_DUMP)
        req_msg.keyDumpParams = kv_store_types.KeyDumpParams(prefix)
        self._kv_store_cmd_socket.send_thrift_obj(req_msg)

        return self._kv_store_cmd_socket.recv_thrift_obj(
            kv_store_types.Publication)
예제 #7
0
    def get_keys(self, keys):
        ''' Get values corresponding to keys from KvStore.
            It gets from local snapshot KeyVals of the kvstore.
        '''

        req_msg = kv_store_types.Request(kv_store_types.Command.KEY_GET)
        req_msg.keyGetParams = kv_store_types.KeyGetParams(keys)
        self._kv_store_cmd_socket.send_thrift_obj(req_msg)

        return self._kv_store_cmd_socket.recv_thrift_obj(
            kv_store_types.Publication)
예제 #8
0
    def dump_key_with_prefix(self, prefix=""):
        """  dump the hashes of kvstore whose key matches the given prefix
             if prefix is an empty string, the full KV hash is dumped
        """

        req_msg = kv_store_types.Request(kv_store_types.Command.HASH_DUMP)
        req_msg.keyDumpParams = kv_store_types.KeyDumpParams(prefix)
        self._kv_store_cmd_socket.send_thrift_obj(req_msg)

        resp = self._kv_store_cmd_socket.recv()
        return serializer.deserialize_thrift_object(
            resp, kv_store_types.Publication, self._kv_store_cmd_socket.proto_factory
        )
예제 #9
0
    def dump_key_with_prefix(self, prefix=""):
        '''  dump the hashes of kvstore whose key matches the given prefix
             if prefix is an empty string, the full KV hash is dumped
        '''

        req_msg = kv_store_types.Request(kv_store_types.Command.HASH_DUMP)
        req_msg.keyDumpParams = kv_store_types.KeyDumpParams(prefix)
        self._kv_store_cmd_socket.send_thrift_obj(req_msg)

        resp = self._kv_store_cmd_socket.recv()
        if len(resp) == 3 and resp == str('ERR'):
            # KvStore doesn't support HASH_DUMP API yet. Use full dump
            # API instead
            return self.dump_all_with_prefix(prefix)
        else:
            return serializer.deserialize_thrift_object(
                resp, kv_store_types.Publication,
                self._kv_store_cmd_socket.proto_factory)
예제 #10
0
    def dump_all_with_filter(
        self,
        prefix: str = "",
        originator_ids: Optional[List[str]] = None,
        keyval_hash: Optional[Dict[str, kv_store_types.Value]] = None,
    ):
        """  dump the entries of kvstore whose key matches the given prefix
             if prefix is an empty string, the full KV store is dumped
        """

        req_msg = kv_store_types.Request(kv_store_types.Command.KEY_DUMP)
        req_msg.keyDumpParams = kv_store_types.KeyDumpParams(prefix)
        req_msg.keyDumpParams.originatorIds = []
        req_msg.keyDumpParams.keyValHashes = None
        if originator_ids:
            req_msg.keyDumpParams.originatorIds = originator_ids
        if keyval_hash:
            req_msg.keyDumpParams.keyValHashes = keyval_hash

        return self.send_and_recv_thrift_obj(req_msg, kv_store_types.Publication)
예제 #11
0
    def get_spt_infos(self):
        """ get all spanning tree infos
        """

        req_msg = kv_store_types.Request(kv_store_types.Command.FLOOD_TOPO_GET)
        return self.send_and_recv_thrift_obj(req_msg, kv_store_types.SptInfos)
예제 #12
0
    def set_key(self, keyVals):

        req_msg = kv_store_types.Request(kv_store_types.Command.KEY_SET)
        req_msg.keySetParams = kv_store_types.KeySetParams(keyVals)

        return self.send_and_recv_thrift_obj(req_msg, str)