summaryrefslogtreecommitdiffstats
path: root/CHANGELOG
blob: 3deef6fb881da2871cf023a0949f563fc6559277 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
0.24.x
    Fixed #1473 - Puppetd stops with error after puppetmasterd 
    is unavailable

    Fixed #1354 - yum provider problems with RHEL 3

    Fixed #1633 - Added support for --detailed-exits to bin/puppet

    Fixed #381 - Allow Allow multiple overrides in one statement

    Fixing #947 - pluginsync no longer fails poorly when no plugins exist

    Fixed #981 - Removed 'Adding aliases' info message
    
    Fixing #1089 - Log messages are now tagged with the log level,
    making it easier to match messages in the 'tagmail' report.
    
    Fixing #1098 - Multiline strings now correctly increment the line count

    Fixing #1614 - Environments no longer have to be listed out

    Fixed #1628 - Changed node search to use certname rather than Facter 
    hostname
    
    Fixed #1613 - The client environment will be substituted when looking 
    up settings.

    Updated puppet binary documentation 

    Feature #1624 - Added RBAC roles to solaris user provider

    Fixed #1586 - Specifying "fully qualified" package names in Gentoo

    Fixed #1620 - Add 'sles' to Puppet confines when 'suse' is used

    Fixed #1585 - Allow complex 'if' and variable expressions

    Fixed #1564 - Saving File#checksum to state.yaml broken

    Fixed #1603 - Added support for running Puppet inside a Rack application
    (mod_rails) with Passenger and Apache

    Fixed #1596 - Deploying file resources with ++ generates error

    Modified the group and zone resource types to no longer call
    'currentpropvalues' as a means of setting all values to absent.
    There should be no behaviour change from this change.

    Modified the behaviour of resource-level 'retrieve' -- it only
    calls 'retrieve' on each property if the resource exists.

    Fixed #1622 - Users and their groups should again add in one transaction

    Fixed #791 - You should now be able to create and find a user/group in one transaction.

    Fixed #1610 - Raise "Filebucketed" messages to Notice priority
    
    FIxed #1530 - ssh_authorized_keys provider does not crash anymore on SSH type 1 keys

    Added a number of confines to package providers

    Fixed #1609 - Added confines for the Gentoo, FreeBSD and 
    SMF (Solaris) service providers 

    Fixed #1608 - Added ubuntu to defaultfor for apt provider

    Fixed #1607 - Added ubuntu to defaultfor for Debian service
    provider

    Fixed #1045 - Multiple metaparams all get added to resources.
    
    Fixed #1472 -- defined, exported resources in the current compile 
    now get expanded correctly.

    Fixed #1595 - Internally, Property#retrieve is no longer called
    when no 'should' value is available for a resource.

    Fixed #1588 - Fixed puppetca --clean --all 

    Fixed #1584 - Added support for appended variables

    Fixed #1554 - Added support for multiple template directories

    Fixed #1500 - puppetrun not working

    Fixed #1579 and #1580 - errors in the Puppet RPM spec file

    Fixed #1572 -- file purging now fails if remote sources do not exist.
    
    Fixed #1521 -- ldap user and password are now used with the default connection.

    Fixed issues with file descriptors leaking into subprocesses

    Fixed #1568 - createpackage.sh

    Fixed #1571 - Puppet::Util::binary returns incorrect results

    Fixed #1553 - Puppet and Facter cannot both install the plist module into two different locations

    Adjusted hpuxuseradd user provider to confine to HP-UX and fixed HP-UX user provider path regression

    Fixed debug messages in package type - thanks to Todd Zullinger for this fix
    
    Fixed #1566 - changed password property of the user type

    Fixed debug messages in package type

    Updated Red Hat spec file

    Fixes #1455 - Adds HP-UX support for user type

    Fixes #1551 puppetmaster.freshness xmlrpc call returns incorrect type

    Fixes #1554 - Fix exception for undefined hostname

    Fixed #1533 - changed permissions for man directory

    Added daemontools and runit providers for service type

    Added simple rake task for running unit tests

    Added spec Rake task

    Fixed #1526 - Fixed leak in template

    Fixed #1506 - Removed storeconfig duplicate indexes
    
    Fixed #1457 - case insensitive match for error
    
    Fixed #1488 - Moved individual functions out of functions.rb into 
    lib/puppet/parser/functions directory.  New functions should be create     in this directory.

    Fixed #1508 - Added HP-UX package provider

    Fixed #1502 - Fixed poor stored configuration performance

    Fixed #1510 - Storeconfiguration fixed for Rails 2.1

    Add the -P/--ping option to puppetrun, fixes #1501

    Fixed #1394 - Added stored configuration clearing script to /ext
    
    Fixed #1442 - replaced use of Facter for report titling with certname

    Fixed $1456 - add proxy configuration capability to yum repo

    Fixed #1457 - removed confine warning

    A working script to create an OS X pkg out of the Puppet repository

    Fixed #1441 - Updated console colours

    Expose all puppet variables as instance member variables of the template wrapper.
    This helps resolve redmine #1427, by providing a safe mechanism to access variables.
    
     * Implement Puppet::Parser::Scope#to_hash, which returns a hash containing all the
       variable bindings in the current and, optionally, parent scope.
     * Use that to set instance member variables into Puppet::Parser::Templatewrapper
     * Report the time taken for variable binding at debug level, to help identify any
       performance regression that is encountered in the real world.
     * Rename the @scope and @file members of the template wrapper, to avoid clashing
       with a scope variable exposed within puppet.

    Ensure that we consistently use either string #{} interpolation or String.%
    interpolation, not both, to avoid issues where a #{} interpolated value
    contains a % character.

    Feature #1476: Allow specification of --bindir --sbindir --sitelibdir --mandir --destdir 
    in installation
    
    Added feature #1241 : Improve performance of group lookups

    Fixed bug #1448: Puppet CA incorrectly writes out all certs to inventory .txt on each 
    certificate signing

    Fixing puppetlast to make it work with 0.24.5 / 0.25.  Made puppetlast work on 0.24.5 
    by using the YAML indirector
 
0.24.5
    You can now select the encoding format when transferring the catalog,
    with 'yaml' still being the default but 'marshal' being an option.
    This is because testing has shown drastic performance differences
    between the two, with up to 70% of compile time being spent
    in YAML code.  Use the 'catalog_format' setting to choose your format,
    and the setting must be set on the client.

    Fixed #1431 - Provider confines must now specify similar tests in one call.
    I.e., you can't do confine :operatingsystem => %w{a b} and then
    confine :operatingsystem => %w{b c}; you'd need to do them in one command.
    This now-obsolete behaviour does not seem to be used anywhere.
    The fix for #1431 is actually just removing the tests that exposed
    this change; the change happened when I refactored how confines work.

    Removed faulty interface type

    Updated /spec/unit/rails.rb test

    Fix #1426 - services on redhat are restarted again and status is 
    called from the Red Hat provider

    Fixed #1414 - Return code from waitpid now right shifted 8 bits

    Fixed #174 - a native type type for managing ssh authorized_keys 
    files is available.

    Further moves from the examples directory and ext directory

    Fixed #1397 One line fix, fail instead of log

    Moved debian to conf and updated examples directory

    Fixed #1368 - updated Red Hat init scripts
 
    Added message referencing ReductiveLabs build library

    Fixed #1396 - Added sha1 function from DavidS to core
    
    Fixed #1399 - the ldap user provider now knows it can manage
    passwords.
    
    Fixed #1272 - if you provide a group name as the gid to an ldap
    user, the name will be converted to a gid.  Note that this only
    looks up ldap groups, at this point; if you want to set an ldap
    user's primary group to a local group, you have to specify the GID.

    Fixed #1226 - gems can now specify source repositories.

    Fixed #1232 - the rundir no longer specifies a user/group,
    and there are now client- and server-specific yaml directories.

    Fixed 1240 - puppet will function more like puppetd if graphing
    or reporting are enabled.
    
    Fixed #1231 - Exceptions during initialization should now be clearer.

    Fixed #1006 - puppetrun --class works again.  I added the class
    membership testing to the Ldap node terminus, and added tests,
    so it shouldn't break again.

    Fixed #1114 - Facts in plugin directories should now be autoloaded,
    as long as you're using Facter 1.5.

    Fixed #1195 - Updated Gentoo init scripts

    Fixed #1367 - Updated Rakefile for new daily builds

    Fixed #1370 - removed test/util/loadedfile.rb tests
    
    Fixed #1221 - aliases to titles now work for resources.
    
    Fixed #1012 - templates in the templatedir are preferred to module templates.

    Fixed #707 - special '@reboot'-style cron jobs work again.

    Fixed #1360 - allowdupe works on groups again.

    Fixed #1369 - the init service provider now supports HP-UX.

    Removed support for the 'node_name' setting in LDAP and external node 
    lookups.

    Also removed support for 'default' nodes in external nodes.
    LDAP nodes now use the certificate name, the short name, and 'default',
    but external nodes just use the certificate name and any custom terminus
    types will use just the certificate name.
    
    Fixing #1168 (for 0.24.x) -- automatically downcasing the fqdn.
    Also requiring that passed in certnames be downcased; the setting
    system isn't currently flexible enough to automatically downcase
    it for the user.

    Adding a ResourceTemplate class for using templates directly
    within resources (i.e., client-side templates).  This would really
    only be used for composite resources that pass the results of the
    template on to generated resources.

    Exporting or collecting resources no longer raises an exception
    when no storeconfigs is enabled, it just produces a warning.

    Always using the cert name to store yaml files, which fixes #1178.
    The Master handler previously provided the support for the :node_name
    setting, and that functionality has now been moved into the Node
    class.  At the same time, the names to search through have been
    changed somewhat:  Previously, the certificate name and the 
    hostname were both used for searching, but now, the cert name
    is always searched first (unless node_name == facter), but only
    the Facter hostname, domain, and fqdn are used otherwise.  We no
    longer split the cert name, only the hostname/domain/fqdn.

    Fixing transaction support for prefetching generated resources.

    Adding support for settings within the existing Facter provider confines.

    Moving all confine code out of the Provider class, and fixing #1197. 
    Created a Confiner module for the Provider class methods, enhanced 
    the interface between it and the Confine class to make sure binary 
    paths are searched for fresh each time.

    Modified the 'factpath' setting to automatically configure
    Facter to load facts there if a new enough version of
    Facter is used.

    Crontab provider: fix a parse error when a line begins with a space 
    character (fixes #1216)

    Instead of deleting the init scripts (with --del) we should simply 
    disable it with chkconfig service off, and respectfully do the same 
    for enable => true;
 
    Added ldap providers for users and groups.

    Added support for the --all option to puppetca --clean.  If
    puppetca --clean --all is issued then all client certificates
    are removed.
 
    Resources now return the 'should' value for properties from
    the [] accessor method (they previously threw an exception when
    this method was used with properties).  This shouldn't have any
    affect functionally; it just makes the method equivalent to 'should'
    for properties, but it works for all attribute types now.

    Modified the 'master' handler to use the Catalog class to
    compile node configurations, rather than using the Configuration
    handler, which was never used directly.  I removed the Configuration
    handler as a result.

    Modified the 'master' handler (responsible for sending configurations
    to clients) to always return Time.now as its compile date, so
    configurations will always get recompiled.

    Fixed #1184 -- definitions now autoload correctly all of the time.

    Removed the code from the client that tries to avoid recompiling
    the catalog. The client will now always recompile, assuming it
    can reach the server.  It will still use the cached config if
    there's a failure.

    Fixing #1173 -- classes and definitions can now have the same
    name as a directory with no failures.

    Saving new facts now expires any cached node information.

    Switching how caching is handled, so that objects now all
    have an expiration date associated with them.  This makes it
    much easier to know whether a given cached object should be used
    or if it should be regenerated.

    Changing the default environment to production.

0.24.4
    Pass source to pkg_add via the PKG_PATH environment variable if
    it ends in a '/' indicating it is a directory. Allows pkg_add
    to resolve dependancies, and make it possible to specify packages
    without version numbers.

    Fixing #571 -- provider suitability is now checked at resource
    evaluation time, rather than resource instantiation time.  This
    means that you don't catch your "errors" as early, but it also
    means you should be able to realistically configure a whole host
    in one run.

    Moved the configuration of the Node cache to the puppetmasterd
    executable, since it otherwise causes caches to be used in all
    cases, which we don't want (e.g., bin/puppet was using them).

    Ported #198 man page creation functionality to 0.24.x branch and
    added man pages and man page creation logic to install.rb.  The
    man pages are stored in man/man8 and will install to config::CONFIG
    mandir/man8.

    Fixing #1138 -- the yamldir is automatically created by the
    server now that it's in the :puppetmasterd section rather than
    a separate :yaml section.

    Disabling http keep-alive as a means of preventing #1010.
    There is now a constant in Puppet::Network::HttpPool that will
    disable or enable this feature, but note that we determined
    that it can cause corruption, especially in file serving (but
    it's client-side corruption).

    Applying patch by Ryan McBride to fix OpenBSD package 
    matching.  The actual problem was caused by the fix to #1001.

    Found all instances of methods where split() is used without
    any local variables and added a local variable -- see
    http://snurl.com/21zf8.  My own testing showed that this
    caused memory growth to level off at a reasonable level.
    Note that the link above says the problem is only with class
    methods, but my own testing showed that it's any method that
    meets these criteria.  This is not a functional change, but
    should hopefully be the last nail in the coffin of #1131.

    Found an array that leaked pretty quickly between reparsing
    files, thanks to work by Adam Jacob and Arjuna Christenson
    (the finding, not the leak).  I'm going to act like this
    fixes #1131, at least for now, but I doubt it does,
    since that shows general memory growth over time, whereas
    the leak here should go away as soon as files are reparsed
    (because the parser is holding the reference to the leaking
    array).

    Fixed #1147: Cached nodes are correctly considered out of
    date if the node facts have been updated (thus causing
    node facts to again be available in manifests, for those
    cases where they were not).

    Fixed #1137: The certificate name is correctly being added
    to the facts hash.

    Fixed #1136: Verbose and Debug no longer clobber each other.

    Hopefully *finally* fixed the "already being managed" problem
    (#1036).  The problem only cropped up if there was a failure
    when trying to manage the system -- this would cause the
    setting-based resources not to get cleaned up.

0.24.3
    Modified the ldap node terminus to also use the facts version
    as the version for a node, which should similarly encourage the
    use of the yaml cache.  (Related to #1130)

    Caching node information in yaml (I figured caching in memory will
    cause ever-larger memory growth), and changing the external node
    terminus to use the version of the facts as their version.  This
    will usually result in the cached node information being used,
    instead of always hitting the external node app during file
    serving. Note that if the facts aren't changed by the client,
    then this will result in the cached node being used, but at this
    point, the client always updates its facts.  (#1130)

    Fixing #1132 -- host names can now have dashes anywhere.
    (Patch by freiheit.)

    Fixing #1118 -- downloading plugins and facts now ignores noop.
    Note that this changes the behaviour a bit -- the resource's
    noop setting always beats the global setting (previously,
    whichever was true would win).

    The change in checksums from 'timestamp' to 'mtime' no longer
    result in updates on every run (#1116).

    Aliases again work in relationships (#1094).

    The CA serial file will no longer ever be owned by
    root (#1041).

    Fixing the rest of #1113: External node commands can specify
    an environment and Puppet will now use it.

    Partially fixing #1113: LDAP nodes now support environments,
    and the schema has been updated accordingly.

    Always duplicating resource defaults in the parser, so that
    stacked metaparameter values do not result in all resources
    that receive a given default also getting those stacked
    values.

0.24.2
    Fixing #1062 by moving the yamldir setting to its own yaml
    section.  This should keep the yamldir from being created
    on clients.

    Fixed #1047 -- Puppet's parser no longer changes the order
    in which statements are evaluated, which means that case
    statements can now set variables that are used by other
    variables.

    Fixed #1063 -- the master correctly logs syntax errors when
    reparsing during a single run.

    Removed the loglevels from the valid values for `logoutput`
    in the Exec resource type -- the log levels are specified
    using the `loglevel` parameter, not `logoutput`.  This never
    worked, or at least hasn`t for ages, and now the docs are
    just correct.

    Somewhat refactored fileserving so that it no longer caches
    any objects, nor does it use Puppet's RAL resources.  In the
    process, I fixed #894 (you can now copy links) and refactored
    other classes as necessary.  Mostly it was fixing tests.

    Hopefully partially fixed #1010 -- clients should now fail
    to install files whose checksums do not match the checksum
    from the server.

    Fixed #1018 -- resources now have their namevars added as
    aliases in the resource catalog, just like they were added
    in the resource classes.

    Fixed #1037 -- remote unreadable files no longer have the
    permission denied exceptions caught, thus forbidding them
    from being replaced with 'nil'.

    Fixed #1043 -- autoloading now searches the plugins directory
    in each module, in addition to the lib directory.  The 'lib'
    directory is also deprecated, but supported for now to give
    people a chance to convert.

    Fixed #1003 -- Applying DavidS's patch to fix searching for
    tags in sql.

    Fixed #992 -- Puppet is now compatible with gems 1.0.1.

    Fixed #968 again, this time with tests -- parseonly works,
    including not compiling the configurations, and also storeconfigs
    is no longer required during parse-testing.

    Fixed #1021 -- the problem was that my method of determining
    the in-degree sometimes resulted in a lower number than the
    number of in-edges.

    Fixed #997 -- virtual defined types are no longer evaluated.
    NOTE: This introduces a behaviour change, in that you previously
    could realize a resource within a virtual defined resource, and now
    you must realize the entire defined resource, rather than just
    the contained resource.

    Fixed #1030 - class and definition evaluation has been significantly
    refactored, fixing this problem and making the whole interplay
    between the classes, definitions, and nodes, and the Compile class much
    cleaner.

    Exec resources must now have unique names, although the commands can still
    be duplicated.  This is easily accomplished by just specifying a unique
    name with whatever (unique or otherwise) command you need.

    Fixed #989 -- missing CRL files are correctly ignored, and the
    value should be set to 'false' to explicitly not look for these
    files.

    Fixed #1017 -- environment-specific modulepath is no longer ignored.

    Fixing #794 -- consolidating the gentoo configuration files.

    Fixing #976 -- both the full name of qualified classes and
    the class parts are now added as tags.  I've also
    created a Tagging module that we should push throughout
    the rest of the system that uses tags.

    Fixing #995 -- puppetd no longer dies at startup if the server
    is not running.

    Fixing #977 -- the rundir is again set to 1777.

    Fixed #971 -- classes can once again be included multiple
    times.

    Added builtin support for Nagios types using
    Naginator to parse and generate the files.

0.24.1
    Updated vim filetype detection. (#900 and #963)

    Default resources like schedules no longer conflict with
    managed resources. (#965)

    Removing the ability to disable http keep-alive, since
    it didn't really work anyway and it should no longer
    be necessary.

    Refactored http keep-alive so it actually works again.
    This should be sufficient enough that we no longer need the
    ability to disable keep-alive.  There is now a central
    module responsible for managing HTTP instances, along with
    all certificates in those instances.

    Fixed a backward compatibility issue when running 0.23.x
    clients against 0.24.0 servers -- relationships would
    consistently not work. (#967)

    Closing existing http connections when opening a new one,
    and closing all connections after each run. (#961)

    Removed warning about deprecated explicit plugins mounts.

0.24.0 (misspiggy)
    Modifying the behaviour of the certdnsnames setting.  It now defaults
    to an empty string, and will only be used if it is set to something
    else.  If it is set, then the host's FQDN will also be added as
    an alias.  The default behaviour is now to add 'puppet' and
    'puppet.$domain' as DNS aliases when the name for the cert being
    signed is equal to the signing machine's name, which will only
    be the case for CA servers.  This should result in servers always
    having the alias set up and no one else, but you can still override
    the aliases if you want.

    External node support now requires that you set the 'node_terminus'
    setting to 'exec'.  See the IndirectionReference on the wiki for more
    information.

    http_enable_post_connection_check added as a configuration
    option for puppetd.  This defaults to true, which validates the server
    SSL certificate against the requested host name in new versions of ruby.
    See #896 for more information.

    Mounts no longer remount swap filesystems.

    Slightly modifying how services manage their list of paths
    (and adding documention for it).  Services now default
    to the paths specified by the provider classes.

    Removed 'type' as a valid attribute for services, since it's been
    deprecated since the creation of providers.

    Removed 'running' as a valid attribute for services, since it's
    been deprecated since February 2006.

    Added modified patch by Matt Palmer which adds a 'plugins' mount,
    fixing #891.  See PluginsInModules on the wiki for information on
    usage.

    Empty dbserver and dbpassword settings will now be ignored when
    initializing Rails connections (patch by womble).

    Configuration settings can now be blank (patch by womble).

    Added calls to endpwent/endgrent when searching for user and group IDs,
    which fixes #791.

    Obviated 'target' in interfaces, as all file paths were automatically
    calculated anyway.  The parameter is still there, but it's
    not used and just generates a warning.

    Fixing some of the problems with interface management on Red Hat.
    Puppet now uses the :netmask property and does not try to set
    the bootproto (#762).

    You now must specify an environment and you are required to specify
    the valid environments for your site. (#911) 

    Certificates now always specify a subjectAltName, but it defaults
    to '*', meaning that it doesn't require DNS names to match.  You
    can override that behaviour by specifying a value for
    'certdnsnames', which will then require that hostname as a match (#896).

    Relationship metaparams (:notify, :require, :subscribe, and
    :before) now stack when they are collecting metaparam values
    from their containers (#446).  For instance, if a resource
    inside a definition has a value set for 'require', and you call
    the definition with 'require', the resource gets both requires,
    where before it would only retain its initial value.

    Changed the behavior of --debug to include Mongrel client
    debugging information.  Mongrel output will be written to
    the terminal only, not to the puppet debug log.  This should
    help anyone working with reverse HTTP SSL proxies. (#905)

    Fixed #800 -- invalid configurations are no longer
    cached.  This was done partially by adding a relationship
    validation step once the entire configuration is created,
    but it also required the previously-mentioned changes
    to how the configuration retrieval process works.

    Removed some functionality from the Master client,
    since the local functionality has been replaced
    with the Indirector already, and rearranging how configuration
    retrieval is done to fix ordering and caching bugs.

    The node scope is now above all other scopes besides
    the 'main' scope, which should help make its variables
    visible to other classes, assuming those classes were
    not included in the node's parent.

    Replaced GRATR::Digraph with Puppet::SimpleGraph as
    the base class for Puppet's graphing.  Functionality
    should be equivalent but with dramatically better
    performance.

    The --use-nodes and --no-nodes options are now obsolete.
    Puppet automatically detects when nodes are defined, and if
    they are defined it will require that a node be found,
    else it will not look for a node nor will it fail if it
    fails to find one.

    Fixed #832. Added the '--no-daemonize' option to puppetd and
    puppetmasterd.  NOTE: The default behavior of 'verbose' and
    'debug' no longer cause puppetd and puppetmasterd to not
    daemonize.

    Added k5login type. (#759)

    Fixed CA race condition. (#693)

    Added shortname support to config.rb and refactored addargs

0.23.2
    Fixed the problem in cron jobs where environment settings
    tended to multiple. (#749)

    Collection of resources now correctly only collects exported
    resources again.  This was broken in 0.23.0. (#731)

    'gen_config' now generates a configuration with
    all parameters under a heading that matches the
    process name, rather than keeping section headings.

    Refactored how the parser and interpreter relate,
    so parsing is now effectively an atomic process (thus
    fixing #314 and #729).  This makes the interpreter less
    prone to error and less prone to show the error to the
    clients.  Note that this means that if a configuration
    fails to parse, then the previous, parseable configuration
    will be used instead, so the client will not know that
    the configuration failed to parse.

    Added support for managing interfaces, thanks to work
    by Paul Rose.

    Fixed #652, thanks to a patch by emerose; --fqdn again
    works with puppetd.

    Added an extra check to the Mongrel support so that
    Apache can be used with optional cert checking, instead
    of mandatory, thus allowing Mongrel to function as the CA.
    This is thanks to work done by Marcin Owsiany.

0.23.1 (beaker)
    You can now specify relationships to classes, which work
    exactly like relationships to defined types:
        require => Class[myclass]
    This works with qualified classes, too.

    You can now do simple queries in a collection of
    exported resources.  You still cannot do multi-condition queries,
    though. (#703)

    puppetca now exits with a non-zero code if it cannot
    find any host certificates to clean. (Patch by Dean
    Wilson.)

    Fully-qualified resources can now have defaults. (#589)

    Resource references can now be fully-qualified names,
    meaning you can list definitions with a namespace as
    dependencies.  (#468)

    Files modified using a FileType instance, as ParsedFile
    does, will now automatically get backed up to the filebucket
    named "puppet".

    Added a 'maillist' type for managing mailing lists.

    Added a 'mailalias' type for managing mail aliases.

    Added patch by Valentin Vidic that adds the '+>' syntax to
    resources, so parameter values can be added to.

    The configuration client now pulls libraries down to $libdir,
    and all autoloading is done from there with full support
    for any reloadable file, such as types and providers. (#621)
    Note that this is not backward compatible -- if you're using
    pluginsync right now, you'll need to disable it on your clients
    until you can upgrade them.

    The Rails log level can now be set via (shockingly!) the
    'rails_loglevel' parameter (#710).  Note that this isn't
    exactly the feature asked for, but I could not find a
    way to directly copy ActiveRecord's concept of an environment.

    External node sources can now return undefined classes (#687). 

    Puppet clients now have http proxy support (#701).

    The parser now throws an error when a resource reference
    is created for an unknown type.  Also, resource references
    look up defined types and translate their type accordingly. (#706)

    Hostnames can now be double quoted.

    Adding module autoloading (#596) -- you can now 'include' classes
    from modules without ever needing to specifically load them.

    Class names and node names now conflict (#620).

0.23.0
    Modified the fileserver to cache file information, so that
    each file isn't being read on every connection.  Also,
    added londo's patch from #678 to avoid reading entire files
    into memory.

    Fixed environment handling in the crontab provider (#669).

    Added patch by trombik in #572, supporting old-style
    freebsd init scripts with '.sh' endings.

    Added fink package provider (#642), as provided by 'do'.

    Marked the dpkg package provider as versionable (#647).

    Applied patches by trombik to fix FreeBSD ports (#624 and #628).

    Fixed the CA server so that it refuses to send back a certificate
    whose public key doesn't match the CSR.  Instead, it tells the
    user to run 'puppetca --clean'.

    Invalid certificates are no longer written to disk (#578).

    Added a package provider (appdmg) able to install .app packages
    on .dmg files on OS X (#641).

    Applied the patch from #667 to hopefully kill the client hanging
    problems (permanently, this time).

    Fixed functions so that they accept most other rvalues as valid values
    (#548).

    COMPATIBILITY ALERT:
    Significantly reworked external node support, in a way that's NOT
    backward-compatible:

        Only ONE node source can be used -- you can use LDAP, code, or
        an external node program, but not more than one.
    
        LDAP node support has two changes:  First, the "ldapattrs" attribute is
        now used for setting the attributes to retrieve from the server (in
        addition to required attriutes), and second, all retrieved attributes
        are set as variables in the top scope.  This means you can set attributes
        on your LDAP nodes and they will automatically appear as variables
        in your configurations.

        External node support has been completely rewritten.  These programs must
        now generate a YAML dump of a hash, with "classes" and "parameters" keys.
        The classes should be an array, and the parameters should be a hash.  The
        external node program has no support for parent nodes -- the script must
        handle that on its own.

    Reworked the database schema used to store configurations with the
    storeconfigs option.  
    
    Replaced the obsolete RRD ruby library with the maintained
    RubyRRDtool library (which requires rrdtool2) (#659).

    The Portage package provider now calls eix-update automatically
    when eix's database is absent or out of sync (#666).

    Mounts now correctly handle existing fstabs with no pass or dump values
    (#550).

    Mounts now default to 0 for pass and dump (#112).

    Added urpmi support (#592).

    Finishing up the type => provider interface work.  Basically, package
    providers now return lists of provider instances.  In the proces,
    I rewrote the interface between package types and providers, and also
    enabled prefetching on all packages.  This should significantly speed
    up most package operations.

    Hopefully fixing the file descriptor/open port problems, with patches
    from Valentin Vidic.

    Significantly reworked the type => provider interface with respect to
    listing existing provider instances.  The class method on both
    class heirarchies has been renamed to 'instances', to start.  Providers
    are now expected to return provider instances, instead of creating
    resources, and the resource's 'instances' method is expected to
    find the matching resource, if any, and set the resource's
    provider appropriately.  This *significantly* reduces the reliance on
    effectively global state (resource references in the resource classes).
    This global state will go away soon.

    Along with this change, the 'prefetch' class method on providers now
    accepts the list of resources for prefetching.  This again reduces
    reliance on global state, and makes the execution path much easier
    to follow.

    Fixed #532 -- reparsing config files now longer throws an exception.

    Added some warnings and logs to the service type so
    users will be encouraged to specify either "ensure"
    or "enabled" and added debugging to indicate why
    restarting is skipped when it is.

    Changed the location of the classes.txt to the state
    directory.

    Added better error reporting on unmatched brackets.

    Moved puppetd and puppetmasterd to sbin in svn and fixed install.rb
    to copy them into sbin on the local system appropriately.  (#323)

    Added a splay option (#501).  It's disabled when running under
    --test in puppetd.  The value is random but cached.  It defaults
    to the runinterval but can be tuned with --splaylimit

    Changing the notify type so that it always uses
    the loglevel.

    Fixing #568 - nodes can inherit from quoted node names.

    Tags (and thus definitions and classes) can now be a single
    character. (#566)

    Added an 'undef' keyword (#629), which will evaluate to ""
    within strings but when used as a resource parameter value
    will cause that parameter to be evaluated as undefined.

    Changed the topological sort algorithm (#507) so it will always
    fail on cycles.

    Added a 'dynamicfacts' configuration option; any facts in that
    comma-separated list will be ignored when comparing facts to 
    see if they have changed and thus whether a recompile is necessary.

    Renamed some poorly named internal variables:
        @models in providers are now either @resource or
        @resource_type (#605).

        @children is no longer used except by components (#606).

        @parent is now @resource within parameters (#607).

    The old variables are still set for backward compatibility.

    Significantly reworking configuration parsing.  Executables all now
    look for 'puppet.conf' (#206), although they will parse the old-style
    configuration files if they are present, although they throw a deprecation
    warning.  Also, file parameters (owner, mode, group) are now set on the
    same line as the parameter, in brackets. (#422)

    Added transaction summaries (available with the --summarize option),
    useful for getting a quick idea of what happened in a transaction.
    Currently only useful on the client or with the puppet interpreter.

    Changed the interal workings for retrieve and removed the :is attribute
    from Property.  The retrieve methods now return the current value of
    the property for the system.

    Removed acts_as_taggable from the rails models.

0.22.4
    Execs now autorequire the user they run as, as long as the user
    is specified by name. (#430)

    Files on the local machine but not on the remote server during
    a source copy are now purged if purge => true. (#594)

    Providers can now specify that some commands are optional (#585).
    Also, the 'command' method returns nil on missing commands,
    rather than throwing an error, so the presence of commands
    be tested.

    The 'useradd' provider for Users can now manage passwords.
    No other providers can, at this point.

    Parameters can now declare a dependency on specific
    features, and parameters that require missing features
    will not be instantiated.  This is most useful for
    properties.

    FileParsing classes can now use instance_eval to add
    many methods at once to a record type.

    Modules no longer return directories in the list of found
    manifests (#588).

    The crontab provider now defaults to root when there is no
    USER set in the environment.

    Puppetd once again correctly responds to HUP.

    Added a syntax for referring to variables defined in
    other classes (e.g., $puppet::server).

    STDIN, STDOUT, STDERR are now redirected to /dev/null in
    service providers descending from base.

    Certificates are now valid starting one day before they are
    created, to help handle small amounts of clock skew.

    Files are no longer considered out of sync if some properties
    are out of sync but they have no properties that can create
    the file.

0.22.3
    Fixed backward compatibility for logs and metrics from older clients.

    Fixed the location of the authconfig parameters so there aren't
    loading order issues.

    Enabling attribute validation on the providers that subclass
    'nameservice', so we can verify that an integer is passed to
    UID and GID.

    Added a stand-alone filebucket client, named 'filebucket'.

    Fixed the new nested paths for filebuckets; the entire md5 sum was
    not being stored.

    Fixing #553; -M is no longer added when home directories are being
    managed on Red Hat.

0.22.2 (grover)
    Users can now manage their home directories, using the managehome
    parameter, partially using patches provided by Tim Stoop and
    Matt Palmer. (#432)

    Added 'ralsh' (formerly x2puppet) to the svn tree.  When possible it
    should be added to the packages.

    The 'notify' type now defaults to its message being the same as its name.

    Reopening $stdin to read from /dev/null during execution, in hopes that
    init scripts will stop hanging.

    Changed the 'servername' fact set on the server to use the server's fqdn,
    instead of the short-name.

    Changing the location of the configuration cache.  It now defaults to being
    in the state directory, rather than in the configuration directory.

    All parameter instances are stored in a single @parameters instance variable
    hash within resource type instances.  We used to use separate hashes for
    each parameter type.

    Added the concept of provider features.  Eventually these should be able
    to express the full range of provider functionality, but for now they can
    test a provider to see what methods it has set and determine what features it
    provides as a result.  These features are integrated into the doc generation
    system so that you get feature documentation automatically.

    Switched apt/aptitide to using "apt-cache policy" instead of "apt-cache showpkg"
    for determining the latest available version. (#487)

    FileBuckets now use a deeply nested structure for storing files, so
    you do not end up with hundreds or thousands of files in the same
    directory. (#447)

    Facts are now cached in the state file, and when they change the configuration
    is always recompiled. (#519)

    Added 'ignoreimport' setting for use in commit hooks.  This causes the
    parser to ignore import statements so a single file can be parse-checked.  (#544)

    Import statements can now specify multiple comma-separated arguments.

    Definitions now support both 'name' and 'title', just like any other
    resource type. (#539)

    Added a generate() command, which sets values to the result of an external
    command. (#541)

    Added a file() command to read in files with no interpolation.  The first
    found file has its content returned.

    puppetd now exits if no cert is present in onetime mode. (#533)

    The client configuration cache can be safely removed and the client
    will correctly realize the client is not in sync.

    Resources can now be freely deleted, thus fixing many problems introduced
    when deletion of required resources was forbidden when purging was introduced.
    Only resources being purged will not be deleted.

    Facts and plugins now download even in noop mode (#540).

    Resources in noop mode now log when they would have responded to an event (#542).

    Refactored cron support entirely.  Cron now uses providers, and there
    is a single 'crontab' provider that handles user crontabs.  While this
    refactor does not include providers for /etc/crontab or cron.d, it should
    now be straightforward to write those providers.

    Changed the parameter sorting so that the provider parameter comes
    right after name, so the provider is available when the other parameters
    and properties are being created.

    Redid some of the internals of the ParsedFile provider base class.
    It now passes a FileRecord around instead of a hash.

    Fixing a bug related to link recursion that caused link directories
    to always be considered out of sync.

    The bind address for puppetmasterd can now be specified with 
    --bindaddress.

    Added (probably experimental) mongrel support.  At this point you're
    still responsible for starting each individual process, and you have to
    set up a proxy in front of it.

    Redesigned the 'network' tree to support multiple web servers, including
    refactoring most of the structural code so it's much clearer and more
    reusable now.

    Set up the CA client to default to ca_server and ca_port, so you can
    easily run a separate CA.

    Supporting hosts with no domain name, thanks to a patch from
    Dennis Jacobfeuerborn.

    Added an 'ignorecache' option to tell puppetd to force a recompile, thanks to
    a patch by Chris McEniry.

    Made up2date the default for RHEL < 4 and yum the default for the rest.

    The yum provider now supports versions.

    Case statements correctly match when multiple values are provided,
    thanks to a patch by David Schmitt.

    Functions can now be called with no arguments.

    String escapes parse correctly in all cases now, thanks to a patch by
    cstorey.

    Subclasses again search parent classes for defaults.

    You can now purge apt and dpkg packages.

    When doing file recursion, 'ensure' only affects the top-level directory.

    States have been renamed to Properties.

0.22.1 (kermit) -- Mostly a bugfix release
    Compile times now persist between restarts of puppetd.

    Timeouts have been added to many parts of Puppet, reducing the likelihood
    if it hanging forever on broken scripts or servers.

    All of the documentation and recipes have been moved to the wiki by Peter
    Abrahamsen and Ben Kite has moved the FAQ to the wiki.

    Explicit relationships now override automatic relationships, allowing you
    to manually specify deletion order when removing resources.

    Resources with dependencies can now be deleted as long as all of their
    dependencies are also being deleted.

    Namespaces for both classes and definitions now work much more consistently.
    You should now be able to specify a class or definition with a namespace
    everywhere you would normally expect to be able to specify one without.

    Downcasing of facts can be selectively disabled.

    Cyclic dependency graphs are now checked for and forbidden.

    The netinfo mounts provider was commented out, because it really doesn't
    work at all.  Stupid NetInfo stores mount information with the device as
    the key, which doesn't work with my current NetInfo code.

    Otherwise, lots and lots of bugfixes.  Check the tickets associated with the
    'kermit' milestone.

0.22.0
    Integrated the GRATR graph library into Puppet, for handling resource
    relationships.

    Lots of bug-fixes (see bugs tickets associated with the 'minor' milestone).

    Added new 'resources' metatype, which currently only includes the ability
    to purge unmanaged resources.

    Added better ability to generate new resource objects during transactions
    (using 'generate' and 'eval_generate' methods).

    Rewrote all Rails support with a much better database design.  Export/collect
    now works, although the database is incompatible with previous versions.

    Removed downcasing of facts and made most of the language case-insensitive.

    Added support for printing the graphs built during transactions.

    Reworked how paths are built for logging.

    Switched all providers to directly executing commands instead of going through
    a subshell, which removes the need to quote or escape arguments.

0.20.1
    Mostly a bug-fix release, with the most important fix being the
    multiple-definition error.

    Completely rewrote the ParsedFile system; each provider is now much
    shorter and much more maintainable.  However, fundamental problems
    were found with the 'port' type, so it was disabled.  Also, added
    a NetInfo provider for 'host' and an experimental NetInfo provider
    for 'mount'.

    Made the RRDGraph report *much* better and added reference
    generation for reports and functions.

0.20.0
    Significantly refactored the parser.  Resource overrides now consistently
    work anywhere in a class hierarchy.

    The language was also modified somewhat.  The previous export/collect syntax
    is now used for handling virtual objects, and export/collect (which is still
    experimental) now uses double sigils (@@ and <<| |>>).

    Resource references (e.g., File["/etc/passwd"]) now have to be capitalized,
    in fitting in with capitalizing type operations.

    As usual, lots of other smaller fixes, but most of the work was in the language.

0.19.3
    Fixing a bug in server/master.rb that causes the hostname
    not to be available in locally-executed manifests.

0.19.2
    Fixing a few smaller bugs, notably in the reports system.

    Refreshed objects now generate an event, which can result in further
    refreshes of other objects.

0.19.1
    Fixing two critical bugs:  User management works again and cron jobs are
    no longer added to all user accounts.

0.19.0
    Added provider support.

    Added support for %h, %H, and %d expansion in fileserver.conf.

    Added Certificate Revocation support.

    Made dynamic loading pervasive -- nearly every aspect of Puppet will now
    automatically load new instances (e.g., types, providers, and reports).

    Added support for automatic distribution of facts and plugins (custom types).

0.18.4
    Another bug-fix release.  The most import bug fixed is that
    cronjobs again work even with initially empty crontabs.

0.18.3
    Mostly a bug-fix release; fixed small bugs in the functionality added in
    0.18.2.

0.18.2
    Added templating support.

    Added reporting.

    Added gem and blastwave packaging support.

0.18.1
    Added signal handlers for HUP, so both client and server deal correctly with it.

    Added signal handler for USR1, which triggers a run on the client.

    As usual, fixed many bugs.

    Significant fixes to puppetrun -- it should behave much more correctly now.

    Added "fail" function which throws a syntax error if it's encountered.

    Added plugin downloading from the central server to the client.  It must be
    enabled with --pluginsync.

    Added support for FreeBSD's special "@daily" cron schedules.

    Correctly handling spaces in file sources.

    Moved documentation into svn tree.
    
0.18.0
    Added support for a "default" node.

    When multiple nodes are specified, they must now be comma-separated (this
    introduces a language incompatibility).

    Failed dependencies cause dependent objects within the same transaction
    not to run.

    Many updates to puppetrun

    Many bug fixes

    Function names are no longer reserved words.

    Links can now replace files.

0.17.2
    Added "puppetrun" application and associated runner server and client classes.

    Fixed cron support so it better supports valid values and environment settings.

0.17.1
    Fixing a bug requiring rails on all Debian boxes

    Fixing a couple of other small bugs

0.17.0
    Adding ActiveRecord integration on the server

    Adding export/collect functionality

    Fixing many bugs

0.16.5
    Fixing a critical bug in importing classes from other files

    Fixing nodename handling to actually allow dashes

0.16.4
    Fixing a critical bug in puppetd when acquiring a certificate for the first
    time

0.16.3
    Some significant bug fixes

    Modified puppetd so that it can now function as an agent independent
    of a puppetmasterd process, e.g., using the PuppetShow web application.

0.16.2
    Modified some of the AST classes so that class names, definition names, and
    node names are all set within the code being evaluated, so 'tagged(name)' returns
    true while evaluating 'name', for instance.

    Added '--clean' argument to puppetca to remove all traces of a given
    client.

0.16.1
    Added 'tagged' and 'defined' functions.

    Moved all functions to a general framework that makes it very easy to add new
    functions.

0.16.0
    Added 'tag' keyword/function.

    Added FreeBSD Ports support

    Added 'pelement' server for sending or receiving Puppet objects, although
    none of the executables use it yet.

0.15.3
    Fixed many bugs in :exec, including adding support for arrays of checks

    Added autoloading for types and service variants (e.g., you can now
    just create a new type in the appropriate location and use it in Puppet,
    without modifying the core Puppet libs).

0.15.2
    Added darwinport, Apple .pkg, and freebsd package types
    Added 'mount type
    Host facts are now set at the top scope (Bug #103)
    Added -e (inline exection) flag to 'puppet' executable
    Many small bug fixes

0.15.1
    Fixed 'yum' installs so that they successfully upgrade packages.
    Fixed puppetmasterd.conf file so group settings take.

0.15.0
    Upped the minor release because the File server is incompatible with 0.14,
        because it now handles links.

    The 'symlink' type is deprecated (but still present), in favor of using
        files with the 'target' parameter.

    Unset variables no longer throw an error, they just return an empty string

    You can now specify tags to restrict which objects run during a given run.

    You can also specify to skip running against the cached copy when there's
    a failure, which is useful for testing new configurations.

    RPMs and Sun packages can now install, as long as they specify a package
        location, and they'll automatically upgrade if you point them to a new
        file with an upgrade.
    Multiple bug fixes.


0.14.1
    Fixed a couple of small logging bugs
    Fixed a bug with handling group ownership of links

0.14.0
    Added some ability to selectively manage symlinks when doing file management
    Many bug fixes
    Variables can now be used as the test values in case statements and selectors
    Bumping a minor release number because 0.13.4 introduced a protocol
        incompatibility and should have had a minor rev bump

0.13.6
    Many, many small bug fixes
    FreeBSD user/group support has been added
    The configuration system has been rewritten so that daemons can now generate
        and repair the files and directories they need. (Fixed bug #68.)
    Fixed the element override issues; now only subclasses can override values.

0.13.5
    Fixed packages so types can be specified
    Added 'enable' state to services, although it does not work everywhere yet

0.13.4
    A few important bug fixes, mostly in the parser.

0.13.3
    Changed transactions to be one-stage instead of two
    Changed all types to use self[:name] instead of self.name, to support
        the symbolic naming implemented in 0.13.1

0.13.2
    Changed package[answerfile] to package[adminfile], and added package[responsefile]
    Fixed a bunch of internal functions to behave more consistently and usefully

0.13.1
    Fixed RPM spec files to create puppet user and group (lutter)
    Fixed crontab reading and writing (luke)
    Added symbolic naming in the language (luke)

0.13.0
    Added support for configuration files.
    Even more bug fixes, including the infamous 'frozen object' bug, which was a
        problem with 'waitforcert'.
    David Lutterkort got RPM into good shape.

0.12.0
    Added Scheduling, and many bug fixes, of course.

0.11.2
    Fixed bugs related to specifying arrays of requirements
    Fixed a key bug in retrieving checksums
    Fixed lots of usability bugs
    Added 'fail' methods that automatically add file and line info when possible,
    and converted many errors to use that method

0.11.1
    Fixed bug with recursive copying with 'ignore' set.
    Added OpenBSD package support.

0.11.0
    Added 'ensure' state to many elements.
    Modified puppetdoc to correctly handle indentation and such.
    Significantly rewrote much of the builtin documentation to take advantage
        of the new features in puppetdoc, including many examples.

0.10.2
    Added SMF support
    Added autorequire functionality, with specific support for exec and file
        Exec elements autorequire any mentioned files, including the scripts,
        along with their CWDs.
        Files autorequire any parent directories.
    Added 'alias' metaparam.
    Fixed dependencies so they don't depend on file order.

0.10.1
    Added Solaris package support and changed puppetmasterd to run as
    a non-root user.

0.10.0
    Significant refactoring of how types, states, and parameters work, including
    breaking out parameters into a separate class.  This refactoring did not
    introduce much new functionality, but made extension of Puppet significantly
    easier

    Also, fixed the bug with 'waitforcert' in puppetd.

0.9.4
    Small fix to wrap the StatusServer class in the checks for required classes.
    
0.9.3
    Fixed some significant bugs in cron job management.

0.9.2
    Second Public Beta

0.9.0
    First Public Beta