def test_schedule_factory_create_update_not_exist(self): name = "test" is_active = True action = "test_action" notification = True schedule_expression = "cron(10 * * * ? *)" params = dict(test="test") resource_id = "i-01234567890" region = "ap-northeast-1" service = "ec2" aws_id = 1 event_id = -1 with self.assertRaises(ObjectDoesNotExist): ScheduleFactory.create(name=name, is_active=is_active, action=action, notification=notification, schedule_expression=schedule_expression, params=params, resource_id=resource_id, region=region, service=service, aws_id=aws_id, event_id=event_id)
def test_schedule_factory_create(self): name = "test" is_active = True action = "test_action" notification = True schedule_expression = "cron(10 * * * ? *)" params = dict(test="test") resource_id = "i-01234567890" region = "ap-northeast-1" service = "ec2" aws_id = 1 res = ScheduleFactory.create(name=name, is_active=is_active, action=action, notification=notification, schedule_expression=schedule_expression, params=params, resource_id=resource_id, region=region, service=service, aws_id=aws_id) self.assertEqual(res.event_model.name, name) self.assertEqual(res.event_model.action, action) self.assertEqual(res.event_model.notification, notification) self.assertEqual(res.event_model.params, json.dumps(params)) self.assertEqual(res.event_model.resource_id, resource_id) self.assertEqual(res.event_model.service, service) self.assertEqual(res.event_model.region, region) self.assertEqual(res.event_model.aws_environment_id, aws_id) self.assertEqual(res.cloudwatchevent.schedule_expression, schedule_expression) self.assertEqual(res.cloudwatchevent.is_active, is_active)
def update(self, request, tenant_pk=None, aws_env_pk=None, region_pk=None, service_pk=None, resource_pk=None, pk=None): log = NarukoLogging(request) logger = log.get_logger(__name__) logger.info("START: update") try: with transaction.atomic(): tenant = TenantModel.objects.get(id=tenant_pk) aws_env = AwsEnvironmentModel.objects.get(id=aws_env_pk, tenant=tenant) schedule = ScheduleFactory.create( resource_id=resource_pk, service=service_pk, region=region_pk, aws_id=aws_env_pk, event_id=pk, **request.data) create_schedule = ControlScheduleUseCase(log).save_schedule(request.user, tenant, aws_env, schedule) except (TypeError, ValueError, KeyError, ClientError, NarukoException) as e: # リクエストデータが不正 logger.exception(e) return Response(status=status.HTTP_400_BAD_REQUEST) except ObjectDoesNotExist as e: # AWS環境が存在しない logger.exception(e) return Response(status=status.HTTP_404_NOT_FOUND) except Exception as e: logger.exception(e) raise else: logger.info("END: update") return Response(data=create_schedule.serialize(), status=status.HTTP_201_CREATED)
def create(self, request, tenant_pk=None, aws_env_pk=None, region_pk=None, service_pk=None, resource_pk=None): log = NarukoLogging(request) logger = log.get_logger(__name__) logger.info("START: create") tenant = TenantModel.objects.get(id=tenant_pk) aws_env = AwsEnvironmentModel.objects.get(id=aws_env_pk, tenant=tenant) schedule = ScheduleFactory.create(resource_id=resource_pk, service=service_pk, region=region_pk, aws_id=aws_env_pk, **request.data) create_schedule = ControlScheduleUseCase(log).save_schedule( request.user, tenant, aws_env, schedule) logger.info("END: create") return Response(data=create_schedule.serialize(), status=status.HTTP_201_CREATED)