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
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()
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()
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
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
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() }
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()
def __init__(self, instance_id=None, retention="0", name="test"): self.id = instance_id or uuidutils.generate_uuid() self.name = name
def __init__(self, instance_id=None, retention="0", name='test'): self.id = instance_id or uuidutils.generate_uuid() self.name = name
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)