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.



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

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.



22
23
24
# File 'lib/inspec/resources/oracledb_session.rb', line 22

def bin
  @bin
end

#db_roleObject (readonly)

Returns the value of attribute db_role.



22
23
24
# File 'lib/inspec/resources/oracledb_session.rb', line 22

def db_role
  @db_role
end

#hostObject (readonly)

Returns the value of attribute host.



22
23
24
# File 'lib/inspec/resources/oracledb_session.rb', line 22

def host
  @host
end

#passwordObject (readonly)

Returns the value of attribute password.



22
23
24
# File 'lib/inspec/resources/oracledb_session.rb', line 22

def password
  @password
end

#portObject (readonly)

Returns the value of attribute port.



22
23
24
# File 'lib/inspec/resources/oracledb_session.rb', line 22

def port
  @port
end

#serviceObject (readonly)

Returns the value of attribute service.



22
23
24
# File 'lib/inspec/resources/oracledb_session.rb', line 22

def service
  @service
end

#su_userObject (readonly)

Returns the value of attribute su_user.



22
23
24
# File 'lib/inspec/resources/oracledb_session.rb', line 22

def su_user
  @su_user
end

#userObject (readonly)

Returns the value of attribute user.



22
23
24
# File 'lib/inspec/resources/oracledb_session.rb', line 22

def user
  @user
end

Instance Method Details

#query(sql) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/inspec/resources/oracledb_session.rb', line 45

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

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

  DatabaseHelper::SQLQueryResult.new(inspec_cmd, parse_csv_result(inspec_cmd.stdout))
end

#to_sObject



60
61
62
# File 'lib/inspec/resources/oracledb_session.rb', line 60

def to_s
  "Oracle Session"
end