Sha256: 1ac184f2d5a9bb7ee1e619dee4c0a2ac0b5246cca18760e1c17148a2da0ed0d9

Contents?: true

Size: 1.46 KB

Versions: 12

Compression:

Stored size: 1.46 KB

Contents

class Fluentd
  class Agent
    module ProcessOperation
      def self.included(base)
        define_method(:dryrun!) do
          raise NotImplementedError, "'dryrun!' method is required to be defined"
        end
      end

      def running?
        begin
          pid && Process.kill(0, pid)
        rescue Errno::ESRCH
          File.unlink(pid_file) # no needed any more
          false
        end
      end

      def dryrun(file_path = nil)
        dryrun!(file_path)
        true
      rescue ::Fluentd::Agent::ConfigError
        false
      end

      def pid
        return unless File.exists?(pid_file)
        return if File.zero?(pid_file)
        File.read(pid_file).to_i rescue nil
      end

      private

      def exec_dryrun(command, file_path = nil)
        Bundler.with_clean_env do
          unless system("#{command} -q --dry-run #{options_to_argv(config_file: file_path)}", out: File::NULL, err: File::NULL)
            raise ::Fluentd::Agent::ConfigError
          end
        end
      end

      def detached_command(cmd)
        thread = Bundler.with_clean_env do
          pid = spawn(cmd)
          Process.detach(pid)
        end
        thread.join
        thread.value.exitstatus.zero?
      end

      def options_to_argv(opts = {})
        argv = ""
        argv << " -c #{opts[:config_file] || config_file}"
        argv << " -d #{opts[:pid_file] || pid_file}"
        argv << " -o #{opts[:log_file] || log_file}"
        argv
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
fluentd-ui-1.2.1 app/models/fluentd/agent/process_operation.rb
fluentd-ui-1.2.0 app/models/fluentd/agent/process_operation.rb
fluentd-ui-1.1.0 app/models/fluentd/agent/process_operation.rb
fluentd-ui-1.0.1 app/models/fluentd/agent/process_operation.rb
fluentd-ui-1.0.0 app/models/fluentd/agent/process_operation.rb
fluentd-ui-1.0.0.beta.1 app/models/fluentd/agent/process_operation.rb
fluentd-ui-1.0.0.alpha.3 app/models/fluentd/agent/process_operation.rb
fluentd-ui-1.0.0.alpha.2 app/models/fluentd/agent/process_operation.rb
fluentd-ui-1.0.0.alpha.1 app/models/fluentd/agent/process_operation.rb
fluentd-ui-0.4.5 app/models/fluentd/agent/process_operation.rb
fluentd-ui-0.4.4 app/models/fluentd/agent/process_operation.rb
fluentd-ui-0.4.3 app/models/fluentd/agent/process_operation.rb