chef 0.9.18 → 0.10.0.beta.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +0 -3
- data/distro/arch/etc/rc.d/chef-server +0 -4
- data/distro/arch/etc/rc.d/chef-server-webui +0 -4
- data/distro/arch/etc/rc.d/chef-solr +0 -4
- data/distro/arch/etc/rc.d/chef-solr-indexer +0 -4
- data/lib/chef.rb +3 -3
- data/lib/chef/api_client.rb +1 -1
- data/lib/chef/application.rb +11 -1
- data/lib/chef/application/client.rb +18 -22
- data/lib/chef/application/knife.rb +28 -29
- data/lib/chef/application/solo.rb +14 -12
- data/lib/chef/client.rb +112 -54
- data/lib/chef/config.rb +4 -0
- data/lib/chef/cookbook/chefignore.rb +66 -0
- data/lib/chef/cookbook/cookbook_collection.rb +6 -5
- data/lib/chef/cookbook/cookbook_version_loader.rb +151 -0
- data/lib/chef/cookbook/file_system_file_vendor.rb +10 -8
- data/lib/chef/cookbook/metadata.rb +200 -108
- data/lib/chef/cookbook_loader.rb +39 -163
- data/lib/chef/cookbook_uploader.rb +100 -78
- data/lib/chef/cookbook_version.rb +92 -47
- data/lib/chef/cookbook_version_selector.rb +163 -0
- data/lib/chef/couchdb.rb +9 -1
- data/lib/chef/data_bag.rb +1 -1
- data/lib/chef/data_bag_item.rb +1 -1
- data/lib/chef/encrypted_data_bag_item.rb +126 -0
- data/lib/chef/environment.rb +386 -0
- data/lib/chef/exceptions.rb +82 -1
- data/lib/chef/index_queue/amqp_client.rb +15 -12
- data/lib/chef/index_queue/indexable.rb +38 -4
- data/lib/chef/json_compat.rb +3 -3
- data/lib/chef/knife.rb +97 -202
- data/lib/chef/knife/bootstrap.rb +27 -61
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +4 -2
- data/lib/chef/knife/bootstrap/centos5-gems.erb +6 -15
- data/lib/chef/knife/bootstrap/fedora13-gems.erb +3 -4
- data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +2 -2
- data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +6 -5
- data/lib/chef/knife/client_bulk_delete.rb +6 -3
- data/lib/chef/knife/client_create.rb +13 -10
- data/lib/chef/knife/client_delete.rb +10 -7
- data/lib/chef/knife/client_edit.rb +9 -6
- data/lib/chef/knife/client_list.rb +8 -5
- data/lib/chef/knife/client_reregister.rb +9 -6
- data/lib/chef/knife/client_show.rb +9 -6
- data/lib/chef/knife/configure.rb +15 -19
- data/lib/chef/knife/configure_client.rb +4 -4
- data/lib/chef/knife/cookbook_bulk_delete.rb +11 -8
- data/lib/chef/knife/cookbook_create.rb +120 -55
- data/lib/chef/knife/cookbook_delete.rb +18 -12
- data/lib/chef/knife/cookbook_download.rb +10 -6
- data/lib/chef/knife/cookbook_list.rb +15 -6
- data/lib/chef/knife/cookbook_metadata.rb +41 -21
- data/lib/chef/knife/cookbook_metadata_from_file.rb +4 -0
- data/lib/chef/knife/cookbook_show.rb +16 -5
- data/lib/chef/knife/cookbook_site_download.rb +2 -2
- data/lib/chef/knife/cookbook_site_share.rb +18 -13
- data/lib/chef/knife/cookbook_site_unshare.rb +7 -4
- data/lib/chef/knife/cookbook_site_vendor.rb +21 -18
- data/lib/chef/knife/cookbook_test.rb +14 -14
- data/lib/chef/knife/cookbook_upload.rb +91 -40
- data/lib/chef/knife/data_bag_create.rb +41 -6
- data/lib/chef/knife/data_bag_delete.rb +5 -3
- data/lib/chef/knife/data_bag_edit.rb +55 -11
- data/lib/chef/knife/data_bag_from_file.rb +47 -7
- data/lib/chef/knife/data_bag_list.rb +4 -1
- data/lib/chef/knife/data_bag_show.rb +44 -4
- data/lib/chef/knife/environment_create.rb +53 -0
- data/lib/chef/knife/environment_delete.rb +45 -0
- data/lib/chef/knife/environment_edit.rb +45 -0
- data/lib/chef/knife/environment_from_file.rb +39 -0
- data/lib/chef/knife/environment_list.rb +42 -0
- data/lib/chef/knife/environment_show.rb +46 -0
- data/lib/chef/knife/exec.rb +1 -1
- data/lib/chef/knife/index_rebuild.rb +8 -9
- data/lib/chef/knife/node_bulk_delete.rb +9 -6
- data/lib/chef/knife/node_create.rb +9 -6
- data/lib/chef/knife/node_delete.rb +10 -7
- data/lib/chef/knife/node_edit.rb +129 -10
- data/lib/chef/knife/node_from_file.rb +10 -7
- data/lib/chef/knife/node_list.rb +11 -6
- data/lib/chef/knife/node_run_list_add.rb +10 -7
- data/lib/chef/knife/node_run_list_remove.rb +9 -6
- data/lib/chef/knife/node_show.rb +15 -7
- data/lib/chef/knife/recipe_list.rb +4 -3
- data/lib/chef/knife/role_bulk_delete.rb +9 -6
- data/lib/chef/knife/role_create.rb +9 -6
- data/lib/chef/knife/role_delete.rb +10 -7
- data/lib/chef/knife/role_edit.rb +11 -8
- data/lib/chef/knife/role_from_file.rb +10 -7
- data/lib/chef/knife/role_list.rb +8 -5
- data/lib/chef/knife/role_show.rb +11 -8
- data/lib/chef/knife/search.rb +33 -10
- data/lib/chef/knife/ssh.rb +33 -61
- data/lib/chef/knife/status.rb +7 -4
- data/lib/chef/knife/subcommand_loader.rb +101 -0
- data/lib/chef/knife/tag_create.rb +31 -0
- data/lib/chef/knife/tag_delete.rb +31 -0
- data/lib/chef/knife/tag_list.rb +29 -0
- data/lib/chef/knife/ui.rb +229 -0
- data/lib/chef/knife/windows_bootstrap.rb +8 -5
- data/lib/chef/log.rb +5 -59
- data/lib/chef/mash.rb +211 -0
- data/lib/chef/mixins.rb +1 -2
- data/lib/chef/nil_argument.rb +3 -0
- data/lib/chef/node.rb +96 -34
- data/lib/chef/platform.rb +27 -0
- data/lib/chef/provider/cookbook_file.rb +21 -20
- data/lib/chef/provider/deploy/revision.rb +3 -0
- data/lib/chef/provider/file.rb +20 -11
- data/lib/chef/provider/git.rb +26 -26
- data/lib/chef/provider/group/aix.rb +70 -0
- data/lib/chef/provider/group/groupadd.rb +7 -4
- data/lib/chef/provider/group/usermod.rb +1 -1
- data/lib/chef/provider/package.rb +28 -28
- data/lib/chef/provider/package/dpkg.rb +1 -1
- data/lib/chef/provider/package/portage.rb +50 -39
- data/lib/chef/provider/package/rubygems.rb +1 -1
- data/lib/chef/provider/package/zypper.rb +3 -20
- data/lib/chef/provider/remote_directory.rb +0 -2
- data/lib/chef/provider/remote_file.rb +2 -3
- data/lib/chef/provider/service/arch.rb +28 -35
- data/lib/chef/provider/service/simple.rb +1 -1
- data/lib/chef/provider/subversion.rb +22 -22
- data/lib/chef/providers.rb +1 -0
- data/lib/chef/recipe.rb +10 -12
- data/lib/chef/resource.rb +49 -42
- data/lib/chef/resource/gem_package.rb +7 -3
- data/lib/chef/resource/git.rb +5 -5
- data/lib/chef/resource/package.rb +7 -7
- data/lib/chef/resource/scm.rb +2 -1
- data/lib/chef/resource/solaris_package.rb +0 -1
- data/lib/chef/resource/yum_package.rb +0 -1
- data/lib/chef/rest.rb +7 -16
- data/lib/chef/rest/rest_request.rb +0 -16
- data/lib/chef/role.rb +67 -13
- data/lib/chef/run_context.rb +37 -21
- data/lib/chef/run_list.rb +30 -15
- data/lib/chef/run_list/run_list_expansion.rb +41 -20
- data/lib/chef/run_list/run_list_item.rb +20 -6
- data/lib/chef/run_list/versioned_recipe_list.rb +68 -0
- data/lib/chef/runner.rb +7 -15
- data/lib/chef/search/query.rb +12 -7
- data/lib/chef/shef.rb +6 -7
- data/lib/chef/shef/shef_session.rb +40 -35
- data/lib/chef/shell_out.rb +22 -201
- data/lib/chef/shell_out/unix.rb +224 -0
- data/lib/chef/shell_out/windows.rb +95 -0
- data/lib/chef/solr_query.rb +187 -0
- data/lib/chef/solr_query/lucene.treetop +145 -0
- data/lib/chef/solr_query/lucene_nodes.rb +285 -0
- data/lib/chef/solr_query/query_transform.rb +65 -0
- data/lib/chef/solr_query/solr_http_request.rb +118 -0
- data/lib/chef/version.rb +4 -2
- data/lib/chef/version_class.rb +70 -0
- data/lib/chef/version_constraint.rb +116 -0
- metadata +68 -37
- data/lib/chef/cookbook/metadata/version.rb +0 -87
- data/lib/chef/knife/bluebox_images_list.rb +0 -54
- data/lib/chef/knife/bluebox_server_create.rb +0 -157
- data/lib/chef/knife/bluebox_server_delete.rb +0 -63
- data/lib/chef/knife/bluebox_server_list.rb +0 -59
- data/lib/chef/knife/ec2_instance_data.rb +0 -46
- data/lib/chef/knife/ec2_server_create.rb +0 -218
- data/lib/chef/knife/ec2_server_delete.rb +0 -87
- data/lib/chef/knife/ec2_server_list.rb +0 -89
- data/lib/chef/knife/rackspace_server_create.rb +0 -184
- data/lib/chef/knife/rackspace_server_delete.rb +0 -57
- data/lib/chef/knife/rackspace_server_list.rb +0 -59
- data/lib/chef/knife/slicehost_images_list.rb +0 -53
- data/lib/chef/knife/slicehost_server_create.rb +0 -103
- data/lib/chef/knife/slicehost_server_delete.rb +0 -61
- data/lib/chef/knife/slicehost_server_list.rb +0 -64
- data/lib/chef/knife/terremark_server_create.rb +0 -152
- data/lib/chef/knife/terremark_server_delete.rb +0 -87
- data/lib/chef/knife/terremark_server_list.rb +0 -77
- data/lib/chef/mixin/find_preferred_file.rb +0 -92
@@ -6,9 +6,9 @@
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
7
|
# you may not use this file except in compliance with the License.
|
8
8
|
# You may obtain a copy of the License at
|
9
|
-
#
|
9
|
+
#
|
10
10
|
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
11
|
+
#
|
12
12
|
# Unless required by applicable law or agreed to in writing, software
|
13
13
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
14
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
@@ -25,17 +25,17 @@ require 'chef/platform'
|
|
25
25
|
class Chef
|
26
26
|
class Provider
|
27
27
|
class Package < Chef::Provider
|
28
|
-
|
28
|
+
|
29
29
|
include Chef::Mixin::Command
|
30
|
-
|
30
|
+
|
31
31
|
attr_accessor :candidate_version
|
32
|
-
|
32
|
+
|
33
33
|
def initialize(new_resource, run_context)
|
34
34
|
super
|
35
35
|
@candidate_version = nil
|
36
36
|
end
|
37
|
-
|
38
|
-
def action_install
|
37
|
+
|
38
|
+
def action_install
|
39
39
|
# If we specified a version, and it's not the current version, move to the specified version
|
40
40
|
if @new_resource.version != nil && @new_resource.version != @current_resource.version
|
41
41
|
install_version = @new_resource.version
|
@@ -51,18 +51,18 @@ class Chef
|
|
51
51
|
end
|
52
52
|
|
53
53
|
Chef::Log.info("Installing #{@new_resource} version #{install_version}")
|
54
|
-
|
54
|
+
|
55
55
|
# We need to make sure we handle the preseed file
|
56
56
|
if @new_resource.response_file
|
57
57
|
preseed_package(@new_resource.package_name, install_version)
|
58
58
|
end
|
59
|
-
|
59
|
+
|
60
60
|
status = install_package(@new_resource.package_name, install_version)
|
61
61
|
if status
|
62
62
|
@new_resource.updated_by_last_action(true)
|
63
63
|
end
|
64
64
|
end
|
65
|
-
|
65
|
+
|
66
66
|
def action_upgrade
|
67
67
|
if @current_resource.version != candidate_version
|
68
68
|
orig_version = @current_resource.version || "uninstalled"
|
@@ -73,8 +73,8 @@ class Chef
|
|
73
73
|
end
|
74
74
|
end
|
75
75
|
end
|
76
|
-
|
77
|
-
def action_remove
|
76
|
+
|
77
|
+
def action_remove
|
78
78
|
if removing_package?
|
79
79
|
Chef::Log.info("Removing #{@new_resource}")
|
80
80
|
remove_package(@current_resource.package_name, @new_resource.version)
|
@@ -82,7 +82,7 @@ class Chef
|
|
82
82
|
else
|
83
83
|
end
|
84
84
|
end
|
85
|
-
|
85
|
+
|
86
86
|
def removing_package?
|
87
87
|
if @current_resource.version.nil?
|
88
88
|
false # nothing to remove
|
@@ -94,7 +94,7 @@ class Chef
|
|
94
94
|
false # we don't have the version we want to remove
|
95
95
|
end
|
96
96
|
end
|
97
|
-
|
97
|
+
|
98
98
|
def action_purge
|
99
99
|
if removing_package?
|
100
100
|
Chef::Log.info("Purging #{@new_resource}")
|
@@ -102,39 +102,39 @@ class Chef
|
|
102
102
|
@new_resource.updated_by_last_action(true)
|
103
103
|
end
|
104
104
|
end
|
105
|
-
|
105
|
+
|
106
106
|
def install_package(name, version)
|
107
107
|
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :install"
|
108
108
|
end
|
109
|
-
|
109
|
+
|
110
110
|
def upgrade_package(name, version)
|
111
|
-
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :upgrade"
|
111
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :upgrade"
|
112
112
|
end
|
113
|
-
|
113
|
+
|
114
114
|
def remove_package(name, version)
|
115
|
-
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :remove"
|
115
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :remove"
|
116
116
|
end
|
117
|
-
|
117
|
+
|
118
118
|
def purge_package(name, version)
|
119
|
-
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :purge"
|
119
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :purge"
|
120
120
|
end
|
121
|
-
|
121
|
+
|
122
122
|
def preseed_package(name, version)
|
123
|
-
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support pre-seeding package install/upgrade instructions - don't ask it to!"
|
123
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support pre-seeding package install/upgrade instructions - don't ask it to!"
|
124
124
|
end
|
125
|
-
|
125
|
+
|
126
126
|
def get_preseed_file(name, version)
|
127
127
|
resource = preseed_resource(name, version)
|
128
128
|
Chef::Log.debug("Fetching preseed file to #{resource.path}")
|
129
129
|
resource.run_action('create')
|
130
|
-
|
130
|
+
|
131
131
|
if resource.updated_by_last_action?
|
132
132
|
resource.path
|
133
133
|
else
|
134
134
|
false
|
135
135
|
end
|
136
136
|
end
|
137
|
-
|
137
|
+
|
138
138
|
def preseed_resource(name, version)
|
139
139
|
# A directory in our cache to store this cookbook's preseed files in
|
140
140
|
file_cache_dir = Chef::FileCache.create_cache_path("preseed/#{@new_resource.cookbook_name}")
|
@@ -147,14 +147,14 @@ class Chef
|
|
147
147
|
remote_file.cookbook_name = @new_resource.cookbook_name
|
148
148
|
remote_file.source(@new_resource.response_file)
|
149
149
|
remote_file.backup(false)
|
150
|
-
|
150
|
+
|
151
151
|
remote_file
|
152
152
|
end
|
153
153
|
|
154
154
|
def expand_options(options)
|
155
155
|
options ? " #{options}" : ""
|
156
156
|
end
|
157
|
-
|
157
|
+
|
158
158
|
end
|
159
159
|
end
|
160
160
|
end
|
@@ -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
|
|
@@ -6,9 +6,9 @@
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
7
|
# you may not use this file except in compliance with the License.
|
8
8
|
# You may obtain a copy of the License at
|
9
|
-
#
|
9
|
+
#
|
10
10
|
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
11
|
+
#
|
12
12
|
# Unless required by applicable law or agreed to in writing, software
|
13
13
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
14
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
@@ -24,48 +24,59 @@ class Chef
|
|
24
24
|
class Provider
|
25
25
|
class Package
|
26
26
|
class Portage < Chef::Provider::Package
|
27
|
-
|
27
|
+
PACKAGE_NAME_PATTERN = %r{(([^/]+)/)?([^/]+)}
|
28
|
+
|
28
29
|
def load_current_resource
|
29
30
|
@current_resource = Chef::Resource::Package.new(@new_resource.name)
|
30
31
|
@current_resource.package_name(@new_resource.package_name)
|
31
32
|
|
32
|
-
category = @new_resource.package_name.split('/').first
|
33
|
-
pkg = @new_resource.package_name.split('/').last
|
34
|
-
|
35
33
|
@current_resource.version(nil)
|
36
34
|
|
37
|
-
|
35
|
+
_, category_with_slash, category, pkg = %r{^#{PACKAGE_NAME_PATTERN}$}.match(@new_resource.package_name).to_a
|
38
36
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
Chef::Log.debug("Got current version #{$1}")
|
44
|
-
break
|
45
|
-
end
|
37
|
+
possibilities = Dir["/var/db/pkg/#{category || "*"}/#{pkg}-*"].map {|d| d.sub(%r{/var/db/pkg/}, "") }
|
38
|
+
versions = possibilities.map do |entry|
|
39
|
+
if(entry =~ %r{[^/]+/#{Regexp.escape(pkg)}\-(\d[\.\d]*((_(alpha|beta|pre|rc|p)\d*)*)?(-r\d+)?)})
|
40
|
+
[$&, $1]
|
46
41
|
end
|
42
|
+
end.compact
|
43
|
+
|
44
|
+
if versions.size > 1
|
45
|
+
atoms = versions.map {|v| v.first }.sort
|
46
|
+
raise Chef::Exceptions::Package, "Multiple packages found for #{@new_resource.package_name}: #{atoms.join(" ")}. Specify a category."
|
47
|
+
elsif versions.size == 1
|
48
|
+
@current_resource.version(versions.first.last)
|
49
|
+
Chef::Log.debug("Got current version #{$1}")
|
47
50
|
end
|
48
51
|
|
49
52
|
@current_resource
|
50
53
|
end
|
51
|
-
|
52
|
-
|
54
|
+
|
55
|
+
|
53
56
|
def parse_emerge(package, txt)
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
57
|
+
availables = {}
|
58
|
+
package_without_category = package.split("/").last
|
59
|
+
found_package_name = nil
|
60
|
+
|
61
|
+
txt.each_line do |line|
|
62
|
+
if line =~ /\*\s+#{PACKAGE_NAME_PATTERN}/
|
63
|
+
found_package_name = $&.strip
|
64
|
+
if found_package_name == package || found_package_name.split("/").last == package_without_category
|
65
|
+
availables[found_package_name] = nil
|
66
|
+
end
|
58
67
|
end
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
elsif line =~ /Latest version installed: (.*)/
|
63
|
-
installed = $1
|
64
|
-
end
|
68
|
+
|
69
|
+
if line =~ /Latest version available: (.*)/ && availables.has_key?(found_package_name)
|
70
|
+
availables[found_package_name] = $1.strip
|
65
71
|
end
|
66
|
-
end
|
67
|
-
|
68
|
-
|
72
|
+
end
|
73
|
+
|
74
|
+
if availables.size > 1
|
75
|
+
# shouldn't happen if a category is specified so just use `package`
|
76
|
+
raise Chef::Exceptions::Package, "Multiple emerge results found for #{package}: #{availables.keys.join(" ")}. Specify a category."
|
77
|
+
end
|
78
|
+
|
79
|
+
availables.values.first
|
69
80
|
end
|
70
81
|
|
71
82
|
def candidate_version
|
@@ -83,29 +94,29 @@ class Chef
|
|
83
94
|
@candidate_version
|
84
95
|
|
85
96
|
end
|
86
|
-
|
87
|
-
|
97
|
+
|
98
|
+
|
88
99
|
def install_package(name, version)
|
89
|
-
pkg = "=#{name}-#{version}"
|
90
|
-
|
100
|
+
pkg = "=#{name}-#{version}"
|
101
|
+
|
91
102
|
if(version =~ /^\~(.+)/)
|
92
103
|
# If we start with a tilde
|
93
104
|
pkg = "~#{name}-#{$1}"
|
94
105
|
end
|
95
|
-
|
106
|
+
|
96
107
|
run_command_with_systems_locale(
|
97
108
|
:command => "emerge -g --color n --nospinner --quiet#{expand_options(@new_resource.options)} #{pkg}"
|
98
109
|
)
|
99
110
|
end
|
100
|
-
|
111
|
+
|
101
112
|
def upgrade_package(name, version)
|
102
113
|
install_package(name, version)
|
103
114
|
end
|
104
|
-
|
115
|
+
|
105
116
|
def remove_package(name, version)
|
106
117
|
if(version)
|
107
118
|
pkg = "=#{@new_resource.package_name}-#{version}"
|
108
|
-
else
|
119
|
+
else
|
109
120
|
pkg = "#{@new_resource.package_name}"
|
110
121
|
end
|
111
122
|
|
@@ -113,11 +124,11 @@ class Chef
|
|
113
124
|
:command => "emerge --unmerge --color n --nospinner --quiet#{expand_options(@new_resource.options)} #{pkg}"
|
114
125
|
)
|
115
126
|
end
|
116
|
-
|
127
|
+
|
117
128
|
def purge_package(name, version)
|
118
129
|
remove_package(name, version)
|
119
130
|
end
|
120
|
-
|
131
|
+
|
121
132
|
end
|
122
133
|
end
|
123
134
|
end
|
@@ -84,18 +84,9 @@ 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
|
92
87
|
|
93
88
|
def install_package(name, version)
|
94
|
-
if
|
95
|
-
run_command(
|
96
|
-
:command => "zypper install -y #{name}"
|
97
|
-
)
|
98
|
-
elsif version
|
89
|
+
if version
|
99
90
|
run_command(
|
100
91
|
:command => "zypper -n --no-gpg-checks install -l #{name}=#{version}"
|
101
92
|
)
|
@@ -107,11 +98,7 @@ class Chef
|
|
107
98
|
end
|
108
99
|
|
109
100
|
def upgrade_package(name, version)
|
110
|
-
if
|
111
|
-
run_command(
|
112
|
-
:command => "zypper install -y #{name}"
|
113
|
-
)
|
114
|
-
elsif version
|
101
|
+
if version
|
115
102
|
run_command(
|
116
103
|
:command => "zypper -n --no-gpg-checks install -l #{name}=#{version}"
|
117
104
|
)
|
@@ -123,11 +110,7 @@ class Chef
|
|
123
110
|
end
|
124
111
|
|
125
112
|
def remove_package(name, version)
|
126
|
-
if
|
127
|
-
run_command(
|
128
|
-
:command => "zypper remove -y #{name}"
|
129
|
-
)
|
130
|
-
elsif version
|
113
|
+
if version
|
131
114
|
run_command(
|
132
115
|
:command => "zypper -n --no-gpg-checks remove #{name}=#{version}"
|
133
116
|
)
|
@@ -18,7 +18,6 @@
|
|
18
18
|
|
19
19
|
require 'chef/provider/file'
|
20
20
|
require 'chef/rest'
|
21
|
-
require 'chef/mixin/find_preferred_file'
|
22
21
|
require 'uri'
|
23
22
|
require 'tempfile'
|
24
23
|
require 'net/https'
|
@@ -27,14 +26,14 @@ class Chef
|
|
27
26
|
class Provider
|
28
27
|
class RemoteFile < Chef::Provider::File
|
29
28
|
|
30
|
-
include Chef::Mixin::FindPreferredFile
|
31
|
-
|
32
29
|
def load_current_resource
|
33
30
|
super
|
34
31
|
@current_resource.checksum(checksum(@current_resource.path)) if ::File.exist?(@current_resource.path)
|
35
32
|
end
|
36
33
|
|
37
34
|
def action_create
|
35
|
+
assert_enclosing_directory_exists!
|
36
|
+
|
38
37
|
Chef::Log.debug("Checking #{@new_resource} for changes")
|
39
38
|
|
40
39
|
if current_resource_matches_target_checksum?
|
@@ -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=\((.*)\)/)
|
33
33
|
|
34
34
|
super
|
35
35
|
|
@@ -38,46 +38,38 @@ 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
|
-
# )
|
48
41
|
def daemons
|
49
42
|
entries = []
|
50
|
-
if ::File.read("/etc/rc.conf").match(/DAEMONS=\((.*)\)/
|
51
|
-
entries += $1.
|
43
|
+
if ::File.read("/etc/rc.conf").match(/DAEMONS=\((.*)\)/)
|
44
|
+
entries += $1.split(" ") if $1.length > 0
|
52
45
|
end
|
53
|
-
|
46
|
+
|
54
47
|
yield(entries) if block_given?
|
55
|
-
|
48
|
+
|
56
49
|
entries
|
57
50
|
end
|
58
|
-
|
59
|
-
# FIXME: Multiple entries of DAEMONS will cause very bad results :)
|
51
|
+
|
60
52
|
def update_daemons(entries)
|
61
|
-
content = ::File.read("/etc/rc.conf").gsub(/DAEMONS=\((.*)\)
|
53
|
+
content = ::File.read("/etc/rc.conf").gsub(/DAEMONS=\((.*)\)/, "DAEMONS=(#{entries.join(' ')})")
|
62
54
|
::File.open("/etc/rc.conf", "w") do |f|
|
63
55
|
f.write(content)
|
64
56
|
end
|
65
57
|
end
|
66
|
-
|
58
|
+
|
67
59
|
def enable_service()
|
68
60
|
new_daemons = []
|
69
61
|
entries = daemons
|
70
|
-
|
71
|
-
if entries.include?(new_resource.service_name)
|
72
|
-
# exists and already enabled
|
73
|
-
|
62
|
+
|
63
|
+
if entries.include?(new_resource.service_name)
|
64
|
+
# exists and already enabled
|
65
|
+
new_daemons += entries
|
74
66
|
else
|
75
67
|
if entries.include?("!#{new_resource.service_name}")
|
76
68
|
# exists but disabled
|
77
69
|
entries.each do |daemon|
|
78
|
-
if daemon == "!#{new_resource.service_name}"
|
70
|
+
if daemon == "!#{new_resource.service_name}"
|
79
71
|
new_daemons << new_resource.service_name
|
80
|
-
else
|
72
|
+
else
|
81
73
|
new_daemons << daemon
|
82
74
|
end
|
83
75
|
end
|
@@ -86,31 +78,32 @@ class Chef::Provider::Service::Arch < Chef::Provider::Service::Init
|
|
86
78
|
new_daemons += entries
|
87
79
|
new_daemons << new_resource.service_name
|
88
80
|
end
|
89
|
-
update_daemons(new_daemons)
|
90
81
|
end
|
82
|
+
|
83
|
+
update_daemons(new_daemons)
|
91
84
|
end
|
92
|
-
|
85
|
+
|
93
86
|
def disable_service()
|
94
87
|
new_daemons = []
|
95
88
|
entries = daemons
|
96
|
-
|
89
|
+
|
97
90
|
if entries.include?("!#{new_resource.service_name}")
|
98
91
|
# exists and disabled
|
99
|
-
|
92
|
+
new_daemons += entries
|
100
93
|
else
|
101
|
-
if entries.include?(new_resource.service_name)
|
102
|
-
# exists but enabled
|
103
|
-
# FIXME: Does arch support !@foobar ?
|
94
|
+
if entries.include?(new_resource.service_name)
|
95
|
+
# exists but enabled
|
104
96
|
entries.each do |daemon|
|
105
|
-
if
|
97
|
+
if daemon == new_resource.service_name
|
106
98
|
new_daemons << "!#{new_resource.service_name}"
|
107
|
-
else
|
99
|
+
else
|
108
100
|
new_daemons << daemon
|
109
101
|
end
|
110
102
|
end
|
111
103
|
end
|
112
|
-
update_daemons(new_daemons)
|
113
104
|
end
|
105
|
+
|
106
|
+
update_daemons(new_daemons)
|
114
107
|
end
|
115
108
|
|
116
109
|
end
|