예제 #1
0
    def test_list_schedules(self, mock_parse_request, *args):
        mock_parse_request.return_value = ({}, {})

        schedule_servicer = Schedule()
        schedules_info = schedule_servicer.list({}, {})

        print_message(schedules_info, 'test_list_schedules')

        self.assertIsInstance(schedules_info, schedule_pb2.SchedulesInfo)
        self.assertIsInstance(schedules_info.results[0],
                              schedule_pb2.ScheduleInfo)
        self.assertEqual(schedules_info.total_count, 10)
예제 #2
0
    def test_disable_schedule(self, mock_parse_request, *args):
        params = {
            'schedule_id': utils.generate_id('schedule'),
            'state': 'DISABLED',
            'domain_id': utils.generate_id('domain')
        }
        mock_parse_request.return_value = (params, {})

        schedule_servicer = Schedule()
        schedule_info = schedule_servicer.disable({}, {})

        print_message(schedule_info, 'test_disable_schedule')

        self.assertIsInstance(schedule_info, schedule_pb2.ScheduleInfo)
        self.assertEqual(schedule_info.state, schedule_pb2.ScheduleInfo.State.DISABLED)
예제 #3
0
    def test_update_schedule(self, mock_parse_request, *args):
        params = {
            'schedule_id': utils.generate_id('schedule'),
            'schedule': {
                'cron': '* * * * *'
            },
            'tags': {
                'update_key': 'update_value'
            },
            'domain_id': utils.generate_id('domain')
        }
        mock_parse_request.return_value = (params, {})

        schedule_servicer = Schedule()
        schedule_info = schedule_servicer.update({}, {})

        print_message(schedule_info, 'test_update_schedule')
        schedule_data = MessageToDict(schedule_info, preserving_proto_field_name=True)

        self.assertIsInstance(schedule_info, schedule_pb2.ScheduleInfo)
        self.assertEqual(schedule_data['schedule'], params['schedule'])
        self.assertDictEqual(schedule_data['tags'], params['tags'])
예제 #4
0
    def test_add_schedule(self, mock_parse_request, *args):
        params = {
            'topic': utils.random_string(),
            'options': {
                'aggregate': [
                    {
                        'query': {
                            'resource_type': 'identity.Project',
                            'query': {
                                'aggregate': [
                                    {
                                        'group': {
                                            'keys': [
                                                {
                                                    'key': 'project_id',
                                                    'name': 'project_id'
                                                },
                                                {
                                                    'key': 'name',
                                                    'name': 'project_name'
                                                }
                                            ]
                                        }
                                    }
                                ]
                            }
                        }
                    },
                    {
                        'join': {
                            'resource_type': 'inventory.Server',
                            'type': 'LEFT',
                            'keys': ['project_id'],
                            'query': {
                                'aggregate': [
                                    {
                                        'group': {
                                            'keys': [
                                                {
                                                    'key': 'project_id',
                                                    'name': 'project_id'
                                                }
                                            ],
                                            'fields': [
                                                {
                                                    'operator': 'count',
                                                    'name': 'server_count'
                                                }
                                            ]
                                        }
                                    }
                                ]
                            }
                        }
                    },
                    {
                        'join': {
                            'resource_type': 'inventory.CloudService',
                            'type': 'LEFT',
                            'keys': ['project_id'],
                            'query': {
                                'aggregate': [
                                    {
                                        'group': {
                                            'keys': [
                                                {
                                                    'key': 'project_id',
                                                    'name': 'project_id'
                                                }
                                            ],
                                            'fields': [
                                                {
                                                    'operator': 'count',
                                                    'name': 'cloud_service_count'
                                                }
                                            ]
                                        }
                                    }
                                ]
                            }
                        }
                    },
                    {
                        'formula': {
                            'eval': 'resource_count = server_count + cloud_service_count'
                        }
                    },
                    {
                        'sort': {
                            'key': 'resource_count',
                            'desc': True
                        }
                    }
                ],
                'page': {
                    'limit': 5
                }
            },
            'schedule': {
                'cron': '*/5 * * * *',
                'interval': 5,
                'minutes': [0, 10, 20, 30, 40, 50],
                'hours': [0, 6, 12, 18]
            },
            'tags': {
                utils.random_string(): utils.random_string()
            },
            'domain_id': utils.generate_id('domain')
        }
        mock_parse_request.return_value = (params, {})

        schedule_servicer = Schedule()
        schedule_info = schedule_servicer.add({}, {})

        print_message(schedule_info, 'test_add_schedule')
        schedule_data = MessageToDict(schedule_info, preserving_proto_field_name=True)

        self.assertIsInstance(schedule_info, schedule_pb2.ScheduleInfo)
        self.assertEqual(schedule_info.topic, params['topic'])
        self.assertEqual(schedule_info.state, schedule_pb2.ScheduleInfo.State.ENABLED)
        self.assertEqual(schedule_data['options'], params['options'])
        self.assertDictEqual(schedule_data['schedule'], params['schedule'])
        self.assertDictEqual(schedule_data['tags'], params['tags'])
        self.assertEqual(schedule_info.domain_id, params['domain_id'])
        self.assertIsNotNone(getattr(schedule_info, 'created_at', None))