示例#1
0
文件: ipc.py 项目: csfreak/tooz
 def _create_group():
     with self._lock:
         group_list = self._read_group_list()
         if group_id in group_list:
             raise coordination.GroupAlreadyExist(group_id)
         group_list.add(group_id)
         self._write_group_list(group_list)
示例#2
0
 def _create_group():
     status, results = self.client.transaction(
         compare=[self.client.transactions.version(encoded_group) == 0],
         success=[self.client.transactions.put(encoded_group, b"")],
         failure=[],
     )
     if not status:
         raise coordination.GroupAlreadyExist(group_id)
示例#3
0
 def _create_group():
     group_path = self._path_group(group_id)
     # create with Check-And-Set index 0 will only succeed if the key
     # doesn't exit
     result = self._client.kv.put(group_path, "", cas=0)
     if not result:
         raise coordination.GroupAlreadyExist(group_id)
     return result
示例#4
0
 def test_start_raises(self):
     self.coordinator = coordination.RugCoordinator(self.queue)
     self.fake_coord.create_group.side_effect = (
         tz_coordination.GroupAlreadyExist(self.coordinator.group))
     self.fake_coord.join_group.side_effect = (
         tz_coordination.MemberAlreadyExist(
             self.coordinator.host, self.coordinator.group))
     return self.test_start()
示例#5
0
 def _create_group_handler(async_result, timeout, group_id):
     try:
         async_result.get(block=True, timeout=timeout)
     except exceptions.NodeExistsError:
         raise coordination.GroupAlreadyExist(group_id)
     except exceptions.NoNodeError:
         raise coordination.ToozError("tooz namespace has not been created")
     except exceptions.ZookeeperError as e:
         raise coordination.ToozError(str(e))
示例#6
0
 def _do_create_group():
     if os.path.exists(os.path.join(group_dir, ".metadata")):
         # NOTE(sileht): We update the group metadata even
         # they are already good, so ensure dict key are convert
         # to unicode in case of the file have been written with
         # tooz < 1.36
         self._update_group_metadata(group_meta_path, group_id)
         raise coordination.GroupAlreadyExist(group_id)
     else:
         fileutils.ensure_tree(group_dir)
         self._update_group_metadata(group_meta_path, group_id)
示例#7
0
 def _do_create_group():
     if os.path.isdir(group_dir):
         raise coordination.GroupAlreadyExist(group_id)
     else:
         details = {
             'group_id': group_id,
         }
         details_blob = utils.dumps(details)
         utils.ensure_tree(group_dir)
         with open(group_meta_path, "wb") as fh:
             fh.write(details_blob)
示例#8
0
文件: redis.py 项目: BoTranVan/tooz
 def _create_group(script):
     encoded_group = self._encode_group_id(group_id)
     keys = [
         encoded_group,
         self._groups,
     ]
     args = [
         self._encode_group_id(group_id, apply_namespace=False),
     ]
     result = script(keys=keys, args=args)
     result = strutils.bool_from_string(result)
     if not result:
         raise coordination.GroupAlreadyExist(group_id)
示例#9
0
 def _create_group_handler(self, async_result, timeout, timeout_exception,
                           group_id):
     try:
         async_result.get(block=True, timeout=timeout)
     except timeout_exception as e:
         utils.raise_with_cause(coordination.OperationTimedOut,
                                encodeutils.exception_to_unicode(e),
                                cause=e)
     except exceptions.NodeExistsError:
         raise coordination.GroupAlreadyExist(group_id)
     except exceptions.NoNodeError as e:
         utils.raise_with_cause(tooz.ToozError,
                                "Tooz namespace '%s' has not"
                                " been created" % self._namespace,
                                cause=e)
     except exceptions.ZookeeperError as e:
         utils.raise_with_cause(tooz.ToozError,
                                encodeutils.exception_to_unicode(e),
                                cause=e)
示例#10
0
文件: etcd3gw.py 项目: Kami/tooz
 def _create_group():
     encoded_group = self._encode_group_id(group_id)
     txn = {
         'compare': [{
             'key': encoded_group,
             'result': 'EQUAL',
             'target': 'VERSION',
             'version': 0
         }],
         'success': [{
             'request_put': {
                 'key': encoded_group,
                 # We shouldn't need a value, but etcd3gw needs it for
                 # now
                 'value': encoded_group
             }
         }],
         'failure': []
     }
     result = self.client.transaction(txn)
     if not result.get("succeeded"):
         raise coordination.GroupAlreadyExist(group_id)
示例#11
0
 def _create_group():
     if not self.client.add(encoded_group, {}, noreply=False):
         raise coordination.GroupAlreadyExist(group_id)
     self._add_group_to_group_list(group_id)