diff options
author | Nathan Williams <nathan@teamtreehouse.com> | 2016-03-11 18:11:49 -0800 |
---|---|---|
committer | Nathan Williams <nathan@teamtreehouse.com> | 2016-04-16 13:59:09 -0700 |
commit | 1b0da9c71c766e82705b1548125965d959d8840c (patch) | |
tree | 9ebf9413c3192f79913671b966d97837beece6f8 /lib/chef/resource | |
parent | 97cceff5801f6ccfbcf65949edae022c52927ddc (diff) | |
download | chef-1b0da9c71c766e82705b1548125965d959d8840c.tar.gz |
add systemd_unit resource/provider
Diffstat (limited to 'lib/chef/resource')
-rw-r--r-- | lib/chef/resource/systemd_unit.rb | 61 |
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 |