]> git.openstreetmap.org Git - chef.git/blobdiff - cookbooks/systemd/resources/timer.rb
Add dropin support for systemd timers
[chef.git] / cookbooks / systemd / resources / timer.rb
index 91de6e90939192b780d6a20e17498fcfd190728a..1ebae847d7082a8078f4f876ec94962799a4e321 100644 (file)
 # limitations under the License.
 #
 
+unified_mode true
+
 default_action :create
 
 property :timer, String, :name_property => true
-property :description, String, :required => true
+property :dropin, String
+property :description, String, :required => [:create]
 property :after, [String, Array]
 property :wants, [String, Array]
 property :on_active_sec, [Integer, String]
@@ -39,12 +42,20 @@ property :remain_after_elapse, [true, false]
 action :create do
   timer_variables = new_resource.to_hash
 
-  template "/etc/systemd/system/#{new_resource.timer}.timer" do
+  if new_resource.dropin
+    directory dropin_directory do
+      owner "root"
+      group "root"
+      mode "755"
+    end
+  end
+
+  template config_name do
     cookbook "systemd"
     source "timer.erb"
     owner "root"
     group "root"
-    mode 0o644
+    mode "644"
     variables timer_variables
   end
 
@@ -58,7 +69,7 @@ action :create do
 end
 
 action :delete do
-  file "/etc/systemd/system/#{new_resource.timer}.timer" do
+  file config_name do
     action :delete
   end
 
@@ -70,3 +81,17 @@ action :delete do
     subscribes :run, "file[/etc/systemd/system/#{new_resource.timer}.timer]"
   end
 end
+
+action_class do
+  def dropin_directory
+    "/etc/systemd/system/#{new_resource.timer}.timer.d"
+  end
+
+  def config_name
+    if new_resource.dropin
+      "#{dropin_directory}/#{new_resource.dropin}.conf"
+    else
+      "/etc/systemd/system/#{new_resource.timer}.timer"
+    end
+  end
+end