Exemple #1
0
    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)
Exemple #2
0
    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)