Class: Torpedo::Compute::Servers
- Inherits:
-
Test::Unit::TestCase
- Object
- Test::Unit::TestCase
- Torpedo::Compute::Servers
- Defined in:
- lib/torpedo/compute/servers.rb
Constant Summary collapse
- @@servers =
[]
- @@images =
[]
- @@image_ref =
nil
- @@flavor_ref =
nil
- @@flavor_ref_resize =
nil
- @@server =
ref to last created server
nil
- @@hostname =
"torpedo"
- @@host_id =
nil
Class Method Summary collapse
-
.flavor_ref ⇒ Object
public access to the flavor ref.
-
.image_ref ⇒ Object
public access to the image ref.
-
.server ⇒ Object
public access to the server ref.
Instance Method Summary collapse
- #check_server(server, image_ref, flavor_ref, check_status = "ACTIVE") ⇒ Object
- #create_image(server, name, metadata) ⇒ Object
- #create_server(options) ⇒ Object
- #find_ip(server) ⇒ Object
- #get_personalities ⇒ Object
- #setup ⇒ Object
- #test_000_setup ⇒ Object
- #test_001_create_server ⇒ Object
- #test_002_delete_server_metadata_items ⇒ Object
- #test_003_update_one_server_metadata_item ⇒ Object
- #test_004_update_some_server_metadata_items ⇒ Object
- #test_005_set_server_metadata_items ⇒ Object
- #test_006_clear_server_metadata ⇒ Object
- #test_020_create_image ⇒ Object
- #test_030_rebuild ⇒ Object
- #test_035_soft_reboot ⇒ Object
- #test_036_hard_reboot ⇒ Object
- #test_037_change_password ⇒ Object
- #test_040_resize_revert ⇒ Object
- #test_041_resize ⇒ Object
- #test_042_resize_confirm ⇒ Object
- #test_051_delete_image_metadata_items ⇒ Object
- #test_052_update_one_image_metadata_item ⇒ Object
- #test_053_update_some_image_metadata_items ⇒ Object
- #test_054_set_image_metadata_items ⇒ Object
- #test_055_clear_image_metadata ⇒ Object
- #test_060_attach_volume ⇒ Object
- #test_061_detach_volume ⇒ Object
Class Method Details
.flavor_ref ⇒ Object
public access to the flavor ref
31 32 33 |
# File 'lib/torpedo/compute/servers.rb', line 31 def self.flavor_ref @@flavor_ref end |
.image_ref ⇒ Object
public access to the image ref
26 27 28 |
# File 'lib/torpedo/compute/servers.rb', line 26 def self.image_ref @@image_ref end |
.server ⇒ Object
public access to the server ref
21 22 23 |
# File 'lib/torpedo/compute/servers.rb', line 21 def self.server @@server end |
Instance Method Details
#check_server(server, image_ref, flavor_ref, check_status = "ACTIVE") ⇒ Object
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 129 130 131 |
# File 'lib/torpedo/compute/servers.rb', line 93 def check_server(server, image_ref, flavor_ref, check_status="ACTIVE") server_flavor = server.flavor_ref || server.flavor['id'] server_image = server.image_ref || server.image['id'] assert_equal(flavor_ref, server_flavor) assert_equal(image_ref.to_s, server_image) assert_equal(@@hostname, server.name) server = @conn.servers.get(server.id) begin timeout(SERVER_BUILD_TIMEOUT) do until server.state == check_status do if server.state == "ERROR" then fail('Server ERROR state detected when booting server!') end server = @conn.servers.get(server.id) sleep 1 end end rescue Timeout::Error => te fail('Timeout creating server.') end assert_not_nil(server.host_id) address = find_ip(server) Torpedo::NetUtil.ping_test(address, NETWORK_NAMESPACE) if TEST_PING if TEST_SSH if TEST_ADMIN_PASSWORD or Keypairs.key_pair then Torpedo::NetUtil.ssh_test(address, NETWORK_NAMESPACE, "cat /tmp/foo.bar", "yo", @@admin_pass) else Torpedo::NetUtil.ssh_test(address, NETWORK_NAMESPACE, "hostname", @@hostname, @@admin_pass) end end server end |
#create_image(server, name, metadata) ⇒ Object
61 62 63 64 65 66 67 68 |
# File 'lib/torpedo/compute/servers.rb', line 61 def create_image(server, name, ) image_raw = @conn.create_image(server.id, name, ).body['image'] image_raw[:service] = @conn image = Fog::Compute::OpenStack::Image.new(image_raw) @@images << image @@image_ref = image_raw['id'] image end |
#create_server(options) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/torpedo/compute/servers.rb', line 42 def create_server() if ORCHESTRATION_ENABLED then #if heat is enabled we re-use the server from the stack @conn.servers.each do |server| if server.name == 'torpedo' @@server = @conn.servers.get(server.id) end #NOTE: When using Heat we use keypairs... so just stub this out @@admin_pass = 'Not Available' end else @@server = @conn.servers.create() @@servers << @@server @@admin_pass = @@server.password #original admin_pass assert_not_nil(@@admin_pass) end @@server end |
#find_ip(server) ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/torpedo/compute/servers.rb', line 80 def find_ip(server) # lookup the first public IP address and use that for verification if server.addresses[NETWORK_LABEL].nil? fail("No address found for network label #{NETWORK_LABEL}. Addresses: #{server.addresses}") end addresses = server.addresses[NETWORK_LABEL].select {|a| a['version'] == TEST_IP_TYPE} address = addresses[0]['addr'] if address.nil? or address.empty? then fail("No address found for network label #{NETWORK_LABEL}. Addresses: #{server.addresses}") end address end |
#get_personalities ⇒ Object
70 71 72 73 74 75 76 77 78 |
# File 'lib/torpedo/compute/servers.rb', line 70 def get_personalities if TEST_ADMIN_PASSWORD or Keypairs.key_pair then [{'contents' => 'yo', 'path' => '/tmp/foo.bar'}] else # NOTE: if admin_pass and keypairs are disabled we inject the public # key so we can still login. [{'contents' => IO.read(SSH_PUBLIC_KEY), 'path' => '/root/.ssh/authorized_keys'}] end end |
#setup ⇒ Object
35 36 37 38 39 40 |
# File 'lib/torpedo/compute/servers.rb', line 35 def setup @conn=Helper::get_connection if VOLUME_ENABLED then @volume_conn=Torpedo::Volume::Helper::get_connection end end |
#test_000_setup ⇒ Object
133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/torpedo/compute/servers.rb', line 133 def test_000_setup begin @@image_ref = Helper::get_image_ref(Helper::get_connection) rescue Exception => e fail("Failed get image ref: #{e.}") end begin @@flavor_ref = Helper::get_flavor_ref(Helper::get_connection) rescue Exception => e fail("Failed get flavor ref: #{e.}") end begin @@flavor_ref_resize = Helper::get_flavor_ref_resize(@conn) rescue Exception => e fail("Failed get flavor ref resize: #{e.}") end end |
#test_001_create_server ⇒ Object
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
# File 'lib/torpedo/compute/servers.rb', line 151 def test_001_create_server ={ "key1" => "value1", "key2" => "value2" } = {:name => @@hostname, :image_ref => @@image_ref, :flavor_ref => @@flavor_ref, :personality => get_personalities, :metadata => } if Keypairs.key_pair then ['key_name'] = Keypairs.key_pair.name end server = create_server() #boot a server and check it check_server(server, @@image_ref, @@flavor_ref) assert_equal "value1", @@server..get('key1').value assert_equal "value2", @@server..get('key2').value assert_equal 2, @@server..size end |
#test_002_delete_server_metadata_items ⇒ Object
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 |
# File 'lib/torpedo/compute/servers.rb', line 169 def @@metadata = Fog::Compute::OpenStack::Metadata.new({ :service => @conn, :parent => @@server }) assert_equal 2, @@metadata.size @@metadata.each do || assert .destroy end #refresh the metadata @@metadata = Fog::Compute::OpenStack::Metadata.new({ :service => @conn, :parent => @@server }) assert_equal 0, @@metadata.size end |
#test_003_update_one_server_metadata_item ⇒ Object
190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 |
# File 'lib/torpedo/compute/servers.rb', line 190 def datum = Fog::Compute::OpenStack::Metadatum.new({ :service => @conn, :parent => @@server }) datum.key = 'foo0' datum.value = 'bar0' datum.save #refresh the metadata @@metadata = Fog::Compute::OpenStack::Metadata.new({ :service => @conn, :parent => @@server }) assert_equal 1, @@metadata.size datum = @@metadata[0] assert_equal 'foo0', datum.key assert_equal 'bar0', datum.value end |
#test_004_update_some_server_metadata_items ⇒ Object
214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 |
# File 'lib/torpedo/compute/servers.rb', line 214 def = {} ['foo1'] = 'bar1' ['foo2'] = 'bar2' @conn.('servers', @@server.id, ) = @conn.('servers', @@server.id).body['metadata'] assert_equal 3, .size assert_equal 'bar0', ['foo0'] assert_equal 'bar1', ['foo1'] assert_equal 'bar2', ['foo2'] end |
#test_005_set_server_metadata_items ⇒ Object
232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 |
# File 'lib/torpedo/compute/servers.rb', line 232 def = {} ['foo1'] = 'better' ['foo2'] = 'watch' ['foo3'] = 'out!' ['foo4'] = 'DELETE FROM instance_metadata;' @conn.('servers', @@server.id, ) = @conn.('servers', @@server.id).body['metadata'] assert_equal 'better', ['foo1'] assert_equal 'watch', ['foo2'] assert_equal 'out!', ['foo3'] assert_equal 'DELETE FROM instance_metadata;', ['foo4'] assert_equal 4, .size end |
#test_006_clear_server_metadata ⇒ Object
252 253 254 255 256 257 258 259 260 |
# File 'lib/torpedo/compute/servers.rb', line 252 def = {} @conn.('servers', @@server.id, ) = @conn.('servers', @@server.id).body['metadata'] assert_equal 0, .size end |
#test_020_create_image ⇒ Object
263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 |
# File 'lib/torpedo/compute/servers.rb', line 263 def test_020_create_image #snapshot the image image = create_image(@@server, "torpedo", {"key1" => "value1"}) assert_equal('SAVING', image.status) assert_equal('torpedo', image.name) assert_equal(25, image.progress) #FIXME: server id should be a uuid string assert_equal(@@server.id, image.server['id']) assert_not_nil(image.created_at) assert_not_nil(image.id) assert_equal "value1", image..get('key1').value begin timeout(SERVER_BUILD_TIMEOUT) do until image.status == 'ACTIVE' do image = @conn.images.get(image.id) sleep 1 end end rescue Timeout::Error => te fail('Timeout creating image snapshot.') end sleep SLEEP_AFTER_IMAGE_CREATE # Overwrite image_ref to make all subsequent tests use this snapshot @@image_ref = image.id.to_s end |
#test_030_rebuild ⇒ Object
296 297 298 299 300 301 302 303 304 305 306 |
# File 'lib/torpedo/compute/servers.rb', line 296 def test_030_rebuild # NOTE: this will use the snapshot if TEST_CREATE_IMAGE is enabled ={ "dr." => "evil", "big" => "boy" } @conn.rebuild_server(@@server.id, @@image_ref, "torpedo", admin_pass=@@admin_pass, =, personality=get_personalities) server = @conn.servers.get(@@server.id) assert_equal('REBUILD', server.state) check_server(server, @@image_ref, @@flavor_ref) end |
#test_035_soft_reboot ⇒ Object
308 309 310 311 312 313 314 |
# File 'lib/torpedo/compute/servers.rb', line 308 def test_035_soft_reboot # make sure our snapshot boots @@server.reboot(type='SOFT') server = @conn.servers.get(@@server.id) assert_equal('REBOOT', server.state) check_server(server, @@image_ref, @@flavor_ref) end |
#test_036_hard_reboot ⇒ Object
317 318 319 320 321 322 323 |
# File 'lib/torpedo/compute/servers.rb', line 317 def test_036_hard_reboot # make sure our snapshot boots @@server.reboot(type='HARD') server = @conn.servers.get(@@server.id) assert_equal('HARD_REBOOT', server.state) check_server(server, @@image_ref, @@flavor_ref) end |
#test_037_change_password ⇒ Object
325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 |
# File 'lib/torpedo/compute/servers.rb', line 325 def test_037_change_password @@admin_pass = "AnGrYbIrD$" @@server.change_password(@@admin_pass) server = @conn.servers.get(@@server.id) begin timeout(60) do until server.state == 'ACTIVE' do server = @conn.servers.get(@@server.id) sleep 1 end end rescue Timeout::Error => te fail('Timeout changing server password.') end check_server(server, @@image_ref, @@flavor_ref) end |
#test_040_resize_revert ⇒ Object
342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 |
# File 'lib/torpedo/compute/servers.rb', line 342 def test_040_resize_revert # before resizing obtain host_id server = @conn.servers.get(@@server.id) @@host_id = server.host_id #original host ID @@server.resize(@@flavor_ref_resize) server = @conn.servers.get(@@server.id) assert_equal('RESIZE', server.state) begin timeout(SERVER_BUILD_TIMEOUT) do until server.state == 'VERIFY_RESIZE' do if server.state == "ERROR" then fail('Server ERROR state detected when resizing server!') end server = @conn.servers.get(@@server.id) sleep 1 end end rescue Timeout::Error => te fail('Timeout resizing server.') end check_server(server, @@image_ref, @@flavor_ref_resize, 'VERIFY_RESIZE') @@server.revert_resize server = @conn.servers.get(@@server.id) begin timeout(60) do until server.state == 'ACTIVE' do server = @conn.servers.get(@@server.id) sleep 1 end end rescue Timeout::Error => te fail('Timeout waiting for revert resize.') end check_server(server, @@image_ref, @@flavor_ref) assert_equal(@@host_id, server.host_id) end |
#test_041_resize ⇒ Object
386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 |
# File 'lib/torpedo/compute/servers.rb', line 386 def test_041_resize # before resizing obtain host_id server = @conn.servers.get(@@server.id) @@host_id = server.host_id #original host ID @@server.resize(@@flavor_ref_resize) server = @conn.servers.get(@@server.id) assert_equal('RESIZE', server.state) begin timeout(SERVER_BUILD_TIMEOUT) do until server.state == 'VERIFY_RESIZE' do if server.state == "ERROR" then fail('Server ERROR state detected when resizing server!') end server = @conn.servers.get(@@server.id) sleep 1 end end rescue Timeout::Error => te fail('Timeout resizing server.') end check_server(server, @@image_ref, @@flavor_ref_resize, 'VERIFY_RESIZE') assert_not_equal(@@host_id, server.host_id) if TEST_HOSTID_ON_RESIZE end |
#test_042_resize_confirm ⇒ Object
415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 |
# File 'lib/torpedo/compute/servers.rb', line 415 def test_042_resize_confirm @@server.confirm_resize server = @conn.servers.get(@@server.id) begin timeout(60) do until server.state == 'ACTIVE' do server = @conn.servers.get(@@server.id) sleep 1 end end rescue Timeout::Error => te fail('Timeout waiting for ACTIVE state after resize confirm.') end check_server(server, @@image_ref, @@flavor_ref_resize) end |
#test_051_delete_image_metadata_items ⇒ Object
434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 |
# File 'lib/torpedo/compute/servers.rb', line 434 def #refresh the metadata = Fog::Compute::OpenStack::Metadata.new({ :service => @conn, :parent => @@images.last }) .each do || assert .destroy end #refresh the metadata = Fog::Compute::OpenStack::Metadata.new({ :service => @conn, :parent => @@images.last }) assert_equal 0, .size end |
#test_052_update_one_image_metadata_item ⇒ Object
455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 |
# File 'lib/torpedo/compute/servers.rb', line 455 def datum = Fog::Compute::OpenStack::Metadatum.new({ :service => @conn, :parent => @@images.last }) datum.key = 'foo0' datum.value = 'bar0' datum.save #refresh the metadata = Fog::Compute::OpenStack::Metadata.new({ :service => @conn, :parent => @@images.last }) assert_equal 1, .size datum = [0] assert_equal 'foo0', datum.key assert_equal 'bar0', datum.value end |
#test_053_update_some_image_metadata_items ⇒ Object
476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 |
# File 'lib/torpedo/compute/servers.rb', line 476 def = {} ['foo0'] = 'barz' ['foo1'] = 'bar1' ['foo2'] = 'bar2' @conn.('images', @@images.last.id, ) = @conn.('images', @@images.last.id).body['metadata'] assert_equal 3, .size assert_equal 'barz', ['foo0'] assert_equal 'bar1', ['foo1'] assert_equal 'bar2', ['foo2'] end |
#test_054_set_image_metadata_items ⇒ Object
494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 |
# File 'lib/torpedo/compute/servers.rb', line 494 def = {} ['foo1'] = 'that' ['foo2'] = 'silly' ['foo3'] = 'rabbit' ['foo4'] = 'DELETE FROM images;' @conn.('images', @@images.last.id, ) = @conn.('images', @@images.last.id).body['metadata'] assert_equal 'that', ['foo1'] assert_equal 'silly', ['foo2'] assert_equal 'rabbit', ['foo3'] assert_equal 'DELETE FROM images;', ['foo4'] assert_equal 4, .size end |
#test_055_clear_image_metadata ⇒ Object
514 515 516 517 518 519 520 521 522 |
# File 'lib/torpedo/compute/servers.rb', line 514 def = {} @conn.('images', @@images.last.id, ) = @conn.('images', @@images.last.id).body['metadata'] assert_equal 0, .size end |
#test_060_attach_volume ⇒ Object
524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 |
# File 'lib/torpedo/compute/servers.rb', line 524 def test_060_attach_volume volume = Torpedo::Volume::Volumes.volume assert(@@server.attach_volume(volume.id, "/dev/vdb")) begin timeout(VOLUME_BUILD_TIMEOUT) do until volume.status == 'in-use' do if volume.status == "error" then fail('ERROR status detected when attaching volume!') end volume = @volume_conn.volumes.get(volume.id) sleep 1 end end rescue Timeout::Error => te fail('Timeout attaching volume.') end end |
#test_061_detach_volume ⇒ Object
544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 |
# File 'lib/torpedo/compute/servers.rb', line 544 def test_061_detach_volume volume = Torpedo::Volume::Volumes.volume assert(@@server.detach_volume(volume.id)) volume = @volume_conn.volumes.get(volume.id) begin timeout(VOLUME_BUILD_TIMEOUT) do until volume.status == 'available' do if volume.status == "error" then fail('ERROR status detected when detaching volume!') end volume = @volume_conn.volumes.get(volume.id) sleep 1 end end rescue Timeout::Error => te fail('Timeout detaching volume.') end end |