summaryrefslogtreecommitdiffstats
path: root/notes/design
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2005-04-13 15:23:57 +0000
committerLuke Kanies <luke@madstop.com>2005-04-13 15:23:57 +0000
commit5416017c05e44fc635ad14ffdf1ac1163a4cc6e5 (patch)
tree29a33a7dd1389abde8d92219a17beead01ba1f47 /notes/design
parent54e9b5e3561977ea063417da12c46aad2a4c1332 (diff)
downloadpuppet-5416017c05e44fc635ad14ffdf1ac1163a4cc6e5.tar.gz
puppet-5416017c05e44fc635ad14ffdf1ac1163a4cc6e5.tar.xz
puppet-5416017c05e44fc635ad14ffdf1ac1163a4cc6e5.zip
reorganizing
git-svn-id: https://reductivelabs.com/svn/puppet/library/trunk@95 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'notes/design')
-rw-r--r--notes/design99
1 files changed, 99 insertions, 0 deletions
diff --git a/notes/design b/notes/design
new file mode 100644
index 000000000..af134dbdf
--- /dev/null
+++ b/notes/design
@@ -0,0 +1,99 @@
+Phase I:
+ Context
+ The only place you can discover non-object state
+ e.g., hard classes, schedules, hostgroups, etc.
+
+Phase II:
+ Objects
+ Build the objects up based on developed Context
+ This step stores triggers with the objects but cannot yet react to them
+
+Phase III:
+ Run
+ Results in a list of operations
+
+Phase IV:
+ Check:
+ Results in list of dirty objects
+
+Phase V:
+ Fix
+ Does all of the work
+ Results in triggers being pulled
+ (triggers are just operations, aren't they?)
+
+Phase V:
+ Run triggers
+ Might result in more triggers
+ mmm, recursion
+
+Phase I:
+ Build the data structures which we will or will not use
+
+Phase II:
+ Decide which data structures we will use, and add all hooks for triggers
+ and such
+
+Phase III:
+ Analyze the system for compliance with what we think it's supposed to
+ look like
+
+Phase IV:
+ Do all the work that we've determined needs to be done
+
+Phase V:
+ React with any triggers, ad infinitum
+
+-------------
+The entire thing needs to be OO based, and every object needs to have both
+an 'as_string' and an 'as_boolean' method that gets implicitly called.
+
+Methods each active object needs to have:
+ boolean
+ is the object configured
+ on
+ enables the object
+ off
+ disables the object
+ prepare?
+ uh, does stuff in preparation
+ check
+ compares configured state to server state
+ converge (still a bad name)
+ converges server state to configured state
+
+---------------
+What kind of builtin objects do I need?
+
+FileConfig
+ Straight monitoring of a file and verifying on-disk config (perms, et al)
+ Classes to set or actions to trigger if the file changes
+ need to differentiate inode changes from data changes
+FileChunk
+ Some kind of format that can be filled in with values
+ Needs to be able to specify fixed or variable fields, yuck
+CreatedFile
+ Collections of chunks
+ Do the chunks have to be ordered? Does that order come from order in
+ the file or some other way? Probably have a separated "ordered file"
+ object
+ Compares to the file on disk
+ It'd be really, really nice to have this in a database somewhere
+ Classes to set or actions to trigger if the file changes
+
+Process
+ Describes a running process to the greatest extent possible
+ Classes to set or actions to trigger if anything happens with the process
+
+Link
+ something similar to cfengine's Copy, something that says 'always make sure
+ this file is pinned to some other file'
+ It'd be cool if this system would automagically pin every file on the
+ system to a central repository, so you really could say every file
+ on the system was managed
+ or at least, every file that exists in the central repository
+
+Package
+ Maintains the list of installed packages, and has some means for retrieving
+ packages from a central location
+