예제 #1
0
    def _pre_upgrade_010(self, engine):
        initial_values = [
            ('JOB-1', uuidutils.generate_uuid()),
            ('JOB-2', uuidutils.generate_uuid()),
            ('JOB-3', None),
            ('JOB-4', None),
            ('JOB-5', None),
        ]

        jobs_table = get_table(engine, 'jobs')
        for job_id, version_id in initial_values:
            now = datetime.datetime.now()
            new_job = {
                'id': job_id,
                'schedule_id': 'SCHD-1',
                'tenant': 'OWNER-1',
                'worker_id': 'WORKER-1',
                'status': 'success',
                'action': 'snapshot',
                'retry_count': 3,
                'timeout': now,
                'hard_timeout': now,
                'version_id': version_id,
                'created_at': now,
                'updated_at': now
            }

            jobs_table.insert().values(new_job).execute()

        return initial_values
예제 #2
0
    def _pre_upgrade_010(self, engine):
        initial_values = [
            ('JOB-1', uuidutils.generate_uuid()),
            ('JOB-2', uuidutils.generate_uuid()),
            ('JOB-3', None),
            ('JOB-4', None),
            ('JOB-5', None),
        ]

        jobs_table = get_table(engine, 'jobs')
        for job_id, version_id in initial_values:
            now = datetime.datetime.now()
            new_job = {
                'id': job_id,
                'schedule_id': 'SCHD-1',
                'tenant': 'OWNER-1',
                'worker_id': 'WORKER-1',
                'status': 'success',
                'action': 'snapshot',
                'retry_count': 3,
                'timeout': now,
                'hard_timeout': now,
                'version_id': version_id,
                'created_at': now,
                'updated_at': now
            }

            jobs_table.insert().values(new_job).execute()

        return initial_values
예제 #3
0
    def test_doesnt_delete_images_from_another_instance(self):
        timeutils.set_time_override()
        instance_id = self.job["metadata"]["instance_id"]
        self.nova_client.servers.get(mox.IsA(str)).AndReturn(MockServer())
        self.nova_client.servers.create_image(mox.IsA(str), mox.IsA(str), self.snapshot_meta).AndReturn(IMAGE_ID)
        self.nova_client.images.get(IMAGE_ID).AndReturn(MockImageStatus("ACTIVE"))
        mock_retention = MockRetention(3)
        self.nova_client.rax_scheduled_images_python_novaclient_ext.get(mox.IsA(str)).AndReturn(mock_retention)
        mock_server = MockServer(instance_id=instance_id)
        image_list = self._create_images_list(mock_server.id, 5)
        to_delete = image_list[3:]
        image_list.extend(self._create_images_list(uuidutils.generate_uuid(), 3))
        self.nova_client.images.list(detailed=True).AndReturn(image_list)
        # The image list happens to be in descending created order
        self.nova_client.images.delete(to_delete[0].id)
        self.nova_client.images.delete(to_delete[1].id)
        self._simple_prepare_worker_mock()
        self.mox.StubOutWithMock(utils, "generate_notification")
        utils.generate_notification(None, "qonos.job.run.start", mox.IsA(dict), mox.IsA(str))
        utils.generate_notification(None, "qonos.job.run.end", mox.IsA(dict), mox.IsA(str))
        self.mox.ReplayAll()

        processor = TestableSnapshotProcessor(self.nova_client)
        processor.init_processor(self.worker)
        processor.process_job(self.job)

        self.mox.VerifyAll()
예제 #4
0
    def test_doesnt_delete_images_from_another_instance(self):
        timeutils.set_time_override()
        instance_id = fakes.JOB['job']['metadata']['instance_id']
        self.nova_client.servers.create_image(mox.IsA(str),
            mox.IsA(str), self.snapshot_meta).AndReturn(IMAGE_ID)
        self.nova_client.images.get(IMAGE_ID).AndReturn(
            MockImageStatus('ACTIVE'))
        mock_server = MockServer(instance_id=instance_id, retention=3)
        self.nova_client.servers.get(mox.IsA(str)).AndReturn(mock_server)
        image_list = self._create_images_list(mock_server.id, 5)
        to_delete = image_list[3:]
        image_list.extend(self._create_images_list(
                uuidutils.generate_uuid(), 3))
        self.nova_client.images.list(detailed=True).AndReturn(image_list)
        # The image list happens to be in descending created order
        self.nova_client.images.delete(to_delete[0].id)
        self.nova_client.images.delete(to_delete[1].id)
        self.worker.update_job(fakes.JOB_ID, 'PROCESSING',
                               timeout=mox.IsA(datetime.datetime),
                               error_message=None)
        self.worker.update_job(fakes.JOB_ID, 'DONE', timeout=None,
                               error_message=None)
        self.mox.ReplayAll()

        processor = TestableSnapshotProcessor(self.nova_client)
        processor.init_processor(self.worker)

        processor.process_job(fakes.JOB['job'])

        self.mox.VerifyAll()
예제 #5
0
    def _create_image(self, instance_id, created, image_id=None, scheduled=True):
        image_id = image_id or uuidutils.generate_uuid()

        image = MockImage(image_id, created, instance_id)

        if scheduled:
            image.metadata["org.openstack__1__created_by"] = "scheduled_images_service"

        return image
예제 #6
0
    def _create_image(self, instance_id, created, image_id=None,
                      scheduled=True, status='ACTIVE'):
        image_id = image_id or uuidutils.generate_uuid()

        image = MockImage(image_id, created, instance_id, status)

        if scheduled:
            image.metadata['org.openstack__1__created_by'] =\
                'scheduled_images_service'

        return image
예제 #7
0
    def _create_image(self, instance_id, created, image_id=None,
                      scheduled=True, status='ACTIVE'):
        image_id = image_id or uuidutils.generate_uuid()

        image = MockImage(image_id, created, instance_id, status)

        if scheduled:
            image.metadata['org.openstack__1__created_by'] =\
                'scheduled_images_service'

        return image
예제 #8
0
파일: models.py 프로젝트: cp16net/qonos
class Job(BASE, ModelBase):
    """Represents a job in the datastore."""
    __tablename__ = 'jobs'
    __table_args__ = (Index('hard_timeout_idx', 'hard_timeout'),
                      COMMON_TABLE_ARGS)

    schedule_id = Column(String(36))
    tenant = Column(String(255), nullable=False)
    worker_id = Column(String(36), nullable=True)
    status = Column(String(255), default='QUEUED', nullable=False)
    action = Column(String(255), nullable=False)
    retry_count = Column(Integer, nullable=False, default=0)
    timeout = Column(DateTime, nullable=False)
    hard_timeout = Column(DateTime, nullable=False, index=True)
    version_id = Column(String(36))

    __mapper_args__ = {
        'version_id_col': version_id,
        'version_id_generator': lambda version: uuidutils.generate_uuid()
    }
예제 #9
0
    def test_doesnt_delete_images_from_another_instance(self):
        timeutils.set_time_override()
        instance_id = self.job['metadata']['instance_id']
        self.nova_client.servers.get(mox.IsA(str)).AndReturn(MockServer())
        self.nova_client.servers.create_image(
            mox.IsA(str), mox.IsA(str), self.snapshot_meta).AndReturn(IMAGE_ID)
        self.nova_client.images.get(IMAGE_ID).AndReturn(
            MockImageStatus('ACTIVE'))
        mock_retention = MockRetention(3)
        self.nova_client.rax_scheduled_images_python_novaclient_ext.\
            get(mox.IsA(str)).AndReturn(mock_retention)
        mock_server = MockServer(instance_id=instance_id)
        image_list = self._create_images_list(mock_server.id, 5)
        to_delete = image_list[3:]
        image_list.extend(
            self._create_images_list(uuidutils.generate_uuid(), 3))
        self.nova_client.images.list(detailed=True).AndReturn(image_list)
        # The image list happens to be in descending created order
        self.nova_client.images.delete(to_delete[0].id)
        self.nova_client.images.delete(to_delete[1].id)
        self._simple_prepare_worker_mock()
        self.mox.StubOutWithMock(utils, 'generate_notification')
        utils.generate_notification(None, 'qonos.job.run.start', mox.IsA(dict),
                                    mox.IsA(str))
        utils.generate_notification(None, 'qonos.job.update', mox.IsA(dict),
                                    mox.IsA(str)).MultipleTimes()
        self.worker.update_job(fakes.JOB_ID,
                               'DONE',
                               timeout=None,
                               error_message=None)
        utils.generate_notification(None, 'qonos.job.run.end', mox.IsA(dict),
                                    mox.IsA(str))
        self.mox.ReplayAll()

        processor = TestableSnapshotProcessor(self.nova_client)
        processor.init_processor(self.worker)
        processor.process_job(self.job)

        self.mox.VerifyAll()
예제 #10
0
 def __init__(self, instance_id=None, retention="0", name="test"):
     self.id = instance_id or uuidutils.generate_uuid()
     self.name = name
예제 #11
0
 def __init__(self, instance_id=None, retention="0", name='test'):
     self.id = instance_id or uuidutils.generate_uuid()
     self.name = name
예제 #12
0
 def __init__(self, instance_id=None, retention=0):
     self.id = instance_id or uuidutils.generate_uuid()
     self.metadata = {}
     if retention:
         self.metadata["org.openstack__1__retention"] = str(retention)