chef 0.9.16 → 0.9.18

Sign up to get free protection for your applications and to get access to all the features.
@@ -24,7 +24,7 @@ class Chef
24
24
  class Provider
25
25
  class Package
26
26
  class Dpkg < Chef::Provider::Package::Apt
27
- DPKG_INFO = /([a-z\d\-\+]+)\t([\w\d.-]+)/
27
+ DPKG_INFO = /([a-z\d\-\+]+)\t([\w\d.~-]+)/
28
28
  DPKG_INSTALLED = /^Status: install ok installed/
29
29
  DPKG_VERSION = /^Version: (.+)$/
30
30
 
@@ -84,9 +84,18 @@ class Chef
84
84
  Chef::Log.debug("zypper current resource #{@current_resource}")
85
85
  @current_resource
86
86
  end
87
+
88
+ #Gets the zypper Version from command output (Returns Floating Point number)
89
+ def zypper_version()
90
+ `zypper -V 2>&1`.scan(/\d+/).join(".").to_f
91
+ end
87
92
 
88
93
  def install_package(name, version)
89
- if version
94
+ if zypper_version < 1.0
95
+ run_command(
96
+ :command => "zypper install -y #{name}"
97
+ )
98
+ elsif version
90
99
  run_command(
91
100
  :command => "zypper -n --no-gpg-checks install -l #{name}=#{version}"
92
101
  )
@@ -98,7 +107,11 @@ class Chef
98
107
  end
99
108
 
100
109
  def upgrade_package(name, version)
101
- if version
110
+ if zypper_version < 1.0
111
+ run_command(
112
+ :command => "zypper install -y #{name}"
113
+ )
114
+ elsif version
102
115
  run_command(
103
116
  :command => "zypper -n --no-gpg-checks install -l #{name}=#{version}"
104
117
  )
@@ -110,7 +123,11 @@ class Chef
110
123
  end
111
124
 
112
125
  def remove_package(name, version)
113
- if version
126
+ if zypper_version < 1.0
127
+ run_command(
128
+ :command => "zypper remove -y #{name}"
129
+ )
130
+ elsif version
114
131
  run_command(
115
132
  :command => "zypper -n --no-gpg-checks remove #{name}=#{version}"
116
133
  )
@@ -20,16 +20,16 @@ require 'chef/provider/service/init'
20
20
  require 'chef/mixin/command'
21
21
 
22
22
  class Chef::Provider::Service::Arch < Chef::Provider::Service::Init
23
-
23
+
24
24
  def initialize(new_resource, run_context)
25
25
  super
26
26
  @init_command = "/etc/rc.d/#{@new_resource.service_name}"
27
27
  end
28
-
28
+
29
29
  def load_current_resource
30
-
30
+
31
31
  raise Chef::Exceptions::Service unless ::File.exists?("/etc/rc.conf")
32
- raise Chef::Exceptions::Service unless ::File.read("/etc/rc.conf").match(/DAEMONS=\((.*)\)/)
32
+ raise Chef::Exceptions::Service unless ::File.read("/etc/rc.conf").match(/DAEMONS=\((.*)\)/m)
33
33
 
34
34
  super
35
35
 
@@ -38,38 +38,46 @@ class Chef::Provider::Service::Arch < Chef::Provider::Service::Init
38
38
  @current_resource
39
39
  end
40
40
 
41
+ # Get list of all daemons from the file '/etc/rc.conf'.
42
+ # Mutiple lines and background form are supported. Example:
43
+ # DAEMONS=(\
44
+ # foobar \
45
+ # @example \
46
+ # !net \
47
+ # )
41
48
  def daemons
42
49
  entries = []
43
- if ::File.read("/etc/rc.conf").match(/DAEMONS=\((.*)\)/)
44
- entries += $1.split(" ") if $1.length > 0
50
+ if ::File.read("/etc/rc.conf").match(/DAEMONS=\((.*)\)/m)
51
+ entries += $1.gsub(/\\?[\r\n]/, ' ').gsub(/# *[^ ]+/,' ').split(' ') if $1.length > 0
45
52
  end
46
-
53
+
47
54
  yield(entries) if block_given?
48
-
55
+
49
56
  entries
50
57
  end
51
-
58
+
59
+ # FIXME: Multiple entries of DAEMONS will cause very bad results :)
52
60
  def update_daemons(entries)
53
- content = ::File.read("/etc/rc.conf").gsub(/DAEMONS=\((.*)\)/, "DAEMONS=(#{entries.join(' ')})")
61
+ content = ::File.read("/etc/rc.conf").gsub(/DAEMONS=\((.*)\)/m, "DAEMONS=(#{entries.join(' ')})")
54
62
  ::File.open("/etc/rc.conf", "w") do |f|
55
63
  f.write(content)
56
64
  end
57
65
  end
58
-
66
+
59
67
  def enable_service()
60
68
  new_daemons = []
61
69
  entries = daemons
62
-
63
- if entries.include?(new_resource.service_name)
64
- # exists and already enabled
65
- new_daemons += entries
70
+
71
+ if entries.include?(new_resource.service_name) or entries.include?("@#{new_resource.service_name}")
72
+ # exists and already enabled (or already enabled as a background service)
73
+ # new_daemons += entries
66
74
  else
67
75
  if entries.include?("!#{new_resource.service_name}")
68
76
  # exists but disabled
69
77
  entries.each do |daemon|
70
- if daemon == "!#{new_resource.service_name}"
78
+ if daemon == "!#{new_resource.service_name}"
71
79
  new_daemons << new_resource.service_name
72
- else
80
+ else
73
81
  new_daemons << daemon
74
82
  end
75
83
  end
@@ -78,32 +86,31 @@ class Chef::Provider::Service::Arch < Chef::Provider::Service::Init
78
86
  new_daemons += entries
79
87
  new_daemons << new_resource.service_name
80
88
  end
89
+ update_daemons(new_daemons)
81
90
  end
82
-
83
- update_daemons(new_daemons)
84
91
  end
85
-
92
+
86
93
  def disable_service()
87
94
  new_daemons = []
88
95
  entries = daemons
89
-
96
+
90
97
  if entries.include?("!#{new_resource.service_name}")
91
98
  # exists and disabled
92
- new_daemons += entries
99
+ # new_daemons += entries
93
100
  else
94
- if entries.include?(new_resource.service_name)
95
- # exists but enabled
101
+ if entries.include?(new_resource.service_name) or entries.include?("@#{new_resource.service_name}")
102
+ # exists but enabled (or enabled as a back-ground service)
103
+ # FIXME: Does arch support !@foobar ?
96
104
  entries.each do |daemon|
97
- if daemon == new_resource.service_name
105
+ if [new_resource.service_name, "@#{new_resource.service_name}"].include?(daemon)
98
106
  new_daemons << "!#{new_resource.service_name}"
99
- else
107
+ else
100
108
  new_daemons << daemon
101
109
  end
102
110
  end
103
111
  end
112
+ update_daemons(new_daemons)
104
113
  end
105
-
106
- update_daemons(new_daemons)
107
114
  end
108
115
 
109
116
  end
@@ -20,6 +20,7 @@ require "pp"
20
20
  require "etc"
21
21
  require "mixlib/cli"
22
22
 
23
+ require 'chef'
23
24
  require 'chef/version'
24
25
  require "chef/client"
25
26
  require "chef/config"
@@ -17,5 +17,5 @@
17
17
 
18
18
  class Chef
19
19
  CHEF_ROOT = File.dirname(File.expand_path(File.dirname(__FILE__)))
20
- VERSION = '0.9.16'
20
+ VERSION = '0.9.18'
21
21
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: chef
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.9.16
5
+ version: 0.9.18
6
6
  platform: ruby
7
7
  authors:
8
8
  - Adam Jacob
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-04-15 00:00:00 -07:00
13
+ date: 2011-06-29 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency