diff --git a/lib/itamae/resource/service.rb b/lib/itamae/resource/service.rb index 367280b0..631ea423 100644 --- a/lib/itamae/resource/service.rb +++ b/lib/itamae/resource/service.rb @@ -5,6 +5,12 @@ module Resource class Service < Base define_attribute :action, default: :nothing define_attribute :name, type: String, default_name: true + define_attribute :provider, type: Symbol, default: nil + + def initialize(*args) + super + @under = attributes.provider ? "_under_#{attributes.provider}" : "" + end def pre_action case @current_action @@ -20,36 +26,42 @@ def pre_action end def set_current_attributes - current.running = run_specinfra(:check_service_is_running, attributes.name) - current.enabled = run_specinfra(:check_service_is_enabled, attributes.name) + current.running = run_specinfra(:"check_service_is_running#{@under}", attributes.name) + current.enabled = run_specinfra(:"check_service_is_enabled#{@under}", attributes.name) end def action_start(options) unless current.running - run_specinfra(:start_service, attributes.name) + run_specinfra(:"start_service#{@under}", attributes.name) end end def action_stop(options) if current.running - run_specinfra(:stop_service, attributes.name) + run_specinfra(:"stop_service#{@under}", attributes.name) end end def action_restart(options) - run_specinfra(:restart_service, attributes.name) + run_specinfra(:"restart_service#{@under}", attributes.name) end def action_reload(options) - run_specinfra(:reload_service, attributes.name) + if current.running + run_specinfra(:"reload_service#{@under}", attributes.name) + end end def action_enable(options) - run_specinfra(:enable_service, attributes.name) + unless current.enabled + run_specinfra(:"enable_service#{@under}", attributes.name) + end end def action_disable(options) - run_specinfra(:disable_service, attributes.name) + if current.enabled + run_specinfra(:"disable_service#{@under}", attributes.name) + end end end end