Class: Proxy::Dynflow::Core
- Inherits:
-
Object
- Object
- Proxy::Dynflow::Core
- Defined in:
- lib/smart_proxy_dynflow/core.rb
Class Attribute Summary collapse
-
.instance ⇒ Object
readonly
Returns the value of attribute instance.
Instance Attribute Summary collapse
-
#accepted_cert_serial ⇒ Object
Returns the value of attribute accepted_cert_serial.
-
#world ⇒ Object
Returns the value of attribute world.
Class Method Summary collapse
- .after_initialize(&block) ⇒ Object
- .ensure_initialized ⇒ Object
- .register_silencer_matchers(matchers) ⇒ Object
- .silencer_matchers ⇒ Object
- .web_console ⇒ Object
- .world ⇒ Object
Instance Method Summary collapse
- #create_world(&block) ⇒ Object
- #default_world_config ⇒ Object
- #execution_plan_cleaner ⇒ Object
-
#initialize ⇒ Core
constructor
A new instance of Core.
- #logger_adapter ⇒ Object
- #persistence_adapter ⇒ Object
- #persistence_conn_string ⇒ Object
Constructor Details
#initialize ⇒ Core
Returns a new instance of Core.
9 10 11 12 13 14 15 16 17 18 |
# File 'lib/smart_proxy_dynflow/core.rb', line 9 def initialize @world = create_world cert_file = Proxy::SETTINGS.foreman_ssl_cert || Proxy::SETTINGS.ssl_certificate if cert_file client_cert = File.read(cert_file) # we trust only requests using the same certificate as we are # (in other words the local proxy only) @accepted_cert_serial = OpenSSL::X509::Certificate.new(client_cert).serial end end |
Class Attribute Details
.instance ⇒ Object (readonly)
Returns the value of attribute instance.
74 75 76 |
# File 'lib/smart_proxy_dynflow/core.rb', line 74 def instance @instance end |
Instance Attribute Details
#accepted_cert_serial ⇒ Object
Returns the value of attribute accepted_cert_serial.
7 8 9 |
# File 'lib/smart_proxy_dynflow/core.rb', line 7 def accepted_cert_serial @accepted_cert_serial end |
#world ⇒ Object
Returns the value of attribute world.
7 8 9 |
# File 'lib/smart_proxy_dynflow/core.rb', line 7 def world @world end |
Class Method Details
.after_initialize(&block) ⇒ Object
116 117 118 |
# File 'lib/smart_proxy_dynflow/core.rb', line 116 def after_initialize(&block) after_initialize_blocks << block end |
.ensure_initialized ⇒ Object
76 77 78 79 80 81 82 |
# File 'lib/smart_proxy_dynflow/core.rb', line 76 def ensure_initialized return @instance if @instance @instance = Core.new after_initialize_blocks.each { |block| block.call(@instance) } @instance end |
.register_silencer_matchers(matchers) ⇒ Object
88 89 90 |
# File 'lib/smart_proxy_dynflow/core.rb', line 88 def register_silencer_matchers(matchers) silencer_matchers.concat matchers end |
.silencer_matchers ⇒ Object
84 85 86 |
# File 'lib/smart_proxy_dynflow/core.rb', line 84 def silencer_matchers @matchers ||= [::Dynflow::DeadLetterSilencer::Matcher.new(Ticker)] end |
.web_console ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/smart_proxy_dynflow/core.rb', line 92 def web_console require 'dynflow/web' ::Dynflow::Web.setup do # we can't use the proxy's after_activation hook, as # it happens before the Daemon forks the process (including # closing opened file descriptors) # TODO: extend smart proxy to enable hooks that happen after # the forking helpers Helpers include ::Sinatra::Authorization::Helpers before do if Settings.instance.console_auth end Core.ensure_initialized set :world, Core.world end end |
.world ⇒ Object
112 113 114 |
# File 'lib/smart_proxy_dynflow/core.rb', line 112 def world instance.world end |
Instance Method Details
#create_world(&block) ⇒ Object
20 21 22 23 24 25 |
# File 'lib/smart_proxy_dynflow/core.rb', line 20 def create_world(&block) config = default_world_config(&block) world = ::Dynflow::World.new(config) world.middleware.use ::Actions::Middleware::KeepCurrentRequestID world end |
#default_world_config ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/smart_proxy_dynflow/core.rb', line 48 def default_world_config ::Dynflow::Config.new.tap do |config| config.auto_rescue = true config.logger_adapter = logger_adapter config.persistence_adapter = persistence_adapter config.execution_plan_cleaner = execution_plan_cleaner # TODO: There has to be a better way matchers = config.silent_dead_letter_matchers.call.concat(self.class.silencer_matchers) config.silent_dead_letter_matchers = matchers yield config if block_given? end end |
#execution_plan_cleaner ⇒ Object
65 66 67 68 69 70 71 |
# File 'lib/smart_proxy_dynflow/core.rb', line 65 def execution_plan_cleaner proc do |world| age = Settings.instance.execution_plan_cleaner_age = { :poll_interval => age, :max_age => age } ::Dynflow::Actors::ExecutionPlanCleaner.new(world, ) end end |
#logger_adapter ⇒ Object
61 62 63 |
# File 'lib/smart_proxy_dynflow/core.rb', line 61 def logger_adapter Log::ProxyAdapter.new(Proxy::LogBuffer::Decorator.instance, Log.instance.level) end |
#persistence_adapter ⇒ Object
44 45 46 |
# File 'lib/smart_proxy_dynflow/core.rb', line 44 def persistence_adapter ::Dynflow::PersistenceAdapters::Sequel.new persistence_conn_string end |
#persistence_conn_string ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/smart_proxy_dynflow/core.rb', line 27 def persistence_conn_string return ENV['DYNFLOW_DB_CONN_STRING'] if ENV.key? 'DYNFLOW_DB_CONN_STRING' db_conn_string = 'sqlite:/' db_file = Settings.instance.database if db_file.nil? || db_file.empty? Log.instance.info "Using in-memory database (default behaviour). Restart will drop all dynflow data. " \ "To change this behaviour configure setting 'database'." else FileUtils.mkdir_p(File.dirname(db_file)) db_conn_string += "/#{db_file}" end db_conn_string end |