summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorNarayan Desai <desai@mcs.anl.gov>2008-12-20 23:49:59 +0000
committerNarayan Desai <desai@mcs.anl.gov>2008-12-20 23:49:59 +0000
commit425cc2679d54ba90d24972356b988252461039bd (patch)
tree0ed3dfd98a421e05a2a58fb97e1205b486f7f4e2 /doc
parent45b4a330dcf8a862ab271a50cd7b052a77a2e0db (diff)
downloadbcfg2-425cc2679d54ba90d24972356b988252461039bd.tar.gz
bcfg2-425cc2679d54ba90d24972356b988252461039bd.tar.bz2
bcfg2-425cc2679d54ba90d24972356b988252461039bd.zip
add initial revision of metadata redesign doc
git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@4996 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'doc')
-rw-r--r--doc/composable-metadata46
1 files changed, 46 insertions, 0 deletions
diff --git a/doc/composable-metadata b/doc/composable-metadata
new file mode 100644
index 000000000..29673b315
--- /dev/null
+++ b/doc/composable-metadata
@@ -0,0 +1,46 @@
+This documents the redesign of the Metadata subsystem.
+
+Goals
+* Separate core metadata (groups, etc) functionality from augmentors
+* Enable metadata integration with external data sources
+* Make metadata features (group inclusion, categories) usable from
+ external datasources
+
+The basic idea of this redesign is to split Metadata functions into
+two major components. One master MetadataPlugin instance handles
+client identification/authentication, profile assertion, group
+categories, and metadata instance construction. Multiple
+MetadataConnectorPlugin instances each contribute additional group
+memberships and a set of per-instance key/value pairs. This data is
+merged into the client metadata instance by the master
+MetadataPlugin.
+
+Use Cases
+* Mapping external data into client metadata instances
+** Probes
+** Properties
+** External network management
+** Monitoring
+** LDAP data
+
+
+API
+
+* Bcfg2.Server.Core.Core
+** get_metadata()
+* Bcfg2.Server.Plugin.MetadataPlugin
+** add_client()
+** remove_client()
+** set_profile()
+** resolve_client()
+** get_initial_metadata()
+** merge_additional_metadata()
+* Bcfg2.Server.Plugin.MetadataConnectorPlugin
+** get_additional_metadata()
+
+Metadata Resolution Control Flow
+1. B.S.P.MP.resolve_client() -> canonical client name
+2. B.S.P.MP.get_initial_metadata() -> partial ClientMetadata inst
+3. [B.S.P.MCP.get_additional_metadata()] ->
+ [([group list], {data dictionary})]
+4. [B.S.P.MP.merge_additional_metadata()]