Ejemplo n.º 1
0
    def test_server_attached_volume_protect_both(self):
        """Test checkpoint for server with attached volume

        Test checkpoint for server which has attached one volume,
        and add server and volume both in protect source
        """
        volume = self.store(objects.Volume())
        volume.create(1)
        server = self.store(objects.Server())
        server.create()
        server.attach_volume(volume.id)

        plan = self.store(objects.Plan())
        plan.create(self.provider_id, [server, volume])

        checkpoint = self.store(objects.Checkpoint())
        checkpoint.create(self.provider_id, plan.id, timeout=2400)

        items = self.karbor_client.checkpoints.list(self.provider_id)
        ids = [item.id for item in items]
        self.assertTrue(checkpoint.id in ids)
        search_opts = {"volume_id": volume.id}
        backups = self.cinder_client.backups.list(search_opts=search_opts)
        self.assertEqual(1, len(backups))
        server.detach_volume(volume.id)
Ejemplo n.º 2
0
    def test_server_boot_from_volume_with_attached_volume(self):
        """Test checkpoint for server with a bootable volume

        Test checkpoint for server which has booted form one bootable
        volume.
        """
        bootable_volume = self.store(objects.Volume())
        bootable_volume_id = bootable_volume.create(1, create_from_image=True)
        volume = self.store(objects.Volume())
        volume.create(1)
        server = self.store(objects.Server())
        server.create(volume=bootable_volume_id)
        server.attach_volume(volume.id)

        plan = self.store(objects.Plan())
        plan.create(self.provider_id, [
            server,
        ])

        checkpoint = self.store(objects.Checkpoint())
        checkpoint.create(self.provider_id, plan.id, timeout=2400)

        items = self.karbor_client.checkpoints.list(self.provider_id)
        ids = [item.id for item in items]
        self.assertTrue(checkpoint.id in ids)
        search_opts = {"volume_id": volume.id}
        backups = self.cinder_client.backups.list(search_opts=search_opts)
        self.assertEqual(1, len(backups))
        search_opts = {"volume_id": bootable_volume_id}
        bootable_backups = self.cinder_client.backups.list(
            search_opts=search_opts)
        self.assertEqual(1, len(bootable_backups))
        server.detach_volume(volume.id)
 def _create_for_server(self,
                        trigger_properties=DEFAULT_PROPERTY,
                        operation_name=None):
     server = self.store(objects.Server())
     server.create()
     return self._create_scheduled_operation([
         server,
     ], trigger_properties, operation_name)
Ejemplo n.º 4
0
    def test_protectables_get_with_server(self):
        server_list = self.karbor_client.protectables.list_instances(
            'OS::Nova::Server')
        before_num = len(server_list)
        server = self.store(objects.Server())
        server.create()

        server_list = self.karbor_client.protectables.list_instances(
            'OS::Nova::Server')
        after_num = len(server_list)
        self.assertEqual(1, after_num - before_num)
Ejemplo n.º 5
0
    def test_protectables_get_instance(self):
        volume = self.store(objects.Volume())
        volume.create(1)
        instance = self.karbor_client.protectables.get_instance(
            'OS::Cinder::Volume', volume.id)
        self.assertEqual(volume.id, instance.id)

        server = self.store(objects.Server())
        server.create()
        instance = self.karbor_client.protectables.get_instance(
            'OS::Nova::Server', server.id)
        self.assertEqual(server.id, instance.id)
Ejemplo n.º 6
0
    def test_protectables_list_instances(self):
        volume = self.store(objects.Volume())
        volume.create(1)
        items = self.karbor_client.protectables.list_instances(
            'OS::Cinder::Volume')
        ids = [item.id for item in items]
        self.assertTrue(volume.id in ids)

        server = self.store(objects.Server())
        server.create()
        items = self.karbor_client.protectables.list_instances(
            'OS::Nova::Server')
        ids = [item.id for item in items]
        self.assertTrue(server.id in ids)
Ejemplo n.º 7
0
    def test_checkpoint_for_server_attached_volume(self):
        """Test checkpoint for server which has attached some volumes"""
        volume = self.store(objects.Volume())
        volume.create(1)
        server = self.store(objects.Server())
        server.create()
        server.attach_volume(volume.id)

        plan0 = self.store(objects.Plan())
        plan0.create(self.provider_id, [
            server,
        ])

        checkpoints = self.karbor_client.checkpoints.list(self.provider_id)
        before_checkpoints_num = len(checkpoints)
        backups = self.cinder_client.backups.list()
        before_backups_num = len(backups)

        checkpoint = self.store(objects.Checkpoint())
        checkpoint.create(self.provider_id, plan0.id, timeout=900)

        checkpoints = self.karbor_client.checkpoints.list(self.provider_id)
        after_checkpoints_num = len(checkpoints)
        self.assertEqual(1, after_checkpoints_num - before_checkpoints_num)

        backups = self.cinder_client.backups.list()
        after_backups_num = len(backups)
        self.assertEqual(1, after_backups_num - before_backups_num)

        plan1 = self.store(objects.Plan())
        plan1.create(self.provider_id, [server, volume])

        checkpoints = self.karbor_client.checkpoints.list(self.provider_id)
        before_checkpoints_num = len(checkpoints)
        backups = self.cinder_client.backups.list()
        before_backups_num = len(backups)

        checkpoint = self.store(objects.Checkpoint())
        checkpoint.create(self.provider_id, plan1.id, timeout=720)

        checkpoints = self.karbor_client.checkpoints.list(self.provider_id)
        after_checkpoints_num = len(checkpoints)
        self.assertEqual(1, after_checkpoints_num - before_checkpoints_num)

        backups = self.cinder_client.backups.list()
        after_backups_num = len(backups)
        self.assertEqual(1, after_backups_num - before_backups_num)

        server.detach_volume(volume.id)
Ejemplo n.º 8
0
    def test_protectables_get_with_attach_volume(self):
        server = self.store(objects.Server())
        server.create()

        volume = self.store(objects.Volume())
        volume.create(1)

        server.attach_volume(volume.id)
        volume_item = self.cinder_client.volumes.get(volume.id)
        ins_res = self.karbor_client.protectables.get_instance(
            'OS::Nova::Server', volume_item.attachments[0]["server_id"])
        self.assertTrue(ins_res.dependent_resources)
        self.assertEqual('OS::Cinder::Volume',
                         ins_res.dependent_resources[0]["type"])
        self.assertEqual(volume.id, ins_res.dependent_resources[0]["id"])
 def _create_scheduled_operation_for_server(
         self, trigger_properties=DEFAULT_PROPERTY, operation_name=None):
     server = self.store(objects.Server())
     server.create()
     plan = self.store(objects.Plan())
     plan.create(self.provider_id, [
         server,
     ])
     operation_definition = {
         'plan_id': plan.id,
         'provider_id': self.provider_id
     }
     return self._create_scheduled_operation(trigger_properties,
                                             operation_definition,
                                             operation_name)
Ejemplo n.º 10
0
    def test_protectables_list_instances(self):
        volume = self.store(objects.Volume())
        volume.create(1)
        items = self.karbor_client.protectables.list_instances(
            'OS::Cinder::Volume')
        ids = [item.id for item in items]
        self.assertTrue(volume.id in ids)

        server = self.store(objects.Server())
        server.create()
        items = self.karbor_client.protectables.list_instances(
            'OS::Nova::Server')
        ids = [item.id for item in items]
        self.assertTrue(server.id in ids)

        network = self.store(objects.Network())
        network.create()
        items = self.karbor_client.protectables.list_instances(
            'OS::Neutron::Network')
        self.assertEqual(items[0].id, network.project_id)
Ejemplo n.º 11
0
    def test_server_attached_volume_only_protect_server(self):
        """Test checkpoint for server with attached volume

        Test checkpoint for server which has attached one volume,
        but only add server in protect source
        """
        volume = self.store(objects.Volume())
        volume.create(1)
        server = self.store(objects.Server())
        server.create()
        server.attach_volume(volume.id)

        plan = self.store(objects.Plan())
        plan.create(self.provider_id_noop, [
            server,
        ])

        checkpoint = self.store(objects.Checkpoint())
        checkpoint.create(self.provider_id_noop, plan.id, timeout=2400)

        items = self.karbor_client.checkpoints.list(self.provider_id_noop)
        ids = [item.id for item in items]
        self.assertTrue(checkpoint.id in ids)