summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Robinson <matt@puppetlabs.com>2011-05-13 15:00:42 -0700
committerMatt Robinson <matt@puppetlabs.com>2011-05-13 15:00:42 -0700
commit4b7afaa065383c4a441068a15f97ab82d2ebd3fc (patch)
tree9ec63989d87e43e4dba65e40eb3a0067c7cacc5c
parentd63fc34d0c6fdfbe72dafdf5d07a6cc9c6dd388e (diff)
parent61d732231fa1d23a5e9c32bc38ec9f11430229ba (diff)
downloadpuppet-4b7afaa065383c4a441068a15f97ab82d2ebd3fc.tar.gz
puppet-4b7afaa065383c4a441068a15f97ab82d2ebd3fc.tar.xz
puppet-4b7afaa065383c4a441068a15f97ab82d2ebd3fc.zip
Merge branch '2.7.x' into 2.7.next
* 2.7.x: (#7469) Add license to test face so tests pass (#7264) Docs: Clarify that subscribe/notify imply require/before (#7468) Stub spec that tries to connect to pypi.python.org Prevent spec failure caused by network device mock leak Fix #7299 - do not require net/ssh for running rake spec Resolved Conflicts: lib/puppet/util/network_device.rb spec/unit/util/network_device_spec.rb
-rw-r--r--lib/puppet/type.rb84
-rw-r--r--lib/puppet/util/network_device/transport/ssh.rb4
-rwxr-xr-xspec/unit/application/indirection_base_spec.rb2
-rwxr-xr-xspec/unit/provider/package/pip_spec.rb44
4 files changed, 73 insertions, 61 deletions
diff --git a/lib/puppet/type.rb b/lib/puppet/type.rb
index 656b8f264..1dbf12451 100644
--- a/lib/puppet/type.rb
+++ b/lib/puppet/type.rb
@@ -957,13 +957,13 @@ class Type
schedule object, and then reference the name of that object to use
that for your schedule:
- schedule { daily:
+ schedule { 'daily':
period => daily,
- range => \"2-4\"
+ range => \"2-4\"
}
exec { \"/usr/bin/apt-get update\":
- schedule => daily
+ schedule => 'daily'
}
The creation of the schedule object does not need to appear in the
@@ -1055,9 +1055,9 @@ class Type
newmetaparam(:alias) do
desc "Creates an alias for the object. Puppet uses this internally when you
- provide a symbolic name:
+ provide a symbolic title:
- file { sshdconfig:
+ file { 'sshdconfig':
path => $operatingsystem ? {
solaris => \"/usr/local/etc/ssh/sshd_config\",
default => \"/etc/ssh/sshd_config\"
@@ -1065,30 +1065,30 @@ class Type
source => \"...\"
}
- service { sshd:
- subscribe => File[sshdconfig]
+ service { 'sshd':
+ subscribe => File['sshdconfig']
}
- When you use this feature, the parser sets `sshdconfig` as the name,
+ When you use this feature, the parser sets `sshdconfig` as the title,
and the library sets that as an alias for the file so the dependency
- lookup for `sshd` works. You can use this parameter yourself,
+ lookup in `Service['sshd']` works. You can use this metaparameter yourself,
but note that only the library can use these aliases; for instance,
the following code will not work:
file { \"/etc/ssh/sshd_config\":
owner => root,
group => root,
- alias => sshdconfig
+ alias => 'sshdconfig'
}
- file { sshdconfig:
+ file { 'sshdconfig':
mode => 644
}
There's no way here for the Puppet parser to know that these two stanzas
should be affecting the same file.
- See the [Language Tutorial](http://docs.puppetlabs.com/guides/language_tutorial.html) for more information.
+ See the [Language Guide](http://docs.puppetlabs.com/guides/language_guide.html) for more information.
"
@@ -1222,7 +1222,7 @@ class Type
# solution, but it works.
newmetaparam(:require, :parent => RelationshipMetaparam, :attributes => {:direction => :in, :events => :NONE}) do
- desc "One or more objects that this object depends on.
+ desc "References to one or more objects that this object depends on.
This is used purely for guaranteeing that changes to required objects
happen before the dependent object. For instance:
@@ -1232,8 +1232,8 @@ class Type
}
file { \"/usr/local/scripts/myscript\":
- source => \"puppet://server/module/myscript\",
- mode => 755,
+ source => \"puppet://server/module/myscript\",
+ mode => 755,
require => File[\"/usr/local/scripts\"]
}
@@ -1247,7 +1247,7 @@ class Type
ways to autorequire objects, so if you think Puppet could be
smarter here, let us know.
- In fact, the above code was redundant -- Puppet will autorequire
+ In fact, the above code was redundant --- Puppet will autorequire
any parent directories that are being managed; it will
automatically realize that the parent directory should be created
before the script is pulled down.
@@ -1263,40 +1263,41 @@ class Type
end
newmetaparam(:subscribe, :parent => RelationshipMetaparam, :attributes => {:direction => :in, :events => :ALL_EVENTS, :callback => :refresh}) do
- desc "One or more objects that this object depends on. Changes in the
- subscribed to objects result in the dependent objects being
- refreshed (e.g., a service will get restarted). For instance:
+ desc "References to one or more objects that this object depends on. This
+ metaparameter creates a dependency relationship like **require,**
+ and also causes the dependent object to be refreshed when the
+ subscribed object is changed. For instance:
class nagios {
- file { \"/etc/nagios/nagios.conf\":
+ file { 'nagconf':
+ path => \"/etc/nagios/nagios.conf\"
source => \"puppet://server/module/nagios.conf\",
- alias => nagconf # just to make things easier for me
}
- service { nagios:
- ensure => running,
- subscribe => File[nagconf]
+ service { 'nagios':
+ ensure => running,
+ subscribe => File['nagconf']
}
}
- Currently the `exec`, `mount` and `service` type support
+ Currently the `exec`, `mount` and `service` types support
refreshing.
"
end
newmetaparam(:before, :parent => RelationshipMetaparam, :attributes => {:direction => :out, :events => :NONE}) do
- desc %{This parameter is the opposite of **require** -- it guarantees
- that the specified object is applied later than the specifying
- object:
+ desc %{References to one or more objects that depend on this object. This
+ parameter is the opposite of **require** --- it guarantees that
+ the specified object is applied later than the specifying object:
file { "/var/nagios/configuration":
source => "...",
recurse => true,
- before => Exec["nagios-rebuid"]
+ before => Exec["nagios-rebuid"]
}
exec { "nagios-rebuild":
command => "/usr/bin/make",
- cwd => "/var/nagios/configuration"
+ cwd => "/var/nagios/configuration"
}
This will make sure all of the files are up to date before the
@@ -1304,15 +1305,18 @@ class Type
end
newmetaparam(:notify, :parent => RelationshipMetaparam, :attributes => {:direction => :out, :events => :ALL_EVENTS, :callback => :refresh}) do
- desc %{This parameter is the opposite of **subscribe** -- it sends events
- to the specified object:
+ desc %{References to one or more objects that depend on this object. This
+ parameter is the opposite of **subscribe** --- it creates a
+ dependency relationship like **before,** and also causes the
+ dependent object(s) to be refreshed when this object is changed. For
+ instance:
file { "/etc/sshd_config":
source => "....",
- notify => Service[sshd]
+ notify => Service['sshd']
}
- service { sshd:
+ service { 'sshd':
ensure => running
}
@@ -1328,24 +1332,24 @@ class Type
By default, all classes get directly added to the
'main' stage. You can create new stages as resources:
- stage { [pre, post]: }
+ stage { ['pre', 'post']: }
To order stages, use standard relationships:
- stage { pre: before => Stage[main] }
+ stage { 'pre': before => Stage['main'] }
Or use the new relationship syntax:
- Stage[pre] -> Stage[main] -> Stage[post]
+ Stage['pre'] -> Stage['main'] -> Stage['post']
Then use the new class parameters to specify a stage:
- class { foo: stage => pre }
+ class { 'foo': stage => 'pre' }
Stages can only be set on classes, not individual resources. This will
fail:
- file { '/foo': stage => pre, ensure => file }
+ file { '/foo': stage => 'pre', ensure => file }
}
end
@@ -1478,7 +1482,7 @@ class Type
newparam(:provider) do
desc "The specific backend for #{self.name.to_s} to use. You will
- seldom need to specify this -- Puppet will usually discover the
+ seldom need to specify this --- Puppet will usually discover the
appropriate provider for your platform."
# This is so we can refer back to the type to get a list of
diff --git a/lib/puppet/util/network_device/transport/ssh.rb b/lib/puppet/util/network_device/transport/ssh.rb
index bf0e7193c..3d7976543 100644
--- a/lib/puppet/util/network_device/transport/ssh.rb
+++ b/lib/puppet/util/network_device/transport/ssh.rb
@@ -2,7 +2,6 @@
require 'puppet/util/network_device'
require 'puppet/util/network_device/transport'
require 'puppet/util/network_device/transport/base'
-require 'net/ssh'
# This is an adaptation/simplification of gem net-ssh-telnet, which aims to have
# a sane interface to Net::SSH. Credits goes to net-ssh-telnet authors
@@ -12,6 +11,9 @@ class Puppet::Util::NetworkDevice::Transport::Ssh < Puppet::Util::NetworkDevice:
def initialize
super
+ unless Puppet.features.ssh?
+ raise 'Connecting with ssh to a network device requires the \'net/ssh\' ruby library'
+ end
end
def handles_login?
diff --git a/spec/unit/application/indirection_base_spec.rb b/spec/unit/application/indirection_base_spec.rb
index 910774c14..d72def6cf 100755
--- a/spec/unit/application/indirection_base_spec.rb
+++ b/spec/unit/application/indirection_base_spec.rb
@@ -10,6 +10,8 @@ end
face = Puppet::Indirector::Face.define(:testindirection, '0.0.1') do
summary "fake summary"
+ copyright "Puppet Labs", 2011
+ license "Apache 2 license; see COPYING"
end
# REVISIT: This horror is required because we don't allow anything to be
# :current except for if it lives on, and is loaded from, disk. --daniel 2011-03-29
diff --git a/spec/unit/provider/package/pip_spec.rb b/spec/unit/provider/package/pip_spec.rb
index b56271029..97b3b5e73 100755
--- a/spec/unit/provider/package/pip_spec.rb
+++ b/spec/unit/provider/package/pip_spec.rb
@@ -6,16 +6,20 @@ provider_class = Puppet::Type.type(:package).provider(:pip)
describe provider_class do
before do
- @resource = Puppet::Resource.new(:package, "sdsfdssdhdfyjymdgfcjdfjxdrssf")
+ @resource = Puppet::Resource.new(:package, "fake_package")
@provider = provider_class.new(@resource)
+ client = stub_everything('client')
+ client.stubs(:call).with('package_releases', 'real_package').returns(["1.3", "1.2.5", "1.2.4"])
+ client.stubs(:call).with('package_releases', 'fake_package').returns([])
+ XMLRPC::Client.stubs(:new2).returns(client)
end
describe "parse" do
it "should return a hash on valid input" do
- provider_class.parse("Django==1.2.5").should == {
+ provider_class.parse("real_package==1.2.5").should == {
:ensure => "1.2.5",
- :name => "Django",
+ :name => "real_package",
:provider => :pip,
}
end
@@ -31,7 +35,7 @@ describe provider_class do
it "should return an array when pip is present" do
provider_class.expects(:which).with('pip').returns("/fake/bin/pip")
p = stub("process")
- p.expects(:collect).yields("Django==1.2.5")
+ p.expects(:collect).yields("real_package==1.2.5")
provider_class.expects(:execpipe).with("/fake/bin/pip freeze").yields(p)
provider_class.instances
end
@@ -46,19 +50,19 @@ describe provider_class do
describe "query" do
before do
- @resource[:name] = "Django"
+ @resource[:name] = "real_package"
end
it "should return a hash when pip and the package are present" do
provider_class.expects(:instances).returns [provider_class.new({
:ensure => "1.2.5",
- :name => "Django",
+ :name => "real_package",
:provider => :pip,
})]
@provider.query.should == {
:ensure => "1.2.5",
- :name => "Django",
+ :name => "real_package",
:provider => :pip,
}
end
@@ -72,13 +76,13 @@ describe provider_class do
describe "latest" do
- it "should find a version number for Django" do
- @resource[:name] = "Django"
+ it "should find a version number for real_package" do
+ @resource[:name] = "real_package"
@provider.latest.should_not == nil
end
- it "should not find a version number for sdsfdssdhdfyjymdgfcjdfjxdrssf" do
- @resource[:name] = "sdsfdssdhdfyjymdgfcjdfjxdrssf"
+ it "should not find a version number for fake_package" do
+ @resource[:name] = "fake_package"
@provider.latest.should == nil
end
@@ -87,15 +91,15 @@ describe provider_class do
describe "install" do
before do
- @resource[:name] = "sdsfdssdhdfyjymdgfcjdfjxdrssf"
- @url = "git+https://example.com/sdsfdssdhdfyjymdgfcjdfjxdrssf.git"
+ @resource[:name] = "fake_package"
+ @url = "git+https://example.com/fake_package.git"
end
it "should install" do
@resource[:ensure] = :installed
@resource[:source] = nil
@provider.expects(:lazy_pip).
- with("install", '-q', "sdsfdssdhdfyjymdgfcjdfjxdrssf")
+ with("install", '-q', "fake_package")
@provider.install
end
@@ -103,7 +107,7 @@ describe provider_class do
@resource[:ensure] = :installed
@resource[:source] = @url
@provider.expects(:lazy_pip).
- with("install", '-q', '-e', "#{@url}#egg=sdsfdssdhdfyjymdgfcjdfjxdrssf")
+ with("install", '-q', '-e', "#{@url}#egg=fake_package")
@provider.install
end
@@ -111,14 +115,14 @@ describe provider_class do
@resource[:ensure] = "0123456"
@resource[:source] = @url
@provider.expects(:lazy_pip).
- with("install", "-q", "-e", "#{@url}@0123456#egg=sdsfdssdhdfyjymdgfcjdfjxdrssf")
+ with("install", "-q", "-e", "#{@url}@0123456#egg=fake_package")
@provider.install
end
it "should install a particular version" do
@resource[:ensure] = "0.0.0"
@resource[:source] = nil
- @provider.expects(:lazy_pip).with("install", "-q", "sdsfdssdhdfyjymdgfcjdfjxdrssf==0.0.0")
+ @provider.expects(:lazy_pip).with("install", "-q", "fake_package==0.0.0")
@provider.install
end
@@ -126,7 +130,7 @@ describe provider_class do
@resource[:ensure] = :latest
@resource[:source] = nil
@provider.expects(:lazy_pip).
- with("install", "-q", "--upgrade", "sdsfdssdhdfyjymdgfcjdfjxdrssf")
+ with("install", "-q", "--upgrade", "fake_package")
@provider.install
end
@@ -135,9 +139,9 @@ describe provider_class do
describe "uninstall" do
it "should uninstall" do
- @resource[:name] = "sdsfdssdhdfyjymdgfcjdfjxdrssf"
+ @resource[:name] = "fake_package"
@provider.expects(:lazy_pip).
- with('uninstall', '-y', '-q', 'sdsfdssdhdfyjymdgfcjdfjxdrssf')
+ with('uninstall', '-y', '-q', 'fake_package')
@provider.uninstall
end