Exemple #1
0
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)
Exemple #2
0
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)
Exemple #3
0
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)
Exemple #4
0
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)
Exemple #5
0
class TestCreateSnapshot(TestCase):
    """
    Provisions an imported image and creates snapshot
    """
    @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):
        response = self.good_bmi.create_snapshot(NEW_DISK, 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.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)
Exemple #6
0
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)