From: Tom Hughes Date: Wed, 11 Feb 2015 00:14:11 +0000 (+0000) Subject: Convert apt_source to an LWRP X-Git-Url: https://git.openstreetmap.org/chef.git/commitdiff_plain/8fe918b2f21cce5df41b31dc8f58b34aad65dd57 Convert apt_source to an LWRP --- diff --git a/cookbooks/apt/.foodcritic b/cookbooks/apt/.foodcritic index e9a7c9233..3907cff00 100644 --- a/cookbooks/apt/.foodcritic +++ b/cookbooks/apt/.foodcritic @@ -1,2 +1 @@ ~FC001 -~FC015 diff --git a/cookbooks/apt/definitions/apt_source.rb b/cookbooks/apt/providers/source.rb similarity index 50% rename from cookbooks/apt/definitions/apt_source.rb rename to cookbooks/apt/providers/source.rb index cc847a01e..cce755a63 100644 --- a/cookbooks/apt/definitions/apt_source.rb +++ b/cookbooks/apt/providers/source.rb @@ -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. @@ -17,27 +17,35 @@ # 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 diff --git a/cookbooks/apt/recipes/default.rb b/cookbooks/apt/recipes/default.rb index 189c0be4d..050c462ae 100644 --- a/cookbooks/apt/recipes/default.rb +++ b/cookbooks/apt/recipes/default.rb @@ -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 index 000000000..2839b29b6 --- /dev/null +++ b/cookbooks/apt/resources/source.rb @@ -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