class Chef::Resource::CronD

Public Instance Methods

after_created() click to toggle source

warn if someone passes the deprecated cookbook property

# File lib/chef/resource/cron/cron_d.rb, line 114
def after_created
  raise ArgumentError, "The 'cookbook' property for the cron_d resource is no longer supported now that it ships as a core resource." if cookbook
end
create_template(create_action) click to toggle source
# File lib/chef/resource/cron/cron_d.rb, line 163
def create_template(create_action)
  # cleanup the legacy named job if it exists
  file "#{new_resource.cron_name} legacy named cron.d file" do
    path "/etc/cron.d/#{new_resource.cron_name}"
    action :delete
    only_if { new_resource.cron_name != sanitized_name }
  end

  # @todo this is Chef 12 era cleanup. Someday we should remove it all
  template "/etc/cron.d/#{sanitized_name}" do
    source ::File.expand_path("../support/cron.d.erb", __dir__)
    local true
    mode new_resource.mode
    sensitive new_resource.sensitive
    variables(
      name: sanitized_name,
      predefined_value: new_resource.predefined_value,
      minute: new_resource.minute,
      hour: new_resource.hour,
      day: new_resource.day,
      month: new_resource.month,
      weekday: new_resource.weekday,
      command: new_resource.command,
      user: new_resource.user,
      mailto: new_resource.mailto,
      path: new_resource.path,
      home: new_resource.home,
      shell: new_resource.shell,
      comment: new_resource.comment,
      random_delay: new_resource.random_delay,
      environment: new_resource.environment
    )
    action create_action
  end
end
define_resource_requirements() click to toggle source
# File lib/chef/resource/cron/cron_d.rb, line 148
def define_resource_requirements
  requirements.assert(:create, :create_if_missing) do |a|
    a.assertion do
      # ensure valid cron job names for linux, otherwise the jobs won't be executed
      if linux?
        new_resource.cron_name =~ /^[a-zA-Z0-9_-]+$/
      else
        true
      end
    end
    a.failure_message("The cron job name should contain letters, numbers, hyphens and underscores only.")
    a.block_action!
  end
end
sanitized_name() click to toggle source

@return [String] cron_name property with . replaced with -

# File lib/chef/resource/cron/cron_d.rb, line 144
def sanitized_name
  new_resource.cron_name.tr(".", "-")
end