Class: Inspec::Resources::OracledbSession
- Inherits:
-
Object
- Object
- Inspec::Resources::OracledbSession
- Defined in:
- lib/inspec/resources/oracledb_session.rb
Overview
STABILITY: Experimental This resource needs further testing and refinement
Instance Attribute Summary collapse
-
#bin ⇒ Object
readonly
Returns the value of attribute bin.
-
#db_role ⇒ Object
readonly
Returns the value of attribute db_role.
-
#host ⇒ Object
readonly
Returns the value of attribute host.
-
#password ⇒ Object
readonly
Returns the value of attribute password.
-
#port ⇒ Object
readonly
Returns the value of attribute port.
-
#service ⇒ Object
readonly
Returns the value of attribute service.
-
#su_user ⇒ Object
readonly
Returns the value of attribute su_user.
-
#user ⇒ Object
readonly
Returns the value of attribute user.
Instance Method Summary collapse
-
#initialize(opts = {}) ⇒ OracledbSession
constructor
A new instance of OracledbSession.
- #query(sql) ⇒ Object
- #resource_id ⇒ Object
- #to_s ⇒ Object
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 |
# 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) end |
Instance Attribute Details
#bin ⇒ Object (readonly)
Returns the value of attribute bin.
22 23 24 |
# File 'lib/inspec/resources/oracledb_session.rb', line 22 def bin @bin end |
#db_role ⇒ Object (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 |
#host ⇒ Object (readonly)
Returns the value of attribute host.
22 23 24 |
# File 'lib/inspec/resources/oracledb_session.rb', line 22 def host @host end |
#password ⇒ Object (readonly)
Returns the value of attribute password.
22 23 24 |
# File 'lib/inspec/resources/oracledb_session.rb', line 22 def password @password end |
#port ⇒ Object (readonly)
Returns the value of attribute port.
22 23 24 |
# File 'lib/inspec/resources/oracledb_session.rb', line 22 def port @port end |
#service ⇒ Object (readonly)
Returns the value of attribute service.
22 23 24 |
# File 'lib/inspec/resources/oracledb_session.rb', line 22 def service @service end |
#su_user ⇒ Object (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 |
#user ⇒ Object (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
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/inspec/resources/oracledb_session.rb', line 44 def query(sql) raise Inspec::Exceptions::ResourceSkipped, "#{}" if resource_skipped? raise Inspec::Exceptions::ResourceFailed, "#{}" if resource_failed? if @sqlcl_bin && inspec.command(@sqlcl_bin).exist? @bin = @sqlcl_bin = "set sqlformat csv\nSET FEEDBACK OFF" else @bin = "#{@sqlplus_bin} -S" = "SET PAGESIZE 32000\nSET FEEDBACK OFF\nSET UNDERLINE OFF" end command = command_builder(, sql) inspec_cmd = inspec.command(command) out = inspec_cmd.stdout + "\n" + inspec_cmd.stderr if inspec_cmd.exit_status != 0 || out.downcase =~ /^error.*/ raise Inspec::Exceptions::ResourceFailed, "Oracle query with errors: #{out}" else begin unless inspec_cmd.stdout.empty? DatabaseHelper::SQLQueryResult.new(inspec_cmd, parse_csv_result(inspec_cmd.stdout)) else inspec_cmd.stdout end rescue Exception => ex raise Inspec::Exceptions::ResourceFailed, "Oracle query with exception: #{ex}" end end end |
#resource_id ⇒ Object
79 80 81 82 83 84 85 86 87 |
# File 'lib/inspec/resources/oracledb_session.rb', line 79 def resource_id if @user "#{@host}-#{@port}-#{@user}" elsif @su_user "#{@host}-#{@port}-#{@su_user}" else "" end end |
#to_s ⇒ Object
75 76 77 |
# File 'lib/inspec/resources/oracledb_session.rb', line 75 def to_s "Oracle Session" end |