def post(self, request, *args, **kwargs): ttl = self.request.data.get(RedisTTL.TTL_KEY) if ttl: try: ttl = RedisTTL.validate_ttl(ttl) except ValueError: raise ValidationError('ttl must be an integer.') auditor.record(event_type=self.event_type, instance=self.job, actor_id=self.request.user.id, actor_name=self.request.user.username) description = None config = None update_code_reference = False if 'config' in request.data: spec = validate_job_spec_config( [self.job.specification.parsed_data, request.data['config']], raise_for_rest=True) config = spec.parsed_data if 'update_code' in request.data: try: update_code_reference = to_bool(request.data['update_code']) except TypeError: raise ValidationError('update_code should be a boolean') if 'description' in request.data: description = request.data['description'] new_obj = self.clone(obj=self.job, config=config, update_code_reference=update_code_reference, description=description) if ttl: RedisTTL.set_for_job(job_id=new_obj.id, value=ttl) serializer = self.get_serializer(new_obj) return Response(status=status.HTTP_201_CREATED, data=serializer.data)
def perform_create(self, serializer): ttl = self.request.data.get(RedisTTL.TTL_KEY) if ttl: try: ttl = RedisTTL.validate_ttl(ttl) except ValueError: raise ValidationError('ttl must be an integer.') instance = serializer.save(user=self.request.user, project=self.project) if ttl: RedisTTL.set_for_job(job_id=instance.id, value=ttl)
def perform_create(self, serializer): ttl = self.request.data.get(RedisTTL.TTL_KEY) if ttl: try: ttl = RedisTTL.validate_ttl(ttl) except ValueError: raise ValidationError('ttl must be an integer.') instance = serializer.save(user=self.request.user, project=get_permissible_project(view=self)) auditor.record(event_type=JOB_CREATED, instance=instance) if ttl: RedisTTL.set_for_job(job_id=instance.id, value=ttl)
def perform_create(self, serializer): ttl = self.request.data.get(RedisTTL.TTL_KEY) if ttl: try: ttl = RedisTTL.validate_ttl(ttl) except ValueError: raise ValidationError('ttl must be an integer.') project = get_permissible_project(view=self) group = self.request.data.get('experiment_group') if group and ExperimentGroup.objects.filter( id=group, project=project).count() == 0: raise ValidationError('Received an invalid group.') instance = serializer.save(user=self.request.user, project=project) auditor.record(event_type=EXPERIMENT_CREATED, instance=instance) if ttl: RedisTTL.set_for_experiment(experiment_id=instance.id, value=ttl)
def perform_create(self, serializer): ttl = self.request.data.get(RedisTTL.TTL_KEY) if ttl: try: ttl = RedisTTL.validate_ttl(ttl) except ValueError: raise ValidationError('ttl must be an integer.') instance = serializer.save(user=self.request.user, project=self.project) if ttl: RedisTTL.set_for_build(build_id=instance.id, value=ttl) # Trigger build scheduling celery_app.send_task(SchedulerCeleryTasks.BUILD_JOBS_START, kwargs={'build_job_id': instance.id}, countdown=1)
def perform_create(self, serializer): ttl = self.request.data.get(RedisTTL.TTL_KEY) if ttl: try: ttl = RedisTTL.validate_ttl(ttl) except ValueError: raise ValidationError('ttl must be an integer.') project = get_permissible_project(view=self) code_reference = get_project_latest_code_reference(project=project) instance = serializer.save(user=self.request.user, project=project, code_reference=code_reference) auditor.record(event_type=BUILD_JOB_CREATED, instance=instance) if ttl: RedisTTL.set_for_build(build_id=instance.id, value=ttl) # Trigger build scheduling celery_app.send_task(SchedulerCeleryTasks.BUILD_JOBS_START, kwargs={'build_job_id': instance.id}, countdown=1)
def perform_create(self, serializer): ttl = self.request.data.get(RedisTTL.TTL_KEY) if ttl: try: ttl = RedisTTL.validate_ttl(ttl) except ValueError: raise ValidationError('ttl must be an integer.') group = self.request.data.get('experiment_group') if group: try: group = ExperimentGroup.objects.get(id=group, project=self.project) except ExperimentGroup.DoesNotExist: raise ValidationError('Received an invalid group.') if group.is_selection: self.request.data.pop('experiment_group') instance = serializer.save(user=self.request.user, project=self.project) if group and group.is_selection: # Add the experiment to the group selection group.selection_experiments.add(instance) if ttl: RedisTTL.set_for_experiment(experiment_id=instance.id, value=ttl)
def post(self, request, *args, **kwargs): ttl = self.request.data.get(RedisTTL.TTL_KEY) if ttl: try: ttl = RedisTTL.validate_ttl(ttl) except ValueError: raise ValidationError('ttl must be an integer.') obj = self.get_object() auditor.record(event_type=self.event_type, instance=obj, actor_id=self.request.user.id, actor_name=self.request.user.username) description = None config = None declarations = None update_code_reference = False if 'config' in request.data: spec = validate_experiment_spec_config( [obj.specification.parsed_data, request.data['config']], raise_for_rest=True) config = spec.parsed_data declarations = spec.declarations if 'update_code' in request.data: update_code_reference = to_bool(request.data['update_code'], handle_none=True, exception=ValidationError) if 'description' in request.data: description = request.data['description'] new_obj = self.clone(obj=obj, config=config, declarations=declarations, update_code_reference=update_code_reference, description=description) if ttl: RedisTTL.set_for_experiment(experiment_id=new_obj.id, value=ttl) serializer = self.get_serializer(new_obj) return Response(status=status.HTTP_201_CREATED, data=serializer.data)
def test_validate_ttl(self): with self.assertRaises(ValueError): RedisTTL.validate_ttl(None) with self.assertRaises(ValueError): RedisTTL.validate_ttl('sdf')