summaryrefslogtreecommitdiff
path: root/cloudinit/registry.py
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2015-08-07 14:45:01 -0500
committerScott Moser <smoser@ubuntu.com>2015-08-07 14:45:01 -0500
commit9975e06338bb646dbefe0749f7a8f88974d44d24 (patch)
tree17b072271f8faa303bbfdde1ff33496cc320ecec /cloudinit/registry.py
parent328cc7fbaf4d60b51193fb8c14e52d8c6f3273f2 (diff)
parent95bfe5d5150e2bf0a26dd1b97578c4fd04152365 (diff)
downloadvyos-cloud-init-9975e06338bb646dbefe0749f7a8f88974d44d24.tar.gz
vyos-cloud-init-9975e06338bb646dbefe0749f7a8f88974d44d24.zip
Add initial reporting module and events
Diffstat (limited to 'cloudinit/registry.py')
-rw-r--r--cloudinit/registry.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/cloudinit/registry.py b/cloudinit/registry.py
new file mode 100644
index 00000000..04368ddf
--- /dev/null
+++ b/cloudinit/registry.py
@@ -0,0 +1,37 @@
+# Copyright 2015 Canonical Ltd.
+# This file is part of cloud-init. See LICENCE file for license information.
+#
+# vi: ts=4 expandtab
+import copy
+
+
+class DictRegistry(object):
+ """A simple registry for a mapping of objects."""
+
+ def __init__(self):
+ self.reset()
+
+ def reset(self):
+ self._items = {}
+
+ def register_item(self, key, item):
+ """Add item to the registry."""
+ if key in self._items:
+ raise ValueError(
+ 'Item already registered with key {0}'.format(key))
+ self._items[key] = item
+
+ def unregister_item(self, key, force=True):
+ """Remove item from the registry."""
+ if key in self._items:
+ del self._items[key]
+ elif not force:
+ raise KeyError("%s: key not present to unregister" % key)
+
+ @property
+ def registered_items(self):
+ """All the items that have been registered.
+
+ This cannot be used to modify the contents of the registry.
+ """
+ return copy.copy(self._items)