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)
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)
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
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()
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))
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)
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)
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)
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)
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)
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)