Class: PuppetX::EnterpriseModules::Oracle::SqlplusCommand
- Includes:
- EasyType::Encryption, EasyType::Template, Settings
- Defined in:
- lib/puppet_x/enterprisemodules/oracle/sqlplus_command.rb
Overview
Docs<<<<<<< HEAD
Direct Known Subclasses
Instance Attribute Summary collapse
- 
  
    
      #catch_errors  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Returns the value of attribute catch_errors. 
- 
  
    
      #catch_extra_errors  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Returns the value of attribute catch_extra_errors. 
- 
  
    
      #daemonized  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Returns the value of attribute daemonized. 
- 
  
    
      #failonsqlfail  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Returns the value of attribute failonsqlfail. 
- 
  
    
      #os_user  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Returns the value of attribute os_user. 
- 
  
    
      #parse  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Returns the value of attribute parse. 
- 
  
    
      #password  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Returns the value of attribute password. 
- 
  
    
      #sid  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Returns the value of attribute sid. 
- 
  
    
      #timeout  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Returns the value of attribute timeout. 
- 
  
    
      #username  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Returns the value of attribute username. 
Instance Method Summary collapse
- #command_string(arguments = '') ⇒ Object
- #execute(arguments, powershell_script = '') ⇒ Object
- #execute_sql_command(command, output_file) ⇒ Object
- 
  
    
      #initialize(options = {})  ⇒ SqlplusCommand 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    A new instance of SqlplusCommand. 
Methods included from Settings
#asm_sid?, #asm_sids, #configuration, #configuration_for, #configuration_value_for, #container_db?, #database_sid?, #database_sids, #default_asm_sid, #default_database_sid, #default_sids, included, #local_pdb?, #mgmt_sid?, #mgmt_sids, #normal_db?, #num_default_asm_sids, #num_default_database_sids, #read_from_yaml, #registered_sids, #remote_sid?, #running_asm_sids, #running_database_sids, #running_db?, #running_mgmt_sids, #running_mt_database_sids, #running_nopdb_database_sids, #running_normal_database_sids, #running_pdb?, #running_primary_database_sids, #running_sids, #settings_file, #valid_asm_sid?, #valid_database_sid, #valid_sid?
Methods included from Information
#cached_sid_value, #cluster?, #cluster_instances, #containerdb?, #database_properties, #database_version, #db_create_file_dest, #db_domain, #db_for, #diagnostic_dest, included, #local_sid_for_db, #open_pdbs, #oracle_major_version, #oracle_managed_files_enabled?, #pdb?, #primary?, #rootdb?, #seeddb?, #sid_for, #value_for_init_param
Constructor Details
#initialize(options = {}) ⇒ SqlplusCommand
Returns a new instance of SqlplusCommand.
| 38 39 40 41 42 43 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 74 75 76 77 78 79 80 81 82 | # File 'lib/puppet_x/enterprisemodules/oracle/sqlplus_command.rb', line 38 def initialize( = {}) @failonsqlfail = .fetch(:failonsqlfail, :true) @catch_errors = .fetch(:catch_errors) { /SP\d-\d{4}:.*/ } @catch_extra_errors = [:catch_extra_errors] @catch_errors = Regexp.union(@catch_errors, @catch_extra_errors) if @catch_extra_errors @parse = .fetch(:parse, true) super('sqlplus -S /nolog ', , SQLPLUS_VALID_OPTIONS) # # Set all values based on settings # @sys_username = configuration_value_for(@sid, 'user') @encrypted_sys_password = configuration_value_for(@sid, 'password') @sys_password = @sys_password.nil? || @sys_password.empty? ? decrypted_value(@encrypted_sys_password) : '' # rubocop:disable Lint/UselessAssignment os_user = configuration_value_for(@sid, 'os_user') # rubocop:enable Lint/UselessAssignment encrypted_os_user_pwd = configuration_value_for(@sid, 'os_user_pwd') @os_user_pwd = @os_user_pwd.nil? || @os_user_pwd.empty? ? decrypted_value(encrypted_os_user_pwd) : '' @oracle_home = configuration_value_for(@sid, 'oracle_home') @settings_cdb = configuration_value_for(@sid, 'cdb') @syspriv = configuration_value_for(@sid, 'syspriv') @contained_by = configuration_value_for(@sid, 'contained_by') @daemonized = .fetch(:daemonized) { configuration_value_for(@sid, 'daemonized') } @daemonized = false if @daemonized.to_s.empty? @host_sid = if @contained_by.nil? || @contained_by.empty? @sid else @contained_by end # # Validate values # fail "Invalid password specified for user #{@sys_username}" if @sys_password.include? '@' connect_string = configuration_value_for(@sid, 'connect_string') if connect_string.empty? @connect_string = '' else if @contained_by.nil? || @contained_by.empty? node = connect_string.split(/\W/).first ::Entitlement::Entitlement.entitled?("ora_remote_access##{node}#access") end @connect_string = "@#{connect_string}" end end | 
Instance Attribute Details
#catch_errors ⇒ Object (readonly)
Returns the value of attribute catch_errors.
| 36 37 38 | # File 'lib/puppet_x/enterprisemodules/oracle/sqlplus_command.rb', line 36 def catch_errors @catch_errors end | 
#catch_extra_errors ⇒ Object (readonly)
Returns the value of attribute catch_extra_errors.
| 36 37 38 | # File 'lib/puppet_x/enterprisemodules/oracle/sqlplus_command.rb', line 36 def catch_extra_errors @catch_extra_errors end | 
#daemonized ⇒ Object (readonly)
Returns the value of attribute daemonized.
| 36 37 38 | # File 'lib/puppet_x/enterprisemodules/oracle/sqlplus_command.rb', line 36 def daemonized @daemonized end | 
#failonsqlfail ⇒ Object (readonly)
Returns the value of attribute failonsqlfail.
| 36 37 38 | # File 'lib/puppet_x/enterprisemodules/oracle/sqlplus_command.rb', line 36 def failonsqlfail @failonsqlfail end | 
#os_user ⇒ Object (readonly)
Returns the value of attribute os_user.
| 36 37 38 | # File 'lib/puppet_x/enterprisemodules/oracle/sqlplus_command.rb', line 36 def os_user @os_user end | 
#parse ⇒ Object (readonly)
Returns the value of attribute parse.
| 36 37 38 | # File 'lib/puppet_x/enterprisemodules/oracle/sqlplus_command.rb', line 36 def parse @parse end | 
#password ⇒ Object (readonly)
Returns the value of attribute password.
| 36 37 38 | # File 'lib/puppet_x/enterprisemodules/oracle/sqlplus_command.rb', line 36 def password @password end | 
#sid ⇒ Object (readonly)
Returns the value of attribute sid.
| 36 37 38 | # File 'lib/puppet_x/enterprisemodules/oracle/sqlplus_command.rb', line 36 def sid @sid end | 
#timeout ⇒ Object (readonly)
Returns the value of attribute timeout.
| 36 37 38 | # File 'lib/puppet_x/enterprisemodules/oracle/sqlplus_command.rb', line 36 def timeout @timeout end | 
#username ⇒ Object (readonly)
Returns the value of attribute username.
| 36 37 38 | # File 'lib/puppet_x/enterprisemodules/oracle/sqlplus_command.rb', line 36 def username @username end | 
Instance Method Details
#command_string(arguments = '') ⇒ Object
| 84 85 86 | # File 'lib/puppet_x/enterprisemodules/oracle/sqlplus_command.rb', line 84 def command_string(arguments = '') "su - #{@os_user} -c \"cd #{working_dir};export PERL5LIB=$(ls -d #{@oracle_home}/perl/lib/[0-9]*);export NLS_LANG=english;export ORACLE_SID=#{@host_sid};export ORACLE_HOME=#{@oracle_home};unset TNS_ADMIN;unset TWO_TASK;export PATH=#{@oracle_home}/bin:$PATH; #{@command} #{arguments}\"" end | 
#execute(arguments, powershell_script = '') ⇒ Object
| 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | # File 'lib/puppet_x/enterprisemodules/oracle/sqlplus_command.rb', line 88 def execute(arguments, powershell_script = '') = { :failonfail => true, :combine => true } value = '' command = if Puppet::Util::Platform.windows? %(powershell -File "#{powershell_script}") else command_string(arguments) end within_time(@timeout) do Puppet.debug "sqlplus_command.rb: Executing #{@command} command: #{arguments} as user #{os_user} outside of the daemon" value = Puppet::Util::Execution.execute(command, ) Puppet.debug "sqlplus_command.rb: Output:\n #{value}" end value.encode!('UTF-8', :invalid => :replace, :undef => :replace) output_file = Tempfile.new(['sql', '.log']) ObjectSpace.undefine_finalizer(output_file) # Don't delete the file output_file.write(value) output_file.close FileUtils.chown(@os_user, nil, output_file.path) FileUtils.chmod(0o600, output_file.path) FileUtils.chown(@os_user, nil, output_file.path) FileUtils.chmod(0o600, output_file.path) path = output_file.path @@created_files << path Puppet.debug "sqlplus_command.rb: SQL output saved to #{output_file.path}" scan_for_errors(value) if @failonsqlfail == :true value end | 
#execute_sql_command(command, output_file) ⇒ Object
| 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | # File 'lib/puppet_x/enterprisemodules/oracle/sqlplus_command.rb', line 117 def execute_sql_command(command, output_file) # # Do the stuff # Puppet.debug "sqlplus_command.rb: Executing sql statement :\n #{command}" script = command_file(template('ora_config/ora_config/execute.sql.erb', binding)) if Puppet::Util::Platform.windows? # rubocop:disable Lint/UselessAssignment powershell_script = command_file(template('ora_config/ora_config/sqlplus_command.ps1.erb', binding), type = '.ps1') # rubocop:enable Lint/UselessAssignment Puppet.debug "sqlplus_command.rb: Using powershell script: #{powershell_script}" end if username Puppet.debug "sqlplus_command.rb: Connecting to oracle_sid #{@sid} with connect_string \"#{@connect_string}\" as user #{username} and privilege #{@syspriv}" else Puppet.debug "sqlplus_command.rb: Connecting to oracle_sid #{@sid} with connect_string \"#{@connect_string}\" as user #{@sys_username} and privilege #{@syspriv}" end execute("@#{script}", powershell_script) content = File.read(output_file) content.encode!('UTF-8', :invalid => :replace, :undef => :replace) content end |