-
Notifications
You must be signed in to change notification settings - Fork 657
/
bosh_agent.rb
128 lines (104 loc) · 3.04 KB
/
bosh_agent.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# Copyright (c) 2009-2012 VMware, Inc.
module Bosh
end
require "logger"
require "time"
require "yaml"
require "set"
require "nats/client"
require "yajl"
require "securerandom"
require "ostruct"
require "monit_api"
require "fileutils"
require "resolv"
require "ipaddr"
require "httpclient"
require "sigar"
require "common/exec"
require "common/properties"
require "encryption/encryption_handler"
require "bosh_agent/ext"
require "bosh_agent/version"
require "bosh_agent/template"
require "bosh_agent/errors"
require "bosh_agent/remote_exception"
require "bosh_agent/config"
require "bosh_agent/util"
require "bosh_agent/monit"
require "bosh_agent/infrastructure"
require "bosh_agent/platform"
require "bosh_agent/bootstrap"
require "bosh_agent/alert"
require "bosh_agent/alert_processor"
require "bosh_agent/smtp_server"
require "bosh_agent/heartbeat"
require "bosh_agent/heartbeat_processor"
require "bosh_agent/state"
require "bosh_agent/settings"
require "bosh_agent/file_matcher"
require "bosh_agent/file_aggregator"
require "bosh_agent/ntp"
require "bosh_agent/sshd_monitor"
require "bosh_agent/apply_plan/job"
require "bosh_agent/apply_plan/package"
require "bosh_agent/apply_plan/plan"
# TODO the message handlers will be loaded dynamically
require "bosh_agent/message/base"
require "bosh_agent/message/disk"
require "bosh_agent/message/state"
require "bosh_agent/message/drain"
require "bosh_agent/message/apply"
require "bosh_agent/message/compile_package"
require "bosh_agent/message/logs"
require "bosh_agent/message/ssh"
require "bosh_agent/handler"
module Bosh::Agent
BOSH_APP = BOSH_APP_USER = BOSH_APP_GROUP = "vcap"
class << self
def run(options = {})
Runner.new(options).start
end
end
class Runner < Struct.new(:config)
def initialize(options)
self.config = Bosh::Agent::Config.setup(options)
@logger = Bosh::Agent::Config.logger
end
def start
$stdout.sync = true
@logger.info("Starting agent #{Bosh::Agent::VERSION}...")
if Config.configure
@logger.info("Configuring agent...")
# FIXME: this should not use message handler.
# The whole thing should be refactored so that
# regular code doesn't use RPC handlers other than
# for responding to RPC.
Bosh::Agent::Bootstrap.new.configure
Bosh::Agent::Monit.enable
Bosh::Agent::Monit.start
Bosh::Agent::Monit.start_services
else
@logger.info("Skipping configuration step (use '-c' argument to configure on start) ")
end
if Config.mbus.start_with?("http")
require "bosh_agent/http_handler"
Bosh::Agent::HTTPHandler.start
else
Bosh::Agent::Handler.start
end
end
end
end
if __FILE__ == $0
options = {
"configure" => true,
"logging" => { "level" => "DEBUG" },
"mbus" => "nats://localhost:4222",
"agent_id" => "not_configured",
"base_dir" => "/var/vcap",
"platform_name" => "ubuntu",
"blobstore_options" => {}
}
Bosh::Agent.run(options)
end