# Chef Resource for declaring a service for Elasticsearch
class ElasticsearchCookbook::ServiceResource < Chef::Resource::LWRPBase
  resource_name :elasticsearch_service
  provides :elasticsearch_service

  actions(
    :configure, :remove, # our custom actions
    :enable, :disable, :start, :stop, :restart, :status # passthrough to service resource
  )
  default_action :configure

  # this is what helps the various resources find each other
  attribute(:instance_name, kind_of: String, default: nil)

  attribute(:service_name, kind_of: String, name_attribute: true)
  attribute(:args, kind_of: String, default: '-d')

  # service actions
  attribute(:service_actions, kind_of: [Symbol, String, Array], default: [:enable, :start].freeze)

  # allow overridable init script
  attribute(:init_source, kind_of: String, default: 'initscript.erb')
  attribute(:init_cookbook, kind_of: String, default: 'elasticsearch')

  # allow overridable systemd unit
  attribute(:systemd_source, kind_of: String, default: 'systemd_unit.erb')
  attribute(:systemd_cookbook, kind_of: String, default: 'elasticsearch')
end
