class AwsConfigurationRecorder

def fetch_from_api

def fetch_from_api
  backend = BackendFactory.create(inspec_runner)
  query = @recorder_name ? { configuration_recorder_names: [@recorder_name] } : {}
  response = backend.describe_configuration_recorders(query)
  @exists = !response.configuration_recorders.empty?
  return unless exists?
  if response.configuration_recorders.count > 1
    raise ArgumentError, 'Internal error: unexpectedly received multiple AWS Config Recorder objects from API; expected to be singleton per-region.  Please file a bug report at https://github.com/chef/inspec/issues .'
  end
  recorder = response.configuration_recorders.first.to_h
  @recorder_name = recorder[:name]
  @role_arn = recorder[:role_arn]
  @recording_all_resource_types = recorder[:recording_group][:all_supported]
  @recording_all_global_types = recorder[:recording_group][:include_global_resource_types]
  @resource_types = recorder[:recording_group][:resource_types]
rescue Aws::ConfigService::Errors::NoSuchConfigurationRecorderException
  @exists = false
  return
end

def recording?

def recording?
  return unless @exists
  status[:recording]
end

def recording_all_global_types?

def recording_all_global_types?
  @recording_all_global_types
end

def recording_all_resource_types?

def recording_all_resource_types?
  @recording_all_resource_types
end

def status

def status
  return {} unless @exists
  backend = BackendFactory.create(inspec_runner)
  catch_aws_errors do
    response = backend.describe_configuration_recorder_status(configuration_recorder_names: [@recorder_name])
    @status = response.configuration_recorders_status.first.to_h
  end
end

def to_s

def to_s
  "Configuration_Recorder: #{@recorder_name}"
end

def validate_params(raw_params)

def validate_params(raw_params)
  validated_params = check_resource_param_names(
    raw_params: raw_params,
    allowed_params: [:recorder_name],
    allowed_scalar_name: :recorder_name,
    allowed_scalar_type: String,
  )
  validated_params
end