summaryrefslogtreecommitdiff
path: root/lib/chef/resource
diff options
context:
space:
mode:
authorNathan Williams <nathan@teamtreehouse.com>2016-03-11 18:11:49 -0800
committerNathan Williams <nathan@teamtreehouse.com>2016-04-16 13:59:09 -0700
commit1b0da9c71c766e82705b1548125965d959d8840c (patch)
tree9ebf9413c3192f79913671b966d97837beece6f8 /lib/chef/resource
parent97cceff5801f6ccfbcf65949edae022c52927ddc (diff)
downloadchef-1b0da9c71c766e82705b1548125965d959d8840c.tar.gz
add systemd_unit resource/provider
Diffstat (limited to 'lib/chef/resource')
-rw-r--r--lib/chef/resource/systemd_unit.rb61
1 files changed, 61 insertions, 0 deletions
diff --git a/lib/chef/resource/systemd_unit.rb b/lib/chef/resource/systemd_unit.rb
new file mode 100644
index 0000000000..525e9ab35e
--- /dev/null
+++ b/lib/chef/resource/systemd_unit.rb
@@ -0,0 +1,61 @@
+#
+# Author:: Nathan Williams (<nath.e.will@gmail.com>)
+# Copyright:: Copyright 2016, Nathan Williams
+# License:: Apache License, Version 2.0
+#
+# 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.
+#
+
+require "chef/resource"
+require "iniparse"
+
+class Chef
+ class Resource
+ class SystemdUnit < Chef::Resource
+ resource_name :systemd_unit
+
+ default_action :nothing
+ allowed_actions :create, :delete,
+ :enable, :disable,
+ :mask, :unmask,
+ :start, :stop,
+ :restart, :reload
+
+ property :enabled, [TrueClass, FalseClass]
+ property :active, [TrueClass, FalseClass]
+ property :masked, [TrueClass, FalseClass]
+ property :static, [TrueClass, FalseClass]
+ property :user, String, desired_state: false
+ property :content, [String, Hash]
+ property :triggers_reload, [TrueClass, FalseClass],
+ default: true, desired_state: false
+
+ def to_ini
+ case content
+ when Hash
+ IniParse.gen do |doc|
+ content.each_pair do |sect, opts|
+ doc.section(sect) do |section|
+ opts.each_pair do |opt, val|
+ section.option(opt, val)
+ end
+ end
+ end
+ end.to_s
+ else
+ content.to_s
+ end
+ end
+ end
+ end
+end