def test_resize_server_revert(self): """Verify that a re-sized server can be reverted.""" # Resize the server and wait for it to finish new_flavor = self.os.flavors.get(2) self.server.resize(new_flavor) # Let the resize-confirm register or self.os.serves.get will # raise an exception time.sleep(2) # Create list of states states = utils.StatusTracker('active', 'resize-confirm') # Wait for server to transition to next state and make sure it # went to the correct one dtutil.assert_is(True, states.waitForState(self.os.servers.get, 'status', self.server)) # Revert the resize self.server.revert_resize() # Check that the was reverted to its original flavor self.server = self.os.servers.get(self.server) dtutil.assert_equal(new_flavor.id, self.server.flavorId)
def test_delete(self): """Verify servers can be deleted. This logically belongs in test_create_delete_server, which is a dependency for all the other tests. However, this test fails due to Nova bug #793785 """ server_name = self.randName() new_server = self.create_server(server_name, FLAGS.image, FLAGS.flavor) # Legal states... states = utils.StatusTracker("active", "build", "active") # Wait for server to transition to next state and make sure it # went to the correct one states.waitForState(self.os.servers.get, "status", new_server) # Delete the server and verify it is removed new_server.delete() # Legal states. Nova bug #793785 # Status goes through 'build' when deleting, but should not. states = utils.StatusTracker("active", "deleted") # Verify that state goes to "deleted", or raises NotFound exception. try: dtutil.assert_is(True, states.waitForState(self.os.servers.get, "status", new_server)) except novaclient.exceptions.NotFound: pass
def test_snap_and_restore(self): """Verify that a server is snapped and rebuilt from that snap""" states = utils.StatusTracker('active', 'queued', 'preparing', 'saving', 'active') # Make a backup image for the server backup_image = self.os.images.create(server=self.server, name="backup") dtutil.assert_is(True, states.waitForState(self.os.images.get, 'status', backup_image)) # wrap it in a try so that we can clean up afterwards try: dtutil.assert_equal(backup_image.name, "backup") # Finally, rebuild from the image states = utils.StatusTracker('active', 'build', 'active') self.os.servers.rebuild(self.server.id, backup_image.id) dtutil.assert_is(True, states.waitForState(self.os.servers.get, 'status', self.server)) created_server = self.os.servers.get(self.server.id) # This has the original image_id out of convention. image = self.os.images.get(created_server.imageId) dtutil.assert_equal(backup_image.name, image.name) finally: # delete the image self.glance_connection.delete_image(backup_image)
def test_reboot_server_hard(self): """Verify that a server can be hard-rebooted.""" # Verify the server goes through the correct states # when rebooting # Nova bug 795228 states = utils.StatusTracker('active', 'hard_reboot', 'active') self.os.servers.reboot(self.server, type='HARD') dtutil.assert_is(True, states.waitForState(self.os.servers.get, 'status', self.server))
def test_create_server_image(self): """Verify a backup image for a server can be created.""" # Set legal states states = utils.StatusTracker('active', 'queued', 'preparing', 'saving', 'active') # Make a backup image for the server backup_image = self.os.images.create(server=self.server, name="backup") dtutil.assert_is(True, states.waitForState(self.os.images.get, 'status', backup_image)) dtutil.assert_equal(backup_image.name, "backup") # Cleanup self.os.images.delete(backup_image)
def test_create_delete_server(self): """Verify that a server is created and that it is deleted.""" # Setup server_name = self.randName() new_server = self.create_server(server_name, FLAGS.image, FLAGS.flavor) # Legal states... states = utils.StatusTracker("active", "build", "active") # Wait for server to transition to next state and make sure it # went to the correct one dtutil.assert_is(True, states.waitForState(self.os.servers.get, "status", new_server)) # Verify the server was created correctly created_server = self.os.servers.get(new_server.id) dtutil.assert_equal(server_name, created_server.name) # Delete the server. The delete testing is moved to # test_delete new_server.delete()
def test_resize_server_confirm(self): """Verify that the flavor of a server can be changed.""" # Resize the server and wait for it to finish new_flavor = self.os.flavors.get(2) self.server.resize(new_flavor) # Legal states... states = utils.StatusTracker('active', 'resize-confirm') # Wait for server to transition to next state and make sure it # went to the correct one dtutil.assert_is(True, states.waitForState(self.os.servers.get, 'status', self.server)) # Confirm the resize self.server.confirm_resize() # Check that server's flavor has changed self.server = self.os.servers.get(self.server) dtutil.assert_equal(new_flavor.id, self.server.flavorId)
def test_create_from_bad_image(self): """Verify a bad image will not boot""" # Create a bad image new_meta = self.create_glance_image( file_name=FLAGS.bad_test_image, image_name=self.randName(prefix="bad_image") ) try: # Boot the bad image server_name = self.randName(prefix="bad_image") new_server = self.create_server(server_name, new_meta["id"], FLAGS.flavor) # Specify expeted states states = utils.StatusTracker("build", "error") # Verify state transition dtutil.assert_is(True, states.waitForState(self.os.servers.get, "status", new_server)) finally: # Cleanup self.glance_connection.delete_image(new_meta["id"]) self.os.servers.delete(new_server)
def setUpClass(cls): """Set up an instance for use by the enclosed tests.""" # Need an OpenStack instance so we can create the server os = cls.getOpenStack() # Select a random key and value for metadata; used by the # metadata tests cls.meta_key = cls.randName(length=10) cls.meta_data = cls.randName(length=50) # Set up the server cls.flavor = FLAGS.flavor cls.image = FLAGS.image cls.server_name = cls.randName() cls.server = os.servers.create( name=cls.server_name, image=cls.image, flavor=cls.flavor, meta={cls.meta_key: cls.meta_data} ) # Wait for the server to transition to the appropriate state states = utils.StatusTracker("active", "build", "active") dtutil.assert_is(True, states.waitForState(os.servers.get, "status", cls.server))
def test_rebuild_server(self): """Verify that a server is created, rebuilt, and then deleted.""" # Trigger a rebuild self.os.servers.rebuild(self.server.id, FLAGS.image) # Must wait for the rebuild to start, or self.os.servers.get # throws an exception time.sleep(4) # Legal states... states = utils.StatusTracker('active', 'build', 'active') # Wait for server to transition to next state and make sure it # went to the correct one dtutil.assert_is(True, states.waitForState(self.os.servers.get, 'status', self.server)) # Verify that rebuild acted correctly created_server = self.os.servers.get(self.server.id) img = self.os.images.get(FLAGS.image) dtutil.assert_equal(img.id, created_server.imageId)