Class: CirrASManagement::Manager
- Inherits:
-
Object
- Object
- CirrASManagement::Manager
- Defined in:
- lib/cirras-management/manager.rb
Class Method Summary collapse
Instance Method Summary collapse
- #bind_handler(api_version, prefix = nil) ⇒ Object
-
#create_client ⇒ Object
this is a client.
- #discover_nodes ⇒ Object
-
#initialize ⇒ Manager
constructor
A new instance of Manager.
- #nodes ⇒ Object
- #wait_for_web_server ⇒ Object
Constructor Details
#initialize ⇒ Manager
Returns a new instance of Manager.
36 37 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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/cirras-management/manager.rb', line 36 def initialize @log = Logger.new(STDOUT) configure :production do @log = LogHelper.instance.log end @config = ConfigHelper.new( :log => @log ).config @@config = @config @@event_manager = EventManager.new( :log => @log ) @log.info "Setting up management environment for #{@config.appliance_name}" if @config.is_management_appliance? @log.info "Setting up node managers..." if @config.running_on_ec2 @node_manager = AWSNodeManager.new( @config, :log => @log ) else @node_manager = DefaultNodeManager.new( @config, :log => @log ) end @@node_manager = @node_manager else create_client end # sinatra parameters enable :raise_errors disable :logging disable :lock helpers do def prefix request.path_info.match( /^\/([\w\-]+)\// )[1] end def notify( event, *args ) Manager.event_manager.notify( false, prefix, event, *args ) end def notify_threaded( event, *args ) Manager.event_manager.notify( true, prefix, event, *args ) end end for api in APIS bind_handler( api ) end bind_handler( APIS.first, "latest" ) get '/' do apis = "latest\n" for api in APIS apis += api + "\n" end apis end get '/*' do status 404 "Not found" end wait_for_web_server end |
Class Method Details
.config ⇒ Object
145 146 147 |
# File 'lib/cirras-management/manager.rb', line 145 def self.config @@config end |
.event_manager ⇒ Object
165 166 167 |
# File 'lib/cirras-management/manager.rb', line 165 def self.event_manager @@event_manager end |
.node_manager ⇒ Object
149 150 151 |
# File 'lib/cirras-management/manager.rb', line 149 def self.node_manager @@node_manager end |
Instance Method Details
#bind_handler(api_version, prefix = nil) ⇒ Object
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/cirras-management/manager.rb', line 106 def bind_handler( api_version, prefix = nil ) prefix = api_version if prefix.nil? @log.debug "Binding new request handler helper for API version '#{api_version}' and prefix '#{prefix}'..." Dir["lib/cirras-management/api/#{api_version}/handler/*/*"].each {|file| require file if File.exists?( file ) } to = HandlerTO.new( prefix, api_version, @config, @log ) if @config.is_management_appliance? handler_helper = ManagementApplianceRequestHandlerHelper.new( to ) else handler_helper = DefaultRequestHandlerHelper.new( to ) end Manager.event_manager.register( api_version, prefix, handler_helper.handlers ) end |
#create_client ⇒ Object
this is a client
138 139 |
# File 'lib/cirras-management/manager.rb', line 138 def create_client end |
#discover_nodes ⇒ Object
153 154 155 156 157 158 159 160 161 162 163 |
# File 'lib/cirras-management/manager.rb', line 153 def discover_nodes t = Thread.new do while true do @log.debug "Begining node discovery..." @node_manager.register_nodes @node_manager.push_management_address @log.debug "Waiting #{@config.sleep} seconds before next node discovery..." sleep @config.sleep # check after 30 sec if there are changes in nodes (new added, removed, etc) end end end |
#nodes ⇒ Object
141 142 143 |
# File 'lib/cirras-management/manager.rb', line 141 def nodes @node_manager.nodes end |
#wait_for_web_server ⇒ Object
124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/cirras-management/manager.rb', line 124 def wait_for_web_server t = Thread.new do while true do @log.info "Waiting for web server..." break if IPHelper.new.is_port_open?( "localhost", @config.port ) sleep 1 end @log.info "Web server is running and ready for requests!" discover_nodes if @config.is_management_appliance? end end |