Convert apt_source to an LWRP
authorTom Hughes <tom@compton.nu>
Wed, 11 Feb 2015 00:14:11 +0000 (00:14 +0000)
committerTom Hughes <tom@compton.nu>
Wed, 11 Feb 2015 00:38:16 +0000 (00:38 +0000)
cookbooks/apt/.foodcritic
cookbooks/apt/providers/source.rb [moved from cookbooks/apt/definitions/apt_source.rb with 50% similarity]
cookbooks/apt/recipes/default.rb
cookbooks/apt/resources/source.rb [new file with mode: 0644]

index e9a7c92333039bf61f4f9c6ba263b883432b67ef..3907cff00016cb7234f45853f10398815db197e8 100644 (file)
@@ -1,2 +1 @@
 ~FC001
-~FC015
similarity index 50%
rename from cookbooks/apt/definitions/apt_source.rb
rename to cookbooks/apt/providers/source.rb
index cc847a01e5ca688d47cf55fa15b5ee33dee613e1..cce755a637b79219d15d4504bf0a8325173e5097 100644 (file)
@@ -1,8 +1,8 @@
 #
 # Cookbook Name:: apt
-# Definition:: apt_source
+# Provider:: apt_source
 #
-# Copyright 2010, Tom Hughes
+# Copyright 2015, OpenStreetMap Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # limitations under the License.
 #
 
-define :apt_source do
-  if node[:apt][:sources].include?(params[:name])
-    source_action = :create
+def whyrun_supported?
+  true
+end
+
+use_inline_resources
 
-    if params[:key]
-      execute "apt-key-#{params[:key]}" do
-        command "/usr/bin/apt-key adv --keyserver hkp://keys.gnupg.net --recv-keys #{params[:key]}"
-        not_if "/usr/bin/apt-key list | /bin/fgrep -q #{params[:key]}"
-      end
+action :create do
+  if new_resource.key
+    execute "apt-key-#{new_resource.key}" do
+      command "/usr/bin/apt-key adv --keyserver hkp://keys.gnupg.net --recv-keys #{new_resource.key}"
+      not_if "/usr/bin/apt-key list | /bin/fgrep -q #{new_resource.key}"
     end
-  else
-    source_action = :delete
   end
 
-  template "/etc/apt/sources.list.d/#{params[:name]}.list" do
-    action source_action
-    source params[:template] || "default.list.erb"
+  template source_path  do
+    source new_resource.template
     owner "root"
     group "root"
     mode 0644
-    notifies :run, "execute[apt-update]"
-    variables :url => params[:url]
+    variables :url => new_resource.url
   end
 end
+
+action :delete do
+  file source_path do
+    action :delete
+  end
+end
+
+def source_path
+  "/etc/apt/sources.list.d/#{new_resource.name}.list"
+end
index 189c0be4dedee2b98fc91c71fd895f98d5be8fc3..050c462ae37c46bf17dda427fa95fc9151157161 100644 (file)
@@ -34,7 +34,7 @@ template "/etc/apt/sources.list" do
   owner "root"
   group "root"
   mode 0644
-  notifies :run, "execute[apt-update]"
+  notifies :run, "execute[apt-update]", :immediately
 end
 
 apt_source "brightbox-ruby-ng" do
diff --git a/cookbooks/apt/resources/source.rb b/cookbooks/apt/resources/source.rb
new file mode 100644 (file)
index 0000000..2839b29
--- /dev/null
@@ -0,0 +1,36 @@
+#
+# Cookbook Name:: apt
+# Resource:: apt_source
+#
+# Copyright 2015, OpenStreetMap Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+actions :create, :delete
+default_action :create
+
+attribute :name, :kind_of => String, :name_attribute => true
+attribute :template, :kind_of => String, :default => "default.list.erb"
+attribute :url, :kind_of => String, :required => true
+attribute :key, :kind_of => String
+
+def initialize(name, run_context = nil)
+  super(name, run_context)
+
+  @action = node[:apt][:sources].include?(name) ? :create : :delete
+end
+
+def after_created
+  notifies :run, "execute[apt-update]", :immediately
+end