class TestDeprovision(TestCase): @trace def setUp(self): self.db = Database() self.db.project.insert(PROJECT, NETWORK) self.good_bmi = BMI(CORRECT_HAAS_USERNAME, CORRECT_HAAS_PASSWORD, PROJECT) self.good_bmi.import_ceph_image(EXIST_IMG_NAME) self.good_bmi.provision(NODE_NAME, EXIST_IMG_NAME, NETWORK,NIC) time.sleep(constants.HAAS_CALL_TIMEOUT) def test_run(self): data = {constants.PROJECT_PARAMETER: PROJECT, constants.NODE_NAME_PARAMETER: NODE_NAME, constants.NETWORK_PARAMETER: NETWORK, constants.NIC_PARAMETER: NIC} res = requests.delete(url + "deprovision/", data=data, auth=( CORRECT_HAAS_USERNAME, CORRECT_HAAS_PASSWORD)) self.assertEqual(res.status_code, 200) time.sleep(constants.HAAS_CALL_TIMEOUT) def tearDown(self): self.good_bmi.remove_image(EXIST_IMG_NAME) self.db.project.delete_with_name(PROJECT) self.db.close() self.good_bmi.shutdown()
class TestListSnapshots(TestCase): """ Creates snapshot like previous and calls list snapshots """ @trace def setUp(self): self.db = Database() self.db.project.insert(PROJECT) self.good_bmi = BMI(CORRECT_HIL_USERNAME, CORRECT_HIL_PASSWORD, PROJECT) self.good_bmi.import_ceph_image(EXIST_IMG_NAME) self.good_bmi.create_disk(NEW_DISK, EXIST_IMG_NAME) time.sleep(constants.HIL_CALL_TIMEOUT) self.good_bmi.create_snapshot(NEW_DISK, NEW_SNAP_NAME) def runTest(self): response = self.good_bmi.list_snapshots() self.assertEqual(response[constants.STATUS_CODE_KEY], 200) self.assertEqual(response[constants.RETURN_VALUE_KEY][0][0], NEW_SNAP_NAME) def tearDown(self): self.good_bmi.delete_disk(NEW_DISK) self.good_bmi.remove_image(NEW_SNAP_NAME) self.good_bmi.remove_image(EXIST_IMG_NAME) self.db.project.delete_with_name(PROJECT) self.db.close() self.good_bmi.shutdown() time.sleep(constants.HIL_CALL_TIMEOUT)
class TestListSnapshots(TestCase): @trace def setUp(self): self.db = Database() self.db.project.insert(PROJECT, NETWORK) self.good_bmi = BMI(CORRECT_HAAS_USERNAME, CORRECT_HAAS_PASSWORD, PROJECT) self.good_bmi.import_ceph_image(EXIST_IMG_NAME) self.good_bmi.provision(NODE_NAME, EXIST_IMG_NAME, NETWORK,NIC) time.sleep(constants.HAAS_CALL_TIMEOUT) self.good_bmi.create_snapshot(NODE_NAME, NEW_SNAP_NAME) def test_run(self): data = {constants.PROJECT_PARAMETER: PROJECT} res = requests.post(url + "list_snapshots/", data=data, auth=(CORRECT_HAAS_USERNAME, CORRECT_HAAS_PASSWORD)) self.assertEqual(res.status_code, 200) js = res.json() self.assertEqual(res.status_code, 200) self.assertEqual(js[0][0], NEW_SNAP_NAME) def tearDown(self): self.good_bmi.deprovision(NODE_NAME, NETWORK, NIC) self.good_bmi.remove_image(NEW_SNAP_NAME) self.good_bmi.remove_image(EXIST_IMG_NAME) self.db.project.delete_with_name(PROJECT) self.db.close() self.good_bmi.shutdown() time.sleep(constants.HAAS_CALL_TIMEOUT)
class TestProvision(TestCase): """ Tests Rest Provision call by importing an image and calling provision """ @trace def setUp(self): self.db = Database() self.db.project.insert(PROJECT) self.good_bmi = BMI(CORRECT_HIL_USERNAME, CORRECT_HIL_PASSWORD, PROJECT) self.good_bmi.import_ceph_image(EXIST_IMG_NAME) self.good_bmi.create_disk(NEW_DISK, EXIST_IMG_NAME) def runTest(self): data = { constants.PROJECT_PARAMETER: PROJECT, constants.NODE_NAME_PARAMETER: NODE_NAME, constants.DISK_NAME_PARAMETER: NEW_DISK, constants.NIC_PARAMETER: NIC } res = requests.put(PICASSO_URL + "provision/", data=data, auth=(CORRECT_HIL_USERNAME, CORRECT_HIL_PASSWORD)) self.assertEqual(res.status_code, 200) time.sleep(constants.HIL_CALL_TIMEOUT) def tearDown(self): self.good_bmi.delete_disk(NEW_DISK) self.good_bmi.deprovision(NODE_NAME, NIC) self.good_bmi.remove_image(EXIST_IMG_NAME) self.db.project.delete_with_name(PROJECT) self.db.close() self.good_bmi.shutdown() time.sleep(constants.HIL_CALL_TIMEOUT)
class TestListSnapshots(TestCase): @trace def setUp(self): self.db = Database() self.db.project.insert(PROJECT, NETWORK) self.good_bmi = BMI(CORRECT_HAAS_USERNAME, CORRECT_HAAS_PASSWORD, PROJECT) self.good_bmi.import_ceph_image(EXIST_IMG_NAME) self.good_bmi.provision(NODE_NAME, EXIST_IMG_NAME, NETWORK, NIC) time.sleep(constants.HAAS_CALL_TIMEOUT) self.good_bmi.create_snapshot(NODE_NAME, NEW_SNAP_NAME) def test_run(self): response = self.good_bmi.list_snapshots() self.assertEqual(response[constants.STATUS_CODE_KEY], 200) self.assertEqual(response[constants.RETURN_VALUE_KEY][0][0], NEW_SNAP_NAME) def tearDown(self): self.good_bmi.deprovision(NODE_NAME, NETWORK, NIC) self.good_bmi.remove_image(NEW_SNAP_NAME) self.good_bmi.remove_image(EXIST_IMG_NAME) self.db.project.delete_with_name(PROJECT) self.db.close() self.good_bmi.shutdown() time.sleep(constants.HAAS_CALL_TIMEOUT)
class TestListSnapshots(TestCase): """ Does the same steps as previous test and calls list snapshots rest call """ @trace def setUp(self): self.db = Database() self.db.project.insert(PROJECT) self.good_bmi = BMI(CORRECT_HIL_USERNAME, CORRECT_HIL_PASSWORD, PROJECT) self.good_bmi.import_ceph_image(EXIST_IMG_NAME) self.good_bmi.create_disk(NEW_DISK, EXIST_IMG_NAME) self.good_bmi.create_snapshot(NEW_DISK, NEW_SNAP_NAME) def runTest(self): data = {constants.PROJECT_PARAMETER: PROJECT} res = requests.post(PICASSO_URL + "list_snapshots/", data=data, auth=(CORRECT_HIL_USERNAME, CORRECT_HIL_PASSWORD)) self.assertEqual(res.status_code, 200) js = res.json() self.assertEqual(res.status_code, 200) self.assertEqual(js[0][0], NEW_SNAP_NAME) def tearDown(self): self.good_bmi.delete_disk(NEW_DISK) self.good_bmi.remove_image(NEW_SNAP_NAME) self.good_bmi.remove_image(EXIST_IMG_NAME) self.db.project.delete_with_name(PROJECT) self.db.close() self.good_bmi.shutdown() time.sleep(constants.HIL_CALL_TIMEOUT)
class TestListImages(TestCase): """ Imports an import image and calls the list images rest call """ @trace def setUp(self): self.db = Database() self.db.project.insert(PROJECT) self.good_bmi = BMI(CORRECT_HIL_USERNAME, CORRECT_HIL_PASSWORD, PROJECT) self.good_bmi.import_ceph_image(EXIST_IMG_NAME) def runTest(self): data = {constants.PROJECT_PARAMETER: PROJECT} res = requests.post(PICASSO_URL + "list_images/", data=data, auth=(CORRECT_HIL_USERNAME, CORRECT_HIL_PASSWORD)) js = res.json() self.assertEqual(res.status_code, 200) self.assertEqual(js[0], EXIST_IMG_NAME) def tearDown(self): self.good_bmi.remove_image(EXIST_IMG_NAME) self.db.project.delete_with_name(PROJECT) self.db.close() self.good_bmi.shutdown()
class TestDeprovision(TestCase): """ Same as above, but calls deprovision in the test (Test is same as previous) """ @trace def setUp(self): self.db = Database() self.db.project.insert(PROJECT, NETWORK) self.good_bmi = BMI(CORRECT_HIL_USERNAME, CORRECT_HIL_PASSWORD, PROJECT) self.good_bmi.import_ceph_image(EXIST_IMG_NAME) self.good_bmi.provision(NODE_NAME, EXIST_IMG_NAME, NETWORK, NIC) time.sleep(constants.HIL_CALL_TIMEOUT) def runTest(self): response = self.good_bmi.deprovision(NODE_NAME, NETWORK, NIC) self.assertEqual(response[constants.STATUS_CODE_KEY], 200) time.sleep(constants.HIL_CALL_TIMEOUT) def tearDown(self): self.good_bmi.remove_image(EXIST_IMG_NAME) self.db.project.delete_with_name(PROJECT) self.db.close() self.good_bmi.shutdown()
class TestCopyImage(TestCase): """ Creating a flatten copy of an image """ @trace def setUp(self): self.db = Database() self.db.project.insert(PROJECT) self.good_bmi = BMI(CORRECT_HIL_USERNAME, CORRECT_HIL_PASSWORD, PROJECT) self.good_bmi.import_ceph_image(EXIST_IMG_NAME) def runTest(self): response = self.good_bmi.copy_image(EXIST_IMG_NAME, PROJECT, IMG2) self.assertEqual(response[constants.STATUS_CODE_KEY], 200) images = self.db.image.fetch_images_from_project(PROJECT) exists_image = False for image in images: if IMG2 == image: exists_image = True break self.assertTrue(exists_image) with ceph.RBD(_cfg.fs, _cfg.iscsi.password) as fs: img_id = self.good_bmi.get_ceph_image_name_from_project( IMG2, PROJECT) fs.get_image(img_id) def tearDown(self): self.good_bmi.remove_image(IMG2) self.good_bmi.remove_image(EXIST_IMG_NAME) self.db.project.delete_with_name(PROJECT) self.db.close() self.good_bmi.shutdown()
class TestCreateSnapshot(TestCase): """ Calls provision like TestProvision then creates a snapshot using rest call """ @trace def setUp(self): self.db = Database() self.db.project.insert(PROJECT) self.good_bmi = BMI(CORRECT_HIL_USERNAME, CORRECT_HIL_PASSWORD, PROJECT) self.good_bmi.import_ceph_image(EXIST_IMG_NAME) self.good_bmi.create_disk(NEW_DISK, EXIST_IMG_NAME) time.sleep(constants.HIL_CALL_TIMEOUT) def runTest(self): data = { constants.PROJECT_PARAMETER: PROJECT, constants.DISK_NAME_PARAMETER: NEW_DISK, constants.SNAP_NAME_PARAMETER: NEW_SNAP_NAME } res = requests.put(PICASSO_URL + "create_snapshot/", data=data, auth=(CORRECT_HIL_USERNAME, CORRECT_HIL_PASSWORD)) self.assertEqual(res.status_code, 200) snaps = self.db.image.fetch_snapshots_from_project(PROJECT) has_image = False for snapshot in snaps: if NEW_SNAP_NAME == snapshot[0]: has_image = True self.assertTrue(has_image) with ceph.RBD(_cfg.fs, _cfg.iscsi.password) as fs: img_id = self.good_bmi.get_ceph_image_name_from_project( NEW_SNAP_NAME, PROJECT) fs.get_image(img_id) def tearDown(self): self.good_bmi.delete_disk(NEW_DISK) self.good_bmi.remove_image(NEW_SNAP_NAME) self.good_bmi.remove_image(EXIST_IMG_NAME) self.db.project.delete_with_name(PROJECT) self.db.close() self.good_bmi.shutdown() time.sleep(constants.HIL_CALL_TIMEOUT)
class TestListImages(TestCase): @trace def setUp(self): self.db = Database() self.db.project.insert(PROJECT, NETWORK) self.good_bmi = BMI(CORRECT_HAAS_USERNAME, CORRECT_HAAS_PASSWORD, PROJECT) self.good_bmi.import_ceph_image(EXIST_IMG_NAME) def test_run(self): response = self.good_bmi.list_images() self.assertEqual(response[constants.STATUS_CODE_KEY], 200) self.assertEqual(response[constants.RETURN_VALUE_KEY], [EXIST_IMG_NAME]) def tearDown(self): self.good_bmi.remove_image(EXIST_IMG_NAME) self.db.project.delete_with_name(PROJECT) self.db.close() self.good_bmi.shutdown()
class TestCreateSnapshot(TestCase): """ Provisions an imported image and creates snapshot """ @trace def setUp(self): self.db = Database() self.db.project.insert(PROJECT, NETWORK) self.good_bmi = BMI(CORRECT_HIL_USERNAME, CORRECT_HIL_PASSWORD, PROJECT) self.good_bmi.import_ceph_image(EXIST_IMG_NAME) self.good_bmi.provision(NODE_NAME, EXIST_IMG_NAME, NETWORK, NIC) time.sleep(constants.HIL_CALL_TIMEOUT) def runTest(self): response = self.good_bmi.create_snapshot(NODE_NAME, NEW_SNAP_NAME) self.assertEqual(response[constants.STATUS_CODE_KEY], 200) snaps = self.db.image.fetch_snapshots_from_project(PROJECT) has_image = False for snapshot in snaps: if NEW_SNAP_NAME == snapshot[0]: has_image = True self.assertTrue(has_image) with ceph.RBD(_cfg.fs, _cfg.iscsi.password) as fs: img_id = self.good_bmi.get_ceph_image_name_from_project( NEW_SNAP_NAME, PROJECT) fs.get_image(img_id) def tearDown(self): self.good_bmi.deprovision(NODE_NAME, NETWORK, NIC) self.good_bmi.remove_image(NEW_SNAP_NAME) self.good_bmi.remove_image(EXIST_IMG_NAME) self.db.project.delete_with_name(PROJECT) self.db.close() self.good_bmi.shutdown() time.sleep(constants.HIL_CALL_TIMEOUT)
class TestListImages(TestCase): @trace def setUp(self): self.db = Database() self.db.project.insert(PROJECT, NETWORK) self.good_bmi = BMI(CORRECT_HAAS_USERNAME, CORRECT_HAAS_PASSWORD, PROJECT) self.good_bmi.import_ceph_image(EXIST_IMG_NAME) def test_run(self): data = {constants.PROJECT_PARAMETER: PROJECT} res = requests.post(url + "list_images/", data=data, auth=(CORRECT_HAAS_USERNAME, CORRECT_HAAS_PASSWORD)) js = res.json() self.assertEqual(res.status_code, 200) self.assertEqual(js[0], EXIST_IMG_NAME) def tearDown(self): self.good_bmi.remove_image(EXIST_IMG_NAME) self.db.project.delete_with_name(PROJECT) self.db.close() self.good_bmi.shutdown()
class TestCreateSnapshot(TestCase): @trace def setUp(self): self.db = Database() self.db.project.insert(PROJECT, NETWORK) self.good_bmi = BMI(CORRECT_HAAS_USERNAME, CORRECT_HAAS_PASSWORD, PROJECT) self.good_bmi.import_ceph_image(EXIST_IMG_NAME) self.good_bmi.provision(NODE_NAME, EXIST_IMG_NAME, NETWORK,NIC) time.sleep(constants.HAAS_CALL_TIMEOUT) def test_run(self): data = {constants.PROJECT_PARAMETER: PROJECT, constants.NODE_NAME_PARAMETER: NODE_NAME, constants.SNAP_NAME_PARAMETER: NEW_SNAP_NAME} res = requests.put(url + "create_snapshot/", data=data, auth=(CORRECT_HAAS_USERNAME, CORRECT_HAAS_PASSWORD)) self.assertEqual(res.status_code, 200) snaps = self.db.image.fetch_snapshots_from_project(PROJECT) has_image = False for snapshot in snaps: if NEW_SNAP_NAME == snapshot[0]: has_image = True self.assertTrue(has_image) with ceph.RBD(_cfg.fs[constants.CEPH_CONFIG_SECTION_NAME],_cfg.iscsi_update_password) as fs: img_id = self.good_bmi.get_ceph_image_name_from_project( NEW_SNAP_NAME, PROJECT) fs.get_image(img_id) def tearDown(self): self.good_bmi.deprovision(NODE_NAME, NETWORK, NIC) self.good_bmi.remove_image(NEW_SNAP_NAME) self.good_bmi.remove_image(EXIST_IMG_NAME) self.db.project.delete_with_name(PROJECT) self.db.close() self.good_bmi.shutdown() time.sleep(constants.HAAS_CALL_TIMEOUT)
class TestProvisionDeprovision(TestCase): """ This tests multiple things. It creates an image, then provisions from it and then deprovisions the node and delete the image. """ @trace def setUp(self): self.db = Database() self.db.project.insert(PROJECT) self.good_bmi = BMI(CORRECT_HIL_USERNAME, CORRECT_HIL_PASSWORD, PROJECT) self.good_bmi.import_ceph_image(EXIST_IMG_NAME) def runTest(self): # First create a disk response = self.good_bmi.create_disk(NEW_DISK, EXIST_IMG_NAME) self.assertEqual(response[constants.STATUS_CODE_KEY], 200) # Then provision a node from that disk response = self.good_bmi.provision(NODE_NAME, NEW_DISK, NIC) self.assertEqual(response[constants.STATUS_CODE_KEY], 200) # Then deprovision that node response = self.good_bmi.deprovision(NODE_NAME, NIC) self.assertEqual(response[constants.STATUS_CODE_KEY], 200) # Delete the disk response = self.good_bmi.delete_disk(NEW_DISK) self.assertEqual(response[constants.STATUS_CODE_KEY], 200) def tearDown(self): self.good_bmi.remove_image(EXIST_IMG_NAME) self.db.project.delete_with_name(PROJECT) self.db.close() self.good_bmi.shutdown() time.sleep(constants.HIL_CALL_TIMEOUT)
class TestListImages(TestCase): """ Imports an image and calls list image """ @trace def setUp(self): self.db = Database() self.db.project.insert(PROJECT) self.good_bmi = BMI(CORRECT_HIL_USERNAME, CORRECT_HIL_PASSWORD, PROJECT) self.good_bmi.import_ceph_image(EXIST_IMG_NAME) def runTest(self): response = self.good_bmi.list_images() self.assertEqual(response[constants.STATUS_CODE_KEY], 200) self.assertEqual(response[constants.RETURN_VALUE_KEY], [EXIST_IMG_NAME]) def tearDown(self): self.good_bmi.remove_image(EXIST_IMG_NAME) self.db.project.delete_with_name(PROJECT) self.db.close() self.good_bmi.shutdown()
class TestRemoveImage(TestCase): """ Imports an image and calls remove image """ @trace def setUp(self): self.db = Database() self.db.project.insert(PROJECT, NETWORK) self.good_bmi = BMI(CORRECT_HIL_USERNAME, CORRECT_HIL_PASSWORD, PROJECT) self.good_bmi.import_ceph_image(EXIST_IMG_NAME) def runTest(self): response = self.good_bmi.remove_image(EXIST_IMG_NAME) self.assertEqual(response[constants.STATUS_CODE_KEY], 200) def tearDown(self): self.db.project.delete_with_name(PROJECT) self.db.close() self.good_bmi.shutdown()