示例#1
0
 def _msgpack_deserializer(key, value, flags):
     if flags == 1:
         return value
     if flags == 2:
         return utils.loads(value)
     raise coordination.SerializationError("Unknown serialization"
                                           " format '%s'" % flags)
示例#2
0
 def _msgpack_deserializer(key, value, flags):
     if flags == 1:
         return value
     if flags == 2:
         return utils.loads(value)
     raise coordination.SerializationError("Unknown serialization"
                                           " format '%s'" % flags)
示例#3
0
文件: file.py 项目: cloudnull/tooz
 def _read_group_id(path):
     with open(path, 'rb') as fh:
         contents = fh.read()
         details = utils.loads(contents)
         if not isinstance(details, (dict)):
             raise TypeError("Expected dict encoded in '%s'"
                             " but got %s instead" % (path,
                                                      type(details)))
         return details['group_id']
示例#4
0
 def _on_member_join(self, event):
     try:
         weight = utils.loads(self._coord.get_member_capabilities(
             self.group_id, event.member_id).get()).get("weight", 1)
     except utils.SerializationError:
         # This node does not seem to have joined with the partitioner
         # system, so just ignore it.
         LOG.warning(
             "Node %s did not join group %s in partition mode, ignoring",
             self.group_id, event.member_id)
     else:
         self.ring.add_node(event.member_id, weight)
示例#5
0
 def __init__(self, coordinator, group_id,
              partitions=DEFAULT_PARTITION_NUMBER):
     members = coordinator.get_members(group_id)
     self.partitions = partitions
     self.group_id = group_id
     self._coord = coordinator
     caps = [(m, self._coord.get_member_capabilities(self.group_id, m))
             for m in members.get()]
     self._coord.watch_join_group(self.group_id, self._on_member_join)
     self._coord.watch_leave_group(self.group_id, self._on_member_leave)
     self.ring = hashring.HashRing([], partitions=self.partitions)
     for m_id, cap in caps:
         self.ring.add_node(m_id, utils.loads(cap.get()).get("weight", 1))
示例#6
0
文件: file.py 项目: cloudnull/tooz
 def _do_get_member_capabilities():
     try:
         with open(member_path, "rb") as fh:
             contents = fh.read()
     except EnvironmentError as e:
         if e.errno == errno.ENOENT:
             if not os.path.isdir(group_dir):
                 raise coordination.GroupNotCreated(group_id)
             else:
                 raise coordination.MemberNotJoined(group_id,
                                                    member_id)
         else:
             raise
     else:
         details = utils.loads(contents)
         if not isinstance(details, (dict)):
             raise TypeError("Expected dict encoded in '%s'"
                             " but got %s instead" % (member_path,
                                                      type(details)))
         return details["capabilities"]
示例#7
0
 def _load_and_validate(self, blob, schema_key):
     data = utils.loads(blob)
     data = _convert_from_old_format(data)
     schema = self._SCHEMAS[schema_key]
     return schema(data)
示例#8
0
文件: file.py 项目: csfreak/tooz
def _load_and_validate(blob, schema_key):
    data = utils.loads(blob)
    data = _convert_from_old_format(data)
    schema = _SCHEMAS[schema_key]
    schema(data)
    return data
示例#9
0
 def _get_member_capabilities():
     capabilities, metadata = self.client.get(encoded_member)
     if capabilities is None:
         raise coordination.MemberNotJoined(group_id, member_id)
     return utils.loads(capabilities)
示例#10
0
 def _loads(blob):
     return utils.loads(blob)
示例#11
0
 def _get_member_capabilities():
     member_path = self._path_member(group_id, member_id)
     index, data = self._client.kv.get(member_path)
     if not data:
         raise coordination.MemberNotJoined(group_id, member_id)
     return utils.loads(data["Value"])
示例#12
0
文件: etcd3gw.py 项目: openstack/tooz
 def _get_member_capabilities():
     prefix_member = self._prefix_group(group_id) + member_id
     result = self.client.get(prefix_member)
     if not result:
         raise coordination.MemberNotJoined(group_id, member_id)
     return utils.loads(result[0])
示例#13
0
文件: file.py 项目: flyingmeat/tooz
def _load_and_validate(blob, schema_key):
    data = utils.loads(blob)
    schema = _SCHEMAS[schema_key]
    schema(data)
    return data
示例#14
0
文件: etcd3gw.py 项目: Kami/tooz
 def _get_member_capabilities():
     prefix_member = self._prefix_group(group_id) + member_id
     result = self.client.get(prefix_member)
     if not result:
         raise coordination.MemberNotJoined(group_id, member_id)
     return utils.loads(result[0])
示例#15
0
文件: etcd3.py 项目: openstack/tooz
 def _get_member_capabilities():
     capabilities, metadata = self.client.get(encoded_member)
     if capabilities is None:
         raise coordination.MemberNotJoined(group_id, member_id)
     return utils.loads(capabilities)
示例#16
0
 def _msgpack_deserializer(key, value, flags):
     if flags == 1:
         return value
     if flags == 2:
         return utils.loads(value)
     raise Exception("Unknown serialization format '%s'" % flags)
示例#17
0
 def _loads(blob):
     return utils.loads(blob)
示例#18
0
def _load_and_validate(blob, schema_key):
    data = utils.loads(blob)
    schema = _SCHEMAS[schema_key]
    schema(data)
    return data