Class: Inspec::Resources::OracledbSession

Inherits:
Object
  • Object
show all
Defined in:
lib/inspec/resources/oracledb_session.rb

Overview

STABILITY: Experimental This resource needs further testing and refinement

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ OracledbSession

Returns a new instance of OracledbSession.



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/inspec/resources/oracledb_session.rb', line 27

def initialize(opts = {})
  @user = opts[:user]
  @password = opts[:password] || opts[:pass]
  if opts[:pass]
    Inspec.deprecate(:oracledb_session_pass_option, "The oracledb_session `pass` option is deprecated. Please use `password`.")
  end

  @bin = "sqlplus"
  @host = opts[:host] || "localhost"
  @port = opts[:port] || "1521"
  @service = opts[:service]
  @su_user = opts[:as_os_user]
  @db_role = opts[:as_db_role]
  @sqlcl_bin = opts[:sqlcl_bin] || nil
  @sqlplus_bin = opts[:sqlplus_bin] || "sqlplus"
  skip_resource "Option 'as_os_user' not available in Windows" if inspec.os.windows? && su_user
  fail_resource "Can't run Oracle checks without authentication" unless su_user && (user || password)
  fail_resource "You must provide a service name for the session" unless service
end

Instance Attribute Details

#binObject (readonly)

Returns the value of attribute bin.



24
25
26
# File 'lib/inspec/resources/oracledb_session.rb', line 24

def bin
  @bin
end

#db_roleObject (readonly)

Returns the value of attribute db_role.



24
25
26
# File 'lib/inspec/resources/oracledb_session.rb', line 24

def db_role
  @db_role
end

#hostObject (readonly)

Returns the value of attribute host.



24
25
26
# File 'lib/inspec/resources/oracledb_session.rb', line 24

def host
  @host
end

#passwordObject (readonly)

Returns the value of attribute password.



24
25
26
# File 'lib/inspec/resources/oracledb_session.rb', line 24

def password
  @password
end

#portObject (readonly)

Returns the value of attribute port.



24
25
26
# File 'lib/inspec/resources/oracledb_session.rb', line 24

def port
  @port
end

#serviceObject (readonly)

Returns the value of attribute service.



24
25
26
# File 'lib/inspec/resources/oracledb_session.rb', line 24

def service
  @service
end

#su_userObject (readonly)

Returns the value of attribute su_user.



24
25
26
# File 'lib/inspec/resources/oracledb_session.rb', line 24

def su_user
  @su_user
end

#userObject (readonly)

Returns the value of attribute user.



24
25
26
# File 'lib/inspec/resources/oracledb_session.rb', line 24

def user
  @user
end

Instance Method Details

#query(sql) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/inspec/resources/oracledb_session.rb', line 47

def query(sql)
  if @sqlcl_bin && inspec.command(@sqlcl_bin).exist?
    @bin = @sqlcl_bin
    format_options = "set sqlformat csv\nSET FEEDBACK OFF"
    parser = :parse_csv_result
  else
    @bin = "#{@sqlplus_bin} -S"
    format_options = "SET MARKUP HTML ON\nSET PAGESIZE 32000\nSET FEEDBACK OFF"
    parser = :parse_html_result
  end

  command = command_builder(format_options, sql)
  inspec_cmd = inspec.command(command)

  DatabaseHelper::SQLQueryResult.new(inspec_cmd,
                                     send(parser, inspec_cmd.stdout))
end

#to_sObject



65
66
67
# File 'lib/inspec/resources/oracledb_session.rb', line 65

def to_s
  "Oracle Session"
end