puppet 0.24.1 → 0.24.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/CHANGELOG +94 -0
- data/Rakefile +0 -4
- data/bin/puppet +18 -10
- data/bin/puppetd +1 -1
- data/bin/puppetdoc +14 -4
- data/bin/puppetmasterd +1 -1
- data/bin/puppetrun +3 -8
- data/bin/ralsh +12 -11
- data/conf/freebsd/puppetd +1 -1
- data/conf/freebsd/puppetmasterd +1 -1
- data/conf/gentoo/puppet/puppet.conf +29 -0
- data/conf/namespaceauth.conf +20 -0
- data/conf/redhat/puppet.spec +4 -1
- data/conf/solaris/smf/puppetd.xml +1 -1
- data/conf/solaris/smf/puppetmasterd.xml +1 -1
- data/conf/suse/puppet.spec +10 -8
- data/examples/root/etc/puppet/{puppetmasterd.conf → puppet.conf} +6 -3
- data/ext/logcheck/puppet +7 -0
- data/ext/puppet-test +28 -5
- data/lib/puppet.rb +2 -1
- data/lib/puppet/defaults.rb +12 -5
- data/lib/puppet/dsl.rb +43 -45
- data/lib/puppet/external/{gratr/rdot.rb → dot.rb} +0 -0
- data/lib/puppet/external/nagios.rb +50 -0
- data/lib/puppet/external/nagios/base.rb +421 -0
- data/lib/puppet/external/nagios/parser.rb +816 -0
- data/lib/puppet/file_serving/file_base.rb +16 -3
- data/lib/puppet/file_serving/metadata.rb +29 -11
- data/lib/puppet/indirector/terminus.rb +1 -0
- data/lib/puppet/metatype/closure.rb +4 -0
- data/lib/puppet/metatype/evaluation.rb +2 -17
- data/lib/puppet/metatype/metaparams.rb +1 -1
- data/lib/puppet/network.rb +3 -0
- data/lib/puppet/network/client.rb +4 -5
- data/lib/puppet/network/client/master.rb +10 -7
- data/lib/puppet/network/handler/fileserver.rb +22 -45
- data/lib/puppet/network/http_pool.rb +3 -0
- data/lib/puppet/network/http_server/mongrel.rb +7 -1
- data/lib/puppet/network/http_server/webrick.rb +4 -3
- data/lib/puppet/network/xmlrpc/client.rb +12 -1
- data/lib/puppet/node/catalog.rb +51 -40
- data/lib/puppet/parser/ast.rb +27 -49
- data/lib/puppet/parser/ast/astarray.rb +5 -24
- data/lib/puppet/parser/ast/caseopt.rb +4 -4
- data/lib/puppet/parser/ast/casestatement.rb +4 -5
- data/lib/puppet/parser/ast/collection.rb +3 -5
- data/lib/puppet/parser/ast/collexpr.rb +3 -5
- data/lib/puppet/parser/ast/definition.rb +148 -159
- data/lib/puppet/parser/ast/else.rb +2 -3
- data/lib/puppet/parser/ast/function.rb +3 -10
- data/lib/puppet/parser/ast/hostclass.rb +66 -59
- data/lib/puppet/parser/ast/ifstatement.rb +4 -5
- data/lib/puppet/parser/ast/leaf.rb +6 -6
- data/lib/puppet/parser/ast/node.rb +26 -58
- data/lib/puppet/parser/ast/resource.rb +5 -7
- data/lib/puppet/parser/ast/resource_defaults.rb +2 -4
- data/lib/puppet/parser/ast/resource_override.rb +4 -6
- data/lib/puppet/parser/ast/resource_reference.rb +2 -4
- data/lib/puppet/parser/ast/resourceparam.rb +2 -4
- data/lib/puppet/parser/ast/selector.rb +5 -6
- data/lib/puppet/parser/ast/tag.rb +2 -4
- data/lib/puppet/parser/ast/vardef.rb +3 -4
- data/lib/puppet/parser/collector.rb +5 -5
- data/lib/puppet/parser/{compile.rb → compiler.rb} +69 -107
- data/lib/puppet/parser/functions.rb +3 -3
- data/lib/puppet/parser/interpreter.rb +32 -23
- data/lib/puppet/parser/lexer.rb +391 -282
- data/lib/puppet/parser/parser.rb +5 -4
- data/lib/puppet/parser/parser_support.rb +3 -6
- data/lib/puppet/parser/resource.rb +24 -36
- data/lib/puppet/parser/resource/param.rb +1 -1
- data/lib/puppet/parser/resource/reference.rb +7 -3
- data/lib/puppet/parser/scope.rb +12 -7
- data/lib/puppet/parser/templatewrapper.rb +1 -1
- data/lib/puppet/pgraph.rb +9 -98
- data/lib/puppet/provider/interface/redhat.rb +65 -65
- data/lib/puppet/provider/mount/parsed.rb +1 -1
- data/lib/puppet/provider/naginator.rb +55 -0
- data/lib/puppet/provider/nameservice/directoryservice.rb +6 -7
- data/lib/puppet/provider/package/fink.rb +0 -2
- data/lib/puppet/provider/package/gem.rb +9 -5
- data/lib/puppet/provider/package/openbsd.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +3 -8
- data/lib/puppet/provider/package/portage.rb +4 -4
- data/lib/puppet/provider/package/yumhelper.py +8 -6
- data/lib/puppet/provider/parsedfile.rb +7 -1
- data/lib/puppet/provider/service/debian.rb +2 -0
- data/lib/puppet/provider/service/gentoo.rb +4 -0
- data/lib/puppet/provider/service/init.rb +1 -1
- data/lib/puppet/provider/sshkey/parsed.rb +2 -0
- data/lib/puppet/provider/user/useradd.rb +1 -1
- data/lib/puppet/rails.rb +4 -0
- data/lib/puppet/rails/database/001_add_created_at_to_all_tables.rb +17 -0
- data/lib/puppet/rails/fact_value.rb +4 -0
- data/lib/puppet/rails/host.rb +1 -2
- data/lib/puppet/rails/param_value.rb +4 -0
- data/lib/puppet/rails/resource_tag.rb +4 -0
- data/lib/puppet/rails/source_file.rb +4 -1
- data/lib/puppet/relationship.rb +5 -1
- data/lib/puppet/reports/tagmail.rb +12 -1
- data/lib/puppet/resource_reference.rb +1 -1
- data/lib/puppet/simple_graph.rb +78 -11
- data/lib/puppet/sslcertificates.rb +1 -1
- data/lib/puppet/sslcertificates/ca.rb +3 -3
- data/lib/puppet/transaction.rb +7 -4
- data/lib/puppet/transportable.rb +1 -1
- data/lib/puppet/type.rb +3 -10
- data/lib/puppet/type/cron.rb +18 -0
- data/lib/puppet/type/exec.rb +18 -12
- data/lib/puppet/type/{pfile.rb → file.rb} +66 -84
- data/lib/puppet/type/file/checksum.rb +271 -0
- data/lib/puppet/type/{pfile → file}/content.rb +10 -15
- data/lib/puppet/type/{pfile → file}/ensure.rb +15 -8
- data/lib/puppet/type/{pfile → file}/group.rb +0 -0
- data/lib/puppet/type/{pfile → file}/mode.rb +0 -0
- data/lib/puppet/type/{pfile → file}/owner.rb +0 -0
- data/lib/puppet/type/{pfile → file}/source.rb +34 -48
- data/lib/puppet/type/{pfile → file}/target.rb +0 -0
- data/lib/puppet/type/{pfile → file}/type.rb +0 -0
- data/lib/puppet/type/{pfilebucket.rb → filebucket.rb} +0 -0
- data/lib/puppet/type/host.rb +13 -0
- data/lib/puppet/type/mailalias.rb +1 -1
- data/lib/puppet/type/nagios_command.rb +3 -0
- data/lib/puppet/type/nagios_contact.rb +3 -0
- data/lib/puppet/type/nagios_contactgroup.rb +3 -0
- data/lib/puppet/type/nagios_host.rb +3 -0
- data/lib/puppet/type/nagios_hostextinfo.rb +3 -0
- data/lib/puppet/type/nagios_hostgroup.rb +3 -0
- data/lib/puppet/type/nagios_hostgroupescalation.rb +3 -0
- data/lib/puppet/type/nagios_service.rb +3 -0
- data/lib/puppet/type/nagios_servicedependency.rb +3 -0
- data/lib/puppet/type/nagios_serviceescalation.rb +3 -0
- data/lib/puppet/type/nagios_serviceextinfo.rb +3 -0
- data/lib/puppet/type/nagios_timeperiod.rb +3 -0
- data/lib/puppet/type/package.rb +4 -12
- data/lib/puppet/type/service.rb +9 -0
- data/lib/puppet/type/sshkey.rb +3 -3
- data/lib/puppet/util/autoload.rb +5 -5
- data/lib/puppet/util/checksums.rb +51 -13
- data/lib/puppet/util/constant_inflector.rb +14 -0
- data/lib/puppet/util/filetype.rb +1 -1
- data/lib/puppet/util/graph.rb +3 -9
- data/lib/puppet/util/nagios_maker.rb +57 -0
- data/lib/puppet/util/settings.rb +19 -16
- data/lib/puppet/util/tagging.rb +39 -0
- data/test/executables/puppetbin.rb +17 -0
- data/test/language/ast.rb +8 -58
- data/test/language/ast/casestatement.rb +3 -3
- data/test/language/ast/resource.rb +6 -7
- data/test/language/ast/resource_reference.rb +12 -12
- data/test/language/ast/selector.rb +2 -2
- data/test/language/ast/variable.rb +2 -2
- data/test/language/functions.rb +24 -24
- data/test/language/parser.rb +20 -8
- data/test/language/resource.rb +5 -42
- data/test/language/scope.rb +21 -37
- data/test/language/snippets.rb +7 -0
- data/test/lib/puppettest.rb +28 -14
- data/test/lib/puppettest/parsertesting.rb +10 -10
- data/test/lib/puppettest/support/resources.rb +1 -1
- data/test/network/client/master.rb +10 -0
- data/test/network/handler/fileserver.rb +51 -49
- data/test/network/server/webrick.rb +1 -1
- data/test/other/dsl.rb +3 -4
- data/test/other/transactions.rb +6 -4
- data/test/rails/ast.rb +2 -2
- data/test/rails/configuration.rb +1 -1
- data/test/rails/railsparameter.rb +2 -0
- data/test/rails/railsresource.rb +1 -0
- data/test/ral/manager/type.rb +4 -4
- data/test/ral/providers/cron/crontab.rb +3 -1
- data/test/ral/providers/package.rb +1 -1
- data/test/ral/{types → type}/basic.rb +2 -2
- data/test/ral/{types → type}/cron.rb +0 -0
- data/test/ral/{types → type}/exec.rb +42 -2
- data/test/ral/{types → type}/file.rb +34 -79
- data/test/ral/{types → type}/file/target.rb +0 -0
- data/test/ral/{types → type}/filebucket.rb +0 -0
- data/test/ral/{types → type}/fileignoresource.rb +0 -0
- data/test/ral/{types → type}/filesources.rb +8 -27
- data/test/ral/{types → type}/group.rb +0 -0
- data/test/ral/{types → type}/host.rb +16 -0
- data/test/ral/{types → type}/mailalias.rb +0 -0
- data/test/ral/{types → type}/parameter.rb +0 -0
- data/test/ral/{types → type}/port.rb +0 -0
- data/test/ral/{types → type}/property.rb +0 -0
- data/test/ral/{types → type}/resources.rb +0 -0
- data/test/ral/{types → type}/service.rb +0 -0
- data/test/ral/{types → type}/sshkey.rb +0 -0
- data/test/ral/{types → type}/tidy.rb +1 -0
- data/test/ral/{types → type}/user.rb +0 -0
- data/test/ral/{types → type}/yumrepo.rb +0 -0
- data/test/ral/{types → type}/zone.rb +0 -0
- data/test/util/autoload.rb +24 -5
- metadata +60 -107
- data/conf/gentoo/puppet/puppetca.conf +0 -29
- data/conf/gentoo/puppet/puppetd.conf +0 -29
- data/conf/gentoo/puppet/puppetmasterd.conf +0 -29
- data/examples/root/etc/puppet/puppetd.conf +0 -4
- data/lib/puppet/external/gratr.rb +0 -33
- data/lib/puppet/external/gratr/adjacency_graph.rb +0 -257
- data/lib/puppet/external/gratr/base.rb +0 -34
- data/lib/puppet/external/gratr/biconnected.rb +0 -116
- data/lib/puppet/external/gratr/chinese_postman.rb +0 -123
- data/lib/puppet/external/gratr/common.rb +0 -73
- data/lib/puppet/external/gratr/comparability.rb +0 -92
- data/lib/puppet/external/gratr/digraph.rb +0 -116
- data/lib/puppet/external/gratr/digraph_distance.rb +0 -185
- data/lib/puppet/external/gratr/dot.rb +0 -90
- data/lib/puppet/external/gratr/edge.rb +0 -145
- data/lib/puppet/external/gratr/graph.rb +0 -303
- data/lib/puppet/external/gratr/graph_api.rb +0 -83
- data/lib/puppet/external/gratr/import.rb +0 -44
- data/lib/puppet/external/gratr/labels.rb +0 -90
- data/lib/puppet/external/gratr/maximum_flow.rb +0 -64
- data/lib/puppet/external/gratr/search.rb +0 -409
- data/lib/puppet/external/gratr/strong_components.rb +0 -127
- data/lib/puppet/external/gratr/undirected_graph.rb +0 -153
- data/lib/puppet/rails/external/tagging/acts_as_taggable.rb +0 -62
- data/lib/puppet/rails/external/tagging/init.rb +0 -5
- data/lib/puppet/rails/external/tagging/tag.rb +0 -50
- data/lib/puppet/rails/external/tagging/tagging.rb +0 -12
- data/lib/puppet/rails/puppet_class.rb +0 -6
- data/lib/puppet/reference/node_source.rb +0 -9
- data/lib/puppet/reference/report.rb +0 -21
- data/lib/puppet/type/pfile/checksum.rb +0 -326
- data/test/language/ast/definition.rb +0 -166
- data/test/language/ast/hostclass.rb +0 -184
- data/test/language/compile.rb +0 -569
- data/test/language/lexer.rb +0 -276
- data/test/lib/mocha.rb +0 -19
- data/test/lib/mocha/any_instance_method.rb +0 -35
- data/test/lib/mocha/auto_verify.rb +0 -113
- data/test/lib/mocha/central.rb +0 -35
- data/test/lib/mocha/class_method.rb +0 -62
- data/test/lib/mocha/deprecation.rb +0 -22
- data/test/lib/mocha/exception_raiser.rb +0 -17
- data/test/lib/mocha/expectation.rb +0 -378
- data/test/lib/mocha/expectation_error.rb +0 -6
- data/test/lib/mocha/infinite_range.rb +0 -25
- data/test/lib/mocha/inspect.rb +0 -39
- data/test/lib/mocha/instance_method.rb +0 -8
- data/test/lib/mocha/is_a.rb +0 -9
- data/test/lib/mocha/metaclass.rb +0 -7
- data/test/lib/mocha/missing_expectation.rb +0 -27
- data/test/lib/mocha/mock.rb +0 -207
- data/test/lib/mocha/multiple_yields.rb +0 -20
- data/test/lib/mocha/no_yields.rb +0 -11
- data/test/lib/mocha/object.rb +0 -110
- data/test/lib/mocha/parameter_matchers.rb +0 -9
- data/test/lib/mocha/parameter_matchers/all_of.rb +0 -39
- data/test/lib/mocha/parameter_matchers/any_of.rb +0 -44
- data/test/lib/mocha/parameter_matchers/anything.rb +0 -30
- data/test/lib/mocha/parameter_matchers/has_entry.rb +0 -39
- data/test/lib/mocha/parameter_matchers/has_key.rb +0 -39
- data/test/lib/mocha/parameter_matchers/has_value.rb +0 -39
- data/test/lib/mocha/parameter_matchers/includes.rb +0 -37
- data/test/lib/mocha/pretty_parameters.rb +0 -28
- data/test/lib/mocha/return_values.rb +0 -31
- data/test/lib/mocha/setup_and_teardown.rb +0 -23
- data/test/lib/mocha/single_return_value.rb +0 -24
- data/test/lib/mocha/single_yield.rb +0 -18
- data/test/lib/mocha/standalone.rb +0 -32
- data/test/lib/mocha/stub.rb +0 -18
- data/test/lib/mocha/test_case_adapter.rb +0 -49
- data/test/lib/mocha/yield_parameters.rb +0 -31
@@ -1,5 +1,5 @@
|
|
1
1
|
module Puppet
|
2
|
-
Puppet.type(:file).newproperty(:content) do
|
2
|
+
Puppet::Type.type(:file).newproperty(:content) do
|
3
3
|
include Puppet::Util::Diff
|
4
4
|
|
5
5
|
desc "Specify the contents of a file as a string. Newlines, tabs, and
|
@@ -47,23 +47,13 @@ module Puppet
|
|
47
47
|
return result
|
48
48
|
end
|
49
49
|
|
50
|
-
# We should probably take advantage of existing md5 sums if they're there,
|
51
|
-
# but I really don't feel like dealing with the complexity right now.
|
52
50
|
def retrieve
|
53
|
-
stat =
|
54
|
-
unless stat = @resource.stat
|
55
|
-
return :absent
|
56
|
-
end
|
51
|
+
return :absent unless stat = @resource.stat
|
57
52
|
|
58
|
-
if stat.ftype == "link" and @resource[:links] == :ignore
|
59
|
-
return self.should
|
60
|
-
end
|
53
|
+
return self.should if stat.ftype == "link" and @resource[:links] == :ignore
|
61
54
|
|
62
55
|
# Don't even try to manage the content on directories
|
63
|
-
if stat.ftype == "directory"
|
64
|
-
@resource.delete(:content)
|
65
|
-
return nil
|
66
|
-
end
|
56
|
+
return nil if stat.ftype == "directory"
|
67
57
|
|
68
58
|
begin
|
69
59
|
currentvalue = File.read(@resource[:path])
|
@@ -74,12 +64,17 @@ module Puppet
|
|
74
64
|
end
|
75
65
|
end
|
76
66
|
|
67
|
+
# Make sure we're also managing the checksum property.
|
68
|
+
def should=(value)
|
69
|
+
super
|
70
|
+
@resource.newattr(:checksum) unless @resource.property(:checksum)
|
71
|
+
end
|
77
72
|
|
78
73
|
# Just write our content out to disk.
|
79
74
|
def sync
|
80
75
|
return_event = @resource.stat ? :file_changed : :file_created
|
81
76
|
|
82
|
-
@resource.write(
|
77
|
+
@resource.write(self.should, :content)
|
83
78
|
|
84
79
|
return return_event
|
85
80
|
end
|
@@ -46,7 +46,7 @@ module Puppet
|
|
46
46
|
if property = (@resource.property(:content) || @resource.property(:source))
|
47
47
|
property.sync
|
48
48
|
else
|
49
|
-
@resource.write(
|
49
|
+
@resource.write("", :ensure)
|
50
50
|
mode = @resource.should(:mode)
|
51
51
|
end
|
52
52
|
return :file_created
|
@@ -67,14 +67,12 @@ module Puppet
|
|
67
67
|
"Cannot create %s; parent directory %s does not exist" %
|
68
68
|
[@resource[:path], parent]
|
69
69
|
end
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
Dir.mkdir(@resource[:path],mode)
|
74
|
-
end
|
75
|
-
else
|
76
|
-
Dir.mkdir(@resource[:path])
|
70
|
+
if mode
|
71
|
+
Puppet::Util.withumask(000) do
|
72
|
+
Dir.mkdir(@resource[:path],mode)
|
77
73
|
end
|
74
|
+
else
|
75
|
+
Dir.mkdir(@resource[:path])
|
78
76
|
end
|
79
77
|
@resource.send(:property_fix)
|
80
78
|
@resource.setchecksum
|
@@ -101,9 +99,13 @@ module Puppet
|
|
101
99
|
munge do |value|
|
102
100
|
value = super(value)
|
103
101
|
|
102
|
+
# It doesn't make sense to try to manage links unless, well,
|
103
|
+
# we're managing links.
|
104
|
+
resource[:links] = :manage if value == :link
|
104
105
|
return value if value.is_a? Symbol
|
105
106
|
|
106
107
|
@resource[:target] = value
|
108
|
+
resource[:links] = :manage
|
107
109
|
|
108
110
|
return :link
|
109
111
|
end
|
@@ -136,6 +138,11 @@ module Puppet
|
|
136
138
|
# We have to treat :present specially, because it works with any
|
137
139
|
# type of file.
|
138
140
|
def insync?(currentvalue)
|
141
|
+
if property = @resource.property(:source) and ! property.described?
|
142
|
+
warning "No specified sources exist"
|
143
|
+
return true
|
144
|
+
end
|
145
|
+
|
139
146
|
if self.should == :present
|
140
147
|
if currentvalue.nil? or currentvalue == :absent
|
141
148
|
return false
|
File without changes
|
File without changes
|
File without changes
|
@@ -101,15 +101,17 @@ module Puppet
|
|
101
101
|
begin
|
102
102
|
desc = server.describe(path, @resource[:links])
|
103
103
|
rescue Puppet::Network::XMLRPCClientError => detail
|
104
|
-
self.err "Could not describe %s: %s" %
|
105
|
-
[path, detail]
|
104
|
+
self.err "Could not describe %s: %s" % [path, detail]
|
106
105
|
return nil
|
107
106
|
end
|
108
107
|
|
108
|
+
return nil if desc == ""
|
109
|
+
|
110
|
+
# Collect everything except the checksum
|
111
|
+
values = desc.split("\t")
|
112
|
+
other = values.pop
|
109
113
|
args = {}
|
110
|
-
pinparams.zip(
|
111
|
-
desc.split("\t")
|
112
|
-
).each { |param, value|
|
114
|
+
pinparams.zip(values).each { |param, value|
|
113
115
|
if value =~ /^[0-9]+$/
|
114
116
|
value = value.to_i
|
115
117
|
end
|
@@ -118,16 +120,19 @@ module Puppet
|
|
118
120
|
end
|
119
121
|
}
|
120
122
|
|
121
|
-
#
|
122
|
-
|
123
|
-
args
|
123
|
+
# Now decide whether we're doing checksums or symlinks
|
124
|
+
if args[:type] == "link"
|
125
|
+
args[:target] = other
|
126
|
+
else
|
127
|
+
args[:checksum] = other
|
124
128
|
end
|
125
129
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
return args
|
130
|
+
# we can't manage ownership unless we're root, so don't even try
|
131
|
+
unless Puppet::Util::SUIDManager.uid == 0
|
132
|
+
args.delete(:owner)
|
130
133
|
end
|
134
|
+
|
135
|
+
return args
|
131
136
|
end
|
132
137
|
|
133
138
|
# Have we successfully described the remote source?
|
@@ -138,10 +143,10 @@ module Puppet
|
|
138
143
|
# Use the info we get from describe() to check if we're in sync.
|
139
144
|
def insync?(currentvalue)
|
140
145
|
unless described?
|
141
|
-
|
146
|
+
warning "No specified sources exist"
|
142
147
|
return true
|
143
148
|
end
|
144
|
-
|
149
|
+
|
145
150
|
if currentvalue == :nocopy
|
146
151
|
return true
|
147
152
|
end
|
@@ -163,7 +168,7 @@ module Puppet
|
|
163
168
|
|
164
169
|
# Diff the contents if they ask it. This is quite annoying -- we need to do this in
|
165
170
|
# 'insync?' because they might be in noop mode, but we don't want to do the file
|
166
|
-
# retrieval twice, so we cache the value
|
171
|
+
# retrieval twice, so we cache the value.
|
167
172
|
if ! result and Puppet[:show_diff] and File.exists?(@resource[:path]) and ! @stats[:_diffed]
|
168
173
|
@stats[:_remote_content] = get_remote_content
|
169
174
|
string_file_diff(@resource[:path], @stats[:_remote_content])
|
@@ -173,7 +178,7 @@ module Puppet
|
|
173
178
|
end
|
174
179
|
|
175
180
|
def pinparams
|
176
|
-
|
181
|
+
[:mode, :type, :owner, :group]
|
177
182
|
end
|
178
183
|
|
179
184
|
# This basically calls describe() on our file, and then sets all
|
@@ -202,14 +207,11 @@ module Puppet
|
|
202
207
|
end
|
203
208
|
|
204
209
|
case @stats[:type]
|
205
|
-
when "directory", "file":
|
206
|
-
unless @resource.deleting?
|
207
|
-
@resource[:ensure] = @stats[:type]
|
208
|
-
end
|
210
|
+
when "directory", "file", "link":
|
211
|
+
@resource[:ensure] = @stats[:type] unless @resource.deleting?
|
209
212
|
else
|
210
213
|
self.info @stats.inspect
|
211
|
-
self.err "Cannot use files of type %s as sources" %
|
212
|
-
@stats[:type]
|
214
|
+
self.err "Cannot use files of type %s as sources" % @stats[:type]
|
213
215
|
return :nocopy
|
214
216
|
end
|
215
217
|
|
@@ -221,11 +223,9 @@ module Puppet
|
|
221
223
|
|
222
224
|
# was the stat already specified, or should the value
|
223
225
|
# be inherited from the source?
|
224
|
-
unless @resource.argument?(stat)
|
225
|
-
@resource[stat] = value
|
226
|
-
end
|
226
|
+
@resource[stat] = value unless @resource.argument?(stat)
|
227
227
|
}
|
228
|
-
|
228
|
+
|
229
229
|
return @stats[:checksum]
|
230
230
|
end
|
231
231
|
|
@@ -241,9 +241,7 @@ module Puppet
|
|
241
241
|
checks.delete(:checksum)
|
242
242
|
|
243
243
|
@resource[:check] = checks
|
244
|
-
unless @resource.property(:checksum)
|
245
|
-
@resource[:checksum] = :md5
|
246
|
-
end
|
244
|
+
@resource[:checksum] = :md5 unless @resource.property(:checksum)
|
247
245
|
end
|
248
246
|
|
249
247
|
def sync
|
@@ -251,7 +249,7 @@ module Puppet
|
|
251
249
|
|
252
250
|
exists = File.exists?(@resource[:path])
|
253
251
|
|
254
|
-
@resource.write(:source)
|
252
|
+
@resource.write(contents, :source, @stats[:checksum])
|
255
253
|
|
256
254
|
if exists
|
257
255
|
return :file_changed
|
@@ -261,34 +259,22 @@ module Puppet
|
|
261
259
|
end
|
262
260
|
|
263
261
|
private
|
262
|
+
|
264
263
|
def get_remote_content
|
265
|
-
unless @stats[:type] == "file"
|
266
|
-
#if @stats[:type] == "directory"
|
267
|
-
#[@resource.name, @should.inspect]
|
268
|
-
#end
|
269
|
-
raise Puppet::DevError, "Got told to copy non-file %s" %
|
270
|
-
@resource[:path]
|
271
|
-
end
|
264
|
+
raise Puppet::DevError, "Got told to copy non-file %s" % @resource[:path] unless @stats[:type] == "file"
|
272
265
|
|
273
266
|
sourceobj, path = @resource.uri2obj(@source)
|
274
267
|
|
275
268
|
begin
|
276
269
|
contents = sourceobj.server.retrieve(path, @resource[:links])
|
277
|
-
rescue
|
278
|
-
self.
|
279
|
-
[path, detail]
|
280
|
-
return nil
|
270
|
+
rescue => detail
|
271
|
+
self.fail "Could not retrieve %s: %s" % [path, detail]
|
281
272
|
end
|
282
273
|
|
283
|
-
|
284
|
-
# protocol.
|
285
|
-
unless sourceobj.server.local
|
286
|
-
contents = CGI.unescape(contents)
|
287
|
-
end
|
274
|
+
contents = CGI.unescape(contents) unless sourceobj.server.local
|
288
275
|
|
289
276
|
if contents == ""
|
290
|
-
self.notice "Could not retrieve contents for %s" %
|
291
|
-
@source
|
277
|
+
self.notice "Could not retrieve contents for %s" % @source
|
292
278
|
end
|
293
279
|
|
294
280
|
return contents
|
File without changes
|
File without changes
|
File without changes
|
data/lib/puppet/type/host.rb
CHANGED
@@ -4,6 +4,13 @@ module Puppet
|
|
4
4
|
|
5
5
|
newproperty(:ip) do
|
6
6
|
desc "The host's IP address, IPv4 or IPv6."
|
7
|
+
|
8
|
+
validate do |value|
|
9
|
+
unless value =~ /((([0-9a-fA-F]+:){7}[0-9a-fA-F]+)|(([0-9a-fA-F]+:)*[0-9a-fA-F]+)?::(([0-9a-fA-F]+:)*[0-9a-fA-F]+)?)|((25[0-5]|2[0-4][\d]|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})/
|
10
|
+
raise Puppet::Error, "Invalid IP address"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
7
14
|
end
|
8
15
|
|
9
16
|
newproperty(:alias) do
|
@@ -78,6 +85,12 @@ module Puppet
|
|
78
85
|
desc "The host name."
|
79
86
|
|
80
87
|
isnamevar
|
88
|
+
|
89
|
+
validate do |value|
|
90
|
+
unless value =~ /^\w+-?[\w+]?\.?[\w+.{1}]*\w+$/
|
91
|
+
raise Puppet::Error, "Invalid host name"
|
92
|
+
end
|
93
|
+
end
|
81
94
|
end
|
82
95
|
|
83
96
|
@doc = "Installs and manages host entries. For most systems, these
|
data/lib/puppet/type/package.rb
CHANGED
@@ -176,7 +176,7 @@ module Puppet
|
|
176
176
|
a common name to packages::
|
177
177
|
|
178
178
|
# In the 'openssl' class
|
179
|
-
$ssl = $
|
179
|
+
$ssl = $operatingsystem ? {
|
180
180
|
solaris => SMCossl,
|
181
181
|
default => openssl
|
182
182
|
}
|
@@ -190,7 +190,7 @@ module Puppet
|
|
190
190
|
|
191
191
|
. etc. .
|
192
192
|
|
193
|
-
$ssh = $
|
193
|
+
$ssh = $operatingsystem ? {
|
194
194
|
solaris => SMCossh,
|
195
195
|
default => openssh
|
196
196
|
}
|
@@ -200,7 +200,7 @@ module Puppet
|
|
200
200
|
package { $ssh:
|
201
201
|
ensure => installed,
|
202
202
|
alias => openssh,
|
203
|
-
require =>
|
203
|
+
require => Package[openssl]
|
204
204
|
}
|
205
205
|
|
206
206
|
"
|
@@ -211,14 +211,6 @@ module Puppet
|
|
211
211
|
desc "Where to find the actual package. This must be a local file
|
212
212
|
(or on a network file system) or a URL that your specific
|
213
213
|
packaging type understands; Puppet will not retrieve files for you."
|
214
|
-
|
215
|
-
validate do |value|
|
216
|
-
unless value =~ /^#{File::SEPARATOR}/ or value =~ /\w+:\/\//
|
217
|
-
self.fail(
|
218
|
-
"Package sources must be fully qualified files or URLs, depending on the platform."
|
219
|
-
)
|
220
|
-
end
|
221
|
-
end
|
222
214
|
end
|
223
215
|
newparam(:instance) do
|
224
216
|
desc "A read-only parameter set by the package."
|
@@ -248,7 +240,7 @@ module Puppet
|
|
248
240
|
|
249
241
|
newparam(:responsefile) do
|
250
242
|
desc "A file containing any necessary answers to questions asked by
|
251
|
-
the package. This is currently
|
243
|
+
the package. This is currently used on Solaris and Debian. The
|
252
244
|
value will be validated according to system rules, but it should
|
253
245
|
generally be a fully qualified path."
|
254
246
|
end
|
data/lib/puppet/type/service.rb
CHANGED
@@ -28,6 +28,8 @@ module Puppet
|
|
28
28
|
feature :enableable, "The provider can enable and disable the service",
|
29
29
|
:methods => [:disable, :enable, :enabled?]
|
30
30
|
|
31
|
+
feature :controllable, "The provider uses a control variable."
|
32
|
+
|
31
33
|
newproperty(:enable, :required_features => :enableable) do
|
32
34
|
desc "Whether a service should be enabled to start at boot.
|
33
35
|
This property behaves quite differently depending on the platform;
|
@@ -163,6 +165,13 @@ module Puppet
|
|
163
165
|
desc "Specify a *stop* command manually."
|
164
166
|
end
|
165
167
|
|
168
|
+
newparam(:control) do
|
169
|
+
desc "The control variable used to manage services (originally for HP-UX).
|
170
|
+
Defaults to the upcased service name plus ``START`` replacing dots with
|
171
|
+
underscores, for those providers that support the ``controllable`` feature."
|
172
|
+
defaultto { resource.name.gsub(".","_").upcase + "_START" if resource.provider.controllable? }
|
173
|
+
end
|
174
|
+
|
166
175
|
newparam :hasrestart do
|
167
176
|
desc "Specify that an init script has a ``restart`` option. Otherwise,
|
168
177
|
the init script's ``stop`` and ``start`` methods are used."
|