zuul/zuul/lib/collections.py
Simon Westphahl b23b9d7844 Implementation of Zookeeper backed event queues
Event queues are namespaced by tenant and event type (management, result
and trigger). Events will be stored as sequential nodes in Zookeeper
using the follwing base path:

    /zuul/events/tenants/<tenant-name>/{mangement,result,trigger}/

This allows us to use a simple per-tenant lock in a multi scheduler
deployment that needs to be held while processing events and pipelines.

Change-Id: I9c4835e6a6ac5a83d9f63af146c8dddea9789108
2021-03-18 09:24:07 +01:00

27 lines
895 B
Python

# Copyright 2020 BMW Group
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from collections import defaultdict
class DefaultKeyDict(defaultdict):
"""A defaultdict with the key passed to the default factory."""
def __init__(self, default_factory):
self.factory = default_factory
def __missing__(self, key):
item = self[key] = self.factory(key)
return item