virtualmonkey 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/LICENSE +20 -0
- data/README.rdoc +77 -0
- data/Rakefile +51 -0
- data/VERSION +1 -0
- data/bin/grinder +102 -0
- data/bin/mcicp +46 -0
- data/bin/monkey +12 -0
- data/bin/vary_instance_types +59 -0
- data/config/cloud_variables/all_clouds.json +30 -0
- data/config/cloud_variables/east.json +9 -0
- data/config/cloud_variables/rackspace.json +7 -0
- data/config/cloud_variables/west.json +9 -0
- data/config/common_inputs/apache_haproxy.json +27 -0
- data/config/common_inputs/base.json +5 -0
- data/config/common_inputs/ebs_toolbox.json +10 -0
- data/config/common_inputs/haproxy.json +15 -0
- data/config/common_inputs/lamp.json +30 -0
- data/config/common_inputs/mysql.json +24 -0
- data/config/common_inputs/none.json +4 -0
- data/config/common_inputs/php.json +25 -0
- data/config/common_inputs/php_aio_trial_chef_alpha.json +3 -0
- data/config/common_inputs/php_app_fe_chef.json +12 -0
- data/config/common_inputs/php_elb.json +12 -0
- data/config/common_inputs/qstart.json +5 -0
- data/config/common_inputs/rails.json +31 -0
- data/config/common_inputs/rails_aio_demo_chef_alpha.json +3 -0
- data/config/common_inputs/rails_aio_developer_chef_alpha.json +10 -0
- data/config/common_inputs/rsgrid.json +10 -0
- data/config/common_inputs/tomcat.json +15 -0
- data/config/common_inputs/windows_blog_engine.json +3 -0
- data/config/common_inputs/windows_net_aio.json +14 -0
- data/config/troop/11H1/backup/base.json +10 -0
- data/config/troop/11H1/backup/lamp_mysql_50.json +10 -0
- data/config/troop/11H1/backup/lamp_mysql_51.json +10 -0
- data/config/troop/11H1/backup/loadbalancer-php.json +13 -0
- data/config/troop/11H1/backup/loadbalancer.json +14 -0
- data/config/troop/11H1/backup/loadbalancer_rails.json +13 -0
- data/config/troop/11H1/backup/loadbalancer_tomcat6.json +13 -0
- data/config/troop/11H1/backup/mysql50.json +11 -0
- data/config/troop/11H1/backup/mysql50_toolbox.json +12 -0
- data/config/troop/11H1/backup/mysql51.json +11 -0
- data/config/troop/11H1/backup/mysql51_toolbox.json +12 -0
- data/config/troop/11H1/backup/php_elb.json +11 -0
- data/config/troop/11H1/base.json +10 -0
- data/config/troop/11H1/ebs_toolbox.json +12 -0
- data/config/troop/11H1/lamp_mysql_50.json +10 -0
- data/config/troop/11H1/lamp_mysql_51.json +10 -0
- data/config/troop/11H1/loadbalancer-php.json +13 -0
- data/config/troop/11H1/loadbalancer.json +17 -0
- data/config/troop/11H1/loadbalancer_rails.json +13 -0
- data/config/troop/11H1/loadbalancer_tomcat6.json +13 -0
- data/config/troop/11H1/mysql50.json +11 -0
- data/config/troop/11H1/mysql50_toolbox.json +12 -0
- data/config/troop/11H1/mysql51.json +11 -0
- data/config/troop/11H1/mysql51_awsdns.json +11 -0
- data/config/troop/11H1/mysql51_debug.json +11 -0
- data/config/troop/11H1/mysql51_toolbox.json +12 -0
- data/config/troop/11H1/php.json +13 -0
- data/config/troop/11H1/php_elb.json +11 -0
- data/config/troop/11H1/rails.json +13 -0
- data/config/troop/11H1/tomcat6.json +13 -0
- data/config/troop/chef_quickstart.json +10 -0
- data/config/troop/just_elb +10 -0
- data/config/troop/lamp_v4.json +10 -0
- data/config/troop/patch_test.json +10 -0
- data/config/troop/rightlink.json +10 -0
- data/config/troop/simple_fail.json +11 -0
- data/config/troop/simple_pass.json +11 -0
- data/config/troop/windows_blog_engine.json +10 -0
- data/config/troop/windows_net_aio.json +10 -0
- data/config/troop/windows_quick_start.json +10 -0
- data/features/base.rb +31 -0
- data/features/db_toolbox.rb +59 -0
- data/features/ebs_toolbox.rb +62 -0
- data/features/lamp.rb +33 -0
- data/features/lb-apache-haproxy.rb +49 -0
- data/features/mysql_5.x_v2_v4_from_scratch.rb +71 -0
- data/features/mysql_5.x_v2_v4_from_scratch_awsdns.rb +71 -0
- data/features/mysql_5.x_v2_v4_from_scratch_dyndns.rb +71 -0
- data/features/mysql_v1_upgrade_v2.rb +54 -0
- data/features/old_cuke_features/Rakefile +121 -0
- data/features/old_cuke_features/Steps-TODO +31 -0
- data/features/old_cuke_features/app_state.feature +25 -0
- data/features/old_cuke_features/app_test.feature +24 -0
- data/features/old_cuke_features/base.feature +16 -0
- data/features/old_cuke_features/chef_quickstart.feature +11 -0
- data/features/old_cuke_features/db_toolbox.feature +38 -0
- data/features/old_cuke_features/ebs_toolbox.feature +39 -0
- data/features/old_cuke_features/elb_create_delete.feature +41 -0
- data/features/old_cuke_features/elb_generic.feature +27 -0
- data/features/old_cuke_features/fe_app_checks.feature +21 -0
- data/features/old_cuke_features/just-start.feature +13 -0
- data/features/old_cuke_features/lamp.feature +15 -0
- data/features/old_cuke_features/lb-apache-haproxy.feature +27 -0
- data/features/old_cuke_features/mysql_5.x_v2_v4_from_scratch.feature +33 -0
- data/features/old_cuke_features/mysql_5.x_v2_v4_from_scratch_awsdns.feature +33 -0
- data/features/old_cuke_features/mysql_5.x_v2_v4_from_scratch_dyndns.feature +33 -0
- data/features/old_cuke_features/mysql_chef_premium.feature +27 -0
- data/features/old_cuke_features/mysql_chef_premium_from_scratch.feature +37 -0
- data/features/old_cuke_features/mysql_v1_upgrade_v2.feature +42 -0
- data/features/old_cuke_features/php.feature +27 -0
- data/features/old_cuke_features/php_aio_trial_chef_alpha.feature +11 -0
- data/features/old_cuke_features/php_chef.feature +21 -0
- data/features/old_cuke_features/php_elb.feature +41 -0
- data/features/old_cuke_features/rails.feature +26 -0
- data/features/old_cuke_features/rails_aio_developer_chef.feature +17 -0
- data/features/old_cuke_features/reboot.feature +23 -0
- data/features/old_cuke_features/rightlink.feature +19 -0
- data/features/old_cuke_features/rsgrid.feature +19 -0
- data/features/old_cuke_features/simple.feature +8 -0
- data/features/old_cuke_features/simple_fail.feature +9 -0
- data/features/old_cuke_features/start-stop.feature +13 -0
- data/features/old_cuke_features/step_definitions/app.rb +21 -0
- data/features/old_cuke_features/step_definitions/deployment_steps.rb +112 -0
- data/features/old_cuke_features/step_definitions/ebs.rb +36 -0
- data/features/old_cuke_features/step_definitions/elb.rb +35 -0
- data/features/old_cuke_features/step_definitions/lb.rb +22 -0
- data/features/old_cuke_features/step_definitions/mysql_steps.rb +84 -0
- data/features/old_cuke_features/terminate.feature +7 -0
- data/features/old_cuke_features/tomcat6-tests-TODO +29 -0
- data/features/old_cuke_features/tomcat6.feature +27 -0
- data/features/patch_test.rb +33 -0
- data/features/php.rb +54 -0
- data/features/php_elb.rb +78 -0
- data/features/rails.rb +54 -0
- data/features/start_only.rb +26 -0
- data/features/tomcat6.rb +54 -0
- data/lib/virtualmonkey.rb +28 -0
- data/lib/virtualmonkey/application.rb +75 -0
- data/lib/virtualmonkey/application_frontend.rb +42 -0
- data/lib/virtualmonkey/command.rb +39 -0
- data/lib/virtualmonkey/command/clone.rb +50 -0
- data/lib/virtualmonkey/command/create.rb +21 -0
- data/lib/virtualmonkey/command/destroy.rb +51 -0
- data/lib/virtualmonkey/command/list.rb +10 -0
- data/lib/virtualmonkey/command/run.rb +76 -0
- data/lib/virtualmonkey/command/troop.rb +146 -0
- data/lib/virtualmonkey/cuke_monk.rb +184 -0
- data/lib/virtualmonkey/deployment_monk.rb +132 -0
- data/lib/virtualmonkey/deployment_runner.rb +333 -0
- data/lib/virtualmonkey/ebs.rb +161 -0
- data/lib/virtualmonkey/ebs_runner.rb +59 -0
- data/lib/virtualmonkey/elb_runner.rb +194 -0
- data/lib/virtualmonkey/fe_app_runner.rb +7 -0
- data/lib/virtualmonkey/file_locations.rb +7 -0
- data/lib/virtualmonkey/frontend.rb +124 -0
- data/lib/virtualmonkey/http_checks.rb +33 -0
- data/lib/virtualmonkey/index.html.erb +109 -0
- data/lib/virtualmonkey/lamp_runner.rb +29 -0
- data/lib/virtualmonkey/mysql.rb +172 -0
- data/lib/virtualmonkey/mysql_runner.rb +108 -0
- data/lib/virtualmonkey/mysql_toolbox_runner.rb +51 -0
- data/lib/virtualmonkey/patch_runner.rb +46 -0
- data/lib/virtualmonkey/php_aio_trial_chef_runner.rb +6 -0
- data/lib/virtualmonkey/php_chef_runner.rb +69 -0
- data/lib/virtualmonkey/rails_aio_developer_chef_runner.rb +8 -0
- data/lib/virtualmonkey/shared_dns.rb +67 -0
- data/lib/virtualmonkey/simple.rb +5 -0
- data/lib/virtualmonkey/simple_runner.rb +6 -0
- data/lib/virtualmonkey/test_case_interface.rb +151 -0
- data/lib/virtualmonkey/unified_application.rb +40 -0
- data/spec/bug3518.rb +16 -0
- data/spec/concurrent_writes_spec.rb +26 -0
- data/spec/cuke_job_spec.rb +26 -0
- data/spec/ek.rb +28 -0
- data/spec/little_ruby.rb +20 -0
- data/spec/mini.rb +25 -0
- data/spec/monitoring.rb +13 -0
- data/spec/release_aws_dns.rb +5 -0
- data/spec/release_dns.rb +5 -0
- data/spec/release_dyndns.rb +5 -0
- data/spec/shared_resources_spec.rb +25 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +11 -0
- data/spec/virtualmonkey_spec.rb +7 -0
- data/virtualmonkey.gemspec +265 -0
- metadata +428 -0
@@ -0,0 +1,59 @@
|
|
1
|
+
module VirtualMonkey
|
2
|
+
class EBSRunner
|
3
|
+
include VirtualMonkey::DeploymentRunner
|
4
|
+
include VirtualMonkey::EBS
|
5
|
+
attr_accessor :scripts_to_run
|
6
|
+
|
7
|
+
# It's not that I'm a Java fundamentalist; I merely believe that mortals should
|
8
|
+
# not be calling the following methods directly. Instead, they should use the
|
9
|
+
# TestCaseInterface methods (behavior, verify, probe) to access these functions.
|
10
|
+
# Trust me, I know what's good for you. -- Tim R.
|
11
|
+
private
|
12
|
+
|
13
|
+
# lookup all the RightScripts that we will want to run
|
14
|
+
def lookup_scripts
|
15
|
+
scripts = [
|
16
|
+
[ 'backup', 'EBS stripe volume backup' ],
|
17
|
+
[ 'restore', 'EBS stripe volume restore' ],
|
18
|
+
[ 'continuous_backup', 'EBS continuous backups' ],
|
19
|
+
[ 'unfreeze', 'EBS unfreeze volume backups' ],
|
20
|
+
[ 'freeze', 'EBS freeze volume backups' ],
|
21
|
+
[ 'create_stripe', 'EBS stripe volume create' ],
|
22
|
+
[ 'create_backup_scripts', 'EBS create backup scripts' ],
|
23
|
+
[ 'grow_volume', 'EBS stripe volume grow and restore' ],
|
24
|
+
[ 'terminate', 'TERMINATE' ]
|
25
|
+
]
|
26
|
+
st = ServerTemplate.find(s_one.server_template_href)
|
27
|
+
lookup_scripts_table(st,scripts)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Create a stripe and write some data to it
|
31
|
+
def create_stripe
|
32
|
+
behavior(:create_stripe_volume, s_one)
|
33
|
+
behavior(:populate_volume, s_one)
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_backup_script_operations
|
37
|
+
backup_script="/usr/local/bin/ebs-backup.rb"
|
38
|
+
# create backup scripts
|
39
|
+
behavior(:run_script, "create_backup_scripts", s_one)
|
40
|
+
object_behavior(s_one, :spot_check_command, "test -x #{backup_script}")
|
41
|
+
# enable continuous backups
|
42
|
+
behavior(:run_script, "continuous_backup", s_one)
|
43
|
+
object_behavior(s_one, :spot_check_command, "egrep \"^[0-6].*#{backup_script}\" /etc/crontab")
|
44
|
+
# freeze backups
|
45
|
+
behavior(:run_script, "freeze", s_one)
|
46
|
+
object_behavior(s_one, :spot_check_command, "egrep \"^#[0-6].*#{backup_script}\" /etc/crontab")
|
47
|
+
# unfreeze backups
|
48
|
+
behavior(:run_script, "unfreeze", s_one)
|
49
|
+
object_behavior(s_one, :spot_check_command, "egrep \"^[0-6].*#{backup_script}\" /etc/crontab")
|
50
|
+
end
|
51
|
+
|
52
|
+
def run_reboot_operations
|
53
|
+
object_behavior(s_one, :reboot, true)
|
54
|
+
object_behavior(s_one, :wait_for_state, "operational")
|
55
|
+
behavior(:create_backup)
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,194 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "right_aws"
|
3
|
+
|
4
|
+
module VirtualMonkey
|
5
|
+
class ELBRunner
|
6
|
+
include VirtualMonkey::DeploymentRunner
|
7
|
+
include VirtualMonkey::Application
|
8
|
+
include VirtualMonkey::UnifiedApplication
|
9
|
+
|
10
|
+
ELB_PORT = 80
|
11
|
+
ELB_PORT_FORWARD = 8000
|
12
|
+
ELB_PREFIX = "MONKEY-TEST-ELB"
|
13
|
+
|
14
|
+
AWS_ID = ENV['AWS_ACCESS_KEY_ID']
|
15
|
+
AWS_KEY = ENV['AWS_SECRET_ACCESS_KEY']
|
16
|
+
|
17
|
+
ELBS = { 1 => {
|
18
|
+
:endpoint => "https://elasticloadbalancing.us-east-1.amazonaws.com",
|
19
|
+
:azs => [ "us-east-1a", "us-east-1b", "us-east-1c", "us-east-1d" ]
|
20
|
+
},
|
21
|
+
2 => {
|
22
|
+
:endpoint => "https://elasticloadbalancing.eu-west-1.amazonaws.com",
|
23
|
+
:azs => [ "eu-west-1a", "eu-west-1b" ]
|
24
|
+
},
|
25
|
+
3 => {
|
26
|
+
:endpoint => "https://elasticloadbalancing.us-west-1.amazonaws.com",
|
27
|
+
:azs => [ "us-west-1a", "us-west-1b" ]
|
28
|
+
},
|
29
|
+
4 => {
|
30
|
+
:endpoint => "https://elasticloadbalancing.ap-southeast-1.amazonaws.com",
|
31
|
+
:azs => [ "ap-southeast-1a", "ap-southeast-1a" ]
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
# It's not that I'm a Java fundamentalist; I merely believe that mortals should
|
36
|
+
# not be calling the following methods directly. Instead, they should use the
|
37
|
+
# TestCaseInterface methods (behavior, verify, probe) to access these functions.
|
38
|
+
# Trust me, I know what's good for you. -- Tim R.
|
39
|
+
private
|
40
|
+
|
41
|
+
def initialize(args)
|
42
|
+
super(args)
|
43
|
+
endpoint_url=ELBS[get_cloud_id][:endpoint]
|
44
|
+
puts "USING EP: #{endpoint_url}"
|
45
|
+
@elb = RightAws::ElbInterface.new(AWS_ID, AWS_KEY, { :endpoint_url => endpoint_url } )
|
46
|
+
# @elb_name = "#{ELB_PREFIX}-#{rand(1000000)}"
|
47
|
+
@elb_name = @deployment.href.split(/\//).last
|
48
|
+
end
|
49
|
+
|
50
|
+
def retry_elb_fn(fn, *args)
|
51
|
+
backoff = 60
|
52
|
+
retry_loop = 0
|
53
|
+
begin
|
54
|
+
begin
|
55
|
+
result = @elb.__send__(fn, *args)
|
56
|
+
done = true
|
57
|
+
rescue Exception => e
|
58
|
+
if e.message =~ /Throttling/
|
59
|
+
puts "Rescuing ELB error: #{e.message}"
|
60
|
+
raise "FATAL: Exceeded ELB retry limit" unless retry_loop < 10
|
61
|
+
sleep (rand(backoff))
|
62
|
+
retry_loop += 1
|
63
|
+
else
|
64
|
+
raise e
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end while !done
|
68
|
+
result
|
69
|
+
end
|
70
|
+
|
71
|
+
def set_elb_name
|
72
|
+
@deployment.set_input("ELB_NAME", "text:#{@elb_name}")
|
73
|
+
end
|
74
|
+
|
75
|
+
# The ELB should be serving up the unified app after boot
|
76
|
+
def run_elb_checks
|
77
|
+
run_unified_application_check(elb_href, ELB_PORT)
|
78
|
+
end
|
79
|
+
|
80
|
+
# Check if :all or :none of the app servers are registered
|
81
|
+
def elb_registration_check(type)
|
82
|
+
details = retry_elb_fn("describe_load_balancers",@elb_name)
|
83
|
+
instances = details.first[:instances]
|
84
|
+
case type
|
85
|
+
when :all
|
86
|
+
@servers.each do |server|
|
87
|
+
server.settings
|
88
|
+
aws_id = server["aws-id"]
|
89
|
+
raise "ERROR: Did not find aws id for #{aws_id}. ID list: #{instances.inspect}" unless instances.include?(aws_id)
|
90
|
+
end
|
91
|
+
when :none
|
92
|
+
raise "ERROR: found registered instances when there should be none. ID list: #{instances.inspect}" unless instances.empty?
|
93
|
+
else
|
94
|
+
raise "ERROR: only check types of :none and :all are currently supported"
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def elb_disconnect_all
|
99
|
+
@servers.each do |server|
|
100
|
+
disconnect_server(server)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
# Used to make sure everyone is disconnected
|
105
|
+
def elb_response_code(elb_expected_code)
|
106
|
+
test_http_response(elb_expected_code, elb_href, ELB_PORT)
|
107
|
+
end
|
108
|
+
|
109
|
+
# Grab the scripts we plan to excersize
|
110
|
+
def lookup_scripts
|
111
|
+
scripts = [
|
112
|
+
[ 'connect', 'ELB connect' ],
|
113
|
+
[ 'disconnect', 'ELB disconnect' ]
|
114
|
+
]
|
115
|
+
# @scripts_to_run = {}
|
116
|
+
server = @servers.first
|
117
|
+
server.settings
|
118
|
+
st = ServerTemplate.find(server.server_template_href)
|
119
|
+
lookup_scripts_table(st,scripts)
|
120
|
+
# @scripts_to_run['connect'] = st.executables.detect { |ex| ex.name =~ /ELB connect/i }
|
121
|
+
# @scripts_to_run['disconnect'] = st.executables.detect { |ex| ex.name =~ /ELB disconnect/i }
|
122
|
+
end
|
123
|
+
|
124
|
+
# This is really just a PHP server check. relocate?
|
125
|
+
def log_rotation_checks
|
126
|
+
detect_os
|
127
|
+
|
128
|
+
# this works for php
|
129
|
+
app_servers.each do |server|
|
130
|
+
server.settings
|
131
|
+
force_log_rotation(server)
|
132
|
+
log_check(server,"/mnt/log/#{server.apache_str}/access.log.1")
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
def create_elb
|
137
|
+
begin
|
138
|
+
array = retry_elb_fn("describe_load_balancers",@elb_name)
|
139
|
+
rescue Exception => e
|
140
|
+
if e.message =~ /Cannot find Load Balancer/
|
141
|
+
array = []
|
142
|
+
else
|
143
|
+
raise e
|
144
|
+
end
|
145
|
+
end
|
146
|
+
if array.length == 1
|
147
|
+
@elb_dns = array.first[:dns_name]
|
148
|
+
else
|
149
|
+
raise "ERROR: More than one ELB with name \"#{@elb_name}\" found." if array.length > 1
|
150
|
+
az = ELBS[get_cloud_id][:azs]
|
151
|
+
puts "Using az: #{az}"
|
152
|
+
@elb_dns = retry_elb_fn("create_load_balancer",@elb_name,
|
153
|
+
az,
|
154
|
+
[ { :protocol => :http, :load_balancer_port => ELB_PORT, :instance_port => ELB_PORT_FORWARD } ] )
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
def destroy_elb
|
159
|
+
success = retry_elb_fn("delete_load_balancer",@elb_name)
|
160
|
+
raise "ERROR: unable to delete ELB name=#{@elb_name}" unless success
|
161
|
+
end
|
162
|
+
|
163
|
+
private
|
164
|
+
|
165
|
+
def elb_href
|
166
|
+
"http:\/\/#{@elb_dns}"
|
167
|
+
end
|
168
|
+
|
169
|
+
# What cloud is the first server in?
|
170
|
+
def get_cloud_id
|
171
|
+
case ENV['DEPLOYMENT']
|
172
|
+
when /ec2-east/
|
173
|
+
return 1
|
174
|
+
when /ec2-eu/
|
175
|
+
return 2
|
176
|
+
when /ec2-west/
|
177
|
+
return 3
|
178
|
+
when /ec2-ap/
|
179
|
+
return 4
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
# run the ELB connect script
|
184
|
+
def connect_server(server)
|
185
|
+
run_script('connect', server)
|
186
|
+
end
|
187
|
+
|
188
|
+
# run the ELB disconnect script
|
189
|
+
def disconnect_server(server)
|
190
|
+
run_script('disconnect', server)
|
191
|
+
end
|
192
|
+
|
193
|
+
end
|
194
|
+
end
|
@@ -0,0 +1,124 @@
|
|
1
|
+
module VirtualMonkey
|
2
|
+
module Frontend
|
3
|
+
|
4
|
+
#require File.expand_path(File.dirname(__FILE__), "application")
|
5
|
+
|
6
|
+
# returns an Array of the Front End servers in the deployment
|
7
|
+
def fe_servers
|
8
|
+
res = @servers.select { |s| s.nickname =~ /Front End/ || s.nickname =~ /FrontEnd/ || s.nickname =~ /Apache with HAproxy/ || s.nickname =~ /Load Balancer/ }
|
9
|
+
raise "FATAL: No frontend servers found" unless res.length > 0
|
10
|
+
res
|
11
|
+
end
|
12
|
+
|
13
|
+
# returns String with all the private dns of the Front End servers
|
14
|
+
# used for setting the LB_HOSTNAME input.
|
15
|
+
def get_lb_hostname_input
|
16
|
+
lb_hostname_input = "text:"
|
17
|
+
fe_servers.each do |fe|
|
18
|
+
timeout = 30
|
19
|
+
loopcounter = 0
|
20
|
+
begin
|
21
|
+
if fe.settings['private-dns-name'] == nil
|
22
|
+
raise "FATAL: private DNS name is empty" if loopcounter > 10
|
23
|
+
sleep(timeout)
|
24
|
+
loopcounter += 1
|
25
|
+
next
|
26
|
+
end
|
27
|
+
lb_hostname_input << fe.settings['private-dns-name'] + " "
|
28
|
+
done = true
|
29
|
+
end while !done
|
30
|
+
end
|
31
|
+
lb_hostname_input
|
32
|
+
end
|
33
|
+
|
34
|
+
def frontend_checks
|
35
|
+
behavior(:detect_os)
|
36
|
+
|
37
|
+
behavior(:run_unified_application_checks, fe_servers, 80)
|
38
|
+
|
39
|
+
# check that all application servers exist in the haproxy config file on all fe_servers
|
40
|
+
server_ips = Array.new
|
41
|
+
app_servers.each { |app| server_ips << app['private-ip-address'] }
|
42
|
+
fe_servers.each do |fe|
|
43
|
+
fe.settings
|
44
|
+
haproxy_config = object_behavior(fe, :spot_check_command, 'flock -n /home/haproxy/rightscale_lb.cfg -c "cat /home/haproxy/rightscale_lb.cfg | grep server"')
|
45
|
+
puts "INFO: flock status was #{haproxy_config[:status]}"
|
46
|
+
server_ips.each do |ip|
|
47
|
+
if haproxy_config.to_s.include?(ip) == false
|
48
|
+
puts haproxy_config[:output]
|
49
|
+
raise "FATAL: haproxy config did not contain server ip #{ip}"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# restart haproxy and check that it succeeds
|
55
|
+
fe_servers.each_with_index do |server,i|
|
56
|
+
response = object_behavior(server, :spot_check_command?, 'service haproxy stop')
|
57
|
+
raise "Haproxy stop command failed" unless response
|
58
|
+
|
59
|
+
stopped = false
|
60
|
+
count = 0
|
61
|
+
until response || count > 3 do
|
62
|
+
response = object_behavior(server, :spot_check_command, server.haproxy_check)
|
63
|
+
stopped = response.include?("not running")
|
64
|
+
break if stopped
|
65
|
+
count += 1
|
66
|
+
sleep 10
|
67
|
+
end
|
68
|
+
|
69
|
+
response = object_behavior(server, :spot_check_command?, 'service haproxy start')
|
70
|
+
raise "Haproxy start failed" unless response
|
71
|
+
end
|
72
|
+
|
73
|
+
# restart apache and check that it succeeds
|
74
|
+
statuses = Array.new
|
75
|
+
fe_servers.each { |s| statuses << object_behavior(s, :run_executable, @scripts_to_run['apache_restart']) }
|
76
|
+
statuses.each { |status| status.wait_for_completed }
|
77
|
+
fe_servers.each_with_index do |server,i|
|
78
|
+
response = nil
|
79
|
+
count = 0
|
80
|
+
until response || count > 3 do
|
81
|
+
response = object_behavior(server, :spot_check_command?, server.apache_check)
|
82
|
+
break if response
|
83
|
+
count += 1
|
84
|
+
sleep 10
|
85
|
+
end
|
86
|
+
raise "Apache status failed" unless response
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
def cross_connect_frontends
|
92
|
+
statuses = Array.new
|
93
|
+
options = { :LB_HOSTNAME => behavior(:get_lb_hostname_input) }
|
94
|
+
fe_servers.each { |s| statuses << object_behavior(s, :run_executable, @scripts_to_run['connect'], options) }
|
95
|
+
statuses.each_with_index { |s,i| s.wait_for_completed }
|
96
|
+
end
|
97
|
+
|
98
|
+
def lookup_scripts
|
99
|
+
fe_scripts = [
|
100
|
+
[ 'apache_restart', 'WEB apache \(re\)start' ]
|
101
|
+
]
|
102
|
+
app_scripts = [
|
103
|
+
[ 'connect', 'LB [app|mongrels]+ to HA proxy connect' ]
|
104
|
+
]
|
105
|
+
# @scripts_to_run = {}
|
106
|
+
st = ServerTemplate.find(fe_servers.first.server_template_href)
|
107
|
+
lookup_scripts_table(st,fe_scripts)
|
108
|
+
st = ServerTemplate.find(app_servers.first.server_template_href)
|
109
|
+
lookup_scripts_table(st,app_scripts)
|
110
|
+
# @scripts_to_run['connect'] = st.executables.detect { |ex| ex.name =~ /LB [app|mongrels]+ to HA proxy connect/i }
|
111
|
+
# @scripts_to_run['apache_restart'] = st.executables.detect { |ex| ex.name =~ /WEB apache \(re\)start v2/i }
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
# Run spot checks for FE servers in the deployment
|
116
|
+
def run_fe_tests
|
117
|
+
end
|
118
|
+
|
119
|
+
# Special startup sequence for an FE deployment
|
120
|
+
def startup
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
124
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module VirtualMonkey
|
2
|
+
class HttpChecks
|
3
|
+
|
4
|
+
# Tests http response code against given url
|
5
|
+
#
|
6
|
+
# === Parameters
|
7
|
+
# url<String>:: A URL to perform http request against
|
8
|
+
# expected_code<Integer>:: https code to match against curl response
|
9
|
+
#
|
10
|
+
# === Raises
|
11
|
+
# Exceptions if retry attempts timeout
|
12
|
+
def self.test_http_response(expected_code, url)
|
13
|
+
cmd = "curl -w %{http_code} -s #{url} 2> /dev/null "
|
14
|
+
puts cmd
|
15
|
+
timeout=300
|
16
|
+
begin
|
17
|
+
status = Timeout::timeout(timeout) do
|
18
|
+
while true
|
19
|
+
response = `#{cmd}`
|
20
|
+
break if response.include?(expected_code)
|
21
|
+
puts "Retrying..."
|
22
|
+
sleep 5
|
23
|
+
end
|
24
|
+
end
|
25
|
+
rescue Timeout::Error => e
|
26
|
+
raise "ERROR: Query failed after #{timeout/60} minutes."
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
<html>
|
2
|
+
<head><title>Virtual Monkey -- <%= @log_started %></title></head>
|
3
|
+
<style type="text/css">
|
4
|
+
.failed, .failed a {
|
5
|
+
color: red;
|
6
|
+
}
|
7
|
+
.success, .success a {
|
8
|
+
color: green;
|
9
|
+
}
|
10
|
+
h1 {
|
11
|
+
color: white;
|
12
|
+
background-color: black;
|
13
|
+
}
|
14
|
+
body { margin:0; padding:0; font-size:70.5%; /* font-family:'Lucida Sans', Verdana, Arial, sans-serif; */ font-family:"Lucida Grande","Lucida Sans Unicode","Lucida Sans",Verdana,lucida,sans-serif; background:#FFF; height:100%}
|
15
|
+
html {height:100%}
|
16
|
+
a img {border:none}
|
17
|
+
a {text-decoration:none; color:#1e4a7e}
|
18
|
+
|
19
|
+
#header {
|
20
|
+
background:#235186;
|
21
|
+
padding:2px 20px;
|
22
|
+
position:relative;
|
23
|
+
height:25px;
|
24
|
+
}
|
25
|
+
|
26
|
+
#header #vmonk {
|
27
|
+
font-size: 18px;
|
28
|
+
font-weight:bold;
|
29
|
+
color: orange;
|
30
|
+
padding:2px 20px;
|
31
|
+
position:relative;
|
32
|
+
top: -4px;
|
33
|
+
height:25px;
|
34
|
+
white-space:nowrap;
|
35
|
+
}
|
36
|
+
|
37
|
+
#header #logo {
|
38
|
+
margin-top:3px;
|
39
|
+
}
|
40
|
+
|
41
|
+
#footer {
|
42
|
+
background:#235186;
|
43
|
+
padding:2px 20px;
|
44
|
+
height:25px;
|
45
|
+
}
|
46
|
+
|
47
|
+
#footer #monkey {
|
48
|
+
float: right;
|
49
|
+
position: relative;
|
50
|
+
top: -50px;
|
51
|
+
}
|
52
|
+
|
53
|
+
#results {
|
54
|
+
padding:10px 20px;
|
55
|
+
}
|
56
|
+
</style>
|
57
|
+
<body>
|
58
|
+
<div id="header">
|
59
|
+
<div id="logo"><img src="data:image/png;base64,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" />
|
60
|
+
<span id="vmonk">Virtual Monkey -- <%= @log_started %></span>
|
61
|
+
</div>
|
62
|
+
</div>
|
63
|
+
|
64
|
+
<div id="results">
|
65
|
+
<% if running.size > 0 %>
|
66
|
+
<p class="running"><%= running.size %> tests running</p>
|
67
|
+
|
68
|
+
<ul class="running">
|
69
|
+
<% running.each do |running_job| %>
|
70
|
+
<li>
|
71
|
+
<a href="<%= running_job.link_to_rightscale %>"><%= running_job.deployment.nickname %></a>
|
72
|
+
</li>
|
73
|
+
<% end %>
|
74
|
+
</ul>
|
75
|
+
<% end %>
|
76
|
+
<p class="failed"><%= failed.size %> tests failed</p>
|
77
|
+
|
78
|
+
<ul class="failed">
|
79
|
+
<% failed.each do |failed_job| %>
|
80
|
+
<li>
|
81
|
+
<a href="<%= File.basename(failed_job.logfile) %>"><%= File.basename(failed_job.logfile) %></A> <br><a href="<%= File.basename(failed_job.rest_log) %>"><%= File.basename(failed_job.rest_log) %></A> <br><a href="<%= failed_job.link_to_rightscale %>">Click here to view in RightScale Dashboard</a>
|
82
|
+
</li>
|
83
|
+
<% end %>
|
84
|
+
</ul>
|
85
|
+
|
86
|
+
<p class="success"><%= passed.size %> tests passed</p>
|
87
|
+
|
88
|
+
<ul class="success">
|
89
|
+
<% passed.each do |passed_job| %>
|
90
|
+
<li>
|
91
|
+
<a href="<%= File.basename(passed_job.logfile) %>"><%= File.basename(passed_job.logfile) %></A> <br><a href="<%= File.basename(passed_job.rest_log) %>"><%= File.basename(passed_job.rest_log) %></A> <br><a href="<%= passed_job.link_to_rightscale %>">Click here to view in RightScale Dashboard</a>
|
92
|
+
</li>
|
93
|
+
<% end %>
|
94
|
+
</ul>
|
95
|
+
|
96
|
+
</div>
|
97
|
+
|
98
|
+
<div id="footer">
|
99
|
+
<div id="monkey">
|
100
|
+
<% if failed.size > 0 then %>
|
101
|
+
<img src="data:image/png;base64,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">
|
102
|
+
<% else %>
|
103
|
+
<img src="data:image/png;base64,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"">
|
104
|
+
<% end %>
|
105
|
+
</div>
|
106
|
+
</div>
|
107
|
+
|
108
|
+
</body>
|
109
|
+
</html>
|